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

news2024/12/24 9:46:43

前言

衔接上一篇“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.coloradmin.cn/o/1406481.html

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

相关文章

java web mvc-07-Vaadin 入门介绍

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

通信入门系列——复变函数

本节目录 一、复变函数 1、复数 2、复数的四则运算 二、复指数函数 三、欧拉公式本节内容 一、复变函数 1、复数 复数单位i&#xff0c;也就是满足i^2-1&#xff0c;将zxiy表示为复数z&#xff0c;x和y为任意的实数&#xff0c;称为复数z的实部和虚部。由复数zxiy对应的点(x,y…

LiveGBS流媒体平台GB/T28181常见问题-如何配置使用自己已有的redis服务替换redis版本升级redis版本

LiveGBS如何配置使用自己已有的redis服务替换redis版本升级redis版本 1、Redis服务2、如何切换REDIS?2.1、停止启动REDIS2.2、配置信令服务2.3、配置流媒体服务2.4、启动 3、搭建GB28181视频直播平台 1、Redis服务 在LivGBS中Redis作为数据交换、数据订阅、数据发布的高速缓存…

TensorRT英伟达官方示例解析(一)

系列文章目录 TensorRT英伟达官方示例解析&#xff08;一&#xff09; TensorRT英伟达官方示例解析&#xff08;二&#xff09; 文章目录 系列文章目录前言一、参考资料二、配置系统环境三、00-MNISTData四、01-SimpleDemo4.1 Makefile4.2 main.cpp4.3 main.py 总结 前言 一、…

上位机图像处理和嵌入式模块部署(自定义算法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们在使用opencv的时候&#xff0c;虽然大部分算法都不需要我们自己重头开始编写&#xff0c;但是总有一些关于我们自己产品的know-how&#xff0…

Redis--Bitmap有序集合的语法和使用场景举例

文章目录 前言Bitmap概述Bitmap命令介绍使用场景结尾 前言 Redis除了常见的五种数据类型之外&#xff0c;其实还有一些少见的数据结构&#xff0c;如Geo&#xff0c;HyperLogLog&#xff0c;Bitmap等。虽然它们少见&#xff0c;但是作用却不容小觑。本文将介绍Bitmap数据类型的…

c语言-柔性数组

文章目录 前言一、柔性数组的介绍1.1 柔性数组的定义 二、柔性数组的使用2.1 使用说明2.2 结构体中的成员只包含一个柔性数组成员2.3 结构体中的成员包含其他成员和一个柔性数组成员 三、模拟柔性数组总结 前言 本篇文章介绍c语言中的柔性数组。 一、柔性数组的介绍 1.1 柔性…

【动态规划】【字符串】【C++算法】940. 不同的子序列 II

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode940. 不同的子序列 II 给定一个字符串 s&#xff0c;计算 s 的 不同非空子序列 的个数。因为结果可能很大&#xff0c;所以返回答案需要对 10^9 7 取…

MySQL之数据库DDL

文章目录 MySQL数据库基本操作数据定义DDL对数据库的常用操作创建表修改表格式结构 MySQL数据库基本操作 首先我们先了解SQL的语言组成&#xff0c;他分为四个部分 数据定义语言&#xff08;DDL&#xff09;数据操纵语言&#xff08;DML&#xff09;数据控制语言&#xff08;…

网络安全---防御保护--子接口小实验

子接口小实验&#xff1a; 环境准备&#xff1a; 防火墙区域配置为trust&#xff1a; PC设置其ip为同一个网段&#xff1a; 此时尝试ping无法ping通的原因是没有打开防火墙允许ping&#xff0c;我们在图形化界面允许ping即可 最终结果&#xff1a; .com域名服务器&#xff1a; …

机器视觉系统选型-参数-镜头各个参数之间相互关系

焦距越小&#xff0c;景深越大&#xff1b;焦距越小&#xff0c;畸变越大&#xff1b; 光圈越大&#xff0c;图像亮度越高&#xff1b;光圈越大&#xff0c;景深越小&#xff1b; 光圈越大&#xff0c;分辨率越高&#xff1b; 一般像场中心较边缘分辨率高&#xff0c;像场中心较…

K8S四层代理Service-02

Service的四种类型使用 ClusterIP使用示例Pod里使用service的服务名访问应用 NodePort使用示例 ExternalName使用示例 LoadBalancer K8S支持以下4种Service类型&#xff1a;ClusterIP、NodePort、ExternalName、LoadBalancer 以下是使用4种类型进行Service创建&#xff0c;应对…

网络协议与攻击模拟_06攻击模拟SYN Flood

一、SYN Flood原理 在TCP三次握手过程中&#xff0c; 客户端发送一个SYN包给服务器服务端接收到SYN包后&#xff0c;会回复SYNACK包给客户端&#xff0c;然后等待客户端回复ACK包。但此时客户端并不会回复ACK包&#xff0c;所以服务端就只能一直等待直到超时。服务端超时后会…

.NET国产化改造探索(七)、更改大金仓数据库认证方式

随着时代的发展以及近年来信创工作和…废话就不多说了&#xff0c;这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来&#xff0c;看操作。 之前安装人大金仓数据库的时候&#xff0c;连接数据库所使用的加密方式选择的是scram-sm3&#xff0c;权限管理框架的ORM使用的…

机器学习实验2——线性回归求解加州房价问题

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;数据预处理&#x1f9e1;&#x1f9e1;代码缺失值处理特征探索相关性分析文本数据标签编码数值型数据标准化划分数据集 &#x1f9e1;&#x1f9e1;线性回归&#x1f9e1;&am…

router4j--SpringCloud动态路由利器

前言 本文介绍Java的动态路由中间件&#xff1a;router4j。router4j用于SpringCloud项目&#xff0c;它可以将某个url请求路由到指定的机器上&#xff0c;也可以将所有请求强制转到指定机器。 问题描述 Java后端在开发SpringCloud项目时如果同一个应用起了多个实例&#xff…

汽车网络架构与常用总线汇总

汽车CAN总线简述 CAN 是控制器局域网Controller Area Network 的缩写&#xff0c;1986年&#xff0c;由德国Bosch公司为汽车开发的网络技术&#xff0c;主要用于汽车的监测与控制&#xff0c;目的为适应汽车“减少线束的数量”“通过多个网络进行大量数据的高速传输”的需求。…

php中laravel项目开发技巧与避坑

公司开发新业务&#xff0c;涉及到地址引用和循环遍历&#xff0c;结果测试人员说部分数据对不上&#xff0c;经排查&#xff0c;ID无值&#xff0c;name却有值&#xff0c;断点定位后&#xff0c;发现是地址引用的问题引起的 问题原因 数据库查询也确实是0 解决方案 注意事项…

理想架构的非对称高回退Doherty功率放大器理论与仿真

Doherty理论—理想架构的非对称高回退Doherty功率放大器理论与仿真 参考&#xff1a; 三路Doherty设计 01 射频基础知识–基础概念 Switchmode RF and Microwave Power Amplifiers、 理想架构的Doherty功率放大器&#xff08;等分经典款&#xff09;的理论与ADS电流源仿真参考…

什么是ORM思想?

1. ORM概念 ORM&#xff08;Object Relational Mapping&#xff09;对象关系映射模式&#xff0c;是一种技术&#xff0c;解决了面向对象与关系型数据库存互不匹配的现象。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 2. ORM由来 在软件开发的过程中&#xff0c;通常…