软件工程第四个程序:结对项目 —— 电梯调度问题
题目:
情景设置:现有一新建办公大厦,共有21层,共有四部电梯。
基本参数:电梯编号,可服务楼层,最大乘客数量与最大载重量。
使用规定:
1、楼层号为0~20,其中0号为地下一层;
2、有楼层限制的电梯不在响应楼层停靠,如单双层;
3、所有电梯采用统一按钮控制。
分析:
这是一个有4部电梯的办公大厦,楼层为地下1层,1层到20层;电梯有编号,有楼层限制,并有超重报警;
我们要设计一款软件,实现电梯的合理调度,满足用户的电梯使用的需求;
实际问题分析:很多写字楼都有多部电梯,他们在排一起,一部电梯负责1到20层,另一部电梯负责20层到30层,再来部电梯负责30层往上;
每部电梯的门旁边都有上下按钮,你到哪层按哪部电梯。
我们这题有4部,不可能在门外只有一个上下按钮。也就是说:电梯之间应该是相互独立的;
至少单双层限制的电梯肯定是分开的,不然你要去15层,按下电梯按钮后,只停双层的电梯门开了,你上还是不上?
在大型综合医院的电梯大厅里左边的电梯是只停单层的,右边的只停双层。
为了求证,清明假期第一天,我还去了八院。住院楼那里有个电梯大厅,共有六部电梯,三部三部对着的,左手边的只停单层,右手边的只停双层,左右两边都是三部电梯中间夹着两套上下按钮。但是两边的电梯各有一个是暂停服务的(留着紧急时使用,我觉着)。按下其中一个按钮,同侧的另一套相应的按钮也会亮起。表示两套按钮不管按哪个,系统都会识别此层有人要叫电梯。
我们的这栋办公楼里有四部电梯,二号电梯只停单层,三号电梯只停双层,我们可以把一号和二号电梯划为一组,三号和四号电梯划为一组,各用一套上下按钮,即各自为一个小系统。
建立好了电梯的布局,再来熟悉一下电梯的使用规则:
1.乘客在电梯外按上或下按钮,等待电梯,电梯来了进入电梯;
2.乘客进入电梯后,按电梯内部楼层按键,电梯到达指定楼层后,走出电梯。
这是对乘客而言的电梯使用规则,而对电梯系统而言的乘客运送规则为:
1.某一楼层的上下按钮被按下,上下按传给电梯系统信息(包括:哪一组,哪一层,哪个按钮);
//传递“哪一组”是没有必要的,真正电梯运行的时候,两组电梯毛关系没有,这里想要把四部电梯都显示在一起才加这么一项。
2.电梯系统接收消息,初步处理,转由该组的电梯调度程序处理,调度程序将楼层和方向通知所辖的电梯;
3.多部电梯都接到了信息,先到的电梯完成了该任务,告知调度程序任务已经完成,调度程序随即通知所辖的电梯取消该任务。
4.之后,到达指定楼层的电梯,内部的楼层按键被按下,电梯运行程序记录所有被按下的楼层按键,逐一抵达。
J.X.Dinosaur