c++学习笔记-STL案例-机房预约系统6-老师模块

前言

衔接上一篇“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文件。

流程图如下:​​​​​​​

数据通过文件方式进行流通。明天加个数据流图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux7 安装 Oracle 19C RAC 详细图文教程

实战篇&#xff1a;Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照&#xff1a;https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前&#xff0c;当然要先做好规划。具体包含以下几方面&#xff1a; 节点主机版本主机名实例名Grid/Oracle版本Publi…

鸿蒙原生开发-仿ChatGPT应用实战

运行环境 DAYU200:4.0.10.16 SDK&#xff1a;4.0.10.15 IDE&#xff1a;4.0.600 前言 在配置好环境之后&#xff0c;可以尝试这编写一个较为简单的应用程序练练手&#xff0c;这里选择使用一个免费的API接口网站 ALAPI来尝试编写一个可进行对话的GPT应用程序。 创建项目 …

SQL注入示例

例一、基础SQL注入&#xff1a;load_file读文件 CISP-PTE 认证考试 首先是有单引号和括号的&#xff0c;首要是要闭合&#xff0c;然后回显点是在-1的位置&#xff0c;读取文件上面的key的话使用的是load_file(/tmp/360/key) id-1)%09ununionion%09select%091,2,3,load_file…

【算法与数据结构】322、LeetCode零钱兑换

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题可以抽象成一个完全背包问题。 第一步&#xff0c; d p [ j ] dp[j] dp[j]的含义。 d p [ j ] dp…

Unity之Cinemachine教程

前言 Cinemachine是Unity引擎的一个高级相机系统&#xff0c;旨在简化和改善游戏中的相机管理。Cinemachine提供了一组强大而灵活的工具&#xff0c;可用于创建令人印象深刻的视觉效果&#xff0c;使开发人员能够更轻松地掌控游戏中的摄像机行为。 主要功能和特性包括&#x…

用Python画出漂亮的地图

用Python画出漂亮的地图 地图可视化是数据分析和地理信息系统中的重要环节。Python提供了多个强大的库&#xff0c;如Folium、Matplotlib、Geopandas等&#xff0c;使得创建漂亮而具有信息量的地图变得简单而灵活。本文将详细介绍如何使用这些库绘制漂亮的地图&#xff0c;并提…

C++ STL库详解:list的详细模拟实现

一、前言 在详细学习并学习c后&#xff0c;我们对stl库的例如vector、list、string都有了详细的了解&#xff0c;对模板的使用以及类和对象都有了熟练的掌握&#xff0c;而实践才是检验真理的唯一标准&#xff0c;在此片博客中&#xff0c;将利用先前学过的各模块知识来对list…

Springboot+vue的医院后台管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的医院后台管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的医院后台管理系统&#xff0c;采用M&#xff08…

Java实现 OPC Ua Server服务器创建

前言 我们除了使用KEPServerEX6 创建OPC Ua Server 服务器以外,还可以使用 开源项目org.eclipse.milo 创建一个java项目OPC Ua Server的服务。相对于KEPServerEX6 属于收费的商用版本来说,后者更为简单轻便。下面附加代码和文字说明,教你如何创建一个OPC Ua Server的java服…

vue多层组件监听 v-bind=“$attrs“,v-on=“$listeners“

高层级向低层级传值 v-bind“$attrs” v-bind"$attrs"主要用于高层组件向低层组件隔代传值。 假如有 父组件A&#xff0c;子组件B&#xff0c;孙组件C 三个组件。 A组件中的值需要直接传给C组件&#xff0c;那么就需要在B组件中设置v-bind“$attrs”&#xff0c;然…

LeetCode、875. 爱吃香蕉的珂珂【中等,最小速度二分】

文章目录 前言LeetCode、875. 爱吃香蕉的珂珂【中等&#xff0c;最小速度二分】题目及分类思路分析及代码实现代码优化 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Ja…

如何修改flutter的minSdkVersion版本?

在使用第三方插件的时候&#xff0c;插件对最低的 minSdkVersion版本是有要求的&#xff0c;你比如flutter 插件 webview_flutter 就会报一下错&#xff1a; minSdkVersion 16 cannot be smaller than version 19 declared in library 解决方法①&#xff1a; 这个时候我们需…

Flutter 屏幕适配之相对尺寸适配

在Android中我们可以通过脚本来动态生成适配于各个厂商的屏幕的相对尺寸。 那么在Flutter中我们如何通过相同的思路来实现同样的效果呢&#xff1f;我们知道&#xff0c;Android的每个厂商的屏幕大小存在非常大区别。有些长&#xff0c;有的短&#xff0c;有的粗&#xff0c;有…

Python爬虫框架选择与使用:推荐几个常用的高效爬虫框架

目录 前言 一、Scrapy框架 1. 安装Scrapy 2. Scrapy示例代码 3. 运行Scrapy爬虫 二、Beautiful Soup库 1. 安装Beautiful Soup 2. Beautiful Soup示例代码 3. 运行Beautiful Soup代码 三、Requests库 1. 安装Requests库 2. Requests示例代码 3. 运行Requests代码 …

【蓝桥杯--图论】最小生成树prim、kruskal

今日语录&#xff1a;成功不是终点&#xff0c;失败不是致命&#xff0c;勇气才是取胜的关键。 文章目录 prim算法kruskal算法(稀疏图) prim算法 #include <cstring> #include <algorithm> #include <iostream>#define _CRT_SECURE_NO_WARNINGS using names…

8 种网络协议

什么是网络协议&#xff1f; 网络协议就是计算机之间沟通的语言&#xff0c;为了有效地交流&#xff0c;计算机之间需要一种共同的规则或协议&#xff0c;就像我们和老外沟通之前&#xff0c;要先商量好用哪种语言&#xff0c;要么大家都说中文&#xff0c;要么大家都说英语&a…

微信小程序实现长按 识别图片二维码

第一种方案&#xff08;只需要在image里面加一个属性就可以了&#xff09; show-menu-by-longpress“{{true}}” <image show-menu-by-longpress"{{true}}" src"{{sysset.dyqewm}}" />第二种方案 放大预览图片&#xff0c;长按识别二维码 wxml <…

数灵通实现抖音跳转企业微信啦

抖音是一款流行的短视频应用&#xff0c;用户可以通过简洁、有趣的短视频形式创作和分享内容。 对于企业而言&#xff0c;抖音拥有庞大的用户基础和广泛的影响力&#xff0c;因此企业希望能够利用抖音的平台来推广自己的企业微信账号&#xff0c;与用户建立更紧密的沟通和联系…

css中px和em的区别

px 和 em 是用来表示元素大小的单位&#xff0c;在 CSS 中经常被使用。 px (pixel) 是像素单位&#xff0c;表示屏幕上的一个点。它是一个绝对单位&#xff0c;表示一个固定的大小。例如&#xff0c;一个宽度为 200px 的元素将始终显示为 200 个像素宽。 em 是相对单位&#x…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM平台编程第一天-ARM常见问题1-100问(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd1688 提取码&#xff1a;1688 第1问: Q:请问在初始化CPU堆栈的时候一开始在执行mov r0, LR这句指令时处理器是什么模式 A:复位后的模式,即管理模式. …