《机房预约系统》这个项目是B站黑马的教程–C++从0到1入门编程 的综合练习项目
本人在最近终于将这个项目完整的敲过一遍,有很多收获,也产生了许多疑问。
但是,正所谓读书百遍其义自现,再敲一遍,很多疑惑便迎刃而解。而今天这篇博客则是从这个项目的尾部开始复习.
一.项目的逻辑与流程
在这个项目里,教师的主要功能是:
1.查看所有预约机房的信息记录
2.只审核预约记录处于审核中的状态的预约
1.查看所有预约机房的信息记录效果展示
2.只审核预约记录处于审核中的状态的预约效果展示
而最后的部分正是完善教师的审核功能:
逻辑:
审核预约的逻辑关系:
首先进行审核预约后,教师应该需要看到所有的预约记录
然后 再给予教师提示 按罗列的数据序号选择要审核更改预约状态的记录
同时需要给个返回序号,如果不想现在审核 输入该序号就返回上一级
当输入序号后,就提示用户 给予其两个选择 1.审核通过 2.审核不通过
最后提示,审核完毕,更新预约记录
流程:
第一步 展示所有预约记录
调用预约信息类 创建其实例化对象
为什么要创建这个类 该类有map容器记录所有预约记录的信息 还有记录预约条数的类成员
然后,我们需要判断该类对象的预约记录条数是否为0 为0就提示用户 没有预约记录
并且跳过这个判断,然后返回上级
如果条数不为0条,则开始展示所有的预约记录信息
如何展示这些信息呢? 这些信息保存于orderFile的类对象of的map容器中
打印map容器的信息即可,如何打印? map容器的打印方式是of.m_orderDate[key][value]
由于该容器的value也是一个map容器,所以应该是of.m_orderDate[key][map[key][value]]
第一个key很好理解 int类型 保存预约记录的条数
那为map容器的value呢?这是用来保存预约具体信息的,
假如,value 保存了一个string 字符串 字符串内容为num:123 那么key是num value是123
而map[key][value]的作用就是调出该信息 即num:123 也就是string
所以我们要打印大map容器包含的数据 可以这样写cout << of.m_orderDate[key]["string"]
但是不同的大key保存不同的预约记录信息 而小map则保存单条预约记录的各种子类信息
所以我们想要打印所有信息,那么就循环遍历大map容器内的所有预约记录
二.项目的代码展示
//审核预约
void Teacher::validOrder()
{
//第一步创建OrderFile对象
//OrderFile是预约信息类 用于保存预约记录信息
OrderFile of;
//判断预约记录条数是否为0
if (of.m_Size == 0)
{
cout << "没有预约记录!" << endl;