2023年实验二继承机制实验报告_第1页
2023年实验二继承机制实验报告_第2页
2023年实验二继承机制实验报告_第3页
2023年实验二继承机制实验报告_第4页
2023年实验二继承机制实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

浙江理工大学信息学院实验指导书实验名称:类的继承机制的实现学时安排:3实验类别:设计性实验实验规定:1人1组学号:姓名一、实验目的.掌握单继承和多重继承的概念。.理解不同的继承类型:pubIic、protected和private,掌握何时使用何种继承类型。.掌握类层次中构造函数的定义方式和建立对象时构造和析构顺序二、实验原理介绍通过继承机制实现对类功能的扩展,合理设计派生类的构造函数、成员函数。三、实验设备介绍软件需求:windows或Iinux下的c++编译器硬件需求:对于硬件方面的规定,建议配置是PentiumIII450以上的CPU解决器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。四、实验内容实现对第一次实验结果Elevator类的功能扩展。在EIevator类已有功能的if(down){cout<<endI;for(i二N-1;currentFIoor>=fIoorNumber;currentFloor—)(if(currentFIoor==fIn[i])(SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);cout<<"第"VVcurrentFloorV<"层至了"<<endI;SIeep(2023);i—;SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),F0REGROUND_INTENSITY|F0REGR0UND_REDIFOREGR0UND_GREEN|F0REGROUND_BLUE);)eIse{cout<<"—"«currentFIoor«"一"«endl;SIeep(2O23);}}currentFIoor=fIoorNumber;cout<<endI;down=faIse;)}voidAdvEIevator::setdata()(cout<<"请告诉我共有几人"«endI;intweight=0;cin»num;cout<<endI;N=2*num;inti二0,n=1,q=1;while(q<=num)(Cout<v"第”<«<<“位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)"«endI;cin»fIn[i]»fln[n]»w[i];if(judge(fln[n])==1)(q++;N-=2;fln[i]='\0';continue;}weight+二w[i];if(weight>500){cout<Vendl;cout<<"第"<<q<<"位乘客,因超载因素,您不能上"<<endI«endI;q++;N-=2;fln[i]="\O';weight—=w[i];w[i]=0;continue;)i+=2;n+=2;q++;)for(i=O;i<N—1;i++)for(q=i+1;q<N;q++)oif(fln[i]==fIn[q])(ofor(n=q;n<N;n++)fln[n]=fIn[n+1];。N——;intj,k,temp;for(j=0;j<N;j++)for(k=0;k<N-1-j;k++)(if(fln[k]>fIn[k+1])(temp=fIn[k];fln[k]=fIn[k+1];fln[k+1]=temp;)1if(fIn[0]=='\O')num=100;if(up)fIoorNumber=fIn[N-1];if(down)fIoorNumber=fIn[0];)intAdvEIevator::judge(intn)(if(up)(if(currentFIoor>n)(SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能上行!别捣乱,给我出去!"V<endl;SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGR0UND_INTENSITYIFOREGR0UND_RED|F0REGROUND_GREEN|FOREGROUND_BLUE);return1;)elseif(n>floor)(SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGR0UND_INTENSITY|F0REGR0UND_RED|F0REGROUND_GREEN);cou”没这一层!太高啦!您想上天?!别捣乱,给我出去!”<<endI;SetConsole!extAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),F0REGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return1;)}if(down)(if(currentFIoor<n){SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREEN);cout<<“您不能下行!别捣乱,给我出去!“<<endl;SetConsoIeTextAttribute(GetStdHandIe(STDOUTPUT_HANDLE),FOREGR0UND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREENIFOREGROUND_BLUE);return1;)eIseif(n<1)(SetConsoIeTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUNDGREEN);cout«"没这一层!太低啦!您想入地?!别捣乱,给我出去!”<<endI;SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return1;1)return0;)voidAdvEIevator::choice()(cin>>N;switch(N)(up=true;cout<<"当前电梯停在<<currentFIoor<<"层"<<endI;setdata();if(num==100)break;setFloorNumber();break;:down=true;coutV<”当前电梯停在"<VcurrentFIoor<<"层"<<endI;if(currentFIoor==1)(SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_REDIFOREGROUND_GREEN);coutV<”您已经在第一层了!除非您自己打洞,不然我是不会带你下去的!"<<endl«endI;down=false;return;)setdata0;if(num==100)break;setFIoorNumber();break;case3:exit(0);defau11:SetConsoIeTextAttribute(GetStdHandie(STD_0UTPUT_HANDLE),FOREGROUND_INTENSITYIF0REGROUND_REDIFOREGROUND_GREEN);cout<V"只能选上升和下降!您难道还想玩电梯漂移?!"<<endI<<endI;break;]SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE),FOREGR0UND_INTENSITYIF0REGROUND_REDIFOREGROUND_GREENIFOREGROUND.BLUE);

