




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江理工大学信息学院 实验指导书 实验名称:类的继承机制的实现 学时安排:3 实验类别:设计性实验 实验要求:1 人 1 组 学号: 姓名 一、实验目的 1.掌握单继承和多重继承的概念。 2.理解不同的继承类型:public、protected 和 private,掌握何时使用何种继 承类型。 3.掌握类层次中构造函数的定义方式和建立对象时构造和析构次序 二、实验原理介绍 通过继承机制实现对类功能的扩展,合理设计派生类的构造函数、成员函 数。 三、实验设备介绍 软件需求: windows 或 linux 下的 c+编译器 硬件需求: 对于硬件方面的要求,建议配置是 pentium iii 45
2、0 以上的 cpu 处理器,64mb 以上的内存,200mb 的自由硬盘空间、cd-rom 驱动器、能支 持 24 位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 实现对第一次实验结果 elevator 类的功能扩展。在 elevator 类已有功能的基 础上派生 advancedelevator 类。advancedelevator 类可以实现当多人在不同 楼层等待乘坐上行或下行的同一部电梯时,能够合理的根据乘坐人的需求对电 梯经停的楼层进行排序。 要求: 1.为了实现上的方便性,我们假设同一组要求乘坐电梯的乘客或者都是上行, 或者都是下行。 2.在主函数中对该类的功能进行测试,测试方
3、法是首先选择在某一时间段一组 要乘坐电梯的乘客是上行还是下行,然后输入组中乘客的人数及每一个乘客所 在楼层和目的楼层,由 advancedelevator 类实例化后的电梯对象在运作的过程 中,如果电梯是上行,则能根据乘客所在的楼层和目的楼层从下向上依次停靠; 如果电梯是下行,则能根据乘客所在的楼层和目的楼层从上向下依次停靠。 3.在测试的过程中,还需要注意测试当多个用户在同一楼层或多个用户的目的 楼层为同一楼层时情况的处理。 提示: 为了方便描述乘客,我们可以定义一个 person 类,主要描述每一个乘客所在楼 层和目的楼层。advancedelevator 类从 elevator 类继承而
4、来,它从某一个时 间段要乘坐电梯的每个乘客的信息当中提取其所在楼层和目的楼层信息,然后 对它们进行排序,再由继承自基类 elevator 的成员 setfloornumber 对要停靠 的楼层序列依次输出。 思考(可选)思考(可选) 如果加入乘客的体重信息,如何实现在停靠楼层对超载信息的提示。 五 程序清单 (el.cpp) #include elevator.h elevator:elevator(int f) floor =f; up=false; down=false; currentfloor=1; ; void elevator:setupbutton() if(currentflo
5、orfloornumber) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout您不能上行!endlfloor) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout没这一层!太高啦!您想上天?!endlendl; else up=tru
6、e; void elevator:setdownbutton() if(currentfloorfloornumber) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout您不能下行!endlendl; else if(floornumber1) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foregro
7、und_red|foreground_green); cout没这一层!太低啦!您想入地?!endlendl; else down=true; void elevator:setfloornumber(int floornumber) if(up) for(;currentfloorfloornumber;currentfloor+) cout-currentfloor-endl; sleep(2000); setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red);
8、 cout第currentfloor层到了endlfloornumber;currentfloor-) cout-currentfloor-endl; sleep(2000); setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red); cout第currentfloor层到了endln; switch(n) case 1: cout当前电梯停在currentfloor层endl; cout请输入要进入的楼层 floornumber;setupbutton();se
9、tfloornumber(floornumber); break; case 2: cout当前电梯停在currentfloor层endl; if(currentfloor=1) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout您已经在第一层了!除非您自己打洞,不然我是不会带你 下去的!endlendl;return; cout请输入要进入的楼层 floornumber;setdownbutton();setfl
10、oornumber(floornumber); break; case 3:exit(0); default:setconsoletextattribute(getstdhandle(std_output_handle),foreg round_intensity|foreground_red|foreground_green); cout只能选上升和下降!您难道还想玩电梯漂移? !endlendl; break; setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_r
11、ed|foreground_green|foreground_blue); cout当前电梯停在currentfloor层endl; void elevator:charge() setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green|foreground_blue); cout-请选择操作-endl; cout| 1.上升 |endl; cout| 2.下降 |endl; cout| 3.退出 |endl; cout|-|endl
12、; (main.cpp) #include elevator.h class advelevator:public elevator public: 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) coutendl; for(
13、i=0;currentfloor=floornumber;currentfloor+) if(currentfloor=flni) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red); cout第currentfloor层到了endl; sleep(2000); i+; setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|for
14、eground_green|foreground_blue); else cout-currentfloor-endl;sleep(2000); currentfloor=floornumber;coutendl;up=false; if(down) cout=floornumber;currentfloor-) if(currentfloor=flni) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red); cout第currentfloor层到了endl;
15、 sleep(2000);i- -; setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green|foreground_blue); else cout-currentfloor-endl;sleep(2000); currentfloor=floornumber;coutendl;down=false; void advelevator:setdata() cout请告诉我共有几人num;coutendl; n=2*num; int
16、i=0,n=1,q=1; while(q=num) cout第q位乘客,请依次输入你所在楼层、您想去的楼层及 您的体重(kg)flniflnnwi; if(judge(flnn)=1)q+;n-=2;flni=0;continue; weight+=wi; if(weight500) coutendl;cout第q位乘客,因超载原因,您不能上 endlendl; q+;n-=2;flni=0;weight-=wi;wi=0;continue; i+=2;n+=2;q+; for (i=0; in-1; i+ ) for (q=i+1; qn; q+ ) if (flni= flnq ) for
17、(n=q; nn; n+ ) flnn = flnn+1; n-; q-; int j,k,temp; for(j=0;jn;j+) for(k=0;kflnk+1) temp=flnk; flnk=flnk+1; flnk+1=temp; if(fln0=0) num=100; if(up)floornumber=flnn-1; if(down)floornumber=fln0; int advelevator:judge(int n) if(up) if(currentfloorn) setconsoletextattribute(getstdhandle(std_output_handl
18、e),foreground_in tensity|foreground_red|foreground_green); cout您不能上行!别捣乱,给我出去!floor) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout没这一层!太高啦!您想上天?!别捣乱,给我出去! endl; setconsoletextattribute(getstdhandle(std_output_handle),foreground_i
19、n tensity|foreground_red|foreground_green|foreground_blue);return 1; if(down) if(currentfloorn) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout您不能下行!别捣乱,给我出去!endl; setconsoletextattribute(getstdhandle(std_output_handle),foreground_
20、in tensity|foreground_red|foreground_green|foreground_blue);return 1; else if(n1) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout没这一层!太低啦!您想入地?!别捣乱,给我出去! n; switch(n) case 1: up=true;cout当前电梯停在currentfloor层 endl; setdata();if(num=1
21、00)break;setfloornumber(); break; case 2: down=true;cout当前电梯停在currentfloor层 endl; if(currentfloor=1) setconsoletextattribute(getstdhandle(std_output_handle),foreground_in tensity|foreground_red|foreground_green); cout您已经在第一层了!除非您自己打洞,不然我是不会带你 下去的!endlendl;down=false;return; setdata();if(num=100)break;setfloornumber();break; case 3:exit(0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司合作协议之商务服务合同书
- 中秋安全教育主题班会
- 打架和解协议书范本格式
- 工商所签协议书范本
- 错误教育的自我反思:认知重构之路
- 护理抢救病历书写
- 呼吸健康知识科普
- 提高护理记录单书写合格率
- 2025至2030金属刻字机发展趋势分析与未来投资战略咨询研究报告
- 临床常见的管道护理图文
- 品牌授权使用协议合同书
- 管理学教学设计创新汇报
- 2024年天津市公安局滨海分局招聘警务辅助人员考试真题
- 报废汽车回收拆解前景
- 2025年广东省中考生物试卷真题(含答案解析)
- 2025至2030停车场项目发展趋势分析与未来投资战略咨询研究报告
- 第10课+辽夏金元的统治(大概念教学课件)2024-2025学年高一历史上册教学课件(统编版2019)
- 装置保运方案(3篇)
- 重症心脏超声指南解读
- 中国聚丙烯酰胺行业市场发展分析及前景趋势与投资研究报告2025-2028版
- 青年教师教学工作坊组织计划
评论
0/150
提交评论