版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#ifndefCELEVATOR_H#defineCELEVATOR_HconstintMostLayers=100;classCEIevator(public:C日evator();〃构造函数CEIevator(intuLayers,intILayers);〃构造函数CEIevator(C日evator&myElevator);〃拷贝构造函数voidPressOuterButton(intdirection,intfloor);//电梯外部各楼层操作按钮voidPresslnnerDigitalButton(intfloor);//电梯内部数字按钮voidPressOpen_CloseButton(intoperate);〃电梯内部开合限制按钮voidPressAlert();〃电梯内部报警按钮voidrun();〃电梯运行〜CEIevator();〃析构函数protected:voidOpenElevator();〃打开电梯voidClose日evator();〃关闭电梯voidUserOperate();〃由于程序单线程运行,因此将用户的全部操作集中在每一层停止的时候完成。constintUpperLayers;//电梯最高能至达的楼层constintLowerLayers;〃电梯最低能到达的楼层intStates[5];〃电梯当前状态,States⑼表示运行或停止,0停止,1运行,初值0;States[l]表示当前所在楼层,初值1;States[2]表示运行方向,向上0,向下1,初值0;States[3]表示开合,。开,。合,初值1;States⑷表示是否故障,0正常,1故障,初值1intDigitalButton[MostLayers];〃整形数组,i为楼层且i!=0,i<0时下标iLowerLayers表示电梯内地下i楼层按钮是否被按下,i>0,i—LowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下intOuterDownButton[MostLayers];〃整形数组,i为楼层且i!=0,i<0时卜i—LowerLayers表示电梯外i层向下按钮是否被按下,i>0i—LowerLayers-1表示电梯外i层向下按钮是否被按下,。未按,1按下intOuterUpButton[MostLayers];〃整形数组,i为楼层且i!=0,i<0时下标iLowerLayers表示电梯外i层向上按钮是否被按下,i>0,i—LowerLayers-1表示电梯外i层向上按钮是否被按下,。未按,1按下);#endif二:CEIevator.cpp文件内容#include<iostream>#include"CEIevator.h"usingnamespacestd;C日evator::CEIevator():UpperLayers(10),LowerLayers⑴(States[0]=0;〃初始状态为停止States[l]=1;〃初始楼层在楼States[O]=0;)}}))))三:main.cpp主函数文件内容#include<iostream>#include"CEIevator.h"usingnamespacestd;//include"CEIevator.h"voidmain()(CEIevatormyElevator(8,-3);myElevator.run();)States[2]=0;〃初始方向为向上States[3]=1;〃初始电梯为合States[4]=0;〃初始电梯正常for(inti=0;i<MostLayers;i++)(DigitalButton[i]=0;OuterDownButton[i]=0;OuterUpButton[i]=0;))C日evator::CEIevator(intuLayers,intILayers):UpperLayers(uLayers),LowerLayers(ILayers)(States[0]=0;〃初始状态为停止States[l]=1;〃初始楼层在楼States[2]=0;〃初始方向为向上States[3]=1;〃初始电梯为合States[4]=0;〃初始电梯正常for(inti=0;i<MostLayers;i++)(DigitalButton[i]=0;OuterDownButton[i]=0;OuterUpButton[i]=0;))CEIevator::CEIevator(CEIevator&myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers(myElevator.LowerLayers)(States[0]=myElevator.States[0];States[l]=myElevator.States[l];States[2]=0;〃初始方向为向上States[3]=1;〃初始电梯为合States[4]=0;〃初始电梯正常for(inti=0;i<MostLayers;i++)(DigitalButton[i]=0;OuterDownButton[i]=0;OuterUpButton[i]=0;))C日evator::CEIevator(intuLayers,intILayers):UpperLayers(uLayers),LowerLayers(ILayers)States[0]=0;〃初始状态为停止States[l]=1;〃初始楼层在楼States[2]=0;〃初始方向为向上States[3]=1;〃初始电梯为合States[4]=0;〃初始电梯正常for(inti=0;i<MostLayers;i++){DigitalButton[i]=0;OuterDownButton[i]=0;OuterUpButton[i]=0;))&myElevator):CEIevator::CEIevator(CEIevator&myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers(myElevator.LowerLayers)(States[0]=myElevator.States[0];States[l]=myElevator.States[l];States[2]=myElevator.States[2];States[3]=myElevator.States[3];States[4]=myElevator.States[5];for(inti=0;i<MostLayers;i++)(DigitalButton[i]=myElevator.DigitalButton[i];OuterDownButton[i]=myElevator.DigitalButton[i];OuterUpButtonfi]=myElevator.DigitalButton[i];))C日evator::~CEIevator()()voidCEIevator::PressOuterButton(intdirection,intfloor)(if(direction==0)OuterUpButton[floor-LowerLayers-l]=1;elseOuterDownButton[floor-LowerLayers-l]=1;)voidCEIevator::PresslnnerDigitalButton(intfloor)(DigitalButton[floor-LowerLayers-l]=1;)voidC日evator::PressOpen_CloseButton(intoperate)(if(operate==0)〃打开电梯(Open日evator();)else〃关闭电梯CloseElevator();))voidC日evator::OpenElevator()(if(States[3]==0)(cout<<,,电梯已打开,请先出后进!"<<endl«endl;)else(coutcv”电梯正在打开…电梯已打开,请先出后进!"<<endl«endl;States[3]=0;))voidC日evator::Close日evator()(if(States[3]==1){cout<<”电梯已关闭,请保持宁静!"<<endk<endl;)else(coutcv''电梯正在关闭…电梯已关闭,请保持宁静!"«endl«endl;States[3]=1;))voidCEIevator::PressAlert()(cout<<"电梯内部有人报警,请救济!"<<endl;States[4]=1;)voidC日evator::llserOperate()(〃按报警按钮intalm=0;cout<<“按报警按钮吗?输入1表示按,。表示不按:“;cin»alm;cout«endl;if(alm==l)States[4]=1;while(States[4]==l)cout<<“电梯出现故障,请修理!修理好请输入0,修理不好请输入1!cin»alm;cout«endl;if(alm==011alm==1)(States[4]=alm;)else(cout<<"修理数据不正确!”<<endl;)))Open日evator();〃电梯内部输入到达楼层cout<<''请电梯内乘客输入所要到达的楼层!"<<endl;cout<<“多个楼层中间用空格隔开,结束输入0:”;intfloor=1;while(true)(cin»floor;if(floor==0)(break;)if((floor>=LowerLayers)&&(floor<=UpperLayers)&&(floor!=States[l]))(if(floor<0)〃地下(DigitalButton[floor-LowerLayers]=1;)else〃地上(DigitalButton[floor-LowerLayers-l]=1;〃没有楼)))cout«endl;〃电梯外部各楼层输入上楼信号coukv"请电梯外部乘客输入上楼信号!,'<<endl;cout<<“多个楼层用空格隔开,结束输入0:“;while(true)cin»floor;if(floor==0)break;)else(if((floor>=LowerLayers)&&(floor<UpperLayers)&&(floor!=States[l]))(if(floorvO)〃地下(OuterUpButton[floor-LowerLayers]=1;)else〃地上(OuterUpButton[floor-LowerLayers-l]=1;〃没有楼))))cout«endl;〃电梯外部各楼层输入下楼信号coukv”请电梯外部乘客输入下楼信号,"cvendl;cout<<“多个楼层用空格隔开,结束输入0:”;while(true)(cin»floor;if(floor==0)(break;)else((floor!=States[l]))if((floor>LowerLayers)&&(floor<=UpperLayers)&&(floor!=States[l]))(if(floorvO)//地下(OuterDownButton[floor-LowerLayers]=1;)else〃地上OuterDownButton[floor-LowerLayers-l]=1;〃没有楼))))cout«endl;〃按开电梯按钮intdirection=0;cout<<“电梯将要关闭,等人请按打开按钮!“《endl;coutcv”输入1表示按,表示0不按:”;cin»direction;cout«endl;if(direction==l)(OpenElevator();for(inti=0;i<50;i++);〃延时Close日evator。;)〃按关电梯按钮cout<<''按关电梯按钮吗?输入1表示按,表。不按:”;cin»direction;cout«endl;if(direction==0)(for(inti=0;i<50;i++);〃延时Close日evator。;)else(CloseElevator();))voidC日evator::run()(while(true)(if(States[O]==O)(cout<<“电梯停在"层!"«endl;if(States[2]==0)〃向上(if(States[l]<0)〃地下(OuterUpButton[States[l]-LowerLayers]=0;〃将记录电梯States[l]层有向上的标记取消DigitalButton[States[l]-LowerLayers]=0;〃将记录电梯在States[l]层停靠的标记取消)else〃地上(OuterUpButton[States[l]-LowerLayers-l]=0;〃将记录电梯States[l]层有向上的标记取消DigitalButton[States[l]-LowerLayers-l]=0;〃将记录电梯在States[l]层停靠的标记取消))else〃向下(if(States[l]<O)//itkT(OuterDownButton[States[l]-LowerLayers]=0;〃将记录电梯States[l]层有向下的标记取消DigitalButton[States[l]-LowerLayers]=0;〃将记录电梯在States[l]层停靠的标记取消)else〃地上(OuterDownButton[States[l]-LowerLayers-l]=0;〃将记录电梯States[l]层有向下的标记取消DigitalButton[States[l]-LowerLayers-l]=0;〃将记录电梯在States[l]层停靠的标记取消))if(States[l]==l)(cout<<“终止电梯程序运行吗?终止输入1,接着运行输入0:“;inttemp=0;cin»temp;if(temp==l)(exit(0);))cout«endl;UserOperate();States[O]=1;)else(if(States
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47959-2026卫星导航定位探空系统高空温度、湿度和气压观测方法
- 2026年贵州省部编版初中英语第11单元同步练习题
- 2025-2026年江苏省人教版三年级数学下册第7单元几何图形测试卷
- 2025-2026年浙江省部编版小学语文四年级下册第11单元说明文阅读理解习题
- 2026年天津市人教版小学语文一年级下册第10单元课后练习题
- 2026年广东省人教版六年级英语下册语法专项训练习题
- 2025-2026年江苏省苏教版九年级英语语法专项练习题
- 2025-2026年山东省高中物理上册第4章综合测试卷
- 2025-2026年山东省部编版初中物理实验探究练习题
- 2026年天津市北师大版高中数学必修第六册综合测试卷
- 2024-2025学年广东广州番禺区七年级(下)期末数学试卷及答案
- 2026福建海峡科化股份有限公司社会招聘15人笔试备考题库及答案详解
- 2026北京语言大学新编长聘人员招聘9人(第三批)考试备考题库及答案详解
- 消化内镜操作规范
- 护理沟通与人文关怀技巧
- 软包墙面施工方案及技术措施
- 2026年秋季学期 1530安全教育记录
- 病历书写基本规范(国家卫健委2022年版)
- DB54T 0616-2026《民用供氧工程施工及验收规范+》
- 铁路桥梁病害整治监理实施细则
- cors站建设技术方案
评论
0/150
提交评论