Java课程设计------电梯控制系统

A1 系统描述

1.功能描述

本电梯系统用来控制一台运行于一个具有N层的大楼电梯,它具有上升、下降、开门、关门、载客的基本功能。

大楼的每一层都有:

(1)两个指示灯这两个指示灯分别用于指示当前所在的层数和电梯的当前状态(上行、下行或停止);

(2)电梯锁用于将本层的电梯门锁住,并使本楼层的电梯按钮失效,电梯里相应的按钮也失效,使得电梯不能也不可能停在本层;

(3)按钮除了第一层和顶层,每一层都有两个按钮(上行、下行),乘客可以呼叫上楼或下楼,顶楼只有一个下楼按钮,而第一层只有一个上楼按钮。

电梯里面具有:

(1)标示从“1”到“N”的N个按钮,用于让乘客选择所要的层数;

(2)关门按钮当乘客按下此按钮时,电梯门如果开着将关上,否则不执行任何操作;(3)开门按钮当乘客按下此按钮时,电梯如果停在某一层,电梯门将打开,否则不执行任何操作;

(4)超重测试和警报装置电梯的地面有超重感应装置,当电梯载重达到某一个值时,电梯“超重警报铃”发出超重警报,并且不执行关门命令。

2.关键实现方法描述

用“最大距离循环”来说明电梯的运行方式。也说是说,电梯处于上行状态时就一直上行直到不再有上行任务,电梯处于下行状态时就一直下行直到不再有下行任务。

当电梯正在上行时,如果上行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。有两种原因引起队列头的改变。

(1)新的请求插入到上行队列头。

(2)电梯到达某个楼层将这个楼层的请求从上行队列的队列头删除,后继的更高楼层号成为对列头。

当电梯正在下行时,如果下行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。有两种原因引起下行队列头的改变。

(1)新的请求插入到下行队列头。

(2)电梯到达某个楼层将这个楼层的请求从下行队列的队列头删除,后继的更高楼层号成为对列头。

在电梯上行过程中,当上行队列中没有比电梯当前所在的楼层更高的楼层号时,发送电梯目的地的开始从下行队列中取得。同样,在电梯下行过程中,当下行队列中没有比电梯当前所在的楼层更低的楼层号时,发送电梯目的地的开始从上行队列中取得。如此反复,当两个队列中都没有数据时,电梯暂停。

当电梯到达某层时,此层的所有请求按钮全部复位(包括楼层和电梯里的按钮),电梯门自动开启,在一段时间内如果乘客没有按下开门或关门的按钮,电梯将自动关门。

为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯被强制停止。A2 用例模型

1.角色识别

根据前面系统的描述,可以确定与该系统交互的两个角色:电梯管理员(elevator

manager)和乘客(passenger),其中乘客是电梯的主要使用者,电梯管理员的责任

是对电梯进行维护(见图A1)。

图A1

2. 用例识别

在角色的基础上,可以确定系统的用例,做法是针对每一个角色考查它要求系统提供的功能,它使用系统的哪些功能,经过分析,可得到如下的用例。

乘客相关的用例:

按下某楼层的上行按钮(go up stair )。

● 按下某楼层的下行按钮(go down stair )。

● 按下某电梯内的某一层楼按钮(go to floor request )。

● 按下关门按钮 (close door )。

● 按下开门按钮(open door)。

● 超重测试(overweight test )。

电梯管理员的用例:

● 锁住某层电梯锁(lock floor )。

● 打开某层电梯锁(open floor )。

用例的描述如下:

用例1 按下某楼层的上行按钮(go up stair )

(1) 乘客按下第M 层的上行按钮。

(2) M 被插入到上行队列的合适位置。

(3) 如果M 被插到上行队列头。

● 如果电梯正处于上行状态。将M 发送给电梯作为目的地。

● 如果电梯处于停止状态。将M 发送给电梯作为目的地。

(4)电梯到达此楼层。

(5)电梯自动打开门(用例9)。

(6)乘客进入电梯。

(7)超重测试(用例6)。

用例2 按下某楼层的下行按钮(go down stair )。

(1) 乘客按下第M 层的下行按钮。

(2) M 被插入到下行队列的合适位置。

(3) 如果M 被插到下行队列头。

● 如果电梯正处于下行状态。将M 发送给电梯作为目的地。

● 如果电梯处于停止状态 将M 发送给电梯作为目的地。

(4) 电梯到达此楼层。

(5)电梯自动打开门(用例9)。

(6)乘客进入电梯。

(7)超重测试(用例9)。

用例3 按下电梯内的某一楼层按钮(go to floor request)

(1)乘客按下电梯内L层的按钮。

(2)如果被按下的楼层号L比电梯当前所在的楼层号高。

●将此楼层号插入到上行队列的合适位置。

●如果L被插入到上行队列头。

如果电梯正处于上行状态。

将L发送给电梯作为电梯的目的地。

(3)如果被按下的层号L比电梯当前所在的楼层低。

●将此楼层号L插入到下行队列的合适位置。

●如果L被插入到下行队列头。

如果电梯正处于下行状态。

将L发送给电梯作为目的地。

(4)电梯到达目的楼层。

(5)电梯自动开门(用例9)。

用例4按下关门按钮(request close door)

(1)如果电梯门关着。

保持电梯门关闭状态。

(2)如果电梯门开着。

关闭电梯门。

用例5 按下开门按钮(request open door)

如果电梯停在某一层。

●如果电梯门关着。打开电梯门。

●如果电梯门开着。保持电梯门开状态。

用例6 超重测试(overweight test)

(1)乘客进入电梯。

(2)如果电梯超重感应装置检测到超重。

●电梯发出超重警报,并拒绝关闭电梯门。

●乘客走出电梯。

●电梯解除超重警报,并允许关闭电梯门。

用例7 锁住某层电梯锁(lock floor)

此层的楼层请求按钮和电梯内的楼层按钮失效。

用例8 打开某层电梯锁(open floor)

此层的楼层请求按钮和电梯内的楼层按钮恢复正常。

用例9 自动打开电梯门(auto open door)

(1)电梯到达某楼层。

(2)电梯自动开门。

用例10 自动关闭电梯门(auto close door)

(1)电梯门打开的状态达到设置的时限。

(2)关闭电梯门。

A3 类模型

根据分析,我们可以得到下面这些类。

乘客类(Passenger)、管理员类(Manager)、电梯类(Elevator)、电梯门类(ElevatorDoor)、楼层的上行请求按钮类(Go Up Request)、楼层的下请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)、楼层锁类(lock)、指示灯类(Indicate Light)、队列类(Queue)、定时器类(Timer)、异常处理类(Expection)。

1

2.管理员类(Manager)

3.电梯类(Elevator)

属性State表示电梯的状态(停止、上行、下行),Position表示电梯所在的楼层(1-N),IsOverWeight标识电梯是否超重,IsNormal用于标识电梯是否正常。

