c++实现机房预约管理系统

//computerRoom.h

#pragma once
#include <iostream>
using namespace std;//机房类
class ComputerRoom {
public:int m_ComId;//机房Id号int m_MaxNum;//最大容量};

//globalFile.h

#pragma once//管理员文件
#define ADMIN_FILE "admin.txt"
//学生文件
#define STUDENT_FILE "student.txt"
//教师文件
#define TEACHER_FILE "teacher.txt"
//机房信息文件
#define COMPUTER_FILE "computerRoom.txt"
//订单文件
#define ORDER_FILE "order.txt"

//Identity.h

#pragma once
#include<iostream>
using namespace std;class Identity {
public://操作菜单    纯虚函数virtual void operMenu() = 0;//用户名string m_Name;//用户密码string m_Pwd;};

//Manager.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"
#include <string>
#include <fstream>
#include "globalFile.h"
#include <vector>
#include "Student.h"
#include "Teacher.h"
#include "computerRoom.h"class Manager : public Identity {
public://无参构造Manager();//有参构造Manager(string name, string pwd);//显示管理员菜单的操作界面virtual void operMenu();//添加账号void addPerson();//查看账号void showPerson();//查看机房信息void showComputer();//清空预约记录void cleanFile();//初始化容器void initVector();//检测重复   参数1 检测学号/职工号   参数2 检测类型bool checkRepeat(int id, int type);//学生容器vector<Student>vStu;//教师容器vector<Teacher>vTea;//机房信息vector<ComputerRoom>vCom;
};

//orderFile.h

#pragma once
#include<iostream>
using namespace std;
#include "globalFile.h"
#include <fstream>
#include <map>
#include <string>class OrderFile {
public://构造函数OrderFile();//更新预约条数void updateOrder();//记录预约条数int m_Size;//记录所有预约信息的容器, key记录条数 value 具体记录键值对信息map<int, map<string, string>> m_orderData;
};

//Student.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"
#include <vector>
#include "computerRoom.h"
#include <fstream>
#include "globalFile.h"
#include "orderFile.h"//学生类
class Student :public Identity{
public://默认构造Student();//有参构造Student(int id , string name, string pwd);//菜单界面virtual void operMenu();//申请预约void applyOrder();//查看自身预约void showMyOrder();//查看所有预约void showAllOrder();//取消预约void cancelOrder();//学生学号int m_Id;//机房容器vector<ComputerRoom> vCom;
};

//Teacher.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"
#include "orderFile.h"
#include <vector>//教师类设计
class Teacher :public Identity {
public://默认构造Teacher();//有参构造Teacher(int empId, string name, string pwd);//菜单virtual void operMenu();//查看所有预约void showAllOrder();//审批预约void validOrder();//职工idint m_EmpId;
};

//Manager.cpp

