c++仿真电梯.doc_第1页
c++仿真电梯.doc_第2页
c++仿真电梯.doc_第3页
c++仿真电梯.doc_第4页
c++仿真电梯.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

#include using namespace std;const int MostLayers = 100;class CElevatorpublic:CElevator();/构造函数CElevator(int uLayers, int lLayers);/构造函数CElevator(CElevator &myElevator);/拷贝构造函数void PressOuterButton(int direction, int floor);/电梯外部各楼层操作按钮void PressInnerDigitalButton(int floor);/电梯内部数字按钮void PressOpen_CloseButton(int operate);/电梯内部开合控制按钮void PressAlert();/电梯内部报警按钮void run();/电梯运行CElevator();/析构函数protected:void OpenElevator();/打开电梯void CloseElevator();/关闭电梯void UserOperate();/由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。const int UpperLayers; /电梯最高能到达的楼层const int LowerLayers; /电梯最低能到达的楼层int States5; /电梯当前状态,States0表示运行或停止,0停止,1运行,初值0;States1表示当前所在楼层,初值1;States2表示运行方向,向上0,向下1,初值0;States3表示开合,0开,1合,初值1;States4表示是否故障,0正常,1故障,初值1int DigitalButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下int OuterDownButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下int OuterUpButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下;CElevator:CElevator():UpperLayers(10),LowerLayers(1) States0 = 0; /初始状态为停止States1 = 1;/初始楼层在楼States2 = 0;/初始方向为向上States3 = 1;/初始电梯为合States4 = 0;/初始电梯正常for(int i=0;iMostLayers;i+)DigitalButtoni = 0;OuterDownButtoni = 0;OuterUpButtoni = 0;CElevator:CElevator(int uLayers, int lLayers):UpperLayers(uLayers),LowerLayers(lLayers) States0 = 0; /初始状态为停止States1 = 1;/初始楼层在楼States2 =0;/初始方向为向上States3 = 1;/初始电梯为合States4 = 0;/初始电梯正常for(int i=0;iMostLayers;i+)DigitalButtoni = 0;OuterDownButtoni = 0;OuterUpButtoni = 0;CElevator:CElevator(CElevator &myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers( myElevator.LowerLayers)States0 = myElevator.States0; States1 = myElevator.States1;States2 = myElevator.States2;States3 = myElevator.States3;States4 = myElevator.States4;for(int i=0;iMostLayers;i+)DigitalButtoni = myElevator.DigitalButtoni;OuterDownButtoni = myElevator.DigitalButtoni;OuterUpButtoni = myElevator.DigitalButtoni;CElevator:CElevator()void CElevator:PressOuterButton(int direction, int floor)if(direction=0)OuterUpButtonfloor-LowerLayers-1 = 1;elseOuterDownButtonfloor-LowerLayers-1 = 1;void CElevator:PressInnerDigitalButton(int floor)DigitalButtonfloor-LowerLayers-1 = 1;void CElevator:PressOpen_CloseButton(int operate)if(operate = 0) /打开电梯OpenElevator();else /关闭电梯CloseElevator();void CElevator:OpenElevator()if(States3 = 0)cout电梯已打开,请先出后进!endlendl;elsecout电梯正在打开 电梯已打开,请先出后进!endlendl;States3 = 0;void CElevator:CloseElevator()if(States3 = 1)cout电梯已关闭,请保持安静!endlendl;elsecout电梯正在关闭 电梯已关闭,请保持安静!endlendl;States3 = 1;void CElevator:PressAlert()cout电梯内部有人报警,请援助!endl;States4 = 1;void CElevator:UserOperate()/按报警按钮int alm = 0;coutalm;coutendl;if(alm=1)States4 = 1;while(States4=1)cout电梯出现故障,请维修!endlendl;cout正在维修.大家保持冷静endl;coutendl;coutendl;cout已修好;coutendl;coutendl;for(int i=0;i100;i+);break;OpenElevator();/电梯内部输入到达楼层int sel;coutsel;States2 =sel; /初始方向为向上cout请电梯内乘客输入所要到达的楼层!多个楼层中间用空格隔开,结束输入0:floor;if(floor=0)break;if(floor=LowerLayers) & (floor=UpperLayers) & (floor!=States1)if(floor0) /地下DigitalButtonfloor-LowerLayers = 1;else /地上DigitalButtonfloor-LowerLayers-1 = 1;/没有楼coutendl;/电梯外部各楼层输入上楼信号cout请电梯外部乘客输入上楼信号!多个楼层用空格隔开,结束输入0:floor;if(floor=0)break;elseif(floor=LowerLayers) & (floorUpperLayers) & (floor!=States1)if(floor0) /地下OuterUpButtonfloor-LowerLayers = 1;else /地上OuterUpButtonfloor-LowerLayers-1 = 1;/没有楼coutendl;/电梯外部各楼层输入下楼信号cout请电梯外部乘客输入下楼信号,多个楼层用空格隔开,结束输入0:floor;if(floor=0)break;elseif(floorLowerLayers) & (floor=UpperLayers) & (floor!=States1)if(floor0) /地下OuterDownButtonfloor-LowerLayers = 1;else /地上OuterDownButtonfloor-LowerLayers-1 = 1; /没有楼coutendl;/按开电梯按钮int direction = 0;cout电梯将要关闭,等人请按打开按钮!输入1表示按,0表示不按:direction;coutendl;if(direction=1)OpenElevator();for(int i=0;i100;i+); /延时CloseElevator();/按关电梯按钮coutdirection;coutendl;if(direction=0)for(int i=0;i100;i+);/延时CloseElevator();elseCloseElevator();void CElevator:run()while(true)if(States0=0)cout电梯停在States1层!endl;if(States2=0) /向上if(States10) /地下OuterUpButtonStates1-LowerLayers = 0;/将记录电梯States1层有向上的标志取消DigitalButtonStates1-LowerLayers = 0;/将记录电梯在States1层停靠的标志取消else/地上OuterUpButtonStates1-LowerLayers-1 = 0;/将记录电梯States1层有向上的标志取消DigitalButtonStates1-LowerLayers-1 = 0;/将记录电梯在States1层停靠的标志取消else/向下if(States10)/地下OuterDownButtonStates1-LowerLayers = 0;/将记录电梯States1层有向下的标志取消DigitalButtonStates1-LowerLayers = 0;/将记录电梯在States1层停靠的标志取消else/地上OuterDownButtonStates1-LowerLayers-1 = 0;/将记录电梯States1层有向下的标志取消DigitalButtonStates1-LowerLayers-1 = 0;/将记录电梯在States1层停靠的标志取消if(States1=1)couttemp;if(temp=1)exit(0);coutendl;UserOperate();States0 = 1;elseif(States2=0) /向上States1+;if(States1=0)States1+; /没有层elsecout电梯向上运行,将要到达States1层!endlendl;if(States1=UpperLayers) /向上到最顶,必定要停,且方向变为向下States2 = 1; /变方向States0 = 0;elseif(OuterUpButtonStates1-LowerLayers-1=0 & DigitalButtonStates1-LowerLayers-1=0)cout没有乘客在States1层上下,电梯继续向上运行!endlendl;elseStates0 = 0;else /向下States1-;if(States1=0)States1 = -1; /没有层elsecout电梯向下运行,将要到达States1层!endlendl;if(States

温馨提示

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

评论

0/150

提交评论