方法StartUp(Floor)表示启动电梯上行到Floor层,StartDown(Floor)表示启动电梯下行到Floor层,Stop表示电梯停下来,Warn()启动电梯超重警报,CancelWarn 取消电梯超重警报。

4.梯门类(ElevatorDoor)

属性State表示电梯门的状态(开或关),方法Open()表示打开电梯门,Close()表示关闭电梯门。

5.楼层的上行请求按钮类(Go Up Request)、楼层的下行请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)

属性State表示按钮是否已经被按下,Enabled表示按钮是否能用(如果被管理员锁住就不能用),OnFloor表示按钮对应的楼层号,方法Press()表示按下按钮,Reset()表示复位按钮,

6.指示灯类(Indicate Light)

指示灯分为楼层指示灯和电梯状态指示灯,其中State属性表示指示灯的状态(亮或灭)。楼层指示灯有Show(Floor)方法用于显示电梯所在楼层数,电梯状态指示灯有Show(UporDown)方法用于显示电梯上行或下行。

7.楼层锁类(lock)

属性State表示楼层锁的状态(关或开),OnFloor表示锁所在的楼层数,方法On()表示开锁,Off()表示关锁。

8.队列类(Queue)

队列类用于创建上行和下行队列,IsEmpty属性表示队列是否为空,方法Insert(Elevator)用于插入元素,DeleteHead()方法用于删除队列头元素,

9

Time属性用于设置定时的时间长,StartTimer()方法用于启动计时,当计时结束时执行Doing()

10

Type属性用语标识发生的异常类型,Source记录异常源,Doing()方法用于当发生异

11.类关系图。

实训内容

实训内容一绘制电梯图形

实训目的

(1)学会使用Java.awt包中的Graphics类控制和显示用户自定义界面成分,如字体、

颜色和图形。

(2)掌握简单的图形动画效果。

实训要求

创建Applet程序,实现土5-1(a)所示简单的电梯二维图形,并当单击“开门“、“关门”按钮时实现图形上的关门、开门动作。如图5-1(b)就是单击开门后正在开门的过程中。

实训指导

java.awt包提供了控制字体的Font类、控制颜色的Color类。通过这两个类的属性的设置可以实现对界面上的字体和颜色的控制。

如closeDoor.setFont(new Font(“TimesRoman”,Font.BOLD,12));

这个语句将closeDoor上显示的文字颜色设置成红色。

Java.awt包还提供了用户绘图操作的类Graphics,其中包括了许多绘制文字和图形的相关方法。使用Graphics类可以绘制线、圆和椭圆、矩形和多边形、显示图像、动画和各种字体。

draeLine(int x1,int y1,int x2,int y2),在坐标(x1,y1)、(x2,y2)之间画一条直线。

drawRect(int x,int y,int width,int height)方法和fillRect(int x,int y,int width,int height)方法分别用当前颜色在指定位置绘制一个矩形框和一个填充的矩形,其中参数x,y分别是矩形的左上角坐标;width,height分别用语指定矩形的宽和高。

DrawOval(int x,int y,int width,int height)方法和fillOval(int x,int y,int width,int height)方法可以在指定的矩形区域内绘制椭圆,其中的参数x、y、width、height分别表示矩形的左上角x、y坐标、宽和高。

要实现以上自定义成分,还要借助于Applet类的paint()方法,由该方法画出实际的图形。当Applet运行时,将自动创建一个Graphics类的对象g,并把这个对象参数传递给paint()方法。在paint()方法中,就可以调用Graphics类提供的绘制图形和文字的方法了。

下面是程序的实现部分。

import java.awt.*;

import java.applet.*;

public class Applet1 extends java.applet.Applet {

Button closeDoor=new Button("关门");

Button openDoor=new Button("开门");

int[] yPos={60,50,50,60,60};

int[] xPos={30,40,90,100,30};

int flag=2;

public void init() {

closeDoor.setFont(new Font("TimesRoman",Font.BOLD,12));

closeDoor.setForeground(new Color(255,0,0));

add(closeDoor);

openDoor.setFont(new Font("TimesRoman",Font.BOLD,12));

openDoor.setForeground(new Color(0,255,0));

add(openDoor);

}

public boolean action(Event e,Object o){

if(e.target==closeDoor){

flag=0;

}

else if(e.target==openDoor){

flag=1;

}

repaint();

return true;

}

public void paint(Graphics g){

g.setColor(new Color(150,150,50));

g.fillRect(30,60,70,90);

g.setColor(new Color(20,20,150));

g.fillPolygon(xPos,yPos,4);

g.setColor(new Color(190,150,150));

g.drawRect(30,60,70,2);

g.setColor(new Color(0,0,0));

g.drawOval(105,72,18,18);

g.setColor(new Color(0,0,255));

g.fillArc(101,75,27,27,60,60);

g.setColor(new Color(0,0,0));

g.drawOval(105,100,18,18);

g.setColor(new Color(0,0,255));

g.fillArc(102,88,27,27,-120,60);

if(flag==0){

g.setColor(new Color(150,40,40));

for(int i=0;i<=33;i++){

g.draw3DRect(30,63,1+i,86,true);

g.draw3DRect(99-i,63,1+i,86,true);

}

}

else if(flag==1){

g.setColor(new Color(150,40,50));

g.draw3DRect(30,63,34,86,true);

g.setColor(new Color(150,40,50));

g.draw3DRect(66,63,34,86,true);

g.setColor(new Color(150,150,40));

for(int i=0;i<=33;i++){

g.fillRect(64-i,63,2*i+1,86);

try{

Thread.sleep(100);

}

catch(InterruptedException e){

showStatus(e.toString());

}

}

}

else{

g.setColor(new Color(150,40,50));

g.draw3DRect(30,63,34,86,true);

g.setColor(new Color(150,40,50));

g.draw3DRect(66,63,34,86,true);

}

flag=2;

}

}

实训内容二实现电梯上下运行

实训目的

(1)掌握图像的装卸、显示的方法。

(2)掌握简单动画效果的实现。

实训要求

(1)如图5-2所示,装入一幅图像并显示出来。

(2)当单击“上行“按钮时,图像向上移动,直到上面的横线处停下。

(3)当单击“下行“按钮时图像向下移动,直到下面的横线处停下。

实训指导

要装入并显示一幅图像,需要有以下几个步骤。

①需要定义Image类的对象,如

Image Elevator_Image;

语句就是定义Image类的对象Elevator_Image。

②装载图像,如

Elevator_Image=getImage(getDocumentBase(),”Img01.gif”);

语句就是将图像Img01.gif装入到对象Elevator_Image中,其中getImage方法的第一个参数表示图像所在的目录,getDocumentBase()方法的功能是获取HTML文档所在的URL;第二个参数表示图像的文件名。

③显示图像,如

g.drawImage(Elevator_Image,50,ElePositonPix,this);

语句就是将装在对象Elevator_Image中的图像显示出来,第二个参数和第三个参数分别指示图像显示的左上角横坐标和纵坐标;最后一个参数是图像观察器,即显示该图像的容器对象。