#include "Manager.h"
#include <algorithm>
//无参构造
Manager::Manager() {}//有参构造
Manager::Manager(string name, string pwd) {//初始化管理员信息this->m_Name = name;this->m_Pwd = pwd;//初始化容器 获取到所有文件中 学生,老师信息this->initVector();//初始化机房信息ifstream ifs;ifs.open(COMPUTER_FILE, ios::in);ComputerRoom com;while (ifs >> com.m_ComId && ifs >> com.m_MaxNum) {vCom.push_back(com);}ifs.close();}//显示管理员菜单的操作界面
void Manager::operMenu() {cout << "欢迎管理员:" << this->m_Name << "登录!" << endl;cout << "\t\t  ----------------------------------------- \n";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|                3.查看机房                 |\n";cout << "\t\t|                                           |\n";cout << "\t\t|                4.清空预约                 |\n";cout << "\t\t|                                           |\n";cout << "\t\t|                0.注销登录                 |\n";cout << "\t\t|                                           |\n";cout << "\t\t  ----------------------------------------- \n";cout << "请选择您的操作:" << endl;
}//添加账号
void Manager::addPerson() {cout << "请输入添加账号类型" << endl;cout << "1,添加学生" << endl;cout << "2,添加老师" << endl;string fileName;//操作文件名string tip;//提示id号string errorTip;//重复错误提示ofstream ofs;//文件操作对象int select = 0;cin >> select;//接受用户的选项if (select == 1) {//添加的是学生fileName = STUDENT_FILE;tip = "请输入学号:";errorTip = "学号重复,请重新输入";}else {fileName = TEACHER_FILE;tip = "请输入职工编号:";errorTip = "职工号重复,请重新输入";}//利用追加的方式写文件ofs.open(fileName, ios::out | ios::app);int id;  //学号/职工号string name;  //姓名string pwd;  //密码cout << tip << endl;while (true) {cin >> id;bool ret = this->checkRepeat(id, select);if (ret) {//有重复cout << errorTip << endl;}else {break;}}cout << "请输入姓名:" << endl;cin >> name;cout << "请输入密码:" << endl;cin >> pwd;//向文件中添加数据ofs << id << " " << name << " " << pwd << " " << endl;cout << "添加成功" << endl;system("pause");system("cls");ofs.close();//调用初始化容器接口,从新获取文件中的数据this->initVector();
}void printStudent(Student &s) {cout << "学号:" << s.m_Id << " 姓名:" << s.m_Name << " 密码:" << s.m_Pwd << endl;
}void printTeacher(Teacher& t) {cout << "职工号:" << t.m_EmpId << " 姓名:" << t.m_Name << " 密码:" << t.m_Pwd << endl;
}//查看账号
void Manager::showPerson() {cout << "请选择查看内容:" << endl;cout << "1,查看所有学生" << endl;cout << "2,查看所有老师" << endl;int select = 0;//接受用户选择cin >> select;if (select == 1) {//查看学生cout << "所有学生信息如下:" << endl;for_each(vStu.begin(), vStu.end(), printStudent);}else {//查看老师cout << "所有教师信息如下:" << endl;for_each(vTea.begin(), vTea.end(), printTeacher);}system("pause");system("cls");
}//查看机房信息
void Manager::showComputer() {cout << "机房信息如下:" << endl;for (vector<ComputerRoom> :: iterator it = vCom.begin(); it != vCom.end(); it++) {cout << "机房编号:" << it->m_ComId << " 机房最大容量:" << it->m_MaxNum << endl;}system("pause");system("cls");
}//清空预约记录
void Manager::cleanFile() {ofstream ofs(ORDER_FILE, ios::trunc);ofs.close();cout << "清空成功!" << endl;system("pause");system("cls");
}//初始化容器
void Manager::initVector() {//确保文件清空状态vStu.clear();vTea.clear();//读取信息  学生ifstream ifs;ifs.open(STUDENT_FILE, ios::in);if (!ifs.is_open()) {cout << "文件读取失败" << endl;return;}Student s;while (ifs >> s.m_Id && ifs >> s.m_Name && ifs >> s.m_Pwd) {vStu.push_back(s);}cout << "当前学生数量为:" << vStu.size() << endl;ifs.close();//读取信息 老师ifs.open(TEACHER_FILE, ios::in);Teacher t;while (ifs >> t.m_EmpId && ifs >> t.m_Name && ifs >> t.m_Pwd) {vTea.push_back(t);}cout << "当前老师数量为:" << vTea.size() << endl;ifs.close();
}//检测重复   参数1 检测学号/职工号   参数2 检测类型
bool Manager::checkRepeat(int id, int type) {if (type == 1) {//检测学生for (vector<Student>::iterator it = vStu.begin(); it != vStu.end(); it++) {if (id == it->m_Id) {return true;}}return false;}else {//检测老师for (vector<Teacher>::iterator it = vTea.begin(); it != vTea.end(); it++){if (id == it->m_EmpId) {return true;}}return false;}
}

//orderfile.cpp

#include "orderFile.h"//构造函数
OrderFile::OrderFile() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date;   //日期string interval;   //时间段string stuId;   //学生编号string stuName;   //学生姓名string roomId;   //机房编号string status;   //预约状态this->m_Size = 0;  //预约记录条数while (ifs >> date && ifs >> interval && ifs >> stuId && ifs >> stuName && ifs >> roomId && ifs >> status) {/*cout << date << endl;cout << interval << endl;cout << stuId << endl;cout << stuName << endl;cout << roomId << endl;cout << status << endl;cout << endl;*///date:1string key;string value;map<string, string>m;int pos = date.find(":");//4if (pos != -1) {key = date.substr(0, pos);value = date.substr(pos + 1, date.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}/*cout << "key = " << key << endl;cout << "value = " << value << endl;*///截取时间段pos = interval.find(":");//4if (pos != -1) {key = interval.substr(0, pos);value = interval.substr(pos + 1, interval.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}//截取学号pos = stuId.find(":");//4if (pos != -1) {key = stuId.substr(0, pos);value = stuId.substr(pos + 1, stuId.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}//截取姓名pos = stuName.find(":");//4if (pos != -1) {key = stuName.substr(0, pos);value = stuName.substr(pos + 1, stuName.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}//截取机房号pos = roomId.find(":");//4if (pos != -1) {key = roomId.substr(0, pos);value = roomId.substr(pos + 1, roomId.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}//截取预约状态pos = status.find(":");//4if (pos != -1) {key = status.substr(0, pos);value = status.substr(pos + 1, status.size() - pos - 1);     //size = 9 pos = 4  size - pos -1 = 5-1m.insert(make_pair(key, value));}//将小map容器放入到大map容器中this->m_orderData.insert(make_pair(this->m_Size, m));this->m_Size++;}ifs.close();测试最大map容器//for (map<int, map<string, string>>::iterator it = m_orderData.begin(); it != m_orderData.end(); it++) {//	cout << "条数为:" << it->first << " value =" << endl;//	for (map<string, string> :: iterator mit = (*it).second.begin(); mit != it->second.end(); mit++) {//		cout << " key =" << mit->first << " value =" << mit->second << " ";//	}//	cout << endl;//}
}//更新预约记录
void OrderFile::updateOrder() {if (this->m_Size == 0) {return;//预约记录0条,直接return;}ofstream ofs(ORDER_FILE, ios::out | ios::trunc);for (int i = 0; i < this->m_Size; i++) {ofs << "date:" << this->m_orderData[i]["date"] << " ";ofs << "interval:" << this->m_orderData[i]["interval"] << " ";ofs << "stuId:" << this->m_orderData[i]["stuId"] << " ";ofs << "stuName:" << this->m_orderData[i]["stuName"] << " ";ofs << "roomId:" << this->m_orderData[i]["roomId"] << " ";ofs << "status:" << this->m_orderData[i]["status"] << " ";}ofs.close();system("pause");system("cls");
}

//Student.cpp

#include "Student.h"//默认构造
Student::Student() {}//有参构造
Student::Student(int id, string name, string pwd) {//初始化属性this->m_Id = id;this->m_Name = name;this->m_Pwd = pwd;//初始化机房信息ifstream ifs;ifs.open(COMPUTER_FILE, ios::in);ComputerRoom com;while (ifs >> com.m_ComId && ifs >> com.m_MaxNum) {//将读取的信息放入到容器中vCom.push_back(com);}ifs.close();
}//菜单界面
void Student::operMenu() {cout << "欢迎学生代表:" << this->m_Name << "登录!" << endl;cout << "\t\t ----------------------------\n";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|         3.查看所有预约     |\n";cout << "\t\t|                            |\n";cout << "\t\t|         4.取消预约         |\n";cout << "\t\t|                            |\n";cout << "\t\t|         0.注销登录         |\n";cout << "\t\t ----------------------------\n";
}//申请预约
void Student::applyOrder() {cout << "机房开放时间为周一至周五!" << endl;cout << "请输入申请预约的时间:" << endl;cout << "1,周一" << endl;cout << "2,周二" << endl;cout << "3,周三" << endl;cout << "4,周四" << endl;cout << "5,周五" << endl;int date = 0;   //日期int interval = 0;   //时间段int room = 0;    //机房编号while (true) {cin >> date;if (date >= 1 && date <= 5) {break;}cout << "输入有误,请重新输入!" << endl;}cout << "请输入申请预约时间段:" << endl;cout << "1,上午" << endl;cout << "2,下午" << endl;while (true) {cin >> interval;if (interval >= 1 && interval <= 2) {break;}cout << "输入有误,请重新输入" << endl;}cout << "请选择机房:" << endl;for (int i = 0; i < vCom.size(); i++) {cout << vCom[i].m_ComId << "号机房容量为:" << vCom[i].m_MaxNum << endl;}while (true) {cin >> room;if (room >= 1 && room <= 3) {break;}cout << "输入有误,请重新输入" << endl;}cout << "预约成功!审核中" << endl;ofstream ofs;ofs.open(ORDER_FILE, ios::app);ofs << "date:" << date << " ";ofs << "interval:" << interval << " ";ofs << "stuId:" << this->m_Id << " ";ofs << "stuName:" << this->m_Name << " ";ofs << "roomId:" << room << " ";ofs << "status:" << 1 << endl;ofs.close();system("pause");system("cls");
}//查看自身预约
void Student::showMyOrder() {OrderFile of;if (of.m_Size == 0) {cout << "无预约记录!" << endl;system("pause");system("cls");return;}for (int i = 0; i < of.m_Size; i++) {//string 转 int://1.string 利用 .c_str() 转 const char *//2.利用 atoi(const char *)转 intif (this->m_Id == atoi(of.m_orderData[i]["stuId"].c_str())) {//找到自身预约cout << "预约日期:周" << of.m_orderData[i]["date"];cout << "  时间段:" << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");string status = "  状态:";//1 审核中 2 已预约  -1  预约失败  0  取消预约if (of.m_orderData[i]["status"] == "1") {status += "审核中";}else if (of.m_orderData[i]["status"] == "2") {status += "预约成功";}else if (of.m_orderData[i]["status"] == "-1") {status += "预约失败,审核未通过";}else {status += "预约失败,审核已取消";}cout << status << endl;}}system("pause");system("cls");
}//查看所有预约
void Student::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_orderData[i]["date"];cout << "时间段:" << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");cout << "学号:" << of.m_orderData[i]["stuId"];cout << "姓名:" << of.m_orderData[i]["stuName"];cout << "机房编号:" << of.m_orderData[i]["roomId"];string status = "状态";//1 审核中 2 已预约 -1预约失败 0 取消预约if (of.m_orderData[i]["status"] == "1") {status += "审核中";}else if (of.m_orderData[i]["status"] == "2") {status += "预约成功";}else if (of.m_orderData[i]["status"] == "-1") {status += "预约失败,审核未通过";}else {status += "预约已取消";}cout << status << endl;}system("pause");system("cls");
}//取消预约
void Student::cancelOrder() {OrderFile of;if (of.m_Size == 0) {cout << "无预约记录" << endl;system("pause");system("cls");return;}cout << "审核中或预约成功的记录可以取消,请输入取消的记录" << endl;vector<int>v;  //存放在最大容器中的下标编号int index = 1;for (int i = 0; i < of.m_Size; i++) {//先判断是自身学号if (this->m_Id == atoi(of.m_orderData[i]["stuId"].c_str())) {//再筛选状态 审核中或预约成功if (of.m_orderData[i]["status"] == "1" || of.m_orderData[i]["status"] == "2") {v.push_back(i);cout << index++ << "、";cout << "预约日期:周" << of.m_orderData[i]["date"];cout << "时间段:" << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");cout << "机房编号:" << of.m_orderData[i]["roomId"];string status = "状态:";if (of.m_orderData[i]["status"] == "1") {status += "审核中";}else if (of.m_orderData[i]["status"] == "2") {status += "预约成功";}cout << status << endl;}}}cout << "请输入取消的记录,0代表返回" << endl;int select = 0;while (true) {cin >> select;if (select >= 0 && select <= v.size()) {if (select == 0) {break;}else {of.m_orderData[v[select - 1]]["status"] = "0";of.updateOrder();cout << "已取消预约" << endl;break;}}cout << "输入有误,请重新输入" << endl;}system("pause");system("cls");
}

//Teacher.cpp

#include"Teacher.h"//默认构造
Teacher::Teacher() {}//有参构造
Teacher::Teacher(int empId, string name, string pwd) {//初始化属性this->m_EmpId = empId;this->m_Name = name;this->m_Pwd = pwd;
}//菜单
void Teacher::operMenu() {cout << "欢迎教师:" << this->m_Name << "登录!" << endl;cout << "\t\t ------------------------------\n";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 ------------------------------\n";cout << "请选择您的操作:" << endl;
}//查看所有预约
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_orderData[i]["date"];cout << "时间段:" << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");cout << "学号:" << of.m_orderData[i]["stuId"];cout << "姓名:" << of.m_orderData[i]["stuName"];cout << "机房编号:" << of.m_orderData[i]["rooomId"];string status;//1 审核中  2  已预约  -1  预约失败  0  取消预约if (of.m_orderData[i]["status"] == "1") {status += "审核中";}else if (of.m_orderData[i]["status"] == "2") {status += "已预约";}else if (of.m_orderData[i]["status"] == "-1") {status += "预约失败,审核未通过";}else {status += "预约已取消";}cout << status << endl;}system("pause");system("cls");
}//审批预约
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_orderData[i]["status"] == "1") {v.push_back(i);cout << ++index << "、";cout << "预约时间:周" << of.m_orderData[i]["date"];cout << "时间段:" << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");cout << "学生编号:" << of.m_orderData[i]["stuId"];cout << "学生姓名:" << of.m_orderData[i]["stuName"];cout << "机房编号:" << of.m_orderData[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_orderData[v[select - 1]]["status"] = "2";}else {//不通过情况of.m_orderData[v[select - 1]]["status"] = "-1";}of.updateOrder();//更新预约记录cout << "审核完毕" << endl;break;}}cout << "输入有误,请重新输入!" << endl;}system("pause");system("cls");}

//机房预约.cpp

#include<iostream>
using namespace std;
#include "Identity.h"
#include <fstream>
#include <string>
#include "globalFile.h"
#include "Student.h"
#include "Teacher.h"
#include "Manager.h"//进入学生子菜单界面
void studentMenu(Identity*& student) {while (true) {//调用学生子菜单student->operMenu();Student* stu = (Student*)student;int select = 0;cin >> select;//接受用户选择if (select == 1) {  //申请预约stu->applyOrder();}else if(select == 2){  //查看自身预约stu->showMyOrder();}else if (select == 3) {  //查看所有人预约stu->showAllOrder();}else if (select == 4) {   //取消预约stu->cancelOrder();}else {//注销登录delete student;cout << "注销预约" << endl;system("pause");system("cls");return;}}
}//进入教师子菜单界面
void teacherMenu(Identity*& teacher) {while (true) {//调用子菜单界面teacher->operMenu();Teacher* tea = (Teacher*)teacher;int select = 0;  //接收用户选择cin >> select;if (select == 1) {  //查看所有预约tea->showAllOrder();}else if (select == 2) {   //审核预约tea->validOrder();}else {delete teacher;cout << "注销成功" << endl;system("pause");system("cls");return;}}
}//进入管理员子菜单界面
void managerMenu(Identity * &manager) {while (true) {//调用管理员子菜单manager->operMenu();//将父类指针 转为子类指针,调用子类里其他接口Manager* man = (Manager*)manager;int select = 0;//接受用户选择cin >> select;if (select == 1) {//添加账号//cout << "添加账号" << endl;man->addPerson();}else if (select == 2) {//查看账号//cout << "查看账号" << endl;man->showPerson();}else if (select == 3) {//查看机房//cout << "查看机房" << endl;man->showComputer();}else if (select == 4) {//清空预约//cout << "清空预约" << endl;man->cleanFile();}else {//注销delete manager;//销毁掉堆区对象//cout << "注销成功" << endl;system("pause");system("cls");return;}}
}//登录功能  参数1  操作文件名  参数2 操作身份类型
void LoginIn(string fileName, int type) {//父类指针,用于指向子类对象Identity* person = NULL;//读文件ifstream ifs;ifs.open(fileName, ios::in);//判断文件是否存在if (!ifs.is_open()) {cout << "文件不存在" << endl;ifs.close();return;}//准备接受用户的信息int id = 0;string name;string pwd;//判断身份if (type == 1) {//学生身份cout << "请输入你的学号:" << endl;cin >> id;}else if (type == 2) {cout << "请输入职工号:" << endl;cin >> id;}cout << "请输入用户名:" << endl;cin >> name;cout << "请输入密码:" << endl;cin >> pwd;if (type == 1) {//学生身份验证int fId;//从文件中读取的id好string fName;//从文件中获取的姓名string fPwd;//从文件中获取中密码while (ifs >> fId && ifs >> fName && ifs >> fPwd) {//与用户输入的信息做对比if (fId == id && fName == name && fPwd == pwd) {cout << "学生验证登录成功!" << endl;system("pause");system("cls");person = new Student(id, name, pwd);//进入学生身份的子菜单studentMenu(person);return;}}}else if (type == 2) {//教师身份验证int fId;  //从文件中获取的id号string fName;  //从文件中获取的姓名string fPwd;   //从文件中获取的密码while (ifs >> fId && ifs >> fName && ifs >> fPwd) {//与用户输入的信息做对比if (fId == id && fName == name && fPwd == pwd) {cout << "教师验证登录成功!" << endl;system("pause");system("cls");person = new Teacher(id, name, pwd);//进入教师子菜单teacherMenu(person);return;}}}else if (type == 3) {//管理员身份验证string fName;     //从文件中获取的姓名string fPwd;      //从文件中获取的密码while (ifs >> fName && ifs >> fPwd) {if (name == fName && pwd == fPwd) {cout << "管理员验证登录成功!" << endl;//登录成功后,按任意键进入管理员界面system("pause");system("cls");//创建管理员对象person = new Manager(name, pwd);//进入管理员子菜单界面managerMenu(person);return;}}}cout << "验证身份登录失败!" << endl;system("pause");system("cls");
}int main() {while (true) {int select = 0;cout << "============================ 欢迎来到传智播客机房预约系统 =========================" << endl;cout << endl;cout << "请输入您的身份:" << endl;cout << "\t\t -------------------------- \n";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|       3. 管理员          |\n";cout << "\t\t|                          |\n";cout << "\t\t|       0.  退出           |\n";cout << "\t\t|                          |\n";cout << "\t\t -------------------------- \n";cout << "请输入您的选择:" << endl;cin >> select;switch (select) {case 1:LoginIn(STUDENT_FILE, 1);break;case 2:LoginIn(TEACHER_FILE, 2);break;case 3:LoginIn(ADMIN_FILE, 3);break;case 0:cout << "欢迎下次使用!" << endl;system("pause");return 0;break;default:cout << "输入有误,请重新输入!" << endl;system("pause");system("cls");break;}}system("pause");system("cls");return 0;
}

希望对大家有所帮助!

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

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

相关文章

如何规划企业钓鱼邮件演练?

为什么要开展网络钓鱼演练 相信在甲方工作的信息安全工程师都知道&#xff0c;定期对公司员工进行安全意识培训是我们的工作内容之一&#xff0c;目的也很明确&#xff0c;通过安全意识培训来改变员工的不安全行为&#xff0c;降低人的风险。根据网络安全问题起源数据分析&…

内部协变量偏移问题(有无BN的代码比较)

1.什么是内部协变量偏移问题&#xff1a; 比如1000条数据&#xff0c;batch_size4&#xff0c;相当于要练250批次&#xff0c;当第一次批次的4条数据进行模型的训练时&#xff0c;此时网络学习动态已经养成&#xff0c;当第二批次进行训练时&#xff0c;极大可能导致差异较大&…

多模态融合目标检测新SOTA!推理速度提升2.7倍,实现最先进性能

为解决传统目标检测在复杂环境下效果不佳等问题&#xff0c;研究者们提出了多模态融合目标检测。 通过整合来自多个传感器的数据&#xff0c;充分利用不同传感器的优点&#xff0c;多模态融合目标检测能够更全面地捕捉目标信息&#xff0c;显著提高检测的准确性和鲁棒性&#…

弘君资本策略:短期博弈情绪边际降温 关注这四条线索

弘君资本指出&#xff0c;随着商场进入地产政策调查期&#xff0c;短期博弈情绪边沿降温&#xff0c;注重景气边沿改善和工业政策指向的结构性头绪。一是受供应侧节能降碳影响且可继续的提价链&#xff1b;二是获益于全球制造业向上的出口制造链&#xff1b;三是具有全球竞争力…

隐藏饼图的legend,重写legend列表。

因为要实现的饼图效果较复杂,所以,需要重新写列表。 点击右侧列表的圆点,实现隐藏左侧饼图相应环状。 // 饼图,点击自定义列表,显示和隐藏饼图对应的环状数据<template> <div class="index_div"> <a-spin :spinning="aLoading">&l…

Unity开发——编辑器打包、3种方式加载AssetBundle资源

一、创建ab资源 &#xff08;一&#xff09;Unity资源设置ab格式 1、选中要打包成assetbundle的资源&#xff1b; 可以是图片&#xff0c;材质球&#xff0c;预制体等&#xff0c;这里方便展示用预制体打包设置展示&#xff1b; 2、AssetBundle面板说明 &#xff08;1&…

【YOLOv5进阶】——模型结构与模型原理YOLOv5源码解析

一、基础知识 1、backbone backbone是核心组成部分&#xff0c;主要负责提取图像特征。具体来说&#xff0c;backbone通过一系列的卷积层和池化层对输入图像进行处理&#xff0c;逐渐降低特征图的尺寸同时增加通道数&#xff0c;从而保留和提取图像中重要的特征。这些提取出的…

Unity3D获得服务器时间/网络时间/后端时间/ServerTime,适合单机游戏使用

说明 一些游戏开发者在做单机游戏功能时&#xff08;例如&#xff1a;每日奖励、签到等&#xff09;&#xff0c;可能会需要获得服务端标准时间&#xff0c;用于游戏功能的逻辑处理。 问题分析 1、自己如果有服务器&#xff1a;自定义一个后端API&#xff0c;客户端按需请求…

使用Obfuscar 混淆WPF(Net6)程序

Obfuscar 是.Net 程序集的基本混淆器&#xff0c;它使用大量的重载将.Net程序集中的元数据&#xff08;方法&#xff0c;属性、事件、字段、类型和命名空间的名称&#xff09;重命名为最小集。详细使用方式参见&#xff1a;Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…

Spring @Transactional 事务注解

一、spring 事务注解 1、实现层(方法上加) import org.springframework.transaction.annotation.Transactional;Transactional(rollbackFor Exception.class)public JsonResult getRtransactional() {// 手动标记事务回滚TransactionAspectSupport.currentTransactionStatus…

抖店入驻门槛,一降再降,2024年商家入驻抖店最佳的时机来了!

大家好&#xff0c;我是电商糖果 抖店已经发展有四年多的时间了&#xff0c;现在也算是比较成熟的电商平台. 这几年因为直播带货的火爆&#xff0c;再加上抖音的流量支撑&#xff0c;还有抖音在背后的扶持和推广。 让抖店成了电商行业的黑马项目&#xff0c;吸引了不少商家入…

ACWC:Worst-Case to Average-Case Decryption Error

参考文献&#xff1a; [LS19] Lyubashevsky V, Seiler G. NTTRU: Truly Fast NTRU Using NTT[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2019: 180-201.[DHK23] Duman J, Hvelmanns K, Kiltz E, et al. A thorough treatment of highly-efficie…

[element-ui]el-form自定义校验-图片上传验证(手动触发部分验证方法)

背景&#xff1a; 在做导入文件功能的时候&#xff0c;需要校验表单&#xff0c;如图所示 店铺字段绑定在表单数据对象上&#xff0c;在点击确定的时候正常按照表单验证规则去校验&#xff0c;就不再赘述。 文件上传是个异步过程&#xff0c;属性值改变后不会去触发验证规则…

智能管理,无忧报修——高校校园报事报修系统小程序全解析

随着数字化、智能化的发展&#xff0c;高校生活也迎来了前所未有的变革。你是否还在为宿舍的水龙头漏水、图书馆的灯光闪烁而烦恼&#xff1f;你是否还在为报修流程繁琐、等待时间长而焦虑&#xff1f;今天&#xff0c;这一切都将成为过去式&#xff01;因为一款震撼高校圈的新…

【QT5】<总览一> QT环境搭建、快捷键及编程规范

文章目录 前言 一、简单介绍QT 二、安装QT Creator 三、第一个QT项目 四、常用快捷键 五、QT中的编程规范 前言 在嵌入式Linux应用层开发时&#xff0c;经常使用QT作为图形化界面显示工具。为学习Linux下的QT编程&#xff0c;在Ubuntu和开发板中搭建QT开发环境&#xff…

TMS320F280049 ECAP模块--应用(2)

例1-上升沿触发 如下图所示&#xff0c;evt1-4设置为上升沿触发&#xff0c;在每个上升沿ctr值依次加载到cap1-4. 例2-上升下降沿触发 每个边沿都可选为事件&#xff0c;每次事件到来&#xff0c;依次把ctr加载到cap1-4。 例3-差异模式下上升沿触发 差异模式下每次事件到来时…

Qt_C++ RFID网络读卡器Socket Udp通讯示例源码

本示例使用的设备&#xff1a; WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QHostInfo> #include <QNetworkInterface> #include <…

PyQt5串口测试工具

笔者经常会遇到使用上位机进行相关测试的场景&#xff0c;但现成的上位机并不能完全满足自己的需求&#xff0c;或是上位机缺乏使用说明。所以&#xff0c;自己写&#xff1f; 环境说明 pycharm 2023.2.25 python 3.10 anaconda 环境配置 conda create -n envsram ##…

学生信息管理系统C++

设计目的 使学生进一步理解和掌握课堂上所学的面向对象C编程知识&#xff0c;巩固和加深学生对C面向对象课程的基本知识的理解和掌握。掌握C面向对象编程和程序调试的基本技能&#xff0c;学会利用C语言进行基本的软件设计&#xff0c;着重提高运用C面向对象语言解决实际问题的…

Go Modules 使用

文章参考https://blog.csdn.net/wohu1104/article/details/110505489 不使用Go Modules&#xff0c;所有的依赖包都是存放在 GOPATH /pkg下&#xff0c;没有版本控制。如果 package 没有做到完全的向前兼容&#xff0c;会导致多个项目无法运行(包版本需求不同)。 于是推出了g…