实验二继承机制实验报告Word格式文档下载.docx
- 文档编号:22011688
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:108.11KB
实验二继承机制实验报告Word格式文档下载.docx
《实验二继承机制实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验二继承机制实验报告Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
实现对第一次实验结果Elevator类的功能扩展。
在Elevator类已有功能的基础上派生AdvancedElevator类。
AdvancedElevator类可以实现当多人在不同楼层等待乘坐上行或下行的同一部电梯时,能够合理的根据乘坐人的需求对电梯经停的楼层进行排序。
要求:
1.为了实现上的方便性,我们假设同一组要求乘坐电梯的乘客或者都是上行,或者都是下行。
2.在主函数中对该类的功能进行测试,测试方法是首先选择在某一时间段一组要乘坐电梯的乘客是上行还是下行,然后输入组中乘客的人数及每一个乘客所在楼层和目的楼层,由AdvancedElevator类实例化后的电梯对象在运作的过程中,如果电梯是上行,则能根据乘客所在的楼层和目的楼层从下向上依次停靠;
如果电梯是下行,则能根据乘客所在的楼层和目的楼层从上向下依次停靠。
3.在测试的过程中,还需要注意测试当多个用户在同一楼层或多个用户的目的楼层为同一楼层时情况的处理。
提示:
为了方便描述乘客,我们可以定义一个Person类,主要描述每一个乘客所在楼层和目的楼层。
AdvancedElevator类从Elevator类继承而来,它从某一个时间段要乘坐电梯的每个乘客的信息当中提取其所在楼层和目的楼层信息,然后对它们进行排序,再由继承自基类Elevator的成员setFloorNumber对要停靠的楼层序列依次输出。
思考(可选)
如果加入乘客的体重信息,如何实现在停靠楼层对超载信息的提示。
五程序清单
()
#include"
"
Elevator:
:
Elevator(intf)
{
floor=f;
up=false;
down=false;
currentFloor=1;
};
voidElevator:
setUpButton()
if(currentFloor>
floorNumber)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
cout<
<
您不能上行!
endl<
endl;
}
elseif(floorNumber>
floor)
没这一层!
太高啦!
您想上天!
elseup=true;
}
setDownButton()
if(currentFloor<
您不能下行!
elseif(floorNumber<
1)
太低啦!
您想入地!
elsedown=true;
setFloorNumber(intfloorNumber)
if(up)
for(;
currentFloor<
floorNumber;
currentFloor++)
{cout<
--"
Sleep(2000);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
第"
层到了"
if(down)
currentFloor>
currentFloor--)
choice()
cin>
>
n;
switch(n)
case1:
当前电梯停在"
层"
请输入要进入的楼层"
cin>
setUpButton();
setFloorNumber(floorNumber);
break;
case2:
if(currentFloor==1)
您已经在第一层了!
除非您自己打洞,不然我是不会带你下去的!
return;
setDownButton();
break;
case3:
exit(0);
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
只能选上升和下降!
您难道还想玩电梯漂移!
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
charge()
---请选择操作---"
|1.上升|"
|2.下降|"
|3.退出|"
|--------------|"
classAdvElevator:
publicElevator
public:
AdvElevator(intf):
Elevator(f){currentFloor=1;
voidsetdata();
voidsetFloorNumber();
voidchoice();
private:
intjudge(int);
intfln[20];
intw[10];
intN;
intnum;
voidAdvElevator:
setFloorNumber()
inti;
{cout<
for(i=0;
=floorNumber;
if(currentFloor==fln[i])
i++;
else{cout<
Sleep(2000);
}currentFloor=floorNumber;
cout<
up=false;
for(i=N-1;
i--;
else{cout<
}currentFloor=floorNumber;
down=false;
setdata()
请告诉我共有几人"
intweight=0;
num;
N=2*num;
inti=0,n=1,q=1;
while(q<
=num)
q<
位乘客,请依次输入你所在楼层、您想去的楼层及您的体重(kg)"
fln[i]>
fln[n]>
w[i];
if(judge(fln[n])==1){q++;
N-=2;
fln[i]='
\0'
;
continue;
weight+=w[i];
if(weight>
500)
位乘客,因超载原因,您不能上"
q++;
weight-=w[i];
w[i]=0;
i+=2;
n+=2;
q++;
for(i=0;
i<
N-1;
i++)
for(q=i+1;
q<
N;
q++)
if(fln[i]==fln[q])
for(n=q;
n<
n++)
fln[n]=fln[n+1];
N--;
q--;
intj,k,temp;
for(j=0;
j<
j++)
for(k=0;
k<
N-1-j;
k++)
if(fln[k]>
fln[k+1])
temp=fln[k];
fln[k]=fln[k+1];
fln[k+1]=temp;
if(fln[0]=='
)num=100;
if(up)floorNumber=fln[N-1];
if(down)floorNumber=fln[0];
intAdvElevator:
judge(intn)
n)
别捣乱,给我出去!
return1;
elseif(n>
elseif(n<
return0;
switch(N)
up=true;
setdata();
if(num==100)break;
setFloorNumber();
down=true;
---------------"
intmain()
longa;
time(&
a);
intfloor;
告诉我总共有几层"
floor;
AdvElevatorel(floor);
ctime(&
a)<
本电梯共"
floor<
层,且最多上10人,欢迎您的使用(限重500kg)"
while
(1)
();
:
choice();
六运行结果
七实验心得
复习了有关数组的内容,比如排序,去除重复元素;
费了很大精力来改,但总觉得写得不好,代码太长,内容冗杂。
有待进步,加强。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 继承 机制 报告