C++电梯仿真.docx

上传人:b****1 文档编号:14515396 上传时间:2023-06-24 格式:DOCX 页数:16 大小:16.72KB
下载 相关 举报
C++电梯仿真.docx_第1页
第1页 / 共16页
C++电梯仿真.docx_第2页
第2页 / 共16页
C++电梯仿真.docx_第3页
第3页 / 共16页
C++电梯仿真.docx_第4页
第4页 / 共16页
C++电梯仿真.docx_第5页
第5页 / 共16页
C++电梯仿真.docx_第6页
第6页 / 共16页
C++电梯仿真.docx_第7页
第7页 / 共16页
C++电梯仿真.docx_第8页
第8页 / 共16页
C++电梯仿真.docx_第9页
第9页 / 共16页
C++电梯仿真.docx_第10页
第10页 / 共16页
C++电梯仿真.docx_第11页
第11页 / 共16页
C++电梯仿真.docx_第12页
第12页 / 共16页
C++电梯仿真.docx_第13页
第13页 / 共16页
C++电梯仿真.docx_第14页
第14页 / 共16页
C++电梯仿真.docx_第15页
第15页 / 共16页
C++电梯仿真.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++电梯仿真.docx

《C++电梯仿真.docx》由会员分享,可在线阅读,更多相关《C++电梯仿真.docx(16页珍藏版)》请在冰点文库上搜索。

C++电梯仿真.docx

C++电梯仿真

一:

CElevator.h文件容

#ifndefCELEVATOR_H

#defineCELEVATOR_H

constintMostLayers=100;

classCElevator

{

public:

CElevator();//构造函数

CElevator(intuLayers,intlLayers);//构造函数

CElevator(CElevator&myElevator);//拷贝构造函数

voidPressOuterButton(intdirection,intfloor);//电梯外部各楼层操作按钮

voidPressInnerDigitalButton(intfloor);//电梯部数字按钮

voidPressOpen_CloseButton(intoperate);//电梯部开合控制按钮

voidPressAlert();//电梯部报警按钮

voidrun();//电梯运行

~CElevator();//析构函数

protected:

voidOpenElevator();//打开电梯

voidCloseElevator();//关闭电梯

voidUserOperate();//由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。

constintUpperLayers;//电梯最高能到达的楼层

constintLowerLayers;//电梯最低能到达的楼层

intStates[5];//电梯当前状态,States[0]表示运行或停止,0停止,1运行,初值0;States[1]表示当前所在楼层,初值1;States[2]表示运行方向,向上0,向下1,初值0;States[3]表示开合,0开,0合,初值1;States[4]表示是否故障,0正常,1故障,初值1

intDigitalButton[MostLayers];//整形数组,i为楼层且i!

=0,i<0时下标i-LowerLayers表示电梯地下i楼层按钮是否被按下,i>0,i-LowerLayers-1表示电梯地上i楼层按钮是否被按下,0未按,1按下

intOuterDownButton[MostLayers];//整形数组,i为楼层且i!

=0,i<0时下标i-LowerLayers表示电梯外i层向下按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下

intOuterUpButton[MostLayers];//整形数组,i为楼层且i!

=0,i<0时下标i-LowerLayers表示电梯外i层向上按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下

};

#endif

 

二:

CElevator.cpp文件容

#include

#include"CElevator.h"

usingnamespacestd;

CElevator:

:

CElevator():

UpperLayers(10),LowerLayers

(1)