另外,实现图像移动的鲜果是通过循环改变图像显示位置的纵坐标来实现的。

相应的程序如下所示

import java.awt.*;

import java.applet.*;

public class Applet2 extends java.applet.Applet {

Button upB=new Button("▲");

Button dnB=new Button("▼");

int flag=2;

Image Elevator_Image;

int ElePositionPix=80;

public void init() {

add(upB);

add(dnB);

Elevator_Image=getImage(getDocumentBase(),"Img01.gif"); }

public boolean action(Event e ,Object o){

if(e.target==upB)

{

flag=0;

}

else if(e.target==dnB)

{

flag=1;

}

repaint();

return true;

}

public void paint(Graphics g){

g.drawLine(10,40,140,40);

g.drawLine(10,250,140,250);

g.drawImage(Elevator_Image,50,ElePositionPix,this);

if(flag==0)

{

for(;ElePositionPix>=50;ElePositionPix--)

{

g.drawImage(Elevator_Image,50,ElePositionPix,this);

try{

Thread.sleep(100);

}

catch(InterruptedException e){

showStatus(e.toString());

}

}

}

else if(flag==1)

{

for(;ElePositionPix<=200;ElePositionPix++){

g.drawImage(Elevator_Image,50,ElePositionPix,this);

try{

Thread.sleep(100);

}

catch(InterruptedException e){

showStatus(e.toString());

}

}

}

}

}

实训内容三实现电梯控制仿真界面设计

实训目的

(1)学会使用各种容器组建,重点掌握Applet和Panel容器的使用。

(2)学会流式布局、网格布局、边框布局和网格袋布局这4种布局方式的界面设计。实训要求

为了实现电梯控制的防真,需要设计出与实际电梯运行相似的界面,这个范例就是为实现电梯控制防真而设计一个界面。如图6-2所示。

将这个界面分成3部分来看,左边部分代表一座楼,颜色深浅分别代表不同的楼层,F1~F6分别表示一楼到六楼,每个楼层都有标识着向上和向下箭头的按钮,分别表示上行和下行按钮;中间部分是电梯通道,绿色的方形图片表示电梯;界面的右边部分包含着“启动电梯”按钮、“关闭电梯”按钮、电梯位置指示、电梯内的楼层按钮板。

实训指导

(1)设置HTML文件中的Applet的显示尺寸wiidth和height为合适的值,如290和400。方法如下:选择HTML文件,用鼠标右击打开弹出菜单,单击Open菜单选项,在代码编辑窗口中打开HTML文件。然后选择Source选项卡,此时将看到一块灰色的区域,即Applet 的显示区域,在该区域上用鼠标右击打开弹出菜单,选择Always View AsText菜单项,以文本方式显示该区域的代码,修改width和height参数即可。

(2)回到Java Applet程序,向Applet容器设置成网格袋布局方式,添加3个Panel将界面从左到右分成3部分,并且使得右边和左边的Panel纵横都向外扩充,而中间部分的Panel不扩充。

(3)将左部分的面板设置成网格布局方式,并在这个面板中添加6个子面板,将这6个面板反别设置成不同的颜色,代表6个楼层。

(4)将这6个子面板设置成流式布局方式,并分别向这6个面板添加楼层标示和上行和下行按钮。

(5)将右部分的面板设置成网格布局方式,添加两个子面板将其分成上下两部分并分别设置背景和颜色;将上部分的子面板设置成网格布局方式,向其中添加如

图6-2所示的启动、关闭和状态显示信息;将下部分面板设置成边框布局方式,

并向其中添加相应的控制按钮。

(6)装入电梯模拟图片,在Applet的合适位置显示该图片。

实现此布局的完整程序代码如下:

import java.awt.*;

import java.applet.*;

public class Applet3 extends java.applet.Applet {

Panel Floor_Panel=new Panel();

Panel Elevator_Panel=new Panel();

Panel Indication_Panel=new Panel();

Panel Floor1_Panel=new Panel();

Panel Floor2_Panel=new Panel();

Panel Floor3_Panel=new Panel();

Panel Floor4_Panel=new Panel();

Panel Floor5_Panel=new Panel();

Panel Floor6_Panel=new Panel();

Label FloorLabel1=new Label("F1");

Label FloorLabel2=new Label("F2");

Label FloorLabel3=new Label("F3");

Label FloorLabel4=new Label("F4");

Label FloorLabel5=new Label("F5");

Label FloorLabel6=new Label("F6");

FloorButton UpButton1=new FloorButton(1,true,"∧"); FloorButton DnButton1=new FloorButton(1,false,"∨"); FloorButton UpButton2=new FloorButton(2,true,"∧"); FloorButton DnButton2=new FloorButton(2,false,"∨"); FloorButton UpButton3=new FloorButton(3,true,"∧"); FloorButton DnButton3=new FloorButton(3,false,"∨"); FloorButton UpButton4=new FloorButton(4,true,"∧"); FloorButton DnButton4=new FloorButton(4,false,"∨"); FloorButton UpButton5=new FloorButton(5,true,"∧"); FloorButton DnButton5=new FloorButton(5,false,"∨"); FloorButton UpButton6=new FloorButton(6,true,"∧"); FloorButton DnButton6=new FloorButton(6,false,"∨"); Panel SubInd_Panel1=new Panel();

Panel SubInd_Panel2=new Panel();

Panel SubInd_Panel3=new Panel();

Button Start_Button=new Button("启动电梯");

Button Stop_Button=new Button("关闭电梯");

Label Indication_Prompt=new Label("电梯所在层"); Label State_Prompt=new Label("电梯状态");

Label Indication_Light=new Label("1层");

Label State_Light=new Label("停止");

Label ETitleLabel=new Label("电梯内楼层按钮板"); Label EastLabel=new Label();

Label WestLabel=new Label();

Label SouthLabel=new Label();

DesFlButton DesFl_Button1=new DesFlButton(1,"1"); DesFlButton DesFl_Button2=new DesFlButton(2,"2"); DesFlButton DesFl_Button3=new DesFlButton(3,"3");

DesFlButton DesFl_Button4=new DesFlButton(4,"4"); DesFlButton DesFl_Button5=new DesFlButton(5,"5"); DesFlButton DesFl_Button6=new DesFlButton(6,"6"); Image eImage;

public void init() {

GridBagLayout gbl=new GridBagLayout();

GridBagConstraints gbc=new GridBagConstraints();

setLayout(gbl);

gbc.gridx=0;gbc.gridy=0;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.fill=GridBagConstraints.BOTH;

gbc.anchor=GridBagConstraints.WEST;

gbc.weightx=1;gbc.weighty=1;

gbc.insets=new Insets(0,0,0,0);

gbl.setConstraints(Floor_Panel,gbc);

add(Floor_Panel);

gbc.gridx=1;gbc.gridy=0;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.fill=GridBagConstraints.HORIZONTAL;

gbc.anchor=GridBagConstraints.NORTHWEST;

gbc.weightx=1;gbc.weighty=1;

gbc.insets=new Insets(0,0,0,0);

gbl.setConstraints(Elevator_Panel,gbc);

add(Elevator_Panel);

gbc.gridx=2;gbc.gridy=0;

gbc.gridwidth=1;

gbc.gridheight=1;

gbc.fill=GridBagConstraints.BOTH;

gbc.anchor=GridBagConstraints.EAST;

……………………………………….

SubInd_Panel3.add(DesFl_Button1);

SubInd_Panel3.add(DesFl_Button2);

SubInd_Panel3.add(DesFl_Button3);

SubInd_Panel3.add(DesFl_Button4);

SubInd_Panel3.add(DesFl_Button5);

SubInd_Panel3.add(DesFl_Button6);

eImage=getImage(getDocumentBase(),"Img02.gif");

}

public void paint(Graphics g){

g.drawImage(eImage,300,366,this);

}

}

