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

下载本文档

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

文档简介

1、浙江理工大学信息学院学时安排: 3实验要求: 1 人 1 组实验指导书 实验名称:类的继承机制的实现 实验类别:设计性实验学号: 姓名一、实验目的1. 掌握单继承和多重继承的概念。2. 理解不同的继承类型: public 、protected 和 private ,掌握何时使用何种继承类型。3. 掌握类层次中构造函数的定义方式和建立对象时构造和析构次序二、实验原理介绍通过继承机制实现对类功能的扩展,合理设计派生类的构造函数、成员函数。三、实验设备介绍软件需求:windows或linux 下的C+编译器硬件需求:对于硬件方面的要求,建议配置是 Pentium III 450以上的CPI处理器,

2、64MB以上的内存,200MB勺自由硬盘空间、CD-ROM动器、能支持24位真彩色的显示卡、 彩色显示器、打印机。四、实验内容实现对第一次实验结果 Elevator 类的功能扩展。在 Elevator 类已有功能的基础上派生AdvancedElevator类。AdvancedElevator类可以实现当多人在不同楼层等待乘坐上行或下行的同一部电梯时,能够合理的根据乘坐人的需求对电梯经停的楼层进行排序。要求:1. 为了实现上的方便性,我们假设同一组要求乘坐电梯的乘客或者都是上行,或者都是 下行。2. 在主函数中对该类的功能进行测试,测试方法是首先选择在某一时间段一组要乘坐电 梯的乘客是上行还是下

3、行, 然后输入组中乘客的人数及每一个乘客所在楼层和目的楼层,由 AdvancedElevator 类实例化后的电梯对象在运作的过程中,如果电梯是上行,则能根据乘客所在的楼层和目的楼层从下向上依次停靠;如果电梯是下行,则能根据乘客所在的楼层和目的楼层从上向下依次停靠。3. 在测试的过程中,还需要注意测试当多个用户在同一楼层或多个用户的目的楼层为同 一楼层时情况的处理。提示: 为了方便描述乘客,我们可以定义一个 Person 类,主要描述每一个乘客所在楼层和目的 楼层。AdvancedElevator类从Elevator类继承而来,它从某一个时间段要乘坐电梯的每 个乘客的信息当中提取其所在楼层和目

4、的楼层信息,然后对它们进行排序,再由继承自 基类 Elevator 的成员 setFloorNumber 对要停靠的楼层序列依次输出。思考(可选) 如果加入乘客的体重信息,如何实现在停靠楼层对超载信息的提示。五 程序清单()#include ""Elevator:Elevator(int f)floor =f;up=false;down=false; currentFloor=1;void Elevator:setUpButton()if(currentFloor>floorNumber)SetConsoleTextAttribute(GetStdHandle(STD

5、_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);您不能上行! "<<endl<<endl;cout<<"else if(floorNumber>floor)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 没这一层!太高啦!您想上天?!

6、 "<<endl<<endl;else up=true;void Elevator:setDownButton()if(currentFloor<floorNumber)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 您不能下行! "<<endl<<endl;else if(floorNumber<1)Se

7、tConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 没这一层!太低啦!您想入地?! "<<endl<<endl;else down=true;void Elevator:setFloorNumber(int floorNumber)if(up)for(;currentFloor<floorNumber;currentFloor+) cout<<

8、;"-"<<currentFloor<<"-"<<endl;Sleep(2000);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout<<"第 "<<currentFloor<<" 层到了 "<<endl<<endl;up=false;if(down)for(;currentF

9、loor>floorNumber;currentFloor-) cout<<"-"<<currentFloor<<"-"<<endl;Sleep(2000);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout<<"第 "<<currentFloor<<" 层到了 "<<e

