数据结构电梯模拟_第1页
数据结构电梯模拟_第2页
数据结构电梯模拟_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课 程 实 验 报 告姓名:陈东:J 学号:070612146;一、【实验目的】 3二、【问题描述】 3三、【基本要求】 3四、【实验环境】 3五、【测试数据及其结果】 4六、【实验源代码】 8一、【实验目的】帮助学生熟练掌握线性表的基本操作在链表结构中的实现,熟练进行各种链 表的操作和应用。二、【问题描述】设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和 电梯等“活动体”够成的集合,虽然他们彼此交互作用,但是他们的行为是基本 独立的。在离散的模拟中, 一模拟时钟决定每个活动体的动作发生的时刻和顺序, 系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个

2、动作 预定要发生的下一个时刻。三、【基本要求】(1)、模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五 个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层 是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。五个 楼层从下到上的编号为: 0、1、2、3、4。除了地下层外,每一层都有一个要求向下 的按钮除了第四层外,每一层都有一个要求向上的按钮。对应的变量为:CallUp0.3和 CallDown1.4。电梯内的五个目标层按钮对应的变量为: CallCar0.4。(2)、电梯一共有七个状态,即正在开门(Opening)、已开门(Opened

3、)、正在关门(Closi ng)、已关门(Closed)、等待(Wait in g)、移动(Movi ng)、减速(Decelerate)。( 3)乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。对于在楼层内等待电梯的乘客,将插入在 等候队列里,每一层有两个等候队列,一队要求向上,一队要求向下,用链队列来 实现。对于在电梯内的乘客,用五个乘客栈来实现,该乘客要去哪一层,就把他放 在相应编号的栈中,对应变量为 EleStackQ 4。(4)、模拟时钟从 0 开始,时间单位为秒。人和电梯的各种动作均要耗费一定的时 间单位(简记为 t):有人进出

4、时,电梯每隔 40t 测试一次,若无人进出,则关门关门和开门各需要 20t每个人进出电梯均需要 25t电梯加速需要 15t如果电梯在某层静止时间超过 300t,则驶回1层候命。(5)、按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列。四、【实验环境】Windows 7, VC+五、【测试数据及其结果】1 、 乘客类型 反映乘客的所有属性。ADT Client数据对象:D=ai乘客信息,1=1,2,希0数据关系:R=<ai-1,ai>|ai-1,ai D,i=2,n基本操作:Prin tClie ntln fo(Clie nt con st & e,Clie ntS

5、tatus) 操作结果:输出乘客信息。CreatClient(Client *&p)操作结果:生成新的乘客DestoryClient(Client *&p) 操作结果:该乘客离开系统。 GoAbove(Client const &e) 操作结果:判断该乘客是否去往高层。 CInfloor(Client const &e) 操作结果:返回乘客进入的楼层。 CInTime(Client const &e) 操作结果:返回乘客进入时间。 COutfloor(Client const &e) 操作结果:返回乘客进入时间。 2、乘客栈类型电梯内的乘客用乘客

6、栈表示,去不同楼层的乘客放在不同的栈中。ADT Estack数据对象:D二ai乘客信息,1=1,2,,帘0数据关系:R=<ai-1,ai>|ai-1,ai D,i=2,n基本操作:略。3、等候队列类型在电梯外等待的乘客用等待队列表示。 每层各有两个等待队列, 分别为上楼队列和下楼队列与一般队列不同的是在基本操作中加入了放弃操作CGiveUp(WQueue&Q,int floor) 。4、电梯类型 表示电梯的各个属性和所有动作。ADT Elevator数据对象:D二ai电梯信息,1=1,2,,帘0 基本操作:InitEle(Elevator &E) 操作结果:初始化电

7、梯类型。 DestoryEle(Elevator &E) 操作结果:销毁电梯类型。EleDecide(Elevator &E,WQueue wMaxfloor+12) 操作结果:电梯动作决策。ElevatorRun(Elevator &E,WQueue wMaxfloor+12) 操作结果:电梯状态转换。CountOver(Elevator &E) 操作结果:判断电梯计时是否完成。EleFloor(Elevator const &E) 操作结果:返回电梯所在的层。EleStatus(Elevator const &E) 操作结果:返回电梯状态。R

8、equireAbove(Elevator const &E) 操作结果:判断是否有高层请求。RequireBelow(Elevator const &E) 操作结果:判断是否有低层请求。EleAchieved(Elevator &E) 操作结果:判断电梯是否要停于当前层。EleOpenDoor(Elevator &E) 操作结果:判断电梯是否要开门。5、高楼模块实现电梯和乘客之间的互交功能。包括:InOut(Elevator &E,WQueue wMaxfloor+12) 操作结果:进行乘客的进出电梯活动。NewClient(Elevator &

9、E,WQueue w52) 操作结果:进入新乘客。PrintStatus(Elevator &E,WQueue w52)操作结果:输出当前状态。Print(Elevator &E,Action a) 操作结果:输出电梯动作信息六、【实验源代码】#in elude <>#in elude <>#in elude <>#in elude <>#in elude <>#in elude <>#in elude <>n"”;break;case Out: printf("t%d 号乘

10、客走出电梯 .n",;break;case In:printf("t%d 号乘客走进电梯,要去第 焜.n",;break; default:break;Status CreatClient(Client *&p)int d;p=new Client;if(!p) return OVERFLOW;p->ClinetID=+ID;printf("%d 所能容忍的等待时间 :",ID);scanf("%d",&d);p->GivepuTime=d;p->InTime=Time;printf(&qu

11、ot; 下一乘客要到达的时间 :");scanf("%d",&d);InterTime=d;printf(" 所要到达的楼层 :");scanf("%d",&d);p->Outfloor=d;while(p->Infloor=rand()%(Maxfloor+1)=p->Outfloor);PrintClientInfo(*p,New);return OK;de-e(DpPUNULDref urn OK-ss-fus GOAboveo-ienf consfQoe) 宀ifv return T

12、RUEe-se refurn FALSE- ss-fus c-Mooro-ienf consfQoe)refurn -ss-fus c-nTime(c-ienf consfQoe)宀refurn -ss-fus couffoor(c=enf consfQoe)宀refurn -甘define STACKI-N_TIS_ZE 100 npbreaKcase Doooose2prinff(=迸f 曲盖口冰淫 M-xbreaK case Achieved prinff(=%pic>muM&dn。云-break- case Goingupprinff(=%piCBkfh召VT-xbrea

13、K case Going Down prinm-迸fC>T>召VT-xbreaKdefault:break;int main()Elevator E;cout<<"n*欢迎使用电梯模拟系统<<endl;WQueue wMaxfloor+12;InitEle(E);srand( (unsigned)time( NULL );for(int i=0;i<=Maxfloor;i+)InitQueue(wiUp);InitQueue(wiDown);MaxTime=1000000;printf(" 请输入电梯的运行时间 :");scanf("%d",&MaxTime);printf("n");while(Time+<MaxTime)if(InterTime=0) NewClient(E,w);else InterTime-;for(int i=0;i<=Maxfloor;i+)for(int j=0;j<2;j+)if(InOutCount=0)if(EleStatus(E)=Opened) InOut(E,w);else InOutCount-;if(CountOver(E)|EleStatus(E)=Closed|EleStatus(E)=Wai

温馨提示

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

评论

0/150

提交评论