当前位置:文档之家› Java课程设计------电梯控制系统

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

1.乘客类(Passenger)
Passenger
Press()
2.管理员类(Manager)
Manager
LockFloor()
OpenFloor()
3.电梯类(Elevator)
属性State表示电梯的状态(停止、上行、下行),Position表示电梯所在的楼层(1-N),IsOverWeight标识电梯是否超重,IsNormal用于标识电梯是否正常。
根据分析,我们可以得到下面这些类。
乘客类(Passenger)、管理员类(Manager)、电梯类(Elevator)、电梯门类(ElevatorDoor)、楼层的上行请求按钮类(Go Up Request)、楼层的下请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)、楼层锁类(lock)、指示灯类(Indicate Light)、队列类(Queue)、定时器类(Timer)、异常处理类(Expection)。

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分别用语指定矩形的宽和高。
(3)按钮除了第一层和顶层,每一层都有两个按钮(上行、下行),乘客可以呼叫上楼或下楼,顶楼只有一个下楼按钮,而第一层只有一个上楼按钮。
电梯里面具有:
(1)标示从“1”到“N”的N个按钮,用于让乘客选择所要的层数;
(2)关门按钮当乘客按下此按钮时,电梯门如果开着将关上,否则不执行任何操作;
(3)开门按钮当乘客按下此按钮时,电梯如果停在某一层,电梯门将打开,否则不执行任何操作;
(1)乘客按下电梯内L层的按钮。
(2)如果被按下的楼层号L比电梯当前所在的楼层号高。
将此楼层号插入到上行队列的合适位置。
如果L被插入到上行队列头。
如果电梯正处于上行状态。
将L发送给电梯作为电梯的目的地。
(3)如果被按下的层号L比电梯当前所在的楼层低。
将此楼层号L插入到下行队列的合适位置。
如果L被插入到下行队列头。
为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯被强制停止。
A2用例模型
1.角色识别
根据前面系统的描述,可以确定与该系统交互的两个角色:电梯管理员(elevator manager)和乘客(passenger),其中乘客是电梯的主要使用者,电梯管理员的责任是对电梯进行维护(见图A1)。
方法StartUp(Floor)表示启动电梯上行到Floor层,StartDown(Floor)表示启动电梯下行到Floor层,Stop表示电梯停下来,Warn()启动电梯超重警报,CancelWarn取消电梯超重警报。
Elevator
State
Position
IsOverWeight
IsNormal
A1系统描述
1.功能描述
本电梯系统用来控制一台运行于一个具有N层的大楼电梯,它具有上升、下降、开门、关门、载客的基本功能。
大楼的每一层都有:
(1)两个指示灯这两个指示灯分别用于指示当前所在的层数和电梯的当前状态(上行、下行或停止);
(2)电梯锁用于将本层的电梯门锁住,并使本楼层的电梯按钮失效,电梯里相应的按钮也失效,使得电梯不能也不可能停在本层;
StartUp(Floor)
StartDown(Floor)
Stop()
Warn()
CancelWarn()
4.梯门类(ElevatorDoor)
属性State表示电梯门的状态(开或关),方法Open()表示打开电梯门,Close()表示关闭电梯门。
ElevatorDoor
State
Open()
Close
如果电梯门关着。打开电梯门。
如果电梯门开着。保持电梯门开状态。
用例6超重测试(overweight test)
(1)乘客进入电梯。
(2)如果电梯超重感应装置检测到超重。
电梯发出超重警报,并拒绝关闭电梯门。
乘客走出电梯。
电梯解除超重警报,并允许关闭电梯门。
用例7锁住某层电梯锁(lock floor)
此层的楼层请求按钮和电梯内的楼层按钮失效。
下面是程序的实现部分。
import java.awt.*;
import java.applet.*;
public class Applet1 extends java.applet.Applet {
Button closeDoor=new Button("关门");
按下关门按钮(close door)。
按下开门按钮(open door)。
超重测试(overweight test)。
电梯管理员的用例:
锁住某层电梯锁(lock floor)。
打开某层电梯锁(open floor)。
用例的描述如下:
用例1按下某楼层的上行按钮(go up stair)
(1)乘客按下第M层的上行按钮。
图A1
2.用例识别
在角色的基础上,可以确定系统的用例,做法是针对每一个角色考查它要求系统提供的功能,它使用系统的哪些功能,经过分析,可得到如下的用例。
乘客相关的用例:
按下某楼层的上行按钮(go up stair)。
按下某楼层的下行按钮(go down stair)。
按下某电梯内的某一层楼按钮(go to floor request)。
(2)M被插入到上行队列的合适位置。
(3)如果M被插到上行队列头。
如果电梯正处于上行状态。将M发送给电梯作为目的地。
如果电梯处于停止状态。将M发送给电梯作为目的地。
(4)电梯到达此楼层。
(5)电梯自动打开门(用例9)。
(6)乘客进入电梯。
(7)超重测试(用例6)。
用例2按下某楼层的下行按钮(go down stair)。
6.指示灯类(Indicate Light)
指示灯分为楼层指示灯和电梯状态指示灯,其中State属性表示指示灯的状态(亮或灭)。楼层指示灯有Show(Floor)方法用于显示电梯所在楼层数,电梯状态指示灯有Show(UporDown)方法用于显示电梯上行或下行。
7.楼层锁类(lock)
属性State表示楼层锁的状态(关或开),OnFloor表示锁所在的楼层数,方法On()表示开锁,Off()表示关锁。
(2)掌握简单的图形动画效果。
实训要求
创建Applet程序,实现土5-1(a)所示简单的电梯二维图形,并当单击“开门“、“关门”按钮时实现图形上的关门、开门动作。如图5-1(b)就是单击开门后正在开门的过程中。
实训指导
java.awt包提供了控制字体的Font类、控制颜色的Color类。通过这两个类的属性的设置可以实现对界面上的字体和颜色的控制。
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类提供的绘制图形和文字的方法了。
如果电梯正处于下行状态。
将L发送给电梯作为目的地。
(4)电梯到达目的楼层。
(5)电梯自动开门(用例9)。
用例4按下关门按钮(request close door)
(1)如果电梯门关着。
保持电梯门关闭状态。
(2)如果电梯门开着。
关闭电梯门。
用例5按下开门按钮(request open door)
如果电梯停在某一层。
(1)新的请求插入到上行队列头。
(2)电梯到达某个楼层将这个楼层的请求从上行队列的队列头删除,后继的更高楼层号成为对列头。
当电梯正在下行时,如。有两种原因引起下行队列头的改变。
(1)新的请求插入到下行队列头。
(2)电梯到达某个楼层将这个楼层的请求从下行队列的队列头删除,后继的更高楼层号成为对列头。
在电梯上行过程中,当上行队列中没有比电梯当前所在的楼层更高的楼层号时,发送电梯目的地的开始从下行队列中取得。同样,在电梯下行过程中,当下行队列中没有比电梯当前所在的楼层更低的楼层号时,发送电梯目的地的开始从上行队列中取得。如此反复,当两个队列中都没有数据时,电梯暂停。
当电梯到达某层时,此层的所有请求按钮全部复位(包括楼层和电梯里的按钮),电梯门自动开启,在一段时间内如果乘客没有按下开门或关门的按钮,电梯将自动关门。
LockFloor
State
OnFloor
On()
Off()
8.队列类(Queue)
队列类用于创建上行和下行队列,IsEmpty属性表示队列是否为空,方法Insert(Elevator)用于插入元素,DeleteHead()方法用于删除队列头元素,Send(HeadElement)用于将队列头发送给电梯。
5.楼层的上行请求按钮类(Go Up Request)、楼层的下行请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)
属性State表示按钮是否已经被按下,Enabled表示按钮是否能用(如果被管理员锁住就不能用),OnFloor表示按钮对应的楼层号,方法Press()表示按下按钮,Reset()表示复位按钮,
相关主题