{

States[0]=0;//初始状态为停止

States[1]=1;//初始楼层在楼

States[2]=0;//初始方向为向上

States[3]=1;//初始电梯为合

States[4]=0;//初始电梯正常

for(inti=0;i

{

DigitalButton[i]=0;

OuterDownButton[i]=0;

OuterUpButton[i]=0;

}

}

CElevator:

:

CElevator(intuLayers,intlLayers):

UpperLayers(uLayers),LowerLayers(lLayers)

{

States[0]=0;//初始状态为停止

States[1]=1;//初始楼层在楼

States[2]=0;//初始方向为向上

States[3]=1;//初始电梯为合

States[4]=0;//初始电梯正常

for(inti=0;i

{

DigitalButton[i]=0;

OuterDownButton[i]=0;

OuterUpButton[i]=0;

}

}

 

CElevator:

:

CElevator(CElevator&myElevator):

UpperLayers(myElevator.UpperLayers),LowerLayers(myElevator.LowerLayers)

{

States[0]=myElevator.States[0];

States[1]=myElevator.States[1];

States[2]=myElevator.States[2];

States[3]=myElevator.States[3];

States[4]=myElevator.States[5];

for(inti=0;i

{

DigitalButton[i]=myElevator.DigitalButton[i];

OuterDownButton[i]=myElevator.DigitalButton[i];

OuterUpButton[i]=myElevator.DigitalButton[i];

}

}

CElevator:

:

~CElevator()

{

}

voidCElevator:

:

PressOuterButton(intdirection,intfloor)

{

if(direction==0)

OuterUpButton[floor-LowerLayers-1]=1;

else

OuterDownButton[floor-LowerLayers-1]=1;

}

voidCElevator:

:

PressInnerDigitalButton(intfloor)

{

DigitalButton[floor-LowerLayers-1]=1;

}

voidCElevator:

:

PressOpen_CloseButton(intoperate)

{

if(operate==0)//打开电梯

{

OpenElevator();

}

else//关闭电梯

{

CloseElevator();

}

}

voidCElevator:

:

OpenElevator()

{

if(States[3]==0)

{

cout<<"电梯已打开,请先出后进!

"<

}

else

{

cout<<"电梯正在打开…电梯已打开,请先出后进!

"<

States[3]=0;

}

}

voidCElevator:

:

CloseElevator()

{

if(States[3]==1)

{

cout<<"电梯已关闭,请保持安静!

"<

}

else

{

cout<<"电梯正在关闭…电梯已关闭,请保持安静!

"<

States[3]=1;

}

}

voidCElevator:

:

PressAlert()

{

cout<<"电梯部有人报警,请援助!

"<

States[4]=1;

}

voidCElevator:

:

UserOperate()

{

//按报警按钮

intalm=0;

cout<<"按报警按钮吗?

输入1表示按,0表示不按:

";

cin>>alm;

cout<

if(alm==1)

{

States[4]=1;

while(States[4]==1)

{

cout<<"电梯出现故障,请维修!

维修好请输入0,维修不好请输入1!

";

cin>>alm;

cout<

if(alm==0||alm==1)

{

States[4]=alm;

}

else

{

cout<<"维修数据不正确!

"<

}

}

}

OpenElevator();

//电梯部输入到达楼层

cout<<"请电梯乘客输入所要到达的楼层!

"<

cout<<"多个楼层中间用空格隔开,结束输入0:

";

intfloor=1;

while(true)

{

cin>>floor;

if(floor==0)

{

break;

}

if((floor>=LowerLayers)&&(floor<=UpperLayers)&&(floor!

=States[1]))

{

if(floor<0)//地下

{

DigitalButton[floor-LowerLayers]=1;

}

else//地上

{

DigitalButton[floor-LowerLayers-1]=1;//没有楼

}

}

}

cout<

//电梯外部各楼层输入上楼信号

cout<<"请电梯外部乘客输入上楼信号!

"<

cout<<"多个楼层用空格隔开,结束输入0:

";

while(true)

{

cin>>floor;

if(floor==0)

{

break;

}

else

{

if((floor>=LowerLayers)&&(floor

=States[1]))

{

if(floor<0)//地下

{

OuterUpButton[floor-LowerLayers]=1;

}

else//地上

{

OuterUpButton[floor-LowerLayers-1]=1;//没有楼

}

}

}

}

cout<

//电梯外部各楼层输入下楼信号

cout<<"请电梯外部乘客输入下楼信号,"<

cout<<"多个楼层用空格隔开,结束输入0:

";

while(true)

{

cin>>floor;

if(floor==0)

{

break;

}

else

{

if((floor>LowerLayers)&&(floor<=UpperLayers)&&(floor!

=States[1]))

{

if(floor<0)//地下

{

OuterDownButton[floor-LowerLayers]=1;

}

else//地上

{

OuterDownButton[floor-LowerLayers-1]=1;//没有楼

}

}

}

}

cout<

//按开电梯按钮

intdirection=0;

cout<<"电梯将要关闭,等人请按打开按钮!

"<

cout<<"输入1表示按,表示0不按:

";

cin>>direction;

cout<

if(direction==1)

{

OpenElevator();

for(inti=0;i<50;i++);//延时

CloseElevator();

}

//按关电梯按钮

cout<<"按关电梯按钮吗?

输入1表示按,表示0不按:

";

cin>>direction;

cout<

if(direction==0)

{

for(inti=0;i<50;i++);//延时

CloseElevator();

}

else

{

CloseElevator();

}

}

voidCElevator:

:

run()

{

while(true)

{

if(States[0]==0)

{

cout<<"电梯停在"<

"<

if(States[2]==0)//向上

{

if(States[1]<0)//地下

{

OuterUpButton[States[1]-LowerLayers]=0;//将记录电梯States[1]层有向上的标志取消

DigitalButton[States[1]-LowerLayers]=0;//将记录电梯在States[1]层停靠的标志取消

}

else//地上

{

OuterUpButton[States[1]-LowerLayers-1]=0;//将记录电梯States[1]层有向上的标志取消

DigitalButton[States[1]-LowerLayers-1]=0;//将记录电梯在States[1]层停靠的标志取消

}

}

else//向下

{

if(States[1]<0)//地下

{

OuterDownButton[States[1]-LowerLayers]=0;//将记录电梯States[1]层有向下的标志取消

DigitalButton[States[1]-LowerLayers]=0;//将记录电梯在States[1]层停靠的标志取消

}

else//地上

{

OuterDownButton[States[1]-LowerLayers-1]=0;//将记录电梯States[1]层有向下的标志取消

DigitalButton[States[1]-LowerLayers-1]=0;//将记录电梯在States[1]层停靠的标志取消

}

}

if(States[1]==1)

{

cout<<"终止电梯程序运行吗?

终止输入1,继续运行输入0:

";

inttemp=0;

cin>>temp;

if(temp==1)

{

exit(0);

}

}

cout<

UserOperate();

States[0]=1;

}

else

{

if(States[2]==0)//向上

{

States[1]++;

if(States[1]==0)

{

States[1]++;//没有层

}else

{

cout<<"电梯向上运行,将要到达"<

"<

if(States[1]==UpperLayers)//向上到最顶,必定要停,且方向变为向下

{

States[2]=1;//变方向

States[0]=0;

}

else

{

if(OuterUpButton[States[1]-LowerLayers-1]==0&&DigitalButton[States[1]-LowerLayers-1]==0)

{

cout<<"没有乘客在"<

"<

}

else

{

States[0]=0;

}

}

}

}

else//向下

{

States[1]--;

if(States[1]==0)

{

States[1]=-1;//没有层

}

else

{

cout<<"电梯向下运行,将要到达"<

"<

if(States[1]==LowerLayers)//向下到最底,必定要停,且方向变为向上

{

States[2]=0;//变方向

States[0]=0;

}

else

{

if(OuterDownButton[States[1]-LowerLayers-1]==0&&DigitalButton[States[1]-LowerLayers-1]==0)

{

cout<<"没有乘客在"<

"<

}

else

{

States[0]=0;

}

}

}

}

}

}

}

三:

main.cpp主函数文件容

#include

#include"CElevator.h"

usingnamespacestd;

#include"CElevator.h"

voidmain()

{

CElevatormyElevator(8,-3);

myElevator.run();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2