实现功能
模拟电梯的升降,对输入楼层进行排序判断在哪一楼层停留。
可控制停留间隔时间。
代码实现
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;
class elevator{ //可以尝试将choice和now变量转化为私有类型
public:
void display (int now);
elevator(int);
void get_choice ();
void chose(int chose);
void get_want ();
void loop ();
int choice;
int now;
private:
int want;
void upstairs(int want);
void downstairs(int want);
};
class elevator2 : public elevator
{
public:
void get_num ();
void get_stairs ();
void loop ();
elevator2 (int i) : elevator (i) {}
private:
int num;
int wants[];
void inorder ();
};
void elevator2 :: get_num ()
{
cout << "请输入一共有几人乘坐电梯:" ;
cin >> num;
}
void elevator2 :: get_stairs ()
{
for (int i = 0; i < num; i ++)
{
cout << "第" << i + 1 << "个人去:" ;
cin >> wants[i];
}
}
void elevator2 :: inorder ()
{
int i, j, t;
for (i = 1; i < num; i ++)
for (j = 0; j < num - i; j ++)
if (wants [j] > wants [j + 1])
{
t = wants [j];
wants [j] = wants [j + 1];
wants [j + 1] = t;
}
}
void elevator2 :: loop ()
{
get_choice ();
while (choice > 0 && choice < 3)
{
get_num ();
get_stairs ();
inorder ();
if (choice == 1)
{
for (int i = 0; i < num; i ++)
{
chose (wants[i]);
}
}
else if (choice == 2)
{
for (int i = num - 1; i >= 0; i --)
{
chose (wants [i]);
}
}
display (now);
get_choice ();
}
if (choice != 3)
{
cout << "输入不合法!" << endl;
}
}
void elevator :: upstairs(int want){ //上下楼梯可以添加比较,当有多人去相同楼层时,只保存一个数据
if (now < want)
{
for (now; now < want; now ++){
cout << "--" << now << "--" << endl;
Sleep(1000);
}
cout << "第" << want << "层到了" <<endl;
}
else if (now == want) cout << "第" << want << "层到了" << endl;
}
void elevator :: downstairs(int want) {
if (now > want)
{
for (now; now > want; now --)
{
cout << "--" << now << "--" << endl;
Sleep (1000);
}
cout << "第" << want << "层到了" <<endl;
}
else if (now == want) cout << want << "层到了" << endl;
}
void elevator :: display ( int now ) {
cout << "该电梯一共 10 层,当前您在" << now << "层" <<endl;
cout << "---请选择操作----" << endl;
cout << "| 1.上升 |" << endl;
cout << "| 2.下降 |" << endl;
cout << "| 3.退出 |" << endl;
cout << "-----------------" << endl;
}
void elevator :: loop ()
{
get_choice ();
while (choice > 0 && choice <= 2)
{
cout << "输入想要去的楼层:" ;
cin >> want;
chose (want);
display (now);
get_choice ();
}
if (choice != 3)
{
cout << "输入不合法!" ;
}
}
void elevator :: chose(int want)
{
switch (choice)
{
case 1:
if (now <= want) upstairs (want);
else {
cout << "请重新输入:" << endl;
display (now);
loop ();
}
break;
case 2:
if (now >= want) downstairs (want);
else {
cout <<"请重新输入:" << endl;
display (now);
loop ();
}
break;
}
now = want;
}
void elevator :: get_choice ()
{
cin >> choice;
}
void elevator :: get_want ()
{
cout << "请输入要去的楼层:" ;
cin >> want;
}
elevator :: elevator(int n){
now = n;
SYSTEMTIME syst;
GetLocalTime(&syst);
cout<< syst.wYear <<"年"<< syst.wMonth <<"月"<< syst.wDay <<"日"<< syst.wHour <<":"<< syst.wMinute <<":"<< syst.wSecond << endl;
}
int main() {
elevator2 elevator (1);
elevator.display (1);
elevator.loop ();
return 0;
}