高层建筑电梯仿真程序设计说明书_第1页
高层建筑电梯仿真程序设计说明书_第2页
高层建筑电梯仿真程序设计说明书_第3页
高层建筑电梯仿真程序设计说明书_第4页
高层建筑电梯仿真程序设计说明书_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.;设计书明书一、问题描画用面向对象方法和面向对象程序设计言语,实现满足下述要求的一个高层建筑电梯活动仿真程序。1. 问题域概述某国际展览中心共 40 层,设有载客电梯10 部用E0E9 标识。2. 限定条件1 电梯的运转规那么是:E0、E1:可到达每层。E2、E3:可到达1、2540 层。E4、E5:可到达125 层。E6、E7:可到达1、240 层中的偶数层。E8、E9:可到达139 层中的奇数层。2 每部电梯的最大乘员量均为K 人K 值可以根据仿真情况在1018 人之间确定。3 仿真开场时,各电梯随机地处于其符合运转规那么的恣意一层,为空梯。4 仿真开场后,有N 人0N1000在M

2、分钟0M10内随机地到达该国际展览中心的1 层,开场乘梯活动。5 每位乘客初次所要到达的楼层是随机的,令其在适宜的电梯处等待电梯到来。6 每位乘客乘坐适宜的电梯到达指定楼层后,随机地停留10120 秒后,再随机地去往另一楼层,依此类推,当每人乘坐过L 次每人的L 值不同,在产生乘客时随机地在110 次之间确定电梯后,第L+1 次为下至底层并终了乘梯行为。到一切乘客终了乘梯行为时,本次仿真终了。7 电梯运转速度为S 秒/层S 值可以根据仿真情况在15 之间确定,每人上下时间为T 秒T 值可以根据仿真情况在210 之间确定。8 电梯运转的方向由先发出恳求者决议,不允许后发出恳求者改动电梯的当前运转

3、方向,除非是未被恳求的空梯。9 当某层有乘客按下乘梯电钮时,优先思索离该层最近的、满足条件8、可以最快到达目的层的电梯。10 不允许电梯超员。3. 开发结果的行为特征1 产惹事件的周期为1 秒,每次可产生0 个或多个事件。2 各随机事件由互不相关的伪随机数发生器决议。3 设计一个易于了解的界面,动态显示各梯的载客与运转情况,动态显示各楼层的人员停留情况与要求乘梯情况;动态显示从仿真开场到目前的时间。4 显示时用应表示出不同的乘客及其当前所要求去往的楼层。例如,12-32 表示标识为12 的乘客要求去往32 层。5 统计各梯的运转与空闲时间;统计各人发出乘梯要求后的等待时间;仿真终了后显示这些时

4、间。6 参数K、N、M、S、T 应从命令行输入。7 选做思索有些乘客随机决议携带的物品体积较大,需占用12 人的电梯空间随机决议,且上下梯的时间比其他乘客长一倍的情况,再进展相应的仿真留意,不是一切的乘客都携带较大体积的物品。这时,显示乘客及所去往的楼层时要可以识别出能否携带了较大体积的物品。二、分析与设计模型1. 分析过程1 根据问题域中所描画的内容,可以生成一张“电梯楼层可达表,其中“1表示它所在列所对应的电梯可到达它所在行对应的楼层,如下所示:E0E1E2E3E4E5E6E7E8E9F11111111111F2111111F3111111F4111111F5111111F6111111F

5、7111111F8111111F9111111F10111111F11111111F12111111F13111111F14111111F15111111F16111111F17111111F18111111F19111111F20111111F21111111F22111111F23111111F24111111F2511111111F26111111F27111111F28111111F29111111F30111111F31111111F32111111F33111111F34111111F35111111F36111111F37111111F38111111F39111111F4011

6、11112 根据问题域中所描画的内容,在系统中识别出了三种不同的事物,分别是乘客,电梯和楼层。开场仿真后,对于某一个乘客,假设他不在楼层中,那么就一定在电梯中。这样就可以将楼层和电梯都看作是包含容器和其他数据和标志的对象,在这些对象的容器中存放的就是乘客。3 将楼层看作是容器时,发现楼层对象内部的容器可以按作用分为两大类,一类是存放在该层随机停留的乘客的容器,另一类是存放在该层等待电梯的乘客的容器。其中,第二类容器又可以按照乘客是向上还是向下分为两类,一类是存放等待向上乘客的容器,另一类是存放等待向下乘客的容器。总结起来,楼层内部的容器共可以分为三类:随机停留容器、等待向上容器和等待向下容器。

7、根据楼层包含这三种容器中的哪几种的不同,可以将楼层分为三类:底层楼层。乘客在底层楼层中只可以随机停留或者乘梯向上运动,所以底层楼层只包含两种容器:随机停留容器和等待向上容器。中间楼层乘客在中间楼层可以随机停留,并且乘客既可以乘梯向上运动,又可以乘梯向下运动,所以中间楼层中包含三种容器:随机停留容器、等待向上容器和等待向下容器。顶层楼层乘客在顶层楼层中只可以随机停留或者乘梯向下运动,所以顶层楼层只包含两种容器:随机停留容器和等待向下容器。又由于每个楼层的可到达电梯是不同的,所以在楼层类型的内部定义一个vector,初始化的时候该vector为空,然后经过查看楼层电梯可达表再填充该vector的内

8、容,里面存储了一切可到达该楼层的电梯的信息。4 将电梯看作是容器时,一切电梯都可以运用一个类型来表示了。在电梯类型中,定义一个vector,初始化的时候该vector为空,然后经过查看楼层电梯可达表再填充该vector的内容,里面存储了该电梯可到达的一切楼层的信息。5 对于乘客来说,乘客当前在某一楼层,计划去另一楼层。乘客知道当前所在楼层的一切电梯中有哪些可以到达本人想要去的楼层,并且会对这些一切可以可到达的电梯都发出与本人目的方向一样的乘梯恳求。当某一电梯到达乘客所在楼层时,假设该电梯可到达乘客要去的楼层,并且如今的运动方向与乘客的目的方向一样,并且如今排在该乘客前方的乘客没有上该电梯,并且

9、该电梯不满时,乘客才会上该电梯。假设乘客正在等待上电梯,而同时又有另一部满足条件的电梯到达,并且如今没有人上下,那么乘客就直接上另一部电梯,而不是等待原来那部电梯。这样就可以保证乘客总是可以乘坐最早到达该层的的电梯,而不是死等某一固定电梯到达。2. 系统中重要类的识别根据上述分析,在系统中识别出来的主要有三个类:电梯类Elevator,楼层类Floor和乘客类Passenger。其中Elevator类是对各类电梯的笼统,它封装了各类电梯的数据构造和方法。Floor类是一个虚基类,在该类中定义了各类操作的公共接口;由Floor类派生出三个子类,分别为BottomFloor类,MiddleFloo

10、r类和TopFloor类,分别为对底层楼层、中间楼层和顶层楼层的笼统,分别封装了底层楼层、中间楼层和顶层楼层的数据机构和方法。Passenger类是对不同乘客的笼统,它封装了乘客的数据构造和方法。3. 系统中的类图4. 类间交互过程在系统中定义乘客、楼层和电梯三种对象。乘客按下该楼层乘梯按钮发出乘梯恳求,楼层将该乘梯恳求通知相应电梯,电梯呼应恳求,到达该楼层时通知该楼层电梯到达,该楼层通知等待的乘客电梯到达。乘客上电梯后电梯分开,通知楼层电梯分开,楼层通知一切在该层等待的乘客电梯分开。乘客在电梯内设置目的楼层号,电梯载乘客到达目的楼层后通知乘客电梯到达,乘客下电梯。5. 乘客及电梯的形状迁移图

11、1 乘客的形状迁移图乘客有11种不同的形状,分别是“仿真开场前,“随机停留,“等待电梯到达,“等待上电梯,“正在上电梯,“等待电梯运转,“随电梯向目的层运动,“随电梯在非目的层停顿,“等待下电梯,“正在下电梯和“仿真终了。这些形状只需在时钟每秒触发的时候才会发生相应转换,假设乘客的当前形状没有转为另一个形状,那么表示乘客维持当前形状不变。对某一个乘客仿真开场前,乘客的形状是“仿真开场前。当乘客进入大楼,对乘客的仿真开场,乘客的形状置为“随机停留。当乘客的当前形状为“随机停留,并且乘客的仿真次数还没有到达设定的最大值,那么当乘客的停留时间到,假设此时没有符合乘客乘梯要求的电梯到达,乘客的形状转为

