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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构a类电梯运行模拟正文终稿.docx

1、数据结构a类电梯运行模拟正文终稿#include #include #include#include#include using namespace std;/初始定义const int maxfloor=14;/最高楼层clock_t tick;/获取系统当前运行时间/基本数据结构及其功能函数与类的声明模块struct Condition/状态类 float time;/该状态下持续的时间; int sympol;/状态的开关标志符 ;struct LiftCondition/电梯状态类 Condition rest; Condition up; Condition down;struct

2、Lift/电梯类 int paNum;/乘客数 int presentFloor;/当前楼层 LiftCondition liftCon;/电梯状态 int lightmaxfloor+1;/目标层数数组 int goalNummaxfloor+1;/要去每层的人数 float workTime; float workTimePre;struct Passenger/乘客类 int presentFloor;/乘客当前楼层 int goalFloor;/目标层 int tolerateTime;/容忍时间 float initTime;/建立时间 Passenger *next; Passen

3、ger *pre;struct Que Passenger *front;/队列头指针 Passenger *rear;/队列尾指针; Passenger *mid; int length; ;void initQue(Que &q)/队列的建立函数 q.front=(Passenger *)malloc(100*sizeof(Passenger); q.rear =q.front; q.length =0;void addQue(Que &q,Passenger &p)/队列成员增加函数 q.rear -next =&p; p.pre =q.rear ; q.rear =q.rear -ne

4、xt ; q.length +;int queLength(Que &q)/队列的长度函数 return q.length ;void outQue(Que &q)/队首出队函数 if(queLength(q)1) q.mid=q.front -next ; q.front -next =q.mid-next ; q.mid-next -pre =q.front; q.mid-next =NULL; q.mid-pre =NULL; q.length -; else q.rear -pre =NULL; q.rear=q.front ; q.rear -next =NULL; q.length

5、 =0; struct Floor/楼层类 Que goUp; Que goDown; int callUp; int callDown; int totalNum;/全局变量int passNum=0;Floor fl15;Passenger pa100;int i=0;/循环计数器;/函数模块extern void addPassenger(Passenger &p);extern void getInUp(Lift &l);extern void getInDown(Lift &l);extern void liftUp(Lift &l);extern void getOut(Lift

6、&l);extern int ergodicFloorUp(Lift &l);extern int ergodicFloorDown(Lift &l);extern void UserFace(Lift &l);void initFloor()/初始化每个楼层的函数 for(i=1;i15;i+) initQue(fli.goDown ); initQue(fli.goUp ); fli.totalNum =0; fli.callDown =0; fli.callUp =0; void initLift(Lift &l)/初始化电梯 l.liftCon.rest.sympol =1; l.li

7、ftCon .up.sympol =0; l.liftCon .down .sympol =0; l.liftCon.rest.time =0; l.liftCon .up.time =0; l.liftCon .down .time =0; for(i=1;i15;i+) l.lighti=0; l.goalNum i=0; l.paNum=0; l.presentFloor=1; tick=clock(); l.workTime=l.workTimePre=(float)tick/CLK_TCK;void addPassenger(Passenger &p)/创建一名乘客 cout该乘客所

8、在楼层p.presentFloor; if(p.presentFloor 14) cout楼层越界endl; cout重新输入p.presentFloor; cout该乘客要去的楼层p.goalFloor ; if(p.goalFloor 14) cout楼层越界endl; cout重新输入p.goalFloor ; cout该乘客的容忍时间p.tolerateTime ; if(p.goalFloor p.presentFloor ) flp.presentFloor .callUp =1; addQue(flp.presentFloor .goUp ,p); else flp.presen

9、tFloor .callDown =1; addQue(flp.presentFloor .goDown ,p); flp.presentFloor .totalNum +; tick=clock(); p.initTime =(float)tick/CLK_TCK; passNum+;void getInUp(Lift &l)/进入电梯往上行驶函数 l.liftCon .rest.sympol =1; l.liftCon .down .sympol =0; l.liftCon .up .sympol =0; fll.presentFloor .callUp =0; Sleep(500); c

10、out电梯门打开endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; tick=clock(); l.workTime =(float)tick/CLK_TCK; while(l.paNumnext -initTime)next -tolerateTime ) l.lightfll

11、.presentFloor.goUp .front-next -goalFloor=1; l.goalNumfll.presentFloor.goUp .front-next -goalFloor+; outQue(fll.presentFloor .goUp ); l.paNum +; else cout有一名乘客因等待时间过长已经离开endl; outQue(fll.presentFloor .goUp ); if(queLength(fll.presentFloor .goUp )=0) cout乘客进入电梯完毕,电梯关门endl; break; if(l.paNum =2) cout电

