一、实验目的
1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;
2)掌握类对象的定义;
3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别;
4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;
二、实验原理介绍
通过建立类及对象,用类的成员函数和对象访问类的成员;
利用建立类的构造函数,完成类的成员的初始化工作;
三、实验设备介绍
软件需求: 支持C++程序编辑、编译和运行的软件
硬件需求: 处理器i3、内存2G以上计算机一台。
四、实验内容
编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。
要求:
1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。
2.如果是上行,则选择输入的楼层好不能比当前楼层号小,否则应给出不合法提示。
3. 如果是下行,则选择输入的楼层好不能比当前楼层号大,否则应给出不合法提示。
4.电梯一旦开始运作就会始终运行,直到窗口关闭。
5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能必须使用课堂演示实例CDate类)。
五、 程序清单
#include<iostream> #include<windows.h> #include<ctime> #pragma warning(disable : 4996) using namespace std; class Elevator { private: int floor; //电梯总的楼层数 int currentFloor; //当前所在楼层 void setFloorNumber(int floorNumber); //根据要进入的楼层电梯开始运行,并逐层显示经过的楼层 public: Elevator(int floor); void setUpButton(int n); //按下上行按钮 void setDownButton(int n); //按下下行按钮 int getCurrentFloor(); //获得当前所在楼层 }; Elevator::Elevator(int floor) { currentFloor = 1; this->floor = floor; }; void Elevator::setUpButton(int n) { if (n >= 1 && n <= floor) if (n > currentFloor) setFloorNumber(n); else cout << "您不能上行!" << endl << endl; else cout << "您选择的楼层不存在" << endl << endl; }; void Elevator::setDownButton(int n) { if (n >= 1 && n <= floor) if (n < currentFloor) setFloorNumber(n); else cout << "您不能下行!" << endl << endl; else cout << "您选择的楼层不存在" << endl << endl; }; void Elevator::setFloorNumber(int floorNumber) { if (floorNumber > currentFloor) for (int i = currentFloor; i < floorNumber; i++) cout << "--" << i << "--" << endl << endl, Sleep(1000); else for (int i = currentFloor; i > floorNumber; i--) cout << "--" << i << "--" << endl << endl, Sleep(1000); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED ); cout << "第" << floorNumber << "层到了" << endl << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); currentFloor = floorNumber; }; int Elevator::getCurrentFloor() { //获得当前所在楼层 return currentFloor; }; int main() { time_t timer; time(&timer); tm* t_tm = localtime(&timer); int year = t_tm->tm_year + 1900;//年 int month = t_tm->tm_mon + 1;//月 int day = t_tm->tm_mday;//日 int wday = t_tm->tm_wday;//一周中的第几天 cout << "今天是" << year << "年" << month << "月" << day << "日 " << endl; cout << "该电梯一共10层,欢迎您的使用!" << endl << endl; int a, b; Elevator p(10); while (true) { cout << " ---请选择操作---" << endl << "|1.上升 |" << endl << "|2.下降 |" << endl << "|3.退出 |" << endl << " ----------------" << endl; cin >> a; if (a == 1) { cout << "当前电梯停在" << p.getCurrentFloor() << "层" << endl << "请输入要进入的楼层" << endl; cin >> b; p.setUpButton(b); } else if (a == 2) { cout << "当前电梯停在" << p.getCurrentFloor() << "层" << endl << "请输入要进入的楼层" << endl; cin >> b; p.setDownButton(b); } else if (a == 3) exit(0); else cout << "您的选择有误,不能操作!" << endl << endl; }; return 0; };
六 、运行结果
编辑
输出年月日,然后需要上升电梯输入1,输入要到的楼层为4,从而到达楼层;下降电梯输入2,输入将要到达的楼层3,电梯又开始运行;电梯在3层,输入1要上升,并且上升到第1层,此时就不能上升,输出了不能上行,要重新输入1上升还是2下降,从而继续开始电梯的升降。
七 、实验总结
将Elevator的类进行加工,进一步学会了怎样创建类和类对象,通过查找资料也进一步了解了系统时间的输出,还有字体颜色的加工。用老师给的程序结果,不断重复更改自己的程序,将自己的程序进行完善,学会了怎样调试。通过类的编写,又深刻的将类函数等的调用进行了复习,与函数的封装性。