cout<<cout<<cout<<"«endl;)cout<<"«endl;intmain()longa;time(&a);intfloor;coirt<<"告诉我总共有几层"<VendI;cin»fIoor;AdvElevatorel(floor);SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND,INTENSITY|FOREGROUND_RED|F0REGROUND_GREEN|FOREGROUND_BLUE);cout«ctime(&a)«endI;coutVV"本电梯共“<<fIoor<<"层,且最多上10人,欢迎您的使用(限重500kg)"<<endI«endI;while(1)(el.charge。;el.AdvEIevator::choice();)return0;)六运营结果

LlDAC++\»a2\电梯\bin\Debug\C++»Bt2.exe■诉我总共有几百10SunApr1613:44:092017电梯共10层,且最多上10人,欢迎您的使用(限重500kg)--作馨降出择上由选LZ3.-作馨降出择上由选-作馨降出择上由选LZ3.第1位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)13300第第1位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)13300第2位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)123002位乘客,因超期原因,您不能上।雪需客’请依次输入你所在楼层、您想去的楼层及您的体重(加爵翻择上.选L23.择上.选L23.择上.选L23.次降出1位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)43502位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)31501位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)1位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)43502位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)3150塞4层到了第3层到了2第1层到了第1第1位乘客,请依次输入你所在楼层、您想去的楂层及您的体重(kg)11150簧京藕告勰霸礴副饕i蠢勰您的体重(.)2350一层层1一一一层层1一-—请选择操作-一mm前电曾住在1层

您已经在第一一一m前电曾住在1层

m前电曾住在1层

您已经在第一一一层了!除非您自己打洞,不然我是不会带你下去的!一告层喙国有停共I霭客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)肌层到了..2育3层到了■•一请我鬻作-i3:fl1位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)3050没这一层!太低啦!您想入地?!别捣乱,给我出去!fl七实验心得复习了有关数组的内容,比如排序,去除反复元素;费了很大精力来改,但总觉得写得不好,代码太长,内容冗杂。有待进步,加强。基础上派生AdvancedEIevator类。AdvancedElevator类可以实现当多人在不同楼层等待乘坐上行或下行的同一部电梯时,可以合理的根据乘坐人的需求对电梯经停的楼层进行排序。规定:.为了实现上的方便性,我们假设同一组规定乘坐电梯的乘客或者都是上行,或者都是下行。.在主函数中对该类的功能进行测试,测试方法是一方面选择在某一时间段一组要乘坐电梯的乘客是上行还是下行,然后输入组中乘客的人数及每一个乘客所在楼层和目的楼层,由AdvancedElevator类实例化后的电梯对象在运作的过程中,假如电梯是上行,则能根据乘客所在的楼层和目的楼层从下向上依次停靠;假如电梯是下行,则能根据乘客所在的楼层和目的楼层从上向下依次停靠。.在测试的过程中,还需要注意测试当多个用户在同一楼层或多个用户的目的楼层为同一楼层时情况的解决。提醒:为了方便描述乘客,我们可以定义一个Person类,重要描述每一个乘客所在楼层和目的楼层。AdvancedElevator类从Elevator类继承而来,它从某一个时间段要乘坐电梯的每个乘客的信息当中提取其所在楼层和目的楼层信息,然后对它们进行排序,再由继承自基类EIevator的成员setFloorNumber对要停靠的楼层序列依次输出。思考(可选)假如加入乘客的体重信息,如何实现在停靠楼层对超载信息的提醒。五程序清单

