前言
衔接上一篇“c++学习笔记-STL案例-机房预约系统5-学生模块”,本文主要设计老师模块,从,老师登录和注销、查看所有预约、审核预约三个方面进行分析和实现。
目录
9 教师模块
9.1 教师登录和注销
9.1.1 构造函数
9.1.2 教师子菜单
编辑
9.1.3 菜单功能实现
9.1.4 接口对接
9.1.5 测试结果
9.2 查看所以预约
9.2.1 所有预约功能实现
9.2.2 测试结果
9.3 审核预约
9.3.1 审核功能实现
9.3.2 测试审核功能
9 教师模块
9.1 教师登录和注销
9.1.1 构造函数
在Teacher类的构造函数中,初始化教师信息,代码如下:
//有参构造 参数:职工号,姓名,密码
Teacher::Teacher(int empid, string name, string pwd)
{this->m_EmpId = empid;this->m_Name = name;this->m_Pwd = pwd;
}
添加位置如图:
9.1.2 教师子菜单
- 在机房预约系统.cpp中,当用户登录的是教师,添加教师菜单接口
- 将不同的分支提供出
查看所有预约
审核预约
注销功能
- 实现注销功能:
添加全局函数 void TeacherMenu(Identity*&manager)代码如下:
//进入老师子菜单
void teacherMenu(Identity*& teacher)
{while (true){//调用子菜单界面teacher->operMenu();//将父类指针 转为子类指针 调用子类指针特有的功能Teacher * tea = (Teacher*)teacher;int select;//接收用户选择cin >> select;if (select == 1) //查看所以预约{tea->showAllOrder();}else if (select == 2) //审核预约{tea->validOrder();}else{delete teacher;cout << "注销成功" << endl;system("pause");system("cls");return;}}
}
添加位置如图:
9.1.3 菜单功能实现
//菜单界面
void Teacher::operMenu()
{cout << "欢迎教师" << this->m_Name << "登录!" << endl;cout << "\t\t -------------------------------------------------" << endl;cout << "\t\t| |\n";cout << "\t\t| 1.查看所有预约 |\n";cout << "\t\t| |\n";cout << "\t\t| 2.审核预约 |\n";cout << "\t\t| |\n";cout << "\t\t| 0.注销登录 |\n";cout << "\t\t| |\n";cout << "\t\t -------------------------------------------------" << endl;cout << "请选择您的操作:" << endl;
}
添加位置如图:
9.1.4 接口对接
//进入教师身份子菜单teacherMenu(person);
添加位置如图:
9.1.5 测试结果
登录老师账号:
注销老师账号:
9.2 查看所以预约
9.2.1 所有预约功能实现
该功能与学生身份的查看所有预约功能相似,用于显示所以预约记录
在Teacher.cpp中实现成员函数void Teacher::showAllOrder()
//查看所有预约
void Teacher::showAllOrder()
{OrderFile of;if (of.m_Size == 0){cout << "无预约记录!" << endl;system("pause");system("cls");return;}for (int i = 0; i < of.m_Size; i++){cout << i + 1 << "、";cout << "预约日期:周" << of.m_orderDate[i]["data"];cout << "预约时段:" << (of.m_orderDate[i]["interval"] == "1" ? "上午" : "下午");cout << "学号:" << of.m_orderDate[i]["stuId"];cout << "姓名:" << of.m_orderDate[i]["stuName"];cout << "机房号:" << of.m_orderDate[i]["roomId"];string status = "状态:";//1审核中 2已预约 -1预约失败 0取消预约if (of.m_orderDate[i]["status"] == "1"){status += "审核中";}else if (of.m_orderDate[i]["status"] == "2"){status += "已预约";}else if (of.m_orderDate[i]["status"] == "-1"){status += "预约失败,审核未通过";}else if (of.m_orderDate[i]["status"] == "0"){status += "预约已经取消";}cout << status << endl;}system("pause");system("cls");
}
添加位置如图:
9.2.2 测试结果
9.3 审核预约
9.3.1 审核功能实现
//审核预约
void Teacher::validOrder()
{OrderFile of;if (of.m_Size == 0){cout << "无预约记录" << endl;system("pause");system("cls");return;}vector<int>v;int index = 0;cout << "审核中的预约记录如下:" << endl;for (int i = 0; i < of.m_Size; i++){if (of.m_orderDate[i]["status"] == "1")//审核中的预约{v.push_back(i);cout << ++index << "、";cout << "预约日期:周" << of.m_orderDate[i]["date"];cout << " 时间段:" << (of.m_orderDate[i]["interval"] == "1" ? "上午" : "下午");cout << " 学生编号:" << of.m_orderDate[i]["stuId"];cout << " 学生姓名:" << of.m_orderDate[i]["stuName"];cout << " 机房编号:" << of.m_orderDate[i]["roomId"];string status = " 状态:审核中";cout << status << endl;}}cout << "请输入审核的预约记录,0代表返回" << endl;int select = 0;//接受用户选择的预约记录int ret = 0;//接受预约结果记录while (true){cin >> select;if (select >= 0 && select <=v.size()){if (select == 0){break;}else{cout << "请输入审核结果" << endl;cout << "1、通过" << endl;cout << "2、不通过" << endl;cin >> ret;if (ret == 1){//通过情况of.m_orderDate[v[select - 1]]["status"] = "2";}else{//不通过情况of.m_orderDate[v[select - 1]]["status"] = "-1";}of.updateOrder();//更新预约记录cout << "审核完毕!" << endl;break;}}cout << "输入有误,重新输入!" << endl;}system("pause");system("cls");
}
添加位置如图:
9.3.2 测试审核功能
审核通过测试:
order.txt文件第一条预约也对应更改为“2”表示审核通过:
审核不通过测试:
order.txt文件第一条预约也对应更改为“-1”表示审核不通过:
查看所有预约, 第一条预约为"已预约”、 第二条预约为"预约失败,审核未通过”,符合上面两个操作审核的过程结果:
总结
教师模块查看预约、审核预约、注销登录三大功能,其中教师的查看所有预约和学生模块的查看所有预约功能一致,审核预约需要筛选出预约状态为“审核中”的预约条目,记录这些条目在实际order.txt中的编号,然后根据人选择的编号更改选中编号的预约状态为“审核通过”或“审核不通过”,在根据审核结果更新orderFile的成员函数m_orderDate从而更新 order.txt文件。
流程图如下:
数据通过文件方式进行流通。明天加个数据流图