数据结构课程设计报告 第 5 页,共 页
enum EleStatus{Opening,Opened,Closing,Closed,Moving,Decelerate,Waiting};
enum Action{DoorOpened,DoorClosed,GoingUp,GoingDown,Achieved,None};
enum EleStage{Up,Down,OpenDoor,Stop};
enum ClientStatus{New,GiveUp,In,Out,Finish};
#define CloseTest 40//电梯关门测试时间
#define OverTime 300 //电梯停候超时时间
#define Accelerate 15//加速时间
#define UpTime 51 //上升时间
#define DownTime 61 //下降时间
#define UpDecelerate 14 //上升减速
#define DownDecelerate 23 //下降减速
#define DoorTime 20 //开门关门时间
#define InOutTime 25 //进出电梯时间
#define Maxfloor 4 //最高层
#define Minfloor 0 //最低层
long Time=0; //时钟
long MaxTime;//系统运行最长时间
int InOutCount=0;//用于进出计时
int InterTime=0;//下一乘客进入系统的时间
int ID=0; //乘客编号
int GiveUpNumber=0;//乘客放弃的数目
int TotalTime=0;//总共等待时间
部分重要操作的算法:
1、判断运动方向函数 EleDecide 的算法:
2、统计高层和低层的请求(不包括当前层)。
3、高层和低层均无请求:发出 Stop 命令。
4、否则,
1)若电梯在上升期:
1. 若有高层请求:上升;
2.若无高层请求:转下降期,下降。
2)若电梯在下降期:
1. 若有低层请求:下降;
2. 若无有低层请求:转上升期,上升。
判断电梯是否要停于当前层函数 EleAchieved 的算法:
1. 该层的 CallCar 为 1;
2. 该层在上升(下降)期有上升(下降)请求(判断 CallUp 或 CallDown);
3. 上升(下降)期高(低)层没有请求而该层由下降(上升)请求,要转换运行时期。
判断电梯动作函数 ElevatorRun 的算法:
1. 若电梯在 Opening 状态,则转至 Opened 状态。
2. 若电梯在 Opened 状态,若无人进出,则转至 Closing 状态。
3. 若电梯在 Closed 状态,则根据电梯请求情况转至相应状态。
4. 若电梯在 Closing 状态,则转至 Closed 状态。
5. 若电梯在 Moving 状态,若达到目标层,则转至 Decelerate 状态。否
评论0
最新资源