ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:182.25KB ,
资源ID:13020518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13020518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电梯模拟1文档格式.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电梯模拟1文档格式.docx

1、int now;/乘客当前所在的位置int dis;/乘客的目地地int wait;/最长的等待的时间int waitnow;/已经等待的时间struct passage *next;Passage;虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:typedef struct liftint count_C;/计数电梯已到达的层数int count_A;/系统的总时间计数器 记得必须初始化为0int flag_inHigh;/九个楼层有无请求的标志 哪个楼层如果有请求 该标志置1int num;/等待队列中的人数 记得要进

2、行初始化为0int people;/电梯中人数int flag_outHigh;Lift;(2)算法设计顾名思义本程序在运行的过程中用到的算法便是“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。2.2设计表示(1)、函数调用关系图及其说明如下:(2)函数接口说明:函数中的参数均是使用的全局变量的传递,因而在函数间进行传递的过程中比较简单,下面就将主要函数及他们之间的参数的关系列出如下:int OutOrIn(Lift &L,Passage *Queue,Passage *LiftQ);/进和出电梯的总函数int Update(Lift &

3、/刷新的函数int Run(Lift &/整个电梯各种状态转换的函数int OpenTheDoor(Lift &L);/开门主要是用于解决其中的时间问题int CloseTheDoor(Lift &/关门int In(Lift &/进入 主要是解决每个人进入电梯的时间问题int Out(Lift &/出去int Test(Lift &/电梯测试关门还是开门的函数int Request(Lift &L,Passage *Queue);2.3详细设计3、调试分析该程序的调试过程较为轻松,基本在算法实现的基础上没有出现什么错误,因而在调试的过程中并无什么深刻印象。4、用户手册点击运行程序,在弹出的窗

4、口中,会提示要输入的信息:1、 提示信息为:“请输入图中的顶点数和弧数以及图的标志和弧的标志:”按要求输入即可,本题即输入9 11 v a2、 提示信息为“请完成该邻接表的输入”:由于邻接表的输入信息一般较多,而且均是采用的链表来存储,因而该部分的输入要特别的小心3、 在完成上面两步的输入后按enter键便能得到程序的运行结果,即输出完成整项工程至少需要多少时间和影响工程进度的关键活动 思路和原理:1. 确定电梯的类型。其中包括:电梯所在层,电梯内人数,电梯当前状态,电梯运行时期,电梯计时器,每层的Up按钮,每层的Down按钮,电梯内的目标层按钮,同时,还需要造一个乘客栈,将要去不同楼层的人放

5、在不同的栈中。2. 确定乘客类型。乘客编号,乘客将要去的楼层数,该乘客进入时间,所能容忍的等待时间以及该乘客进入的楼层。3. 通过进行乘客的进出电梯活动来将两者联系起来。首先,每层都有两个等待队列:上楼队列和下楼队列。其次,此活动包括乘客时间与电梯事件,通过相同的参数将其相连接。乘客事件包括:新乘客进入事件,乘客放弃事件放弃,乘客进出事件。电梯事件包括:判断电梯的状态。4. 按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列。根据实验要求,定义时间:上升时间,下降时间,开门关门时间,进出电梯时间,最高层,最低层。算法设计:1. 设定乘客栈的抽象数据类型定义ADT Stack 数据对象:

6、数据关系:基本操作:InitStack(S);操作结果:构造一个空栈DestroyStack(&S);初始条件:栈S已存在操作结果:销毁栈SClearStack(&栈s已存在把S置为空StackEmpty(S);栈s已存在。若栈S为空,则返回TRUE,否则返回FALSEStackLength(S); 初始条件:返回栈S的长度GetTop(S, &e);初始条件:返回栈顶元素Push(&S, e); 操作结果:在栈S的栈顶插入新的栈顶元素e。Pop(&S, &删除S的栈顶元素,并以e返回其值。PrintStack(&输出栈乘客类型ADT ClientD=ai乘客信息,I=1,2,n,n0R=|a

7、i-1,aiD,i=2,nPrintClientInfo(Client const &e,ClientStatus s)输出乘客信息。CreatClient(Client *&p)生成新的乘客。DestoryClient(Client *&该乘客离开系统。GoAbove(Client const &e)判断该乘客是否去往高层。CInfloor(Client const &返回乘客进入的楼层。CInTime(Client const &返回乘客进入时间。COutfloor(Client const &电梯类型表示电梯的各个属性和所有动作。ADT ElevatorD=ai电梯信息,I=1,2,n,

8、n0InitEle(Elevator &E)初始化电梯类型。DestoryEle(Elevator &销毁电梯类型。EleDecide(Elevator &E,WQueue wMaxfloor+12)电梯动作决策。ElevatorRun(Elevator &E,WQueue wMaxfloor+12)电梯状态转换。CountOver(Elevator &判断电梯计时是否完成。EleFloor(Elevator const &返回电梯所在的层。EleStatus(Elevator const &返回电梯状态。RequireAbove(Elevator const &判断是否有高层请求。Requi

9、reBelow(Elevator const &判断是否有低层请求。EleAchieved(Elevator &判断电梯是否要停于当前层。EleOpenDoor(Elevator &判断电梯是否要开门。实现电梯和乘客之间的相互作用。包括:InOut(Elevator &进行乘客的进出电梯活动。NewClient(Elevator &E,WQueue w52)进入新乘客。PrintStatus(Elevator &输出当前状态。Print(Elevator &E,Action a)输出电梯动作信息。具体实现:电梯类型基本操作:void InitEle(Elevator &E) int i;E.f

10、loor=1; /电梯初始停在第一层E.status=Waiting;E.Count=OverTime;E.Stage=Down;E.ClientNumber=0;for(i=0;i=Maxfloor;i+) E.CallUpi=0;E.CallDowni=0;E.CallCari=0;i+) InitStack(E.Si);Status CountOver(Elevator &E) /判断电梯计时是否完成if(E.Count) E.Count-;return FALSE;return TRUE;void DestoryEle(Elevator &E) /销毁电梯类型i+) DestroyStack(E.Si);int EleFloor(Elevator const &E) /返回电梯所在的层return E.floor;EleStatus EleStatus(Elevator const &E) return E.status;Status RequireAbove(Elevator const &E) /判断是否有高层请求for(int i=E.floor+1;i+)if(E.CallCari|E.CallDowni|E.CallUpi) return TRUE;return FALSE;Status RequireBelow(Elevator const &E) /判断是否

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1