12、“等待电梯到达;假设此时有符合乘客乘梯要求的电梯到达,并且此时电梯中没有人上下,那么乘客的形状改为“正在上电梯;假设此时电梯中有人正在下电梯或者乘客前方的人正在上电梯,那么乘客的形状改为“等待上电梯。当乘客的当前形状为“等待上电梯,而此时已没有人再下电梯,并且前面的乘客也都曾经上了电梯,那么乘客的形状转为“正在上电梯;而假设乘客的当前形状为“等待上电梯,而电梯已满并且分开,那么乘客的形状转为“等待电梯到达。当乘客的当前形状为“正在上电梯,假设曾经完成上电梯活动,并且后面的乘客不再上电梯,那么乘客的形状转为“随电梯向目的层运动;假设后面的乘客依然在上电梯,那么乘客的形状转为“等待电梯运动。当乘客

13、的当前形状为“等待电梯运动,而一切乘客都曾经完成上电梯活动,电梯开场运动,乘客的形状改为“随电梯向目的层运动。当乘客的当前形状为“随电梯向目的层运动,电梯在某层停下,假设该层不是乘客的目的层,那么乘客的形状转为“随电梯停留;假设该层是乘客的目的层,假设前面有人下电梯,那么乘客的形状转为“等待下电梯;假设前面没有人下电梯,乘客的形状转为“正在下电梯。假设乘客的当前形状为“等待下电梯,前面乘客曾经下电梯终了,那么乘客形状转为“正在下电梯。假设乘客的当前形状为“正在下电梯,并且曾经下电梯终了,那么乘客的当前形状转为“随机停留。假设乘客的当前形状为“随机停留,并且乘客的仿真次数曾经到达了设定的最大值,

14、那么乘客的形状转为“终了仿真。2 电梯形状迁移图仿真开场前,电梯的形状为“停顿。当仿真开场后,电梯的形状为“停顿,假设电梯按照运转规那么查找到的目的楼层是当前楼层上方的楼层,那么电梯的形状转为“向上运动;假设目的楼层是下方的楼层,那么电梯的当前形状转为“向下运动;假设目的楼层就是“当前楼层,那么电梯的形状转为“在某层停留。假设电梯的当前形状为“向上运动,电梯曾经到达目的层,那么电梯的形状转为“在某层停留。假设电梯的当前形状为“向下运动,电梯曾经到达目的层,那么电梯的形状转为“在某层停留。假设电梯的当前形状为“在某层停留,上下乘客终了,电梯查找下一目的层,假设下一目的层为上方楼层,那么电梯的形状

15、转为“向上运动;假设下一目的层为下方楼层,那么电梯的形状转为“向下运动;假设找不到目的楼层,那么阐明电梯如今没有乘客运用,电梯的形状转为“停顿。三、标识符命名规那么1. 类的命名规那么类的命名方式为“类名的意义单词,类名中单词的首字母大写。例如:Elevator,Floor,Passenger。2. 成员函数命名规那么类中成员函数的命名规那么为“x_代表成员函数的功能的单词组合,其中x为字母e时,表示为Elevator电梯类的成员函数;x为字母f时,表示为Floor楼层类的成员函数;x为字母p时,表示为Passenger乘客类的成员函数。单词组合中每个单词首字母大写。比如:e_FindDest

16、inationFloor(),f_NoticeElevatorLeaveUp(),p_GetInBuilding()。3. 数据成员命名规那么类中数据成员的命名规那么为“x_表示其功能与含义的单词组合,其中x为字母e时,表示为Elevator电梯类的数据成员;x为字母f时,表示为Floor楼层类的数据成员;x为字母p时,表示为Passenger乘客类的数据成员。单词组合中每个单词首字母大写。如e_CurrentPassengerAmount,f_FloorNumber,p_RandomStayingTime。4. 部分变量命名规那么部分变量用小写单词表示,成员函数参数运用“X_表示其功能与含义

17、的单词组合,其中X为字母E时,表示为Elevator电梯类的成员函数的参数;X为字母F时,表示为Floor楼层类的成员函数的参数;X为字母P时,表示为Passenger乘客类的成员函数的数据成员。单词组合中每个单词首字母大写。如E_FloorNumber,F_ElevatorNumber,P_ElevatorNumber。总之,系统中一切标识符都做到了见其名能知其义。四、系统中重要类及方法的阐明1. Elevator类的阐明它是系统中各种电梯的笼统。有如下属性和方法:对该类的阐明如下:class Elevatorprivate:static int e_TimeNeedPerFloor;/电梯

18、每上或下一层所需求的时间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_Nex

19、tFloorNumber;/下一楼层编号int e_TimeNeedToNextFloor;/到下一楼层所需求的时间int e_TimeNeedToNextFloorStepCounter;/从当前楼层出发向下一楼层运动曾经经过的时间计数器int e_StayFreeTimeCounter;/电梯在某层停留时没有人上下的时间计数器bool e_bBusy;/能否有人上下的标志bool e_bFull;/电梯能否已满的标志int e_TotalRunTime;/总运转时间int e_TotalStopTime;/总停顿时间int e_NearestDestinatedFloorNumber;/电

20、梯内乘客所要到达的楼层中最近的楼层int e_NearestRequestedFloorNumber;/查找到的最近的发出乘梯恳求的楼层int e_FarestRequestedFloorNumber;/查找到的最远的发出乘梯恳求的楼层int e_ElevatorRelatedFloorSize;/电梯可到达楼层的数目vector e_RelatedFloorVector;/电梯可到达楼层及其相应的标志public:Elevator(int E_ElevatorNumber);/构造函数Elevator();/析构函数static void e_SetTimeNeedPerFloor(int

21、E_TimeNeedPerFloor);/设置电梯运转速度多少秒一层的函数接口static void e_SetMaxPassengerAmount(int E_MaxPassengerAmount);/设置电梯最大容客量的函数接口void e_Simulation();/电梯仿真函数接口void e_GetSummary();/仿真终了后显示电梯运转时间与空闲时间的函数接口void e_PrintCurrentState();/打印电梯当前形状的函数接口void e_FindDestinationFloor();/按照既定运转规那么查找电梯下一目的楼层的函数接口void e_AddRelat

22、edFloor(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_Fl

23、oorNumber);/通知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);/向电梯中添加乘客的函数接口,乘客

24、上电梯时调用该函数void e_RemovePassenger(int E_FloorNumber, Passenger* E_PassengerPtr);/从电梯中删除乘客的函数接口,乘客下电梯时调用该函数void e_SetDestinationFloor(int E_DestinationFloorNumber);/设置目的楼层的函数接口,乘客设置目的楼层时调用该函数void e_SetElevatorBusy();/乘客上下电梯时调用该函数,表示电梯如今被占用,其他乘客不能访问void e_SetElevatorFree();/乘客上下电梯时调用该函数,表示电梯如今没有被占用,其他乘客

25、可以访问int e_GetTotalRunTime();/获取电梯总运转时间的函数接口int e_GetTotalStopTime();/获取电梯总停顿时间的函数接口ElevatorState e_GetCurrentState();/获取电梯当前形状的函数接口int e_GetCurrentFloorNumber();/获取电梯当前所在楼层的函数接口bool e_IsFull();/判别电梯当前能否已满的函数接口bool e_IsBusy();/判别电梯当前能否被占用的函数接口void e_RemoveInvalidPassenger();/由电梯本人调用,删除曾经下电梯的失效乘客;2. F

26、loor类的阐明2.1 Floor基类Floor类是一个虚基类,它定义了楼层所提供的操作的接口,如下所示:对该类的阐明如下:class Floorpublic: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;/发出

27、恳求函数接口,供乘客发出乘梯恳求时调用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;/

28、添加乘客到停留容器里,供乘客进入停留容器时调用virtual void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr) = 0;/从停留容器中移除乘客,供乘客停留时间到时进入等待容器时调用virtual void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir) = 0;/添加乘客到等待容器,供乘客停留时间到时进入等待容器时调用virtual void f_RemovePassengerFro

29、mWaitingContainer(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楼的笼

30、统,它有如下的数据构造和操作:对该类的阐明如下:class BottomFloor : public Floorint f_FloorNumber;/楼层号int f_RelatedElevatorSize;/可到达该楼层的电梯的数目vector f_RelatedElevatorVector;/可到达该楼层的电梯列表int f_StayingContainerSize;/该层中停留容器中乘客的数目list f_PassengerStayingContainer;/该层中停留容器停留乘客列表int f_WaitingUpContainerSize;/该层中等待向上容器中乘客的数目list f_

31、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);/添加可到达该层的电梯信息以及

32、相应的标志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_AddPassengerToStayingC

33、ontainer(Passenger* F_PassengerPtr);/添加乘客到停留容器里,供乘客进入停留容器时调用void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr);/从停留容器中移除乘客,供乘客停留时间到时进入等待容器时调用void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/添加乘客到等待容器,供乘客停留时间到时进入等待容器时调用void f_RemovePasseng

34、erFromWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/从等待容器中移除乘客,供乘客进入电梯时调用void f_AddPassengerToWaitingUpContainer(Passenger* F_PassengerPtr);/添加乘客到等待向上容器,供乘客停留时间到时进入等待向上容器时调用void f_RemovePassengerFromWaitingUpContainer(Passenger* F_PassengerPtr);/从等待向上容器中移除乘客,供乘客进入电梯时调用void f

35、_MakeUpRequest(int F_ElevatorNumber);/发出向上恳求函数接口,供乘客发出向上乘梯恳求时调用void f_NoticeElevatorArriveUp(int F_ElevatorNumber);/通知在本层等待的乘客电梯到达并且接下来会向上运动void f_NoticeElevatorLeaveUp(int F_ElevatorNumber);/通知在本层等待的乘客电梯分开并且接下来会向上运动void f_NoticePassengerElevatorArriveUp();/通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达并且接下来会向上运动,这是留

36、给楼层调用的函数接口,当电梯到达某层楼,并且接下来将会向上运动时楼层调用该函数通知乘客void f_RemoveInvalidPassengerFromStayingContainer();/由楼层本人调用,删除曾经分开随机停留容器的失效乘客void f_RemoveInvalidPassengerFromWaitingContainer();/由楼层本人调用,删除曾经分开等待容器的失效乘客void f_RemoveInvalidPassengerFromWaitingUpContainer();/由楼层本人调用,删除曾经分开等待向上容器的失效乘客;2.3 MiddleFloor中间楼层类Mi

37、ddleFloor类是对中间楼层2至39楼的笼统,它有如下的数据构造和操作:对该类的阐明如下:class MiddleFloor : public Floorint f_FloorNumber;/楼层号int f_RelatedElevatorSize;/可到达该楼层的电梯的数目vector f_RelatedElevatorVector;/可到达该楼层的电梯列表int f_StayingContainerSize;/该层中停留容器中乘客的数目list f_PassengerStayingContainer;/该层中停留容器停留乘客列表int f_WaitingUpContainerSize;

38、/该层中等待向上容器中乘客的数目list f_PassengerWaitingUpContainer;/该层中等待向上容器等待向上乘客列表int f_WaitingDownContainerSize;/该层中等待向下容器中乘客的数目list f_PassengerWaitingDownContainer;/该层中等待向下容器等待向下乘客列表public:MiddleFloor(int F_FloorNumber);/构造函数MiddleFloor();/析构函数void f_Simulation();/楼层仿真函数接口void f_PrintCurrentState();/打印楼层当前形状的函

39、数接口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);/通知在本层

40、等待的乘客电梯分开void f_MakeRequest(int F_ElevatorNumber, Direction F_RequestDir);/发出恳求函数接口,供乘客发出乘梯恳求时调用void f_AddPassengerToStayingContainer(Passenger* F_PassengerPtr);/添加乘客到停留容器里,供乘客进入停留容器时调用void f_RemovePassengerFromStayingContainer(Passenger* F_PassengerPtr);/从停留容器中移除乘客,供乘客停留时间到时进入等待容器时调用void f_AddPasse

41、ngerToWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/添加乘客到等待容器,供乘客停留时间到时进入等待容器时调用void f_RemovePassengerFromWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/从等待容器中移除乘客,供乘客进入电梯时调用void f_AddPassengerToWaitingUpContainer(Passenger* F_PassengerPtr);/添加乘客到等待向上

42、容器,供乘客停留时间到时进入等待向上容器时调用void f_RemovePassengerFromWaitingUpContainer(Passenger* F_PassengerPtr);/从等待向上容器中移除乘客,供乘客进入电梯时调用void f_AddPassengerToWaitingDownContainer(Passenger* F_PassengerPtr);/添加乘客到等待向下容器,供乘客停留时间到时进入等待向下容器时调用void f_RemovePassengerFromWaitingDownContainer(Passenger* F_PassengerPtr);/从等待向

43、下容器中移除乘客,供乘客进入电梯时调用void f_MakeUpRequest(int F_ElevatorNumber);/发出向上恳求函数接口,供乘客发出向上乘梯恳求时调用void f_MakeDownRequest(int F_ElevatorNumber);/发出向下恳求函数接口,供乘客发出向下乘梯恳求时调用void f_NoticeElevatorArriveUp(int F_ElevatorNumber);/通知在本层等待的乘客电梯到达并且接下来会向上运动void f_NoticeElevatorArriveDown(int F_ElevatorNumber);/通知在本层等待的乘

44、客电梯到达并且接下来会向下运动void f_NoticeElevatorLeaveUp(int F_ElevatorNumber);/通知在本层等待的乘客电梯分开并且接下来会向上运动void f_NoticeElevatorLeaveDown(int F_ElevatorNumber);/通知在本层等待的乘客电梯分开并且接下来会向下运动void f_NoticePassengerElevatorArriveUp();/通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达并且接下来会向上运动,这是留给楼层调用的函数接口,当电梯到达某层楼,并且接下来将会向上运动时楼层调用该函数通知乘客void

45、 f_NoticePassengerElevatorArriveDown();/通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达并且接下来会向下运动,这是留给楼层调用的函数接口,当电梯到达某层楼,并且接下来将会向下运动时楼层调用该函数通知乘客void f_RemoveInvalidPassengerFromStayingContainer();/由楼层本人调用,删除曾经分开随机停留容器的失效乘客void f_RemoveInvalidPassengerFromWaitingContainer();/供楼层本人调用,删除等待向上和等待向下容器中的失效乘客void f_RemoveInva

46、lidPassengerFromWaitingUpContainer();/由楼层本人调用,删除曾经分开等待向上容器的失效乘客void f_RemoveInvalidPassengerFromWaitingDownContainer();/由楼层本人调用,删除曾经分开等待向下容器的失效乘客;2.4 TopFloor顶层楼层类TopFloor类是对顶层楼层40楼的笼统,它有如下的数据构造和操作:对该类的阐明如下:class TopFloor : public Floorint f_FloorNumber;/楼层号int f_RelatedElevatorSize;/可到达该楼层的电梯的数目vec

47、tor f_RelatedElevatorVector;/可到达该楼层的电梯列表int f_StayingContainerSize;/该层中停留容器中乘客的数目list f_PassengerStayingContainer;/该层中停留容器停留乘客列表int f_WaitingDownContainerSize;/该层中等待向下容器中乘客的数目list f_PassengerWaitingDownContainer;/该层中等待向下容器等待向下乘客列表public:TopFloor(int F_FloorNumber);/构造函数TopFloor();/析构函数void f_Simulat

48、ion();/楼层仿真函数接口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(

49、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_Passen

50、gerPtr);/从停留容器中移除乘客,供乘客停留时间到时进入等待容器时调用void f_AddPassengerToWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/添加乘客到等待容器,供乘客停留时间到时进入等待容器时调用void f_RemovePassengerFromWaitingContainer(Passenger* F_PassengerPtr, Direction F_PassengerDir);/从等待容器中移除乘客,供乘客进入电梯时调用void f_AddPassengerToWai

51、tingDownContainer(Passenger* F_PassengerPtr);/添加乘客到等待向下容器,供乘客停留时间到时进入等待向下容器时调用void f_RemovePassengerFromWaitingDownContainer(Passenger* F_PassengerPtr);/从等待向下容器中移除乘客,供乘客进入电梯时调用void f_MakeDownRequest(int F_ElevatorNumber);/发出向下恳求函数接口,供乘客发出向下乘梯恳求时调用void f_NoticeElevatorArriveDown(int F_ElevatorNumber)

52、;/通知在本层等待的乘客电梯到达并且接下来会向下运动void f_NoticeElevatorLeaveDown(int F_ElevatorNumber);/通知在本层等待的乘客电梯分开并且接下来会向下运动void f_NoticePassengerElevatorArriveDown();/通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达并且接下来会向下运动,这是留给楼层调用的函数接口,当电梯到达某层楼,并且接下来将会向下运动时楼层调用该函数通知乘客void f_RemoveInvalidPassengerFromStayingContainer();/由楼层本人调用,删除曾经分开

53、随机停留容器的失效乘客void f_RemoveInvalidPassengerFromWaitingContainer();/由楼层本人调用,删除曾经分开等待容器的失效乘客void f_RemoveInvalidPassengerFromWaitingDownContainer();/由楼层本人调用,删除曾经分开等待向下容器的失效乘客;3. Passenger类的阐明对该类的阐明如下:class Passengerprivate:static Floor* p_FloorPtrArrayTotalFloorNumber;/包含一切楼层指针的指针数组static Elevator* p_Ele

54、vatorPtrArrayTotalElevatorNumber;/包含一切电梯指针的指针数组static bool FloorElevatorArriveTableTotalFloorNumberTotalElevatorNumber;/包含楼层电梯可达信息的楼层电梯可达表static int p_InOutTime;/乘客上下电梯所需时间static int p_PassengerGetInTotalNumber;/曾经进展仿真的乘客数目static int p_PassengerGetOutTotalNumber;/曾经终了仿真的乘客数目int p_PassengerNumber;/乘客

55、编号int p_CurrentFloorNumber;/乘客当前所在楼层编号Floor* p_CurrentFloorPtr;/乘客当前所在楼层指针int p_DestinationFloorNumber;/乘客目的楼层编号Direction p_Direction;/乘客的方向int p_DestinationElevatorNumber;/乘客所选择乘坐的目的电梯编号Elevator* p_DestinationElevatorPtr;/乘客所选择乘坐的目的电梯指针PassengerState p_CurrentState;/乘客的当前形状int p_TotalSimulationTime

56、;/乘客的总仿真次数int p_CurrentSimulationTime;/乘客的当前仿真次数int p_TotalWaitingTime;/乘客总等待时间int p_CurrentWaitingTime;/乘客当前等待时间int p_RandomStayingTime;/乘客的随机停留时间int p_CurrentStayingTime;/乘客当前停留时间int p_InOutStep;/乘客上下电梯步伐计数器int p_RelatedElevatorListSize;/可供乘客选择的可以到达目的楼层的电梯可用电梯的数目list p_RelatedElevatorList;/可供乘客选择的

57、可以到达目的楼层的电梯可用电梯列表public:Passenger(int P_PassengerNumber);/构造函数Passenger();/析构函数staticvoid p_CreateFloorElevatorTable(bool *P_BoolPtr);/创建包含楼层电梯可达信息的楼层电梯可达表的函数接口staticvoid p_CreateFloorTable(Floor *P_FloorPtr);/创建包含一切楼层指针的指针数组的函数接口staticvoid p_CreateElevatorTable(Elevator *P_ElevatorPtr);/创建包含一切电梯指针的

58、指针数组的函数接口static void p_SetInOutTime(int P_InOutTime);/设置乘客上下电梯所需时间的函数接口static int p_GetInOutTime();/获取乘客上下电梯所需时间的函数接口static int p_GetPassengerGetInNumber();/获取当前曾经进展仿真的乘客的数目的函数接口static int p_GetPassengerGetOutNumber();/获取当前曾经终了仿真的乘客的数目的函数接口void p_Simulation();/乘客仿真函数接口void p_GetSummary();/乘客仿真终了后显示乘

59、客等待时间的函数接口void p_PrintCurrentState();/打印乘客当前形状的函数接口void p_CreateRelatedElevatorList();/创建可供乘客选择的可以到达目的楼层的电梯可用电梯列表的函数接口void p_DestroyRelateElevatorList();/删除可供乘客选择的可以到达目的楼层的电梯可用电梯列表的函数接口void p_MakeUpRequest();/对楼层中的可到达目的层的一切电梯可用电梯发出向上乘梯恳求的函数接口void p_MakeDownRequest();/对楼层中的可到达目的层的一切电梯可用电梯发出向下乘梯恳求的函数接

60、口void p_NoticeElevatorArriveUp(int P_ElevatorNumber);/获取可到达乘客目的楼层的电梯可用电梯向上运动并且到达乘客所在层信息的函数接口void p_NoticeElevatorArriveDown(int P_ElevatorNumber);/获取可到达乘客目的楼层的电梯可用电梯向下运动并且到达乘客所在层信息的函数接口void p_NoticeElevatorLeaveUp(int P_ElevatorNumber);/获取可到达乘客目的楼层的电梯可用电梯向上运动并且分开乘客所在层信息的函数接口void p_NoticeElevatorLeav

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论