您的位置:首页 > 编程语言 > C#

【C#】结对项目开发-电梯调度需求分析(党云龙、黄为)

2014-03-09 22:51 323 查看
1 、春晖楼实际调研

  数据



  电梯实际运行概况

    经过实际的调研,电梯的实际运行状况与开始的初步想法有些出入,在外部同一组电梯,按下其中一个请求按钮,一组电梯的请求信号同时亮起同时做出响应,并且电梯没有固定初始位置,初始位置默认为电梯最后到达的一楼层,在内部进入电梯后如不对电梯发出任何请求,电梯不做出任何响应,电梯运行中优先响应与电梯运行方向相同的请求,

2、设计

对于四部电梯调度进行简化来进行思考;首先我们假定有一台电梯,对于上述条件进行调度。



电梯
电梯有三种状态,上升、静止、下降;同时电梯根据上述条件有乘客与重量的限制,是否超重;在最顶层上升不可用,在最低层下降不可用,求助状态,断电状态,电梯门状态,电梯所在楼层。
Class 电梯
{
private int MoveStatus;//运行状态
private int MoveDir;//运行方向
private int MaxWeight;//重量限制
private int WhereFloor;//所在楼层
private bool HelpSingle;//求助信号
private bool NoPower;//断电状态
private bool DoorStatus;//电梯门状态
pubulic bool OpenDoor();//打开电梯门
pubulic bool CloseDoor();//关闭电梯门
pubulic bool OverWeight();//检测超重
pubulic bool ChangStatue();//改变电梯状态

}

运行
单电梯情况:
每一层,乘客发出请求,电梯响应请求。首先,进行方向判断,优先与电梯方向相同并且楼层与电梯所在楼层相近的请求。其次,待与电梯方向相同的请求执行完毕之后,电梯改变运行方向,按照之前的规则执行,直至电梯没人,电梯恢复初始位置。
假设:电梯初始楼层在一楼,MoveRequest=0(用户请求变量),监测用户请求,此时电梯门处于关闭状态;
1、若有用户请求,判断是否本层请求
若在本层,则用OpenDoor()函数打开电梯门,同时每隔固定时间检测用户是否已全部进入电梯,若已全部进入电梯,则用CloseDoor()函数关闭电梯,继续运行。
若不在本层,则判断时候接收到多了用户请求,若是多个请求则利用JudgeNext()函数判断该响应哪一个请求。若只有一个请求,则直接响应,判断是否需要改变运行方向MoveDir,上为1,下为-1,改变运行状态MoveStatus上升为1,静止为0,下降为-1.

2、若无请求,则继续监视。

JudgeNext()
{

if(判断请求楼层是否与电梯运行方向相同)
{

for()//多个请求,依次响应

{
if(若多个请求,比较距离本楼层最近的请求)
{给出响应}

}
}
else

{
电梯方向响应完成后,改变方向,响应反方向的请求。规则与上面类似。

}
}
推广:四电梯情况
与一电梯情况区别在,某人在某层同时给四部电梯发出请求,四部电梯如何响应的问题。
pubulic float TotleCost()//计算出此状态 到达目标层所用时间

{

电梯状态随着请求的结束不断变化,每个状态时间不一样。

}
BestJudgeNext()//给出最有响应

{

根据四部电梯的状态,计算出到达本层并响应该请求总共所用的时间,取时间最短的电梯做出响应。
}

特殊情况
超重:当电梯超重时,电梯发出警告,电梯不可用,保持运行方向,待问题解决完之后,电梯可用,继续运行。
断电:在备用电源的支持下,电梯恢复到初始位置。
意外停止:电梯强制静止,通知发送求助状态。

3、设计窗体初稿:





以图片替换的形式来展示电梯的运行过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: