1、 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开,0合,初值1;State
2、s4表示是否故障,0正常,1故障,初值1 int DigitalButtonMostLayers;/整形数组,i为楼层且i!=0,i0,iLowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下 int OuterDownButtonMostLayers;0时下标iLowerLayers表示电梯外i层向下按钮是否被按下,i0,iLowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下 int OuterUpButtonMostLayers;0时下标iLowerLayers表示电梯外i层向上按钮是否被按下,i0,iLowerLayers-1表示电梯外i层向上
3、按钮是否被按下,0未按,1按下;#endif二:CElevator.cpp文件内容#include#include CElevator.husing namespace std;CElevator:CElevator():UpperLayers(10),LowerLayers(1) States0 = 0; /初始状态为停止 States1 = 1;/初始楼层在楼 States2 = 0;/初始方向为向上 States3 = 1;/初始电梯为合 States4 = 0;/初始电梯正常 for(int i=0;iMostLayers;i+) DigitalButtoni = 0; OuterDo
4、wnButtoni = 0; OuterUpButtoni = 0; CElevator(int uLayers, int lLayers):UpperLayers(uLayers),LowerLayers(lLayers) CElevator(CElevator &myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers( myElevator.LowerLayers) States0 = myElevator.States0; States1 = myElevator.States1; States2 = myElevator.
5、States2; States3 = myElevator.States3; States4 = myElevator.States5; DigitalButtoni = myElevator.DigitalButtoni; OuterDownButtoni = myElevator.DigitalButtoni; OuterUpButtoni = myElevator.DigitalButtoni;CElevator()void CElevator:PressOuterButton(int direction, int floor) if(direction=0) OuterUpButton
6、floor-LowerLayers-1 = 1; else OuterDownButtonfloor-LowerLayers-1 = 1;PressInnerDigitalButton(int floor) DigitalButtonfloor-LowerLayers-1 = 1;PressOpen_CloseButton(int operate) if(operate = 0)/打开电梯 OpenElevator(); else/关闭电梯 CloseElevator();OpenElevator() if(States3 = 0) cout电梯已打开,请先出后进!endlendl; cout
7、alm; if(alm=1) States4 = 1; while(States4=1) cout if(alm = 0 | alm =1) States4 = alm; else coutfloor; if(floor=0) break; if(floor=LowerLayers) & (floor=UpperLayers) & (floor!=States1) if(floorUpperLayers) & if(floor OuterUpButtonfloor-LowerLayers = 1; else/地上 OuterUpButtonfloor-LowerLayers-1 = 1; /电
8、梯外部各楼层输入下楼信号请电梯外部乘客输入下楼信号,LowerLayers) & OuterDownButtonfloor-LowerLayers = 1; OuterDownButtonfloor-LowerLayers-1 = 1; /按开电梯按钮 int direction = 0;电梯将要关闭,等人请按打开按钮!输入1表示按,表示0不按:direction; if(direction=1) OpenElevator();50;i+);/延时 /按关电梯按钮 按关电梯按钮吗? for(int i=0;run() if(States0=0)电梯停在States1层! if(States2=
9、0)/向上 if(States1temp; if(temp=1) exit(0); UserOperate(); States0 = 1; States1+; if(States1=0) States1+;/没有层 else cout电梯向上运行,将要到达 if(States1=UpperLayers)/向上到最顶,必定要停,且方向变为向下 States2 = 1;/变方向 States0 = 0; else if(OuterUpButtonStates1-LowerLayers-1=0 & DigitalButtonStates1-LowerLayers-1=0) cout没有乘客在层上下,电梯继续向上运行! else States0 = 0; States1-; States1 = -1; else电梯向下运行,将要到达 if(States1=LowerLayers)/向下到最底,必定要停,且方向变为向上 States2 = 0; States0 = 0; if(OuterDownButtonStates1-LowerLayers-1=0 &层上下,电梯继续向下运行! 三:main.cpp主函数文件内容#include void main() CElevator myElevator(8,-3); myElevator.run();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1