欢迎来到天天文库
浏览记录
ID:30841384
大小:380.12 KB
页数:26页
时间:2019-01-04
《电梯仿真系统报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、电榻仿哀糸饥殺针题目要求:公司要建立一幢两层的办公大楼并装上“最新''的电梯。公司要求开发一个面向对象的软件模拟程序,仿真电梯的操作,确定这个电梯能否满足需要。这个电梯只限乘载一人,为了省电,只在需要时才使用,电梯每天在一楼关门等待。模拟程序包括一个时钟,每天从时间0开始,每秒滴答一次。模拟程序的调度器组件随机设置每一层第一个人到来的时间。当时钟的时间等于第一个人到来的时间时,模拟程序对指定层生成一个新到的人并将人放在这一层。然后这个人按下该层的按钮,请求电梯开门。这个人的目的地楼层不能与他上电梯时所在的楼层相同。如果第1个人到达第1层,则他可以按下按钮和等待电梯开门之后立即进入电
2、梯。如果第1个人在第2层,则电梯要升至第2层去接这个人。电梯从1层移至2层需要5秒钟。电梯到达一层时,打开该层的电梯门上的灯,并在电梯内发出铃声。该层的按钮和电梯中中表示该层的按钮复位,电梯门打开,乘客(如果有人)走出电梯,另一乘客(如果有人等待)进入电梯并按下目的地楼层的按钮,电梯门关上。如果电梯要开始移动,则要确定移动的方向(对只有两层的电梯很简单)并移到下一层,为了简单起见,假设电梯到达一层时发生所有事件,而且直到电梯门关上所花费的时间是0秒。电梯总是知道在哪一层和要到哪一层的。任何时间每层最多只能有一个人等待,如果新到的人(不在电梯中)要到达一层时该层已被占用,,则一秒后才
3、能安排新的到达者。假设每隔5到20秒人们随机到达每层。这个题目的目标是实现一个能够工作的软件模拟程序,并根据这些要求运行。该程序应模拟几分钟的电梯操作,确定电梯能否满足这座大楼的交通需求。为了程序易于运行和操作,我在这个题目的基础上增加了一电梯的层数,和电梯能装的人数。另外还做了一些限制:(1)电梯的运行规则是:可到达每层。(2)仿真开始吋,电梯处于第一层,为空梯。(3)仿真开始后,有N人(〉12人)在该国际贸易中心的1层,开始乘梯活动。(4)每个人初次所要到达的楼层是随机的,开始在底层等待电梯到来。(5)每个人乘坐电梯到达指定楼层后,再随机地去往另一楼层,依此类推。(6)电梯运行
4、的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前运行方向,除非是未被请求的空梯。(7)电梯仿真吋间是T秒。T秒后电梯模拟结束。软件开发要求:设计一个易于理解的界面,动态显示各梯的载客与运行情况(上、下或停止),动态显示各楼层的人员停留情况与要求乘梯情况;动态显示从仿真开始到目前的时间。系统分析、设计与实现:1、系统分析采用OOP分析的关键就是要对问题的对象空间的分类(类的分析与设计,这一点跟面向过程的流程图设计不太…样),也就是在整个系统中包括那几个类,每个类包含那些属性特征和行为特征。对于上面的电梯问题,很明显有两个类:即电梯类和乘客类(从所设计到的对象描述可以观察到,
5、但是有的问题即使这一步也要仔细分析)。电梯类应该反映所有关于电梯状态和行为的信息,而乘客类也应该反映这些信息。2、类的设计:乘客类:classCpassenger{public:Cpassenger();//构造函数virtucil"Cpassenger();intnumber;//编号intcounter,counterl;//计数器intiLifts;//乘坐过的次数intiToFloor;//目的楼层intiAtFloor;//所在楼层intiStartTime;//记录这个人第一次出现的时间intiRestTime;//坐电梯中间休息一段时间然后发信号的那段时间intiRe
6、achTime;//iB录到达目的地的时间boolbSigntil;//判断是否发出信号boolblnLift;//是否在电梯内部boolbUp;//判断是否要向上};电梯类:classCelevcitor{public:Celevator();virtual'Celevator();boolbStop;//判断是否停在某层intiPassengers;//电梯内部的乘客数intiToFloor;//要去的楼层intiAtFloor;//所在楼层boolbStart;//开始仿真boolbUp;//判断是否向上运行);由于本程序应用的是基于对话框的MFC框架集,所以建立了基于CDi
7、alog类的CSimulationDlg类。现在将类的头文件代码复制如下,中间做了说明。classCSimulcitionDlg:publicCDialog{//Constructionpublic:voidPaintLiftLineO;intM;//楼层数CSimulationDlg(CWnd*pParent=NULL);//standardconstructor//DialogData//{{AFX_DATA(CSimulationDlg)enum{IDD=IDD
此文档下载收益归作者所有