12、梯已满员,电梯关门endl; void getInDown(Lift &l)/进入电梯往下行驶函数 l.liftCon .rest.sympol =1; l.liftCon .down .sympol =0; l.liftCon .up .sympol =0; fll.presentFloor .callDown=0; Sleep(500); cout电梯门打开endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入

13、电梯endl; Sleep(500); cout乘客正在进入电梯endl; Sleep(500); cout乘客正在进入电梯endl; tick=clock(); l.workTime =(float)tick/CLK_TCK; while(l.paNumnext -initTime)next -tolerateTime ) l.lightfll.presentFloor.goDown .front-next -goalFloor=1; l.goalNumfll.presentFloor.goDown .front-next -goalFloor+; outQue(fll.presentFlo

14、or .goDown ); l.paNum +; else cout有一名乘客因等待时间过长已经离开endl; outQue(fll.presentFloor .goDown ); if(queLength(fll.presentFloor .goDown )=0) cout乘客进入电梯完毕,电梯关门endl; break; if(l.paNum =12) cout电梯已满员,电梯关门endl; void getOut(Lift &l) l.liftCon .rest.sympol =1; l.liftCon .down .sympol =0; l.liftCon .up .sympol =0

15、; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; Sleep(500); cout该楼层电梯内正有乘客出电梯endl; l.light l.presentFloor =0; l.paNum -=l.goalNum l.presentFloor ; l.goalNum l.presentFloor

16、 =0; cout电梯内现在有 l.paNum 人endl;int ergodicFloorUp(Lift &l)/电梯内人数为0时遍历函数 if(l.liftCon .rest.sympol ) =1) for(i=l.presentFloor;i=1;i-) if(fli.callDown =1|fli.callUp =1) return(1); return(0); void liftDown(Lift &l) l.liftCon .rest.sympol =0; l.liftCon .down .sympol =1; l.liftCon .up .sympol =0; Sleep(50

17、0); cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; Sleep(500); cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; Sleep(500); cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; Sleep(500); cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; Sleep(500); cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; Sleep(500); l.pres

18、entFloor -; cout电梯正在下降endl; cout电梯在 l.presentFloor 层endl; l.liftCon .down.time +=3; cout是否有新的乘客出现?是1否0j; if(j!=0) system(cls); addPassenger(papassNum); if(l.light l.presentFloor !=1&fll.presentFloor .callDown !=1&fll.presentFloor.callUp !=1) cout电梯内无乘客到该层,且该层没有呼叫电梯向下,电梯继续下降0) cout电梯门已经关闭,电梯继续下降endl;

19、 liftDown(l); else if(ergodicFloorDown(l)=1) liftDown(l); else if(ergodicFloorUp(l)=1) liftUp(l); else while(1) cout现在无人使用电梯,电梯静止在 l.presentFloor 层endl; cout是否返回主菜单?是1否0k; if(k!=0) UserFace(l); cout是否有新的乘客出现?是1否0j; if(j!=0) system(cls); addPassenger(papassNum); if(papassNum-1.presentFloor l.presentF

20、loor ) liftUp(l); else if(papassNum-1.presentFloor l.presentFloor ) getInUp(l); liftUp(l); else getInDown(l); liftDown(l); break; else continue; if(l.light l.presentFloor !=1&fll.presentFloor .callDown =1&l.paNum 12) cout该层有人呼叫向下0) cout电梯门已经关闭,电梯继续下降endl; liftDown(l); else if(ergodicFloorDown(l)=1)

21、liftDown(l); else if(ergodicFloorUp(l)=1) liftUp(l); else while(1) cout现在无人使用电梯,电梯静止在 l.presentFloor 层endl; cout是否返回主菜单?是1否0k; if(k!=0) UserFace(l); cout是否有新的乘客出现?是1否0j; if(j!=0) system(cls); addPassenger(papassNum); if(papassNum-1.presentFloor l.presentFloor ) liftUp(l); else if(papassNum-1.presentFloor l.presentFloor ) getInUp(l); liftUp(l); else getInDown(l); liftDown(l); break; else continue; if(l.light l.presentFloor =1&fll.presentFloor .callDown =1) cout该层有人呼叫向下且有电梯出电梯0) cout电梯门已经关闭,电梯继续下降endl; liftDown(l); else if(ergodicFloorDown(l)=1) liftDown(l); else if(ergodicFloorUp(l)=1) l

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

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