class FloorButton extends Button

{

int Floor;

boolean IsUp;

FloorButton(int VFloor,boolean VIsUp,String VLabel){

super(VLabel);

Floor=VFloor;

IsUp=VIsUp;

}

public int getFloor(){

return Floor;

}

}

class DesFlButton extends Button{

int Floor;

DesFlButton(int VFloor,String VLabel)

{

super(VLabel);

Floor=VFloor;

}

public int getFloor(){

return Floor;

}

}

实训内容四电梯控制模拟系统的异常定义和处理

实训目的

(1)理解异常的工作方式。

(2)学会创建异常类、对异常的捕获和处理。

实训要求

(1)创建电梯超重的异常类、电梯在楼层间(层与层之间)停止运行的异常类和非停止状态下开门的异常类。

(2)在程序中实现上述异常的捕获和处理。

实训指导

在电梯控制系统中,异常处理极其重要,因为这关系到人身安全的问题。大体上电梯的异常电梯超重、电梯在楼层之间(层与层之间)停止运行和非停止状态下开门有3种;当电梯出现以上这些异常时,需要进行异常处理,如报警。

为了简化程序,这里把电梯运行控制的程序省略了。我们创建3个按钮,单击这3

个按纽时分别产生以上3类异常(模仿电梯产生这3类异常),并对产生的异常进行处理。

首先需要定义异常类,异常类的定义形式如下:

class 自定义异常类名extends Exception

{

自定义异常的构造方法

其他方法

}

自定义异常类必须作为Exception类的子类被定义。

当系统处于某种情况即说明系统发生了异常,这时需要使用如下方法抛出异常。

If(某种条件成立)

{

throw(new z自定义异常构造方法);

}

系统抛出异常后,还需要对异常进行捕获,并对异常作出处理,如下是异常的捕获和处理方法。

try

{

可能抛出异常的语句组;

}

catch(异常类名异常对象名参数)

{

异常处理语句组;

}

下面给出了电梯超重的异常定义及异常处理捕获的程序,关于电梯的停止和开门的异常定义及捕获与此相类似。

import java.awt.*;

import java.applet.*;

public class Applet4 extends java.applet.Applet {

Button OverW_B=new Button("运行");

TextField Weight_T=new TextField(8);

Button ExcepStop_B=new Button("停止");

Button ExcepOpen_B=new Button("开门");

TextField Prompt_T=new TextField(50);

public void init() {

add(OverW_B);

add(Weight_T);

add(ExcepStop_B);

add(ExcepOpen_B);

Prompt_T.setEditable(false);

add(Prompt_T);

}

public boolean action(Event e,Object o){

if(e.target==OverW_B)

{

try{

start_El();

}

catch(OverWeightExpception Obl){

Prompt_T.setText(Obl.toString());

}

}

return true;

}

public void start_El() throws OverWeightExpception

{

if(Integer.parseInt(Weight_T.getText())>3000)

{

throw(new

OverWeightExpception(Integer.parseInt(Weight_T.getText())));

}

else

{

Prompt_T.setText("电梯正常启动");

}

}

}

class OverWeightExpception extends Exception

{

private int Weight=0;

OverWeightExpception()

{

super("电梯超重,不能正常运行!");

}

OverWeightExpception(int TmpWeight)

{

Weight=TmpWeight;

}

public String toString()

{

String TmpStr;

if(Weight>0)

TmpStr="电梯当前的承重为"+Integer.toString(Weight)+"Kg,超过了电梯的最大载重3000Kg";

else

TmpStr="电梯超重!";

return TmpStr;

}

}

实训内容五完成电梯的控制运行功能

实训目的

(1)掌握多线程编程思维。

(2)学会控制多线程的运行,并进一步加强较复杂程序的编写。

实训要求

在第6章中的实训范例一中,我们完成了电梯控制界面的程序编写。现在要在这个界面色基础上实现真正的电梯控制功能,既当单击某一层楼的按钮时,电梯模拟图片实现上下运动。

实训指导

电梯的运行程序控制实际上由两部分组成:

(1)电梯的任务管理程序;

(2)电梯的任务监控程序。

这两部分程序通过对两个队列(上行队列和下行队列)的读写来实现数据通信。

任务管理程序在负责管理操作界面,如按下按钮时按钮变成红色、电梯到达某层时相应的按钮复位;另外,当按钮被按下时,任务管理程序负责将数据插入到队列中的合适位置。

任务监控程序时刻监控着上行和下行队列,负责读取队列中的数据作为电梯的目的楼层,并且还负责电梯的实际运行过程,如什么时候该上行、什么时候该下行、什么时候要改变电梯的状态等。

上行队列和下行分别存放电梯的上行任务和下行任务,所谓的上行任务表示需要电梯向上运行的任务,下行任务表示需要电梯向下运行的任务。

为了使监控程序一直处于运行状态,我们在run()方法中用while(true)的永真循环来实现。

另外,几个常用的线程类方法需要熟练使用。

●public void start():启动线程。

●public void suspend():将线程挂起。

●public void resume():将线程从挂起状态恢复成就绪状态。

●public void stop():使线程进入死亡状态。

