电梯程序源代码_第1页
电梯程序源代码_第2页
电梯程序源代码_第3页
电梯程序源代码_第4页
电梯程序源代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、#ifndef CELEVATOR_H #define CELEVATOR_H const int MostLayers = 100;class CElevator public:CElevator();/构造函数 CElevator(int uLayers, int lLayers);/构造函数CElevator(CElevator &myElevator);/拷贝构造函数void PressOuterButton(int direction, int floor);/电梯外部各楼层操作按钮void PressInnerDigitalButton(int floor);/电梯内部数字按钮vo

2、id PressOpen_CloseButton(int operate);/电梯内部开合控制按钮void PressAlert();/电梯内部报警按钮void run();/电梯运行CElevator();/析构函数protected: void OpenElevator();/打开电梯void CloseElevator();/关闭电梯void UserOperate();/由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。const int UpperLayers; /电梯最高能到达的楼层const int LowerLayers; /电梯最低能到达的楼层int Sta

3、tes5; /电梯当前状态,States0表示运行或停止,0停止,1运行,初值0;States1表示当前所在楼层,初值1;States2表示运行方向,向上0,向下1,初值0;States3表示开合,0开,0合,初值1;States4表示是否故障,0正常,1故障,初值1 int DigitalButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下int OuterDownButtonMostLayers;/整形数组,i为楼层且i!=0,i0iLowerLayers-1表示电梯外i层向下按钮是否被按下,

4、0未按,1按下int OuterUpButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下; #endif 二:CElevator.cpp文件内容#include #include CElevator.h using namespace std; CElevator:CElevator():UpperLayers(10),LowerLayers(1) States0 = 0; /初始状态为停止States1 = 1;/初始楼层在楼States2 = 0;/初始方向为向上States3 = 1;/初始电

5、梯为合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;/初始电梯正常fo

6、r(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 = 0;/初始方向为向上States3 = 1;/初始电

7、梯为合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;/初始电梯正常fo

8、r(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; States

9、3 = myElevator.States3; States4 = myElevator.States5; 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(dir

10、ection=0) OuterUpButtonfloor-LowerLayers-1 = 1; else OuterDownButtonfloor-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 C

11、Elevator:OpenElevator() if(States3 = 0) cout电梯已打开,请先出后进!endlendl; else cout电梯正在打开电梯已打开,请先出后进!endlendl; States3 = 0; void CElevator:CloseElevator() if(States3 = 1) cout电梯已关闭,请保持安静!endlendl; else cout电梯正在关闭电梯已关闭,请保持安静!endlendl; States3 = 1; void CElevator:PressAlert() cout电梯内部有人报警,请援助!endl; States4 =

12、1; void CElevator:UserOperate() /按报警按钮int alm = 0; coutalm; coutendl; if(alm=1) States4 = 1; while(States4=1) coutalm; coutendl; if(alm = 0 | alm =1) States4 = alm; else cout维修数据不正确!endl; OpenElevator();/电梯内部输入到达楼层cout请电梯内乘客输入所要到达的楼层!endl; coutfloor; if(floor=0) break; if(floor=LowerLayers) & (floor

13、=UpperLayers) & (floor!=States1) if(floor0)/地下 DigitalButtonfloor-LowerLayers = 1; else/地上 DigitalButtonfloor-LowerLayers-1 = 1;/没有楼 coutendl; /电梯外部各楼层输入上楼信号cout请电梯外部乘客输入上楼信号!endl; coutfloor; if(floor=0) break; else if(floor=LowerLayers) & (floorUpperLayers) & (floor!=States1) if(floor0)/地下 OuterUpB

14、uttonfloor-LowerLayers = 1; else/地上 OuterUpButtonfloor-LowerLayers-1 = 1;/没有楼 coutendl; /电梯外部各楼层输入下楼信号cout请电梯外部乘客输入下楼信号,endl; coutfloor; if(floor=0) break; else if(floorLowerLayers) & (floor=UpperLayers) & (floor!=States1) if(floor0)/地下 OuterDownButtonfloor-LowerLayers = 1; else/地上 OuterDownButtonfl

15、oor-LowerLayers-1 = 1;/没有楼 coutendl; /按开电梯按钮int direction = 0; cout电梯将要关闭,等人请按打开按钮!endl; coutdirection; coutendl; if(direction=1) OpenElevator(); for(int i=0;i50;i+);/延时CloseElevator(); /按关电梯按钮coutdirection; coutendl; if(direction=0) for(int i=0;i50;i+);/延时CloseElevator(); else CloseElevator(); void

16、 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层有向上的标志取消DigitalButton

17、States1-LowerLayers-1 = 0;/将记录电梯在States1层停靠的标志取消 else/向下 if(States10)/地下 OuterDownButtonStates1-LowerLayers = 0;/将记录电梯States1层有向下的标志取消DigitalButtonStates1-LowerLayers = 0;/将记录电梯在States1层停靠的标志取消 else/地上 OuterDownButtonStates1-LowerLayers-1 = 0;/将记录电梯States1层有向下的标志取消DigitalButtonStates1-LowerLayers-1

18、= 0;/将记录电梯在States1层停靠的标志取消 if(States1=1) couttemp; if(temp=1) exit(0); coutendl; UserOperate(); States0 = 1; else if(States2=0)/向上 States1+; if(States1=0) States1+;/没有层else cout电梯向上运行,将要到达States1层!endlendl; if(States1=UpperLayers)/向上到最顶,必定要停,且方向变为向下 States2 = 1;/变方向States0 = 0; else if(OuterUpButtonStates1-LowerLayers-1=0 & DigitalButtonStates1-LowerLayers-1=0) cout没有乘客在States1层上下,电梯继续向上运行!endlendl; else States0 = 0; else/向下 States1-; if(States1=0) States1 = -1;/没有层 else cout电梯向下运行,将要到达States1层!endlendl; if(States1=LowerLayers)/向下到最底,必定要停,且方向变为向上 States2 = 0;/变方向States

温馨提示

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

评论

0/150

提交评论