10、ndl<<endl;down=false;void Elevator:choice()cin>>n;switch(n)case 1: cout<<" 当前电梯停在 "<<currentFloor<<" 层 "<<endl;cout<<" 请 输 入 要 进 入 的 楼 层"<<endl;cin>>floorNumber;setUpButton();setFloorNumber(floorNumber); break; if(cu

11、rrentFloor=1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 您已经在第一层了!除非您自己打洞,不然我是不会带你下去的!"<<endl<<endl;return;cout<<" 请 输 入 要 进 入 的 楼 层"<<endl;cin>>floorNumber;setDownButto

12、n();setFloorNumber(floorNumber);break;case 3:exit(0);default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"只 能 选 上 升 和 下 降 ! 您 难 道 还 想 玩 电 梯 漂 移 ? !"<<endl<<endl; break;SetConsoleTextAttribute(GetStdHa

13、ndle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<" 当前电梯停在 "<<currentFloor<<" 层 "<<endl;void Elevator:charge()SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FORE

14、GROUND_GREEN|FOREGROUND_BLUE);cout<<"-请选择操作 -"<<endl;cout<<"| 1. 上升 |"<<endl;cout<<"|2.下降|"<<endl;cout<<"|3.退出|"<<endl;cout<<"|"<<endl;()#include ""class AdvElevator:public Elevato

15、rpublic:AdvElevator(int f):Elevator(f)currentFloor=1;void setdata();void setFloorNumber();void choice();private:int judge(int);int fln20;int w10;int N;int num;void AdvElevator:setFloorNumber()int i;if(up)cout<<endl; for(i=0;currentFloor<=floorNumber;currentFloor+) if(currentFloor=flni)SetCo

16、nsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout<<"第 "<<currentFloor<<" 层到了 "<<endl; Sleep(2000);i+;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|F

17、OREGROUND_BLUE);else cout<<"-"<<currentFloor<<"-"<<endl;Sleep(2000); currentFloor=floorNumber;cout<<endl;up=false;if(down)cout<<endl;for(i=N-1;currentFloor>=floorNumber;currentFloor-)if(currentFloor=flni)SetConsoleTextAttribute(GetStdHandle(

18、STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout<<"第 "<<currentFloor<<" 层到了 "<<endl; Sleep(2000);i-;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);else cout<<

19、;"-"<<currentFloor<<"-"<<endl;Sleep(2000); currentFloor=floorNumber;cout<<endl;down=false;void AdvElevator:setdata()cout<<" 请告诉我共有几人 "<<endl;int weight=0;cin>>num;cout<<endl;N=2*num;int i=0,n=1,q=1;while(q<=num)cout<

20、<"第 "<<q<<" 位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)"<<endl;cin>>flni>>flnn>>wi;if(judge(flnn)=1)q+;N-=2;flni='0'continue; weight+=wi;if(weight>500)cout<<endl;cout<<"第 "<<q<<" 位乘客,因超载原因,您不能上 "<

21、<endl<<endl;q+;N-=2;flni='0'weight-=wi;wi=0;continue;i+=2;n+=2;q+;for (i=0; i<N-1; i+ )for (q=i+1; q<N; q+ )if (flni= flnq )for(n=q; n<N; n+ )flnn = flnn+1;N-;q-;int j,k,temp;for(j=0;j<N;j+)for(k=0;k<N-1-j;k+)if(flnk>flnk+1) temp=flnk;flnk=flnk+1;flnk+1=temp;if(fln

22、0='0') num=100;if(up)floorNumber=flnN-1;if(down)floorNumber=fln0;int AdvElevator:judge(int n)if(up)if(currentFloor>n)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 您不能上行!别捣乱,给我出去! "<<endl;SetCons

23、oleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;else if(n>floor)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);SetConsoleTextAttribute(GetStdHandle(STD_

24、OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;if(down)if(currentFloor<n)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 您不能下行!别捣乱,给我出去! "<<endl;SetConsoleTe

25、xtAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;else if(n<1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 没这一层!太低啦!您想入地?!别捣乱,给我出去! "

26、<<endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);return 1;return 0;void AdvElevator:choice()cin>>N;switch(N)case 1: up=true;cout<<" 当前电梯停在 "<<currentFloor<<" 层 "<

27、<endl; setdata();if(num=100)break;setFloorNumber(); break;case 2: down=true;cout<<" 当前电梯停在 "<<currentFloor<<" 层 "<<endl; if(currentFloor=1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);cout<<" 您已经在第一层了!除非您自己打洞,不然我是不会带你下去的! "<<endl<<endl;down=false;return; setdata();if(num=100)break;setFloorNumb

温馨提示

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

评论

0/150

提交评论