下面是参考程序:

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class Applet5 extends java.applet.Applet implements ActionListener,Runnable{ Panel Floor_Panel=new Panel();

Panel Elevator_Panel=new Panel();

Panel Indication_Panel=new Panel();

Panel Floor1_Panel=new Panel();

Panel Floor2_Panel=new Panel();

Panel Floor3_Panel=new Panel();

Panel Floor4_Panel=new Panel();

Panel Floor5_Panel=new Panel();

Panel Floor6_Panel=new Panel();

Label FloorLabel1=new Label("F1");

Label FloorLabel2=new Label("F2");

Label FloorLabel3=new Label("F3");

Label FloorLabel4=new Label("F4");

Label FloorLabel5=new Label("F5");

Label FloorLabel6=new Label("F6");

FloorButton UpButton1=new FloorButton(1,true,"∧");

FloorButton DnButton1=new FloorButton(1,false,"∨");

FloorButton UpButton2=new FloorButton(2,true,"∧");

FloorButton DnButton2=new FloorButton(2,false,"∨");

FloorButton UpButton3=new FloorButton(3,true,"∧");

FloorButton DnButton3=new FloorButton(3,false,"∨");

FloorButton UpButton4=new FloorButton(4,true,"∧");

FloorButton DnButton4=new FloorButton(4,false,"∨");

FloorButton UpButton5=new FloorButton(5,true,"∧");

FloorButton DnButton5=new FloorButton(5,false,"∨");

FloorButton UpButton6=new FloorButton(6,true,"∧");

FloorButton DnButton6=new FloorButton(6,false,"∨");

Panel SubInd_Panel1=new Panel();

Panel SubInd_Panel2=new Panel();

Panel SubInd_Panel3=new Panel();

Button Start_Button=new Button("启动电梯");

Button Stop_Button=new Button("关闭电梯");

Label Indication_Prompt=new Label("电梯所在层");

Label State_Prompt=new Label("电梯状态");

……………………………………………………………………

Elevator_Image=getImage(getDocumentBase(),"Img02.gif");

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource() instanceof FloorButton)

{

FloorButton vfb=(FloorButton)(e.getSource());

if(vfb.IsUp)

if((theElevator.getPosition()>=vfb.Floor)&&(theElevator.getState()==1))

EUpQueue.InsertData(vfb.Floor,false);

else

EUpQueue.InsertData(vfb.Floor,true);

else

if((theElevator.getPosition()<=vfb.Floor)&&(theElevator.getState()==-1))

EDnQueue.InsertData(vfb.Floor,false);

else

EDnQueue.InsertData(vfb.Floor,true);

vfb.setBackground(Color.red);

}

else if(e.getSource() instanceof DesFlButton)

{

DesFlButton vfb=(DesFlButton)(e.getSource());

if(vfb.Floor>theElevator.Position)

EUpQueue.InsertData(vfb.Floor,true);

else if(vfb.Floor

EDnQueue.InsertData(vfb.Floor,true);

else

if(vfb.Floor==theElevator.Position)

{

if(theElevator.getState()==-1)

EUpQueue.InsertData(vfb.Floor,true);

}

vfb.setBackground(Color.red);

}

else if(e.getSource()==Start_Button)

{

Start_Button.setBackground(Color.red);

Start_Button.setEnabled(false);

Stop_Button.setBackground(Color.lightGray);

Start_Button.setEnabled(true);

resume();

}

else if(e.getSource()==Stop_Button)

{

Start_Button.setBackground(Color.lightGray);

Stop_Button.setBackground(Color.red);

Start_Button.setEnabled(false);

suspend1();

大学java课程设计实验报告_计算器

JAVA课程设计报告 组员信息: 第(二)组 计算器的实现问题 问题描述:制作一个计算器 基本要求:要求实现类似Windows操作系统里面的标准计算器。 在此基础上实现部分科学性的功能。 测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测试 算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用 addActionListener()对各个时间进行监听。调用 系统库函数对数值进行运算。 模块划分:1、主函数main()创建一个计算器。 2、void actionPerformed(ActionEvent e)对鼠标 点击的事件进行响应以及在文本框中的显示。 3、各Buuton对应的功能: “开方”:对输入数字开方 “平方”:对输入数字平方

“getResult()”:对四则运算进行分别运算操 作 “backspace”:取消上一次的操作 “CE”:取消上一次运算的操作 “C”:清空作用 “sin”:对输入数据进行sin运算 “cos”:对输入数据进行cos运算 “tan”:对输入数据进行tan运算 “+/-”:对输入的数据取反 “+”,“-”,“*”,“/”:对数据进行四则 运算 源程序: package hechongwei; import https://www.360docs.net/doc/5618870577.html,ng.String; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import https://www.360docs.net/doc/5618870577.html,ng.Math; class Calculator extends JFrame implements ActionListener

Java课程设计题目2

面向对象课程设计题目 1、个人通信录管理信息系统的设计与实现 目的:通过本题目的设计,加深对面向对象程序设计技术的理解,掌握利用数据库编写小型程序的基本过程和方法。 任务: 1)利用面向对象编程技术,完成个人信息的存储管理; 2)选择系统开发平台(JAVA或.NET)和软件架构(C/S、单机版); 3)要求系统能够对联系人的系统进行录入、查询、编辑、导入和导出等。 2、个人电子相册的设计与实现 目的:掌握一种开发平台,编写出具有高交互性应用程序。 任务: 1)分析现有的电子相册的具体功能; 2)选择一种开发平台(JAVA或.NET)编写电子相册应用; 3)个人电子相册应该具备用户注册、照片浏览、创建影集、照片旋转、放大等各种基本功能。 3、音像租赁管理系统的开发与实现 目的:通过资料收集,了解音像租赁连锁店的基本业务需求,完成系统需求分析和概要设计,采用C/S架构完成一个简单的光盘租赁管理系统的开发。 任务: 1)音像租赁连锁店的基本业务需求,完成需求分析报告; 2)利用JAVA编写一个基本功能的光盘租赁管理系统,包括客户信息管理、音像资料管理、音像检索、业务统计等;

4、学生综合信息管理信息系统的设计与实现 目的:通过实际编写一个学生综合信息管理软件,将所学多门课程的技能、技巧(面向对象系统分析、变量命名、软件模块设计、数据库访问等)加以综合运用,达到较大规模软件独立设计与开发的能力。 任务: 1)选择JAVA或.NET完成一个桌面架构的学生综合信息管理软件; 2)软件可以对学院大学生综合信息(姓名、学号、成绩、籍贯、家庭所在地、特长、宿舍号等)进行管理(录入、删除、修改)、统计、分析(排 序)、查询与打印 3)课程设计报告要求涵盖需求分析、概要设计、详细设计的主要内容,包括系统功能定义、模块划分、对象设计与实现的技术细节。 5、家庭财务管理信息系统设计与开发 目的:通过实际编写一个家庭财务管理软件,将所学多门课程的技能、技巧(面向对象系统分析、变量命名、软件模块设计、数据库访问、数理统计分析等)加以综合运用,达到较大规模软件独立设计与开发的能力。 任务: 1)选择者JAVA或.NET完成一个桌面架构的学生综合信息管理软件; 2)软件能够对家庭的收入、支出进行分类统计,用户可以自定义收入、指出的类别,自定义分类查询和统计的条件。系统可以按照用户定义自动 生成统计报表(月报、季报、年报)。通过财务分析,对家庭收支提出 改进建议; 3)课程设计报告要求涵盖需求分析、概要设计、详细设计的主要内容,包括系统功能定义、模块划分、对象设计与实现的技术细节。

职工管理系统java课程设计简单实现