main.cpi)el.cpp±Elevator.hx]1#ifndefELEVATOR_H2#defineELEVATOR耳3#include<iostream>4#include<ctime>5#include<windows.h>67usingnamespacestd;8classElevator9£押10protected:11intfloorNumber;12intcurrentFloor;13intfloor://二^^14intn;15boolup;16booldown;17public:18Elevator(intfloor);19voidsetUpButton();20voidsetDownButton();21voidsetFloorNumber(intfloorNumber);22voidcharge();23voidchoice();24intgetcurrentfloor(){returncurrentFloor;}25}i26#endif(el.cpp)#incIude"EIevator.hEIevator::Elevator(intf)(floor=f;up二faIse;down=faIse;currentFIoor=1;I;voidEIevator::setUpButton()if(currentFIoor>fIoorNumber)SetConsoleTextAttribute(GetStdHandIe(STD_0UTPUT.HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能上行!"<<endI«endI;}eIseif(fIoorNumber>fIoor)(SetConsoleTextAttribute(GetStdHandIe(STDOUTPUT_HANDLE),F0REGR0UND_INTENSITY|FOREGROUND_RED|FOREGROUNDGREEN);coutV〈”没这一层!太高啦!您想上天?!"<Xendl<VendI;)elseup二true;)voidElevator::setDownButton()if(currentFIoor<fIoorNumber)SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_lNTENSITY|FOREGROUND_RED|FOREGROUNDGREEN);cout<<"您不能下行!"<VendlVVendI;eIseif(fIoorNumber<1)(SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND,INTENSITYIF0REGROUND_RED|FOREGROUND_GREEN);cout<<"没这一层!太低啦!您想入地?!"VVendI<<endl;)elsedown=true;)voidEIevator::setFloorNumber(intfloorNumber)(if(up)(for(;currentFIoor<fIoorNumber;currentFloor++){cout«"—"«currentFIoor<<"—"<<endI;Sleep(2023);}SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITYIFOREGROUND_RED);cout«"H"<<currentFIoor<V"层至Ij了"<<endI<<endI;up=faIse;if(down)for(;currentFloor>fIoorNumber;currentFIoor-){cout<<"一一"<<currentFIoor«"一一"«endI;Sleep(2023);}SetConsoIeTextAttribute(GetStdHandIe(STD_0UTPUT_HANDLE)fFOREGR0UND_lNTENSITY|FOREGROUND_RED);cout<<"第"<<currentFloor«"层到了"V<endI<<endI;down=faIse;))voidEIevator::choice(){cin»n;switch(n)(:cout<<"当前电梯停在"<<currentFIoor<<"层"<<endI;cout<<"请输入要进入的楼层"VVendI;cin»floorNumber;setllpButton();setFIoorNumber(floorNumber);break;cout<<"当前电梯停在“<611「rentFIoor<<"层if(currentFloor==1)SetConsoIeTextA11ribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|F0REGROUND_GREEN);cout<<”您已经在第一层了!除非您自己打洞,不然我是不会带你下去的!"«endI«endI;return;)cout«"请输入要进入的楼层"vvendI;cin»floorNumber;setDownButton();setFIoorNumber(fIoorNumber);break;case3:exit(0);defauIt:SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT.HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);coutV<“只能选上升和下降!您难道还想玩电梯漂移?!"<<endI<<endI;break;)SetConsoIeTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_lNTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<V"当前电梯停在“<VcurrentFIoor«"J§"<<endI;voidElevater::charge()(SetConsoleTextAttribute(GetStdHandIe(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FORE

温馨提示

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

评论

0/150

提交评论