资源描述
设计书明书
一、问题描述
用面向对象办法和面向对象程序设计语言,实现满足下述规定一种高层建筑电梯活动仿真程序。
1. 问题域概述
某国际展览中心共 40 层,设有载客电梯10 部(用E0~E9 标记)。
2. 限定条件
(1) 电梯运营规则是:
E0、E1:可到达每层。
E2、E3:可到达1、25~40 层。
E4、E5:可到达1~25 层。
E6、E7:可到达1、2~40 层中偶数层。
E8、E9:可到达1~39 层中奇数层。
(2) 每部电梯最大乘员量均为K 人(K 值可以依照仿真状况在10~18 人之间拟定)。
(3) 仿真开始时,各电梯随机地处在其符合运营规则任意一层,为空梯。
(4) 仿真开始后,有N 人(0<N<1000)在M 分钟(0<M<10)内随机地到达该国际展览中心1 层,开始乘梯活动。
(5) 每位乘客初次所要到达楼层是随机,令其在适当电梯处等待电梯到来。
(6) 每位乘客乘坐适当电梯到达指定楼层后,随机地停留10-120 秒后,再随机地去往另一楼层,依此类推,当每人乘坐过L 次(每人L 值不同,在产生乘客时随机地在1~10 次之间拟定)电梯后,第L+1 次为下至底层并结束乘梯行为。到所有乘客结束乘梯行为时,本次仿真结束。
(7) 电梯运营速度为S 秒/层(S 值可以依照仿真状况在1~5 之间拟定),每人上下时间为T 秒(T 值可以依照仿真状况在2~10 之间拟定)。
(8) 电梯运营方向由先发出祈求者决定,不容许后发出祈求者变化电梯当前运营方向,除非是未被祈求空梯。
(9) 当某层有乘客按下乘梯电钮时,优先考虑离该层近来、满足条件(8)、可以最快到达目的层电梯。
(10) 不容许电梯超员。
3. 开发成果行为特性
(1) 产生事件周期为1 秒,每次可产生0 个或各种事件。
(2) 各随机事件由互不有关伪随机数发生器决定。
(3) 设计一种易于理解界面,动态显示各梯载客与运营状况,动态显示各楼层人员停留状况与规定乘梯状况;动态显示从仿真开始到当前时间。
(4) 显示时用应表达出不同乘客及其当前所规定去往楼层。例如,12-32 表达标记为12 乘客规定去往32 层。
(5) 记录各梯运营与空闲时间;记录各人发出乘梯规定后等待时间;仿真结束后显示这些时间。
(6) 参数K、N、M、S、T 应从命令行输入。
(7) (选做)考虑有些乘客(随机决定)携带物品体积较大,需占用1~2 人电梯空间(随机决定),且上下梯时间比其她乘客长一倍状况,再进行相应仿真(注意,不是所有乘客都携带较大体积物品)。这时,显示乘客及所去往楼层时要可以辨认出与否携带了较大体积物品。
二、分析与设计模型
1. 分析过程
(1) 依照问题域中所描述内容,可以生成一张“电梯楼层可达表”,其中“1”表达它所在列所相应电梯可到达它所在行相应楼层,如下所示:
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
F1
1
1
1
1
1
1
1
1
1
1
F2
1
1
1
1
1
1
F3
1
1
1
1
1
1
F4
1
1
1
1
1
1
F5
1
1
1
1
1
1
F6
1
1
1
1
1
1
F7
1
1
1
1
1
1
F8
1
1
1
1
1
1
F9
1
1
1
1
1
1
F10
1
1
1
1
1
1
F11
1
1
1
1
1
1
F12
1
1
1
1
1
1
F13
1
1
1
1
1
1
F14
1
1
1
1
1
1
F15
1
1
1
1
1
1
F16
1
1
1
1
1
1
F17
1
1
1
1
1
1
F18
1
1
1
1
1
1
F19
1
1
1
1
1
1
F20
1
1
1
1
1
1
F21
1
1
1
1
1
1
F22
1
1
1
1
1
1
F23
1
1
1
1
1
1
F24
1
1
1
1
1
1
F25
1
1
1
1
1
1
1
1
F26
1
1
1
1
1
1
F27
1
1
1
1
1
1
F28
1
1
1
1
1
1
F29
1
1
1
1
1
1
F30
1
1
1
1
1
1
F31
1
1
1
1
1
1
F32
1
1
1
1
1
1
F33
1
1
1
1
1
1
F34
1
1
1
1
1
1
F35
1
1
1
1
1
1
F36
1
1
1
1
1
1
F37
1
1
1
1
1
1
F38
1
1
1
1
1
1
F39
1
1
1
1
1
1
F40
1
1
1
1
1
1
(2) 依照问题域中所描述内容,在系统中辨认出了三种不同事物,分别是乘客,电梯和楼层。开始仿真后,对于某一种乘客,如果她不在楼层中,那么就一定在电梯中。这样就可以将楼层和电梯都看作是包括容器和其她数据和标志对象,在这些对象容器中存储就是乘客。
(3) 将楼层看作是容器时,发现楼层对象内部容器可以按作用分为两大类,一类是存储在该层随机停留乘客容器,另一类是存储在该层等待电梯乘客容器。其中,第二类容器又可以按照乘客是向上还是向下分为两类,一类是存储等待向上乘客容器,另一类是存储等待向下乘客容器。
总结起来,楼层内部容器共可以分为三类:随机停留容器、等待向上容器和等待向下容器。
依照楼层包括这三种容器中哪几种不同,可以将楼层分为三类:
a. 底层楼层。
乘客在底层楼层中只可以随机停留或者乘梯向上运动,因此底层楼层只包括两种容器:随机停留容器和等待向上容器。
b. 中间楼层
乘客在中间楼层可以随机停留,并且乘客既可以乘梯向上运动,又可以乘梯向下运动,因此中间楼层中包括三种容器:随机停留容器、等待向上容器和等待向下容器。
c. 顶层楼层
乘客在顶层楼层中只可以随机停留或者乘梯向下运动,因此顶层楼层只包括两种容器:随机停留容器和等待向下容器。
又由于每个楼层可到达电梯是不同,因此在楼层类型内部定义一种vector,初始化时候该vector为空,然后通过查看楼层电梯可达表再填充该vector内容,里面存储了所有可到达该楼层电梯信息。
(4) 将电梯看作是容器时,所有电梯都可以使用一种类型来表达了。在电梯类型中,定义一种vector,初始化时候该vector为空,然后通过查看楼层电梯可达表再填充该vector内容,里面存储了该电梯可到达所有楼层信息。
(5) 对于乘客来说,乘客当前在某一楼层,打算去另一楼层。乘客懂得当前所在楼层所有电梯中有哪些可以到达自己想要去楼层,并且会对这些所有可以可到达电梯都发出与自己目的方向相似乘梯祈求。当某一电梯到达乘客所在楼层时,若该电梯可到达乘客要去楼层,并且当前运动方向与乘客目的方向相似,并且当前排在该乘客前方乘客没有上该电梯,并且该电梯不满时,乘客才会上该电梯。如果乘客正在等待上电梯,而同步又有另一部满足条件电梯到达,并且当前没有人上下,那么乘客就直接上另一部电梯,而不是等待本来那部电梯。这样就可以保证乘客总是可以乘坐最早到达该层电梯,而不是死等某一固定电梯到达。
2. 系统中重要类辨认
依照上述分析,在系统中辨认出来重要有三个类:电梯类Elevator,楼层类Floor和乘客类Passenger。其中Elevator类是对各类电梯抽象,它封装了各类电梯数据构造和办法。Floor类是一种虚基类,在该类中定义了各类操作公共接口;由Floor类派生出三个子类,分别为BottomFloor类,MiddleFloor类和TopFloor类,分别为对底层楼层、中间楼层和顶层楼层抽象,分别封装了底层楼层、中间楼层和顶层楼层数据机构和办法。Passenger类是对不同乘客抽象,它封装了乘客数据构造和办法。
3. 系统中类图
4. 类间交互过程
在系统中定义乘客、楼层和电梯三种对象。乘客按下该楼层乘梯按钮发出乘梯祈求,楼层将该乘梯祈求告知相应电梯,电梯响应祈求,到达该楼层时告知该楼层电梯到达,该楼层告知等待乘客电梯到达。乘客上电梯后电梯离开,告知楼层电梯离开,楼层告知所有在该层等待乘客电梯离开。乘客在电梯内设立目的楼层号,电梯载乘客到达目的楼层后告知乘客电梯到达,乘客下电梯。
5. 乘客及电梯状态迁移图
(1) 乘客状态迁移图
乘客有11种不同状态,分别是“仿真开始前”,“随机停留”,“等待电梯到达”,“等待上电梯”,“正在上电梯”,“等待电梯运营”,“随电梯向目的层运动”,“随电梯在非目的层停止”,“等待下电梯”,“正在下电梯”和“仿真结束”。这些状态只有在时钟每秒触发时候才会发生相应转换,如果乘客当前状态没有转为另一种状态,则表达乘客维持当前状态不变。
对某一种乘客仿真开始前,乘客状态是“仿真开始前”。当乘客进入大楼,对乘客仿真开始,乘客状态置为“随机停留”。当乘客当前状态为“随机停留”,并且乘客仿真次数还没有到达设定最大值,那么当乘客停留时间到,如果此时没有符合乘客乘梯规定电梯到达,乘客状态转为“等待电梯到达”;如果此时有符合乘客乘梯规定电梯到达,并且此时电梯中没有人上下,那么乘客状态改为“正在上电梯”;如果此时电梯中有人正在下电梯或者乘客前方人正在上电梯,那么乘客状态改为“等待上电梯”。当乘客当前状态为“等待上电梯”,而此时已没有人再下电梯,并且前面乘客也都已经上了电梯,那么乘客状态转为“正在上电梯”;而如果乘客当前状态为“等待上电梯”,而电梯已满并且离开,那么乘客状态转为“等待电梯到达”。当乘客当前状态为“正在上电梯”,如果已经完毕上电梯活动,并且背面乘客不再上电梯,那么乘客状态转为“随电梯向目的层运动”;如果背面乘客依然在上电梯,那么乘客状态转为“等待电梯运动”。当乘客当前状态为“等待电梯运动”,而所有乘客都已经完毕上电梯活动,电梯开始运动,乘客状态改为“随电梯向目的层运动”。当乘客当前状态为“随电梯向目的层运动”,电梯在某层停下,如果该层不是乘客目的层,那么乘客状态转为“随电梯停留”;如果该层是乘客目的层,如果前面有人下电梯,那么乘客状态转为“等待下电梯”;如果前面没有人下电梯,乘客状态转为“正在下电梯”。如果乘客当前状态为“等待下电梯”,前面乘客已经下电梯完毕,那么乘客状态转为“正在下电梯”。如果乘客当前状态为“正在下电梯”,并且已经下电梯结束,那么乘客当前状态转为“随机停留”。如果乘客当前状态为“随机停留”,并且乘客仿真次数已经到达了设定最大值,那么乘客状态转为“结束仿真”。
(2) 电梯状态迁移图
仿真开始前,电梯状态为“停止”。当仿真开始后,电梯状态为“停止”,如果电梯按照运营规则查找到目的楼层是当前楼层上方楼层,那么电梯状态转为“向上运动”;如果目的楼层是下方楼层,那么电梯当前状态转为“向下运动”;如果目的楼层就是“当前楼层”,那么电梯状态转为“在某层停留”。如果电梯当前状态为“向上运动”,电梯已经到达目的层,那么电梯状态转为“在某层停留”。如果电梯当前状态为“向下运动”,电梯已经到达目的层,那么电梯状态转为“在某层停留”。如果电梯当前状态为“在某层停留”,上下乘客结束,电梯查找下一目的层,如果下一目的层为上方楼层,那么电梯状态转为“向上运动”;如果下一目的层为下方楼层,那么电梯状态转为“向下运动”;如果找不到目的楼层,那么阐明电梯当前没有乘客使用,电梯状态转为“停止”。
三、标记符命名规则
1. 类命名规则
类命名形式为“类名意义单词”,类名中单词首字母大写。例如:Elevator,Floor,Passenger。
2. 成员函数命名规则
类中成员函数命名规则为“x_代表成员函数功能单词组合”,其中x为字母e时,表达为Elevator电梯类成员函数;x为字母f时,表达为Floor楼层类成员函数;x为字母p时,表达为Passenger乘客类成员函数。单词组合中每个单词首字母大写。例如:e_FindDestinationFloor(),f_NoticeElevatorLeaveUp(),p_GetInBuilding()。
3. 数据成员命名规则
类中数据成员命名规则为“x_表达其功能与含义单词组合”,其中x为字母e时,表达为Elevator电梯类数据成员;x为字母f时,表达为Floor楼层类数据成员;x为字母p时,表达为Passenger乘客类数据成员。单词组合中每个单词首字母大写。如e_CurrentPassengerAmount,f_FloorNumber,p_RandomStayingTime。
4. 局部变量命名规则
局部变量用小写单词表达,成员函数参数使用“X_表达其功能与含义单词组合”,其中X为字母E时,表达为Elevator电梯类成员函数参数;X为字母F时,表达为Floor楼层类成员函数参数;X为字母P时,表达为Passenger乘客类成员函数数据成员。单词组合中每个单词首字母大写。如E_FloorNumber,F_ElevatorNumber,P_ElevatorNumber。
总之,系统中所有标记符都做到了见其名能知其义。
四、系统中重要类及办法阐明
1. Elevator类阐明
它是系统中各种电梯抽象。有如下属性和办法:
对该类阐明如下:
class Elevator
{
private:
static int e_TimeNeedPerFloor; //电梯每上或下一层所需要时间
static int e_MaxPassengerAmount; //电梯最大容客量
int e_ElevatorNumber; //电梯编号
int e_CurrentPassengerAmount; //电梯内当前乘客数目
ElevatorState e_CurrentState; //电梯当前状态
Direction e_Direction; //电梯运营方向
Direction e_ArrivedDirection; //电梯下一步运营方向
int e_CurrentFloorNumber; //当前楼层编号
int e_DestinationFloorNumber; //目的楼层编号
int e_NextFloorNumber; //下一楼层编号
int e_TimeNeedToNextFloor; //到下一楼层所需要时间
int e_TimeNeedToNextFloorStepCounter; //从当前楼层出发向下一楼层运动已经通过时间(计数器)
int e_StayFreeTimeCounter; //电梯在某层停留时没有人上下时间计数器
bool e_bBusy; //与否有人上下标志
bool e_bFull; //电梯与否已满标志
int e_TotalRunTime; //总运营时间
int e_TotalStopTime; //总停止时间
int e_NearestDestinatedFloorNumber; //电梯内乘客所要到达楼层中近来楼层
int e_NearestRequestedFloorNumber; //查找到近来发出乘梯祈求楼层
int e_FarestRequestedFloorNumber; //查找到最远发出乘梯祈求楼层
int e_ElevatorRelatedFloorSize; //电梯可到达楼层数目
vector<ElevatorRelatedFloor> e_RelatedFloorVector; //电梯可达到楼层及其相应标志
public:
Elevator(int E_ElevatorNumber); //构造函数
~Elevator(); //析构函数
static void e_SetTimeNeedPerFloor(int E_TimeNeedPerFloor); //设立电梯运营速度(多少秒一层)函数接口
static void e_SetMaxPassengerAmount(int E_MaxPassengerAmount); //设立电梯最大容客量函数接口
void e_Simulation(); //电梯仿真函数接口
void e_GetSummary(); //仿真结束后显示电梯运营时间与空闲时间函数接口
void e_PrintCurrentState(); //打印电梯当前状态函数接口
void e_FindDestinationFloor(); //按照既定运营规则查找电梯下一目的楼层函数接口
void e_AddRelatedFloor(int E_FloorNumber,Floor* E_FloorPtr); //添加电梯可到达楼层函数接口
void e_MakeUpRequest(int E_FloorNumber); //响应楼层向上乘梯祈求函数接口
void e_MakeDownRequest(int E_FloorNumber); //响应楼层向下乘梯祈求函数接口
void e_NoticeElevatorArriveUp(int E_FloorNumber); //告知E_FloorNumber楼层此电梯到达并且继续向上运动函数接口
void e_NoticeElevatorArriveDown(int E_FloorNumber); //告知E_FloorNumber楼层此电梯到达并且继续向下运动函数接口
void e_NoticeElevatorLeaveUp(int E_FloorNumber); //告知E_FloorNumber楼层此电梯离开并且继续向上运动函数接口
void e_NoticeElevatorLeaveDown(int E_FloorNumber); //告知E_FloorNumber楼层此电梯离开并且继续向下运动函数接口
void e_AddPassenger(int E_FloorNumber,Passenger* E_PassengerPtr); //向电梯中添加乘客函数接口,乘客上电梯时调用该函数
void e_RemovePassenger(int E_FloorNumber,Passenger* E_PassengerPtr); //从电梯中删除乘客函数接口,乘客下电梯时调用该函数
void e_SetDestinationFloor(int E_DestinationFloorNumber); //设立目的楼层函数接口,乘客设立目的楼层时调用该函数
void e_SetElevatorBusy(); //乘客上下电梯时调用该函数,表达电梯当前被占用,其她乘客不能访问
void e_SetElevatorFree(); //乘客上下电梯时调用该函数,表达电梯当前没有被占用,其她乘客可以访问
int e_GetTotalRunTime(); //获取电梯总运营时间函数接口
int e_GetTotalStopTime(); //获取电梯总停止时间函数接口
ElevatorState e_GetCurrentState(); //获取电梯当前状态函数接口
int e_GetCurrentFloorNumber(); //获取电梯当前所在楼层函数接口
bool e_IsFull(); //判断电梯当前与否已满函数接口
bool e_IsBusy(); //判断电梯当前与否被占用函数接口
void e_RemoveInvalidPassenger(); //由电梯自己调用,删除已经下电梯失效乘客
};
2. Floor类阐明
2.1 Floor基类
Floor类是一种虚基类,它定义了楼层所提供操作接口,如下所示:
对该类阐明如下:
class Floor
{
public:
virtual void f_Simulation() = 0; //楼层仿真函数接口
virtual void f_PrintCurrentState() = 0; //打印楼层当前状态函数接口
virtual int f_GetFloorNumber() = 0; //获取楼层号函数接口
virtual void f_MakeRequest(int F_ElevatorNumber,Direction F_RequestDir) = 0; //发出祈求函数接口,供乘客发出乘梯祈求时调用
virtual void f_NoticeElevatorArrive(int F_ElevatorNumber,Direction F_ElevatorDir) = 0; //告知在本层等待乘客电梯到达
virtual void f_NoticeElevatorLeave(int F_ElevatorNumber,Direction F_ElevatorDir) = 0; //告知在本层等待乘客电梯离开
virtual void f_AddPassengerToStayingContainer(Passenger* F_PassengerPtr) = 0; //添加乘客到停留容器里,供乘客进入停留容器时调用
virtual void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr) = 0; //从停留容器中移除乘客,供乘客停留时间届时进入等待容器时调用
virtual void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir) = 0; //添加乘客到等待容器,供乘客停留时间届时进入等待容器时调用
virtual void f_RemovePassengerFromWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir) = 0; //从等待容器中移除乘客,供乘客进入电梯时调用
virtual void f_AddRelatedElevator(int F_ElevatorNumber,Elevator* F_ElevatorPtr) = 0; //添加可到达该层电梯信息以相应标志
};
由Floor类派生出BottomFloor、MiddleFloor和TopFloor这三个子类,接下来分别简介。
2.2 BottomFloor底层楼层类
BottomFloor类是对底层楼层(1楼)抽象,它有如下数据构造和操作:
对该类阐明如下:
class BottomFloor :public Floor
{
int f_FloorNumber; //楼层号
int f_RelatedElevatorSize; //可到达该楼层电梯数目
vector<BottomFloorRelatedElevator> f_RelatedElevatorVector; //可到达该楼层电梯列表
int f_StayingContainerSize; //该层中停留容器中乘客数目
list<FloorRelatedPassenger> f_PassengerStayingContainer; //该层中停留容器(停留乘客列表)
int f_WaitingUpContainerSize; //该层中档待向上容器中乘客数目
list<FloorRelatedPassenger> f_PassengerWaitingUpContainer; //该层中档待向上容器(等待向上乘客列表)
public:
BottomFloor(int F_FloorNumber); //构造函数
~BottomFloor(); //析构函数
void f_Simulation(); //楼层仿真函数接口
void f_PrintCurrentState(); //打印楼层当前状态函数接口
int f_GetFloorNumber(); //获取楼层号函数接口
void f_AddRelatedElevator(int F_ElevatorNumber,Elevator* F_ElevatorPtr); //添加可到达该层电梯信息以及相应标志
void f_NoticeElevatorArrive(int F_ElevatorNumber,Direction F_ElevatorDir); //告知在本层等待乘客电梯到达
void f_NoticeElevatorLeave(int F_ElevatorNumber,Direction F_ElevatorDir); //告知在本层等待乘客电梯离开
void f_MakeRequest(int F_ElevatorNumber,Direction F_RequestDir); //发出祈求函数接口,供乘客发出乘梯祈求时调用
void f_AddPassengerToStayingContainer(Passenger* F_PassengerPtr); //添加乘客到停留容器里,供乘客进入停留容器时调用
void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr); //从停留容器中移除乘客,供乘客停留时间届时进入等待容器时调用
void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir); //添加乘客到等待容器,供乘客停留时间届时进入等待容器时调用
void f_RemovePassengerFromWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir); //从等待容器中移除乘客,供乘客进入电梯时调用
void f_AddPassengerToWaitingUpContainer(Passenger* F_PassengerPtr); //添加乘客到等待向上容器,供乘客停留时间届时进入等待向上容器时调用
void f_RemovePassengerFromWaitingUpContainer(Passenger* F_PassengerPtr); //从等待向上容器中移除乘客,供乘客进入电梯时调用
void f_MakeUpRequest(int F_ElevatorNumber); //发出向上祈求函数接口,供乘客发出向上乘梯祈求时调用
void f_NoticeElevatorArriveUp(int F_ElevatorNumber); //告知在本层等待乘客电梯到达并且接下来会向上运动
void f_NoticeElevatorLeaveUp(int F_ElevatorNumber); //告知在本层等待乘客电梯离开并且接下来会向上运动
void f_NoticePassengerElevatorArriveUp(); //告知在本层等待乘客本楼层有哪些电梯停留、有哪些电梯到达并且接下来会向上运动,这是留给楼层调用函数接口,当电梯到达某层楼,并且接下来将会向上运动时楼层调用该函数告知乘客
void f_RemoveInvalidPassengerFromStayingContainer(); //由楼层自己调用,删除已经离开随机停留容器失效乘客
void f_RemoveInvalidPassengerFromWaitingContainer(); //由楼层自己调用,删除已经离开等待容器失效乘客
void f_RemoveInvalidPassengerFromWaitingUpContainer(); //由楼层自己调用,删除已经离开等待向上容器失效乘客
};
2.3 MiddleFloor中间楼层类
MiddleFloor类是对中间楼层(2至39楼)抽象,它有如下数据构造和操作:
对该类阐明如下:
class MiddleFloor :public Floor
{
int f_FloorNumber; //楼层号
int f_RelatedElevatorSize; //可到达该楼层电梯数目
vector<MiddleFloorRelatedElevator> f_RelatedElevatorVector; //可到达该楼层电梯列表
int f_StayingContainerSize; //该层中停留容器中乘客数目
list<FloorRelatedPassenger> f_PassengerStayingContainer; //该层中停留容器(停留乘客列表)
int f_WaitingUpContainerSize; //该层中档待向上容器中乘客数目
list<FloorRelatedPassenger> f_PassengerWaitingUpContainer; //该层中档待向上容器(等待向上乘客列表)
int f_WaitingDownContainerSize; //该层中档待向下容器中乘客数目
list<FloorRelatedPassenger> f_PassengerWaitingDownContainer; //该层中档待向下容器(等待向下乘客列表)
public:
MiddleFloor(int F_FloorNumber); //构造函数
~MiddleFloor(); //析构函数
void f_Simulation(); //楼层仿真函数接口
void f_PrintCurrentState(); //打印楼层当前状态函数接口
int f_GetFloorNumber(); //获取楼层号函数接口
void f_AddRelatedElevator(int F_ElevatorNumber,Elevator* F_ElevatorPtr); //添加可到达该层电梯信息以及相应标志
void f_NoticeElevatorArrive(int F_ElevatorNumber,Direction F_ElevatorDir); //告知在本层等待乘客电梯到达
void f_NoticeElevatorLeave(int F_ElevatorNumber,Direction F_ElevatorDir); //告知在本层等待乘客电梯离开
void f_MakeRequest(int F_ElevatorNumber,Direction F_RequestDir); //发出祈求函数接口,供乘客发出乘梯祈求时调用
void f_AddPassengerToStayingContainer(Passenger* F_PassengerPtr); //添加乘客到停留容器里,供乘客进入停留容器时调用
void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr); //从停留容器中移除乘客,供乘客停留时间届时进入等待容器时调用
void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir); //添加乘客到等待容器,供乘客停留时间届时进入等待容器时调用
void f_RemovePassengerFromWaitingContainer(Passenger* F_PassengerPtr,Direction F_PassengerDir); //从等待容器中移除乘客,供乘客进入电梯时调用
void f_AddPassengerToWaitingUpContainer(Passenger* F_PassengerPtr); //添加乘客到等待向上容器,供乘客停留时间届时进入等待向上容器时调用
void f_RemovePassengerFromWaitingUpContainer(Passenger* F_PassengerPtr); //从等待向上容器中移除乘客,供乘客进入电梯时调用
void f_AddPassengerToWaitingDownContainer(Passenger* F_PassengerPtr); //添加乘客到等待向下容器,供乘客停留时间届时进入等待向下容器时调用
void f_RemovePassengerFromWaitingDownContainer(Passenger* F_PassengerPtr); //从等待向下容器中移除乘客,供乘客进入电梯时调用
void f_MakeUpRequest(int F_ElevatorNumber); //发出向上祈求函数接口,供乘客发出向上乘梯祈求时调用
void f_MakeDownRequest(int F_ElevatorNumber); //发出向下祈求函数接口,供乘客发出向下乘梯祈求时调用
void f_NoticeElevatorArriveUp(int F_ElevatorNumber); //告知在本层等待乘客电梯到达并且接下来会向上运动
void f_NoticeElevatorArriveDown(int F_ElevatorNumber); //告知在本层等待乘客电梯到达并且接下来会向下运动
void f_NoticeElevatorLeaveUp(int F_ElevatorNu
展开阅读全文