当前位置:
文档之家› 电梯控制系统(Java课程设计)内容
电梯控制系统(Java课程设计)内容
当电梯正在上行时,如果上行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。有两种原因引起队列头的改变。
(1)新的请求插入到上行队列头。
(2)电梯到达某个楼层将这个楼层的请求从上行队列的队列头删除,后继的更高楼层号成为对列头。
当电梯正在下行时,如果下行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。有两种原因引起下行队列头的改变。
(2)M被插入到上行队列的合适位置。
(3)如果M被插到上行队列头。
如果电梯正处于上行状态。将M发送给电梯作为目的地。
如果电梯处于停止状态。将M发送给电梯作为目的地。
(4)电梯到达此楼层。
(5)电梯自动打开门(用例9)。
(6)乘客进入电梯。
(7)超重测试(用例6)。
用例2按下某楼层的下行按钮(go down stair)。
用例8打开某层电梯锁(open floor)
此层的楼层请求按钮和电梯内的楼层按钮恢复正常。
用例9自动打开电梯门(auto open door)
(1)电梯到达某楼层。
(2)电梯自动开门。
用例10自动关闭电梯门(auto close door)
(1)电梯门打开的状态达到设置的时限。
(2)关闭电梯门。
A3 类模型
根据分析,我们可以得到下面这些类。
乘客类(Passenger)、管理员类(Manager)、电梯类(Elevator)、电梯门类(ElevatorDoor)、楼层的上行请求按钮类(Go Up Request)、楼层的下请求按钮类(Gequest)、楼层锁类(lock)、指示灯类(Indicate Light)、队列类(Queue)、定时器类(Timer)、异常处理类(Expection)。
5.楼层的上行请求按钮类(Go Up Request)、楼层的下行请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)
属性State表示按钮是否已经被按下,Enabled表示按钮是否能用(如果被管理员锁住就不能用),OnFloor表示按钮对应的楼层号,方法Press()表示按下按钮,Reset()表示复位按钮,
A1系统描述
1.功能描述
本电梯系统用来控制一台运行于一个具有N层的大楼电梯,它具有上升、下降、开门、关门、载客的基本功能。
大楼的每一层都有:
(1)两个指示灯这两个指示灯分别用于指示当前所在的层数和电梯的当前状态(上行、下行或停止);
(2)电梯锁用于将本层的电梯门锁住,并使本楼层的电梯按钮失效,电梯里相应的按钮也失效,使得电梯不能也不可能停在本层;
(1)新的请求插入到下行队列头。
(2)电梯到达某个楼层将这个楼层的请求从下行队列的队列头删除,后继的更高楼层号成为对列头。
在电梯上行过程中,当上行队列中没有比电梯当前所在的楼层更高的楼层号时,发送电梯目的地的开始从下行队列中取得。同样,在电梯下行过程中,当下行队列中没有比电梯当前所在的楼层更低的楼层号时,发送电梯目的地的开始从上行队列中取得。如此反复,当两个队列中都没有数据时,电梯暂停。
(1)乘客按下电梯内L层的按钮。
(2)如果被按下的楼层号L比电梯当前所在的楼层号高。
将此楼层号插入到上行队列的合适位置。
如果L被插入到上行队列头。
如果电梯正处于上行状态。
将L发送给电梯作为电梯的目的地。
(3)如果被按下的层号L比电梯当前所在的楼层低。
将此楼层号L插入到下行队列的合适位置。
如果L被插入到下行队列头。
1.乘客类(Passenger)
Passenger
Press()
2.管理员类(Manager)
Manager
LockFloor()
OpenFloor()
3.电梯类(Elevator)
属性State表示电梯的状态(停止、上行、下行),Position表示电梯所在的楼层(1-N),IsOverWeight标识电梯是否超重,IsNormal用于标识电梯是否正常。
(3)按钮除了第一层和顶层,每一层都有两个按钮(上行、下行),乘客可以呼叫上楼或下楼,顶楼只有一个下楼按钮,而第一层只有一个上楼按钮。
电梯里面具有:
(1)标示从“1”到“N”的N个按钮,用于让乘客选择所要的层数;
(2)关门按钮当乘客按下此按钮时,电梯门如果开着将关上,否则不执行任何操作;
(3)开门按钮当乘客按下此按钮时,电梯如果停在某一层,电梯门将打开,否则不执行任何操作;
StartUp(Floor)
StartDown(Floor)
Stop()
Warn()
CancelWarn()
4.梯门类(ElevatorDoor)
属性State表示电梯门的状态(开或关),方法Open()表示打开电梯门,Close()表示关闭电梯门。
ElevatorDoor
State
Open()
Close
Type属性用语标识发生的异常类型,Source记录异常源,Doing()方法用于当发生异常时做出的处理。
Exception
Type
Source
Doing()
11.类关系图。
实训内容
实训内容一绘制电梯图形
实训目的
(1)学会使用Java.awt包中的Graphics类控制和显示用户自定义界面成分,如字体、颜色和图形。
(2)掌握简单的图形动画效果。
实训要求
创建Applet程序,实现土5-1(a)所示简单的电梯二维图形,并当单击“开门“、“关门”按钮时实现图形上的关门、开门动作。如图5-1(b)就是单击开门后正在开门的过程中。
实训指导
java.awt包提供了控制字体的Font类、控制颜色的Color类。通过这两个类的属性的设置可以实现对界面上的字体和颜色的控制。
如果电梯门关着。打开电梯门。
如果电梯门开着。保持电梯门开状态。
用例6超重测试(overweight test)
(1)乘客进入电梯。
(2)如果电梯超重感应装置检测到超重。
电梯发出超重警报,并拒绝关闭电梯门。
乘客走出电梯。
电梯解除超重警报,并允许关闭电梯门。
用例7锁住某层电梯锁(lock floor)
此层的楼层请求按钮和电梯内的楼层按钮失效。
DrawOval(int x,int y,int width,int height)方法和fillOval(int x,int y,int width,int height)方法可以在指定的矩形区域内绘制椭圆,其中的参数x、y、width、height分别表示矩形的左上角x、y坐标、宽和高。
方法StartUp(Floor)表示启动电梯上行到Floor层,StartDown(Floor)表示启动电梯下行到Floor层,Stop表示电梯停下来,Warn()启动电梯超重警报,CancelWarn取消电梯超重警报。
Elevator
State
Position
IsOverWeight
IsNormal
(1)乘客按下第M层的下行按钮。
(2)M被插入到下行队列的合适位置。
(3)如果M被插到下行队列头。
如果电梯正处于下行状态。将M发送给电梯作为目的地。
如果电梯处于停止状态将M发送给电梯作为目的地。
(4)电梯到达此楼层。
(5)电梯自动打开门(用例9)。
(6)乘客进入电梯。
(7)超重测试(用例9)。
用例3按下电梯内的某一楼层按钮(go to floor request)
如
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分别用语指定矩形的宽和高。
IsEmpty
Insert(Elevator)
DeleteHead()
Send(HeadElement)
9.定时器类(Timer)
Time属性用于设置定时的时间长,StartTimer()方法用于启动计时,当计时结束时执行Doing()方法并停止计时。
Time
StartTimer()
Doing()
10.异常处理类(Expection)
6.指示灯类(Indicate Light)
指示灯分为楼层指示灯和电梯状态指示灯,其中State属性表示指示灯的状态(亮或灭)。楼层指示灯有Show(Floor)方法用于显示电梯所在楼层数,电梯状态指示灯有Show(UporDown)方法用于显示电梯上行或下行。
7.楼层锁类(lock)
属性State表示楼层锁的状态(关或开),OnFloor表示锁所在的楼层数,方法On()表示开锁,Off()表示关锁。
按下关门按钮(close door)。
按下开门按钮(open door)。
超重测试(overweight test)。
电梯管理员的用例:
锁住某层电梯锁(lock floor)。
打开某层电梯锁(open floor)。
用例的描述如下:
用例1按下某楼层的上行按钮(go up stair)
(1)乘客按下第M层的上行按钮。
如closeDoor.setFont(new Font(“TimesRoman”,Font.BOLD,12));
这个语句将closeDoor上显示的文字颜色设置成红色。
Java.awt包还提供了用户绘图操作的类Graphics,其中包括了许多绘制文字和图形的相关方法。使用Graphics类可以绘制线、圆和椭圆、矩形和多边形、显示图像、动画和各种字体。