一、需求分析:
1.电梯的基本需求功能
每一架电梯分别编号1、2、3、4。每一架电梯都有一实时监控器,负责监控电梯上下,向电梯升降盒发送启动、制动、加速、减速、开关电梯门的信号。
2.电梯按钮功能分析
电梯(升降盒)上下来回地运动,电梯内部有一些按钮,每一个按钮代表一层楼,当按下按钮时,按钮的灯亮。
电梯沿某一方向运动,在将要到达某一层楼时,实时监控器判断电梯内是否有乘客要在此层楼下电梯,若有,则发送信号给电梯升降架,让其减速,同时让电梯在此层楼的电梯入口处平稳地停下,电梯停下后,实时监控器让电梯内相应的按钮灯灭,让乘客出电梯,然后关闭电梯门,而且继续朝原方向运动,直至到达当前运动方向上,有乘客要求到达的最后一层楼为止(即如:若该建筑物有50层,电梯当前正向上运动,若有乘客要求到达的最高楼层为30层,则电梯运动到30层之后,若30层以上没有乘客发出请求,则电梯可根据电梯内是否“有人”而向下运动或停止)。
除底层和顶层只有一个按钮外,每个楼层有两个按钮,分别指示上楼和下楼请求,当按下后,按钮灯亮,并向实时监控器发送请求,实时监控程序负责判断乘客的上下楼请求是否与电梯的当前运动方向一致,若不一致,则暂不受理此请求,此时按钮灯继续亮;若一致,则实时监控器将相应的上下请求按钮灯熄灭,并让电梯平稳地停在此层楼的电梯入口处,让相应的乘客入电梯,而后继续朝原方向运动。若同时有两层或两层以上的楼发出请求,产生了冲突,则实时监控器调用冲突处理器进行抉择,受理其中的一个请求,并负责将各请求上下楼的按钮灯熄灭。
3.当电梯发生异常现象时的功能需求
若电梯超员(超重)时,电梯发出警报,并且忽略任何请求,停止工作。直至载客量缩减在可承受范围,正常运行。
4.针对本题而作的特殊需求:
四部电梯承重不同设置不同的乘客上限。21层楼,0、1层人流量较大,开门时间要长,并且电梯不使用时可自动回到一楼停止。
二、设计概要
1、界面设计:
因为还没有完成,这里给出两个电梯四层楼的界面示例。
2、程序设计思路:
使用c#编程
a、设计电梯类,包含数据成员:人数、限制人数,成员函数:电梯启动、制动、加速、减速、开关电梯门等。加以时间限制。
b、调度:
电梯对象:根据按钮的按下作出相应反应,上下移动或停止。将行进方向和所在楼层反馈给各楼层以及电梯内部显示器。
按钮功能的实现:当有楼层“上”“下”按钮被按下,调动电梯行至该楼层,开关电梯门。增减乘客数量,反馈给电梯总人数判断是否超额。电梯内部楼层按钮被按下,电梯行至该层开电梯门。具体细节参考需求分析,不再赘述。总之模拟电梯调度,调用成员函数。
c、显示:电梯实时乘客数量、数量超过最大限度时报警信号(同时电梯制动)、电梯所在楼层及运行状况(上行、下行或停止),未完成的按钮指令以红色显示。
3、总结:
电梯调度比较复杂,其中有许多判断与冲突,一开始思路比较混乱,找了一些关于电梯的介绍之后渐渐有了一点头绪。因为c#是初学,许多地方对我们来说比较困难,可能编写起来比较慢,并且部分难以实现。希望最终能够把心中所想通过代码实现,完美运行。