目录 一、绪论 (1) 1.1关键技术介绍 (1) 1.1.1JAVA技术 (1) 1.1.2SQL数据库 (1) 二、需求分析 (2) 三、系统概要设计: (3) 3.1问题描述 (3) 3.2要求 (3) 3.3数据库设计 (3) 四、系统详细设计 (5) 4.1新员工信息录入 (5) 4.2显示员工信息 (7) 4.3修改员工信息 (8) 4.4查询员工信息 (10) 4.5删除员工信息 (13) 4.6员工信息排序 (15) 4.7员工信息统计 (16) 4.8注销 (17) 五、系统测试 (18) 5.1系统登录 (18) 5.2系统主界面.................................. 错误!未定义书签。 5.3新员工信息录入.............................. 错误!未定义书签。 5.4显示员工信息................................ 错误!未定义书签。 5.5修改员工信息................................ 错误!未定义书签。 5.6查询员工信息................................ 错误!未定义书签。 5.7删除员工信息................................ 错误!未定义书签。 5.8排列系统.................................... 错误!未定义书签。 5.9统计界面.................................... 错误!未定义书签。

5.10注销....................................... 错误!未定义书签。 六、总结 (19) 八、附录.......................................... 错误!未定义书签。

JAVA课程设计报告

《JA V A程序设计》 课程设计报告 设计题目:学生信息管理系统学院名称:信息工程学院 专业班级:13计本1 姓名: 学号:

目录 一需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 二概要设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 三详细设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 3.1 数据库设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 3.2 模块及窗体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 3.2.1 数据库模块设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3 3.2.2 用户登录识别模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5 3.2.3用户信息管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6 (1)密码修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6 (2)用户信息添加和删除。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8 3.2.4 学生息管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 (1)添加信息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 (2)信息查看。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11 (3)信息修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12 (4)删除信息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14 3.2.5 系统管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15 3.2.6 主窗体菜单设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15 四软件测试。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15 五总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15 参考资料:.......................................................17

java课程设计之贪吃蛇

系统描述 (1) 1.1本设计的目的和意义 (1) 1.2设计的主要内容 (1) 1.3设计要达到的目标 (2) 1.4设计需要实现的功能和目标 (2) 1.5游戏设计环境 (2) 二分析与设计 (3) 2.1 游戏处理流程 (3) 2.2需求分析 (4) 2.3功能模块设计 (4) 2.4详细设计 (8) 三系统测试 (19) 四心得体会 (21) 五参考文献 (22) 六附录 (24)

基于Java的游戏“贪吃蛇”的设计和实现 内容提要: “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软 件开发流程的目的。 一系统描述 1.1本设计的目的和意义 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现开始、暂停、退出等功能。

Java课程设计实验报告

Java课程设计实验报告 导语:日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。以下是小编为大家整理分享的Java课程设计实验报告,欢迎阅读参考。 1、加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2、使用本学期学习的Java SE技术完成多功能日历GUI 程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3、在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 1、问题描述准确、规范。 2、程序结构合理,调试数据准确、有代表性、。 3、界面布局整齐,人机交互方便。 4、输出结果正确。 5、正确撰写实验报告。 编写一个GUI程序实现日历的功能。一年日历用12页

显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农 历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报 时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 1、在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2、在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3、各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4、根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5、详细的上机实验步骤见任务分工及程序设计进度表。 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能

java课程设计参考题目

参考题目 选题原则:所完成的系统应能够在生活、学习中使用,以实用性为主。模仿生活、学习中使用到的各种软件,做mini版本。开发的目标是自己、同学愿意使用你所开发的软件完成一些简单任务。从小功能着手,一点点的添加功能。添加一个功能就运行试试,减少越来越难于调试的可能。也可自选。jsp或java完成都可。 1.文件复制 完成一个程序,这个程序可以将指定文件夹中的内容复制到另一个文件夹中去。 设计要求: 1)实现文件夹复制; 2)程序中需要考虑输入输出异常处理; 3)用户可以指定不同的参数:用-ext指定要复制的文件的扩展名,可以 同时指定多个扩展名;用-empty指定不复制空目录;用-zip表示进行压缩; 还可以增加其它选项 4)在dos控制台窗口环境下,通过命令行参数运行程序,如: 2.图片浏览器 类似于ACDSEE的图片浏览器 设计要求: 1)可以对图片进行不同的分类,并能够按分类显示 2)备份功能,用压缩实现用户选定文件的备份,用户指定文件的方式 要多样,如在分类上、在实际文件夹上。 3)幻灯功能,通过分类、实际文件夹等多种方式指定要幻灯浏览的图 片; 3.压缩文件浏览器 仿照Winrar浏览压缩文件。 设计要求: 1)能够以图形方式显示zip、tar、jar压缩文件中的内容

2)能解压用户选定的文件到选定的目录,注意winrar中指定解压整个 目录的方式 3)能够对压缩文件增加注释 4.文件加密工具 能够对文件、文件夹进行加密,可以由用户选择加密算法。 设计要求: 1)图形界面选定加密、解密的文件。 5.提醒簿(使用数据库) 仿照雪狐提醒簿。 设计要求: 1)由用户定义时间及提醒的内容; 2)定时时间到弹出窗口提醒或使用其它方式; 3)用户可以更改、删除提醒; 4)提醒的方式中包括使用邮件; 5)可以浏览提醒,已完成和未完成使用不同的图标; 6)用户可以注册、登录,登录的显示属于自己的提醒事项; 7)可以导出、导入提醒。 6.部门员工管理系统(使用数据库) 图形界面实现对部门、员工的管理。部门可以增、删、改,员工可以增、删、改及在不同的部门间调动。部门放JComboBox中,所属员工信息用多个JTextField 或JTable显示都可。要用菜单实现不同的功能。 7.备忘录(使用数据库) 设计要求: 1)系统界面的左侧是日历,该日历可以按年份前后翻动,在某年内按 月可以前后翻动; 2)单击选定的日期,系统界面的右侧显示相应的记事,可增、删、改; 3)每日的记事可有多条。 8.学生成绩管理系统(使用数据库) 功能要求: 2

JAVA课程设计银行管理系统

大连科技学院java程序设计课程设计(B) 题目银行取款管理系统 学生姓名姚伟奇专业班级计算机(Z)13-1 指导教师李红职称讲师 所在单位信息科学系软件工程教研室 教学部主任王立娟 完成日期 2016年9月30日 课程设计报告单

