java项目电影票售票

电影票售票系统组员:2013329700010 王芳

2013329700011 王玉

2013329700028 张元一

Clock2.java//获取时间并转化为字符串

import java.applet.*;

import java.awt.*;

import java.util.*;

public class clock2 implements Runnable {

Date m_date;//定义一个日期类对象

Thread m_runner=null;//定义一个多线程

Label gr;//定义一个标签表示日期

Label gt;//定义一个标签表示时间

public clock2(Label r,Label t){

gr=r;gt=t;

if(m_runner==null){

m_runner=new Thread(this);

m_runner.start();

}

}//

@SuppressWarnings("deprecation")

public void stop(){

if(m_runner!=null)

{m_runner.stop();

m_runner=null;

}

}

@SuppressWarnings("deprecation")

public void run(){

while(true)

{

m_date=new Date();

String temp1=new String ("日

期:"+String.valueOf(1+m_date.getMonth())+"/"+String.valueOf(m_date.getDate())+ "/"+String.valueOf(1900+m_date.getYear()));//定义并初始化字符串表示日期

String temp2=new String ("时

间:"+String.valueOf(m_date.getHours())+":"+String.valueOf(m_date.getMinutes()) +"/"+String.valueOf(m_date.getSeconds()));//定义并初始化字符串表示时间

gr.setText(temp1);//显示日期

gt.setText(temp2);//显示时间

try{

Thread.sleep(1000);//暂停1s

}catch(InterruptedException e){}

}

}

}

MyTicketSale.java//实现电影售票系统的主要功能:播放图片,售票,统计票数,金额,显示电影目录

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.Button;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Event;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import https://www.360docs.net/doc/a518111309.html,bel;

import java.awt.MediaTracker;

import java.awt.TextField;

import java.awt.Toolkit;

import java.applet.*;

import java.awt.*;

import java.util.*;

import javax.print.attribute.standard.Media;

public class MyTicketSale extends Applet implements Runnable{

/**

*

*/

private static final long serialVersionUID = 1L;// 序列化时保持版本的兼容性private Thread m_TickedSale=null;//定义一个多线程

private Graphics m_Graphics;//一个画笔

private Image m_Images[];//照片组

private int m_nCurrImage=0;//整型变量指示照片

private boolean m_fAllLoaded=false;//布尔变量指示是否成功加载照片

private final int NUM_IMAGES=3;//表示照片数

Label label1,label2;//标签变量

clock2 pp;//时间类对象

private boolean m_fStandAlone=false;//是否加载外部文件

TextField tRemain,tSold,tTotal;//文本框

int remain=200;

int sold=0;

int total=0;

Button mybutton;

@SuppressWarnings("deprecation")

public void init()

{

resize(1024,600);//调整浏览器大小

setBackground(Color.pink);//将背景显示为粉色

setFont(new Font("TimesRoman",Font.BOLD,10));//设置字体为"TimesRoman",font bold 字体加粗,大小为10号

setLayout(null);//默认为流式布局

addSeat();//调用函数绘制座位

label1=new Label();//定义标签

label2=new Label();

add(label1); //把标签加入布局管理器

add(label2);

label1.reshape(600,10,150,50);//在指定位置绘制标签

label2.reshape(600,40,150,50);

pp=new clock2(label1,label2);//两个标签用于显示时间和日期

tRemain=new TextField(Integer.toString(remain)+"张",10);//显示剩余票数,字宽为10

tRemain.setEditable(false);//表示此控件不可编辑

add(tRemain);//加入布局管理器

tRemain.reshape(400, 160, 80, 30);//在指定位置绘制

tSold=new TextField(Integer.toString(sold)+"张",10);//显示售出票数,字宽为10

tSold.setEditable(false);//表示此控件不可编辑

add(tSold);//加入布局管理器

tSold.reshape(100,160,80,30);//在指定位置绘制

tTotal=new TextField(Integer.toString(total)+"元",10);//显示总金额,字宽为10

tTotal.setEditable(false);//表示此控件不可编辑

add(tTotal);//加入布局管理器

tTotal.reshape(640,160,80,30);//在指定位置绘制

m_Graphics=getGraphics();//获得一个当前对象的画笔

Label myLabel1=new Label("今日电影:");//在mylabel1上添加字符串"今日电影:"

add(myLabel1);//加入布局管理器

myLabel1.reshape(300,10,150,50);//在指定位置绘制

Label myLabel2=new Label("速度与激情7");

add(myLabel2);

myLabel2.reshape(300,60,150,50);

Label myLabel3=new Label("售出票:");

add(myLabel3);

myLabel3.reshape(10,160,80,50);

Label myLabel4=new Label("剩余票:");

add(myLabel4);

myLabel4.reshape(300,160,80,50);

Label myLabel5=new Label("总金额:");

add(myLabel5);

myLabel5.reshape(600,160,80,50);

Label myLabel6=new Label("票价:1-3排 10元 4-6排 5元 7-10排 2元");

add(myLabel6);

myLabel6.reshape(5,200,500,50);

}

@SuppressWarnings("deprecation")

public void addSeat( ){

int xx,yy;

for(int i=1;i<=10;i++){

yy=230+35*(i-1);

for(int j=1;j<=20;j++){

xx=50*(j-1);

Button mybutton=new Button(Integer.toString(i)+"排

"+Integer.toString(j)+"号");//构建按钮

add(mybutton);//加入布局管理器

mybutton.show();//显示按钮

mybutton.move(xx, yy);//将按钮移动到指定的位置

mybutton.resize(50,30);//设置按钮大小

}

}

}//增加10排20列的按钮表示座位

public void destroy()

{

pp.stop();

}//浏览器关闭的时候调用该方法

private void displayImage(Graphics g)

{

if(!m_fAllLoaded)return;

g.drawImage(m_Images[m_nCurrImage],1,1,200,150, null); //绘制图片,播放动画

}

public void paint(Graphics g)

{

if(m_fAllLoaded)

{

displayImage(g);

}

else

g.drawString("Loading images....",10,20);

}//若成功加载图片则调用displayImage()显示,若没有则显示Loading images....

@SuppressWarnings("deprecation")

public boolean action(Event evt,Object arg)

{

int price=0;

if(evt.target instanceof Button){

Button btn=(Button)evt.target;//根据捕捉到的目标确定按钮信息,并存储在一个按钮对象中

String label3=btn.getLabel();//将按钮的文本信息储存在字符串中

switch(label3.charAt(0)){

case'1':{if(label3.charAt(1)=='0'){price=2;}else

price=10;}break;

case'2':price=10;break;

case'3':price=10;break;

case'4':price=5;break;

case'5':price=5;break;

case'6':price=5;break;

case'7':price=2;break;

case'8':price=2;break;

case'9':price=2;break;

default:return false;

}//根据排数来确定票价

btn.setLabel("已售出");//将按钮文本替换为"已售出"

btn.disable();//使得该按钮无法再次被编辑

remain--;//现存的票数减1

sold++;//售出的票数+1

total+=price;//总价相应增加

tRemain.setText(Integer.toString(remain)+"张");//将剩余票数重新输出

tSold.setText(Integer.toString(sold)+"张");//将售出票数重新输出

tTotal.setText(Integer.toString(total)+"元");//将总价重新输出}

return true;

}//根据用户点击的按钮来判断票价,座位号,改变相关的参数值

public void start()

{

if(m_TickedSale==null)

{

m_TickedSale=new Thread(this);

m_TickedSale.start();

}

}

public void stop(){

if(m_TickedSale!=null){

m_TickedSale.stop();

m_TickedSale=null;

}

}

public void run()

{

int m_nCurrImage=0;

if(!m_fAllLoaded)

{

repaint();

m_Images=new Image[NUM_IMAGES];//新建Image数组,有3个图片

MediaTracker tracker=new MediaTracker(this);//调用媒体跟踪器Media Tracker来加载图像

String strImage;//字符串表示图片路径

for(int i=1;i<=NUM_IMAGES;i++){

strImage="I://images"+((i<4)?"0":"")+i+".jpg";//初始化图片路径

if(m_fStandAlone)

m_Images[i-1]=Toolkit.getDefaultToolkit().getImage(strImage);//若成功加载图片,取得指定路径的图片,Toolkit.getDefaultToolkit().getImage(...) 方法可接受 String 或者是 URL 参数,用以指定图像文件的路径

else

m_Images[i-1]=getImage(getDocumentBase(),strImage);//若未成功加载则使用getDocumentBase()返回图片路径,再调用getImage()显示图片

tracker.addImage(m_Images[i-1], 0); //将图片在布局管理器中显示

}

try{

tracker.waitForAll();//调用waitForAll方法初始化加载过程,并等待所有被跟踪的图像加载完毕后返回

m_fAllLoaded=!tracker.isErrorAny();//调用了isErrorAny方法,用来检查并确定任何被追踪的图像是否产生了错误。如果方法返回false,则说明没有错误发生;如果图像产生了错误,isErrorAny方法返回真

}

catch(InterruptedException e){

stop();

}//try,catch来捕获图片加载异常

if(!m_fAllLoaded)

{

stop();

m_Graphics.drawString("Error loading images!",10,10);

return;

}//若有错误,!m_fAllLoaded为真,结束线程,输出"Error loading images!"

}

repaint();//产生重绘事件

while(true){

try{

displayImage(m_Graphics);

m_nCurrImage++;

if(m_nCurrImage==NUM_IMAGES)m_nCurrImage=0;

Thread.sleep(3000);

}//播放图片

catch(InterruptedException e){

stop();

}

}//检验图片加载是否异常

}

}

图片未成功加载,输出结果:

相关文档
最新文档