C++实验一:类与对象——电梯

一、实验目的

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的类进行加工,进一步学会了怎样创建类和类对象,通过查找资料也进一步了解了系统时间的输出,还有字体颜色的加工。用老师给的程序结果,不断重复更改自己的程序,将自己的程序进行完善,学会了怎样调试。通过类的编写,又深刻的将类函数等的调用进行了复习,与函数的封装性。

  • 14
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平杨猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值