综合评定: (优、良、中、及格、不及格)指导教师签字:2016年9月30日《java程序设计课程设计(B)》任务书 一、课程设计任务及要求: 任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。 要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。 (2)提交课程设计报告。 (3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。 二、工作量 2周(10个工作日)时间 三、计划安排 第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第2个工作日-第4个工作日:设计程序结构、模块图。 第5个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。 第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。

指导教师签字:2016年9月19日

目录 题目:.................................................... 错误!未定义书签。 1.需求分析............................................ 错误!未定义书签。 2.概要设计............................................ 错误!未定义书签。 3.详细设计............................................ 错误!未定义书签。 4.编码................................................ 错误!未定义书签。 5.调试分析............................................ 错误!未定义书签。 6.测试结果及运行效果.................................. 错误!未定义书签。 7.系统开发所用到的技术................................ 错误!未定义书签。 8.课程设计总结........................................ 错误!未定义书签。参考文献................................................. 错误!未定义书签。5 附录全部代码............................................. 错误!未定义书签。

JAVA课程设计题目

Java课程设计题目 一、课程设计的目的 为了进一步巩固java程序设计课程所学到的知识,深刻把握Java语言的重 要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。 通过此次课程设计,巩固所学java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通 过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程 思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 二、课程设计的基本要求 1、明确题目要求,进行需求分析; 2、进行功能设计,编写设计说明; 3、进行程序设计与调试; 4、对设计过程进行系统的总结; 5、界面美观大方; 6、完成设计报告 7、课程设计建议在Editplus +JDK、JCreator +JDK、myeclipse平台上开发、调试。 8、 Java源程序应加上详尽的注释语句,对所设计的类、属性、方法说明其用途,对方法的调用说明其用意和使用参数的原因。特别是有深刻理解、有独 特见解的地方,用注释语句加以说明。 三、课程设计的主要内容 利用学到的编程知识和编程技巧,通过具体项目的分析、设计和开发,掌握开发Java大型软件项目过程中所需要的软件技术并熟悉软件。 可以以小组为单位,每组1至2名学生,在教师的指导下,每组完成一个题目。题目可由下面提供的选题中选择或学生自选经教师审核后方可。该组每个同学承担题目的不同部分,每位同学的课程设计报告必需独立完成。 题目类型大致分配如下: 1、网络通讯类,编制网络聊天(Chat)程序,以下简称“网络”类。

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

java课程设计题目

java课程设计题目 设设HoMEWORK2012-02-2819:23 要求设明, 1.人一设~每设设设设一设目~如果列出多版本~只需要完成其中一版本两个个个即 可 2.由设委设设设设设各设设及其设目~下周以设子模式提交设目列表名设学档 3.每设必设完成相设的UML设;至少需要包括用例设、设设、设序设或者设作设,~UML 设可有Visio或者Rose或者StarUML或其他设似的工具完成 4.第六周设始机抽设设大家演示设述从随 设目列表如下, 1.打字游设(JavaGUI本地版/JSP版本/Javascript) 2.设文件设行明文加密(JavaGUI本地版) 3.在设设店设设站网(WEB版本) 4.5子棋游设(设版网/WEB版) 5.俄设斯方设(设版网/WEB版) 6.音设播放器(JavaGUI本地版) 7.设子相册(JavaGUI本地版) 8.多人聊天室((JavaGUI本地版/WEB版)9.模设考设系设(WEB版) 10.克游设扑(JavaGUI本地版/WEB版) 设设设明, 1.打字游设(JavaGUI本地版/JSP版本/Javascript)

设设背设设和打字速度, 可根据一片文章自设设入设设 整设设下落或者淡入淡出个 同设多设设出设个 设设入设设的设设分析设设功能 设分 2.设文件设行明文加密(JavaGUI本地版) DEC加解密,需要密设~可以解密 3.在设设店设设站网(WEB版本) 设设目的目的是设设一设合站~设设《在设设店》的基本功能~如管理设设~上设个网网 售网设设等功能。要求站能设布到Internet上。设站采用网 Jsp+JavaBean+JDBC+MySql|SQLServer等技设架~服设器端采用框Tomcat服设器。 4.5子棋游设(设版网/WEB版) 设设程序~完成下述功能,在大于9设的方形格棋设上~放置黑白色棋子条网两~两网弈两条人各设一色~通设设设~可以在任何设的交点上放置棋子~同色棋子~先同行、同列或者同设角设上5设设成一设者设设。条 5.俄设斯方设(设版网/WEB版) 设设程序~完成下述功能, 完成一可以人通设设设设的俄设斯方设游设~每一方都可以在自己的幕个两个网屏 上看到设方的前游设~游设先设束的一方设失设者当状况 6.音设播放器(JavaGUI本地版)

2013级JAVA课程设计题目

Java课程设计题目 一、课程设计总体要求: 本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 重要说明日程说明: 1、4月21日前分组选题,查询资料,21-27日程序设计以及上机调试。最多2人一组。 2、设计报告打印一份,并将电子版以”13信算xx班第XX组报告.rar”的压缩包发到邮 箱:325822013@https://www.360docs.net/doc/5618870577.html,邮箱。 3、压缩包里包含:设计报告的word版,word名称参考说明2,程序源代码文件。 注意:4月27日23点59分之后不再接收电子以及纸质稿,逾期成绩一律按不及格计算,联系方式qq:325822013,TEL:670705。 机房开放安排说明: 1.机房地点:求中502、503 2.时间安排共开放2.5天: 21日(周一):1-2节信算1、2班/ 3-4节数学1、2班/ 5-6节信算3班 23日(周三)全天,25日(周五)上午自由开放 二、参考题目及要求: 1、编写一个记事本程序(2人) 要求:用图形用户界面实现。 能实现编辑、保存、另存为、查找替换等功能。 提示:使用文件输入输出流。 2、ATM柜员机模拟程序(3人) 要求:使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: 1、查询余额:初始余额为10000元 2、A TM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 3、A TM存款:不能出现负存款。 4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 3、超市收银系统(3人) 要求:使用图形用户界面。 由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。从数据库中取出有关价格信息,再把这些信息返回给收银台。同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询。 另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。如果一个未持卡顾客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠。

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

JavaWeb课程设计实验报告

湖南科技大学计算机科学与工程学院 WEB编程课程设计报告 题目:网上购物商店 学号:1111111111 姓名: 1 指导老师: 1 完成时间:111111111

目录 一、设计内容 (3) 二、设计方法 (4) 1、网站的整体结构设计 (4) 2、网站设计的技术方案 (5) 3、网站的界面设计 (6) 三、实现方法 (8) 1、数据库的设计 (8) 2、网站具体的实现过程 (10) 开发环境: (10) 设计思路 (10) 四、心得体会 (11)

随着互联网时代的迅猛发展,人们的生活方式已经发生了翻天覆地的变化,传统的实体店购物方式已经不能满足人们的需求,传统购物方式购物不方便,非得出门才能购物,去到了实体店有不一定有自己满意的商品,有时候会浪费大量的时间和精力。 随着网络的全面覆盖,网上支付系统的逐步完善,物流业的快速兴起,网上购物已经成为了当今购物的潮流。 网上购物商店主要满足人们足不出户就能买到自己想要的物品的需要,同时也为商家省去了昂贵的门面租赁费用,而且商品还可以卖到全国各地,大大的扩大了客源又节省了成本。 网上购物商店主要有以下几个方面的功能: 顾客可以浏览整个网站的商品,可以再网站进行注册,注册之后可以登录并购买商品,同时也可以查看和修改自己的个人信息,为了安全的需求,还可以修改密码。 商家,也就是店主,管理员,可以管理网站所出售的所有商品,同时也可以对在网站进行注册的用户进行管理。 1、用户登录、注册功能 (1)注册功能:用户进入网站,如果有兴趣在该商店购买商品,那么用户就可以注册。 (2)登录功能。已经注册的用户可以登录,登录之后方可购买商品。 (3)查看、修改用户信息功能。 (4)修改密码,为了用户安全的需要,经常更换密码可以保证用户账户的安全。 2、购物功能 (1)物品浏览:顾客进入网站,就可以浏览网站的商品。 (2)商品购买:顾客注册自己的账户,并登录之后就可以在网站购买商品了。购买商品的步骤如下; a)添加商品到购物车 b)确定购买 3、商品管理:管理网站所出售的商品。 4、用户管理:管理员对在网站注册的用户进行管理。 5、订单管理:对用户的订单进行管理。

java课程设计要求与题目

《面向对象程序设计》综合实验指导书一.课程设计的目的和任务 《面向对象程序设计》课程设计是软件工程专业本科学生在学习完《面向对象程序设计》课程之后的一个重要的实践环节。要求学生在教师的指导下,综合运用在《面向对象程序设计》课程中学过的面向对象程序设计思想与Java编程技巧,独立完成一项较为完整、并具有一定难度的课程设计任务,加深对面向对象程序设计思想的理解,掌握利用Java语言编写具体的应用程序。培养学生的团队合作精神、良好的程序设计风格以及了解应用程序的设计开发过程和Java程序编程与测试的能力。二.总体要求: 1、每个班分若干个组,每组2-3人(自由组合)课程设计题目由任 课老师指定; 2、人员分工:组长1人、组员1到2人。组长可由小组人员自行选出 或自荐,组长的职责是负责与老师交流,合理安排分配本组的各项任务,任务有:系统总体设计、编码、测试、写文档。 3、程序编码总体要求: 编程工具统一使用Eclipse。 统一使用Java的AWT组件进行GUI编程(或Applet编程), 必须有登录界面,登录的用户名和密码为组长的名字的全 拼;非Applet程序要求有一个框架窗口,关闭窗口时要注意 处理窗口事件退出程序。 程序编码时,必须严格遵守Java程序标识符的一般约定,并 要加适量的注释。 4、程序编码完成后,一定要进行严密的测试工作。 5、文档内容要求: 封面(见封面文件)。以下每个内容为一章; 项目计划(内容是:小组人员名单与所负责的工作)。 程序详细功能描述(描述你的程序能完成什么功能)。要求 200字左右。 程序使用说明(对程序的每个操作步骤的屏幕画面进行载 图,并加以文字说明)。 此次课程设计的编程心得。要求每人50字以上。 文档的字体与大小,统一采用“宋体五号字”;要将以上内容 合写成一篇完整的文档;文档头要加入标题和目录索引。 6、程序完成后,要提交文档与程序(包括源码,每组提交一份),

Java课程设计之贪吃蛇

Java课程设计之贪吃蛇 安阳工学院计算机学院 JAVA课程设计报告 专业班级: 学生姓名: 学生学号: 小组成员: 指导教师姓名: 宋强 目录 一选题目的与系统概述 (1) 1.1选题目的 (1) 1.2系统概述.................................................................................1 二系统可行性分析与相关技术背景分析 (2) 2.1系统可行性分析 (2) 2.2相关技术背景分析.....................................................................2 三系统设计与关键技术 (3) 3.1系统设计 (3) 3.2关键技术.................................................................................5 四系统测试与操作实施方法.........................................................9 五系统设计总结与回顾 (11) 六参考文献 (12) 一、选题目的与系统概述 1.1 选题目的 贪吃蛇游戏是一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用Netbeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握Netbeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2 系统概述 1.2.1 设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。可实现开始、暂停、改变速度,更换颜色等功能。 1.2.2 设计要达到的目标 本次设计要达到的目标分别从以下模块进行阐述: 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏场景、状态栏、颜色设置、网格模式、及相关提示信息等。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停等功能。为了能

java课程设计实验报告

Java课程设计实验报告实验题目:打字游戏小程序 专业:计算机科学与技术系 班级:1202班 成员:

Java课程设计(打字游戏小程序) 一、课程设计目的 经过一学期的java学习,能灵活运用书中和实验中所学习的各类知识和技巧,并且能在程序开发中得以很好的运用和发挥。在以后的学习和工作中,可以从中获取很好的经验,并且锻炼自己开发程序和创新的意识。 二、课程设计内容 1.课程设计简介 设计的是一个打字的小游戏,屏幕上不断地有英文字母下落,键盘输入字母,屏幕上与输入的字母形同的就会消失,并计分,如果有没有消去的字母掉到屏幕底,将扣分。 2.设计说明 因为要进行键盘操作,所以引用了event包,还要注册事件监听。字母是随机产生的,又要用。注册了线程。还要对窗口定义坐标,防止字母出现在同一位子。并且通过一位数组来给随机出现的字母做坐标定义。主要通过一位数组来控制字母的坐标,并且通过字母坐标的改变来对整个游戏的流程进行控制。 3.设计流程图 4.实现功能 随机产生字母,运用了键盘操作当按对屏幕中出现的字母时,该字母全部消失,并且在分数上相应的增加或减少。 5.详细设计(源代码) 1) packageDownCharGame; import import import /** *下落的字母实体类 *@authorshenbf * */ publicclassCharEntity{ raw(g); } etY()>=480){ etX((int)()*580)+30); chs[i].setY(0);

chs[i].setColor(newColor((int)()*256), (int)()*256),(int)()*256))); chs[i].setCh((char)(65+(int)()*26))); } chs[i].down(); } repaint();tart(); } publicvoidkeyTyped(KeyEvente){ } publicvoidkeyPressed(KeyEvente){ } publicvoidkeyReleased(KeyEvente){ etCh()||key==chs[i].getCh()+32){ etY()

学生信息管理系统java课程设计源代码

JAVA程序设计课程设计报告 课题: 学生信息管理系统 姓名: 学号: 同组姓名: 专业班级: 指导教师: 设计时间: 评阅意见: 评定成绩: 指

目录 一、系统描述 (2) 1、需要实现的功能 (3) 2、设计目的 (3) 二、分析与设计 (3) 1、功能模块划分 (3) 2、数据库结构描述 (4) 3、系统详细设计文档 (6) 4、各个模块的实现方法描述 (9) 5、测试数据及期望结果 (11) 三、系统测试 (16) 四、心得体会 (23) 五、参考文献 (24) 六、附录 (24)

一、系统描述 1、需求实现的功能 1.1、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。 1.2、修改学生基本信息的功能 在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。 1.3、查询学生基本信息的功能 可使用“姓名”对已存有的学生资料进行查询。 1.4、删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。 1.5、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 1.6、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,

相关文档
最新文档