C++项目实战——机房预约管理系统

本专栏记录C++学习过程包括C++基础以及数据结构和算法,其中第一部分计划时间一个月 (2024.1.4-2024.1.27已完结) ,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注
当前章节处于:
---------第1阶段-C++基础入门
---------第2阶段实战-通讯录管理系统,
---------第3阶段-C++核心编程,
---------第4阶段实战-基于多态的企业职工系统
---------第5阶段-C++提高编程
---------第6阶段实战-基于STL泛化编程的演讲比赛
=====>第7阶段-C++实战项目机房预约管理系统

文章目录

  • 一、项目描述
  • 二、需求分析
  • 三、实现代码
  • 四、机房预约系统
  • 五、测试案例

一、项目描述

学校现有几个规格不同的机房,由于使用时经常出现“撞车现象”,现开发一套机房预约系统,解决这一问题。分别有三个身份使用该程序分别有三种身份使用该程序

  • 学生代表:申请使用机房
  • 教师:审核学生的预约申请
  • 管理员:给学生、教师创建账号

机房总共有3间

  • 1号机房 — 最大容量20人
  • 2号机房 — 最多容量50人
  • 3号机房 — 最多容量100人

申请简介

  • 申请的订单每周由管理员负责清空。
  • 学生可以预约未来一周内的机房使用,预约的日期为周一至周五,预约时需要选择预约时段(上午、下午)
  • 教师来审核预约,依据实际情况审核预约通过或者不通过

系统具体需求

  • 首先进入登录界面,可选登录身份有:
    • 学生代表
    • 老师
    • 管理员
    • 退出
  • 每个身份都需要进行验证后,进入子菜单
    • 学生需要输入 :学号、姓名、登录密码
    • 老师需要输入:职工号、姓名、登录密码
    • 管理员需要输入:管理员姓名、登录密码
  • 学生具体功能
    • 申请预约 — 预约机房
    • 查看自身的预约 — 查看自己的预约状态
    • 查看所有预约 — 查看全部预约信息以及预约状态
    • 取消预约 — 取消自身的预约,预约成功或审核中的预约均可取消
    • 注销登录 — 退出登录
  • 教师具体功能
    • 查看所有预约 — 查看全部预约信息以及预约状态
    • 审核预约 — 对学生的预约进行审核
    • 注销登录 — 退出登录
  • 管理员具体功能
    • 添加账号 — 添加学生或教师的账号,需要检测学生编号或教师职工号是否重复
    • 查看账号 — 可以选择查看学生或教师的全部信息
    • 查看机房 — 查看所有机房的信息
    • 清空预约 — 清空所有预约记录
    • 注销登录 — 退出登录

二、需求分析

首先有三个角色,分析发现他们的属性和方法大致相同,因此需要用到继承和多态,创建一个父类再通过继承的方式创建子类。在子类中添加子类特有的属性和方法。每一个角色相当于创建一个子系统,教师和学生高度相似,管理员系统的主要目的就是创建教师和学生。每个子系统通过txt构成联系,用户输入信息进行登录,因此需要提前将信息存储在txt文件中,对txt文件中的信息进行检查判断,如果判断到了就登录,文件读完还没判断到就说明没有此人对应信息,提示用户名或密码错误。对于有差异的提示信息,可以通过判断,给变量赋值不同的内容,再调用这个变量。每生成一条预约,就需要将这条预约存到txt文件中,查看所有预约遍历整个txt文件即可。查看自己预约,则需要判断预约中的学号等不等于当前用户的学号(姓名不一定唯一,但是学号一定唯一)。教师端审核预约即将预约的状态码改变即可,改变之后,需要重新更新txt文件,整个预约是一个嵌套的map,第一层key存预约编号,第二层存预约的具体信息。管理员在添加账号之前也需要判断编号和职工号是否重复,因此需要读入学生或者员工的信息,遍历判断。查看账号,遍历对应的文件即可。查看机房信息则遍历机房对应的txt文件即可,清空预约,清空预约对应的txt文件即可。为显示出子菜单的效果,在用户登录成功后在顶端输出用户名,表示进入子菜单。

三、实现代码

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 showSecondMenu()=0;string m_name;string m_password;
};

manager.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"class Manager :public Identity {
public:// 默认构造Manager();// 有参构造Manager(string name, string pw);// 添加账号void addPerson();// 查看账号void showPerson();// 查看机房信息void showComputer();// 清空预约记录void clearFile();// 显示管理员子菜单virtual void showSecondMenu();
};

student.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"
#include <fstream>
#include"globalFile.h"
#include<map>
#include<algorithm>
#include<numeric>
#include<sstream>
class Student :public Identity {
public:// 默认构造Student();// 有参构造Student(int id, string name, string pw);// 申请预约void applyOrder();// 显示预约void showMyOrder();// 查看所有预约void showAllOrder();// 取消预约void cancelOrder();// 显示学生子菜单virtual void showSecondMenu();int m_id;
};

teacher.h

#pragma once
#include<iostream>
using namespace std;
#include "Identity.h"
#include<string>
#include<fstream>
#include"globalFile.h"
#include<map>
#include <sstream>class Teacher :public Identity {
public:// 默认构造Teacher();// 有参构造Teacher(int id, string name, string pw);// 查看所有预约void showAllOrder();// 审核预约void vaildOrder();// 显示老师子菜单virtual void showSecondMenu();int m_Tid;
};// 默认构造
Teacher::Teacher() {
}
// 有参构造
Teacher::Teacher(int id, string name, string pw) {m_Tid = id;m_name = name;m_password = pw;
}// 查看所有预约
void Teacher::showAllOrder() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date ;string interval;string id ;string name;string room;string status;while (ifs >> date && ifs >> interval && ifs >> id && ifs >> name && ifs >> room && ifs >> status) {cout << date << interval << id << name << room << status << endl;}ifs.close();
}
map<int, map<string, string>> txtTomap1() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);map<int, map<string, string>> Bigmap;string date;string interval;string id;string name;string room;string status;int count = 0; // 序号string line;while (getline(ifs, line)) {istringstream iss(line);string date, interval, id, name, room, status;if (iss >> date >> interval >> id >> name >> room >> status) {map<string, string> mp;mp.insert(make_pair("date", date));mp.insert(make_pair("interval", interval));mp.insert(make_pair("id", id));mp.insert(make_pair("name", name));mp.insert(make_pair("room", room));mp.insert(make_pair("status", status));Bigmap.insert(make_pair(count, mp));count++;}}ifs.close();return Bigmap;
}
void mapToTxt1(map<int, map<string, string>> &Bigmap) {ofstream ofs;ofs.open(ORDER_FILE, ios::trunc);for (map<int, map<string, string>>::iterator it = Bigmap.begin(); it != Bigmap.end(); it++) {string date = (*it).second["date"];string interval = (*it).second["interval"];string id = (*it).second["id"];string name = (*it).second["name"];string room = (*it).second["room"];string status = (*it).second["status"];ofs <<date << " ";ofs << interval << " ";ofs << id << " ";ofs << name << " ";ofs <<  room << " ";ofs <<  status << endl;}ofs.close();
}
// 审核预约
void Teacher::vaildOrder() {map<int, map<string, string>> Bigmap = txtTomap1();ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date;string interval ;string id;string name;string room;string status;int count = 1; // 计数器int target;showAllOrder();cout << "请输入你要审核第几条记录:" << endl;cin >> target;while (true) {if (count == target) {Bigmap[count-1]["status"] = "status:2";break;}count++;}mapToTxt1(Bigmap);ifs.close();
}// 显示老师子菜单
void Teacher::showSecondMenu()
{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;
}

Manager.cpp

#include<iostream>
using namespace std;
#include "Identity.h"
#include"manager.h"
#include<fstream>
#include"globalFile.h"
// 默认构造
Manager::Manager() {
}
// 有参构造
Manager::Manager(string name, string pw) {m_name = name;m_password = pw;
}
// 判断
bool checkRepeat(string fileName, int id) {ifstream ifs;ifs.open(fileName, ios::in);int Fid;string Fname;string Fpwd;while (ifs >> Fid && ifs >> Fname && ifs >> Fpwd) {if (Fid == id ) {return true;}}return false; // 没有重复的
}
// 添加账号
void Manager::addPerson() {cout << "请输入添加账号的类型" << endl;cout << "1、添加学生" << endl;cout << "2、添加老师" << endl;int choice = 0;cin >> choice;ofstream ofs;string fileName;string tip; // 根据选项不同给不同的提示信息if (choice == 1) {// 添加学生fileName = STUDENT_FILE;tip = "请输入学号:";}else if (choice == 2) {// 添加老师fileName = TEACHER_FILE;tip = "请输入职工编号:";}else {cout << "选项有错误!" << endl;return;}// 添加信息入文件ofs.open(fileName,ios::out|ios::app); // 追加的方式写数据int id;string name;string pwd;while (true) {cout << tip << endl;cin >> id;// 判断是否有重复学号或者职工编号if (checkRepeat(fileName,id)) {// 有重复的cout << "该编号已存在!" << endl;}else {break; // 跳出循环}}cout << "请输入姓名:" << endl;cin >> name;cout << "请输入密码:" << endl;cin >> pwd;// 录入信息ofs << id << " " << name << " " << pwd << " " << endl;ofs.close();cout << "录入完成!" << endl;system("pause");system("cls");
}// 查看账号
void Manager::showPerson() {cout << "请输入查看账号的类型" << endl;cout << "1、查看学生" << endl;cout << "2、查看老师" << endl;int choice = 0;cin >> choice;ifstream ifs;string fileName;string p_id_name; // 学号还是职工编号if (choice == 1) {// 添加学生fileName = STUDENT_FILE;p_id_name = "学号";}else if (choice == 2) {// 添加老师fileName = TEACHER_FILE;p_id_name = "职工编号";}else {cout << "选项有错误!" << endl;return;}int id;string name;string pwd;ifs.open(fileName,ios::in);while (ifs >> id && ifs >> name && ifs >> pwd) {cout << p_id_name << id << " 姓名:" << name << "   密码:" << pwd << endl;}ifs.close();
}
// 查看机房信息
void Manager::showComputer() {ifstream ifs;string m_ComId;string m_MaxNum;ifs.open(COMPUTER_FILE, ios::in);while (ifs >> m_ComId && ifs >> m_MaxNum) {cout << "机房编号: " << m_ComId << " 机房最大容量: " << m_MaxNum << endl;}ifs.close();
}
// 清空预约记录
void Manager::clearFile() {ofstream ofs;ofs.open(ORDER_FILE, ios::trunc); // 如果存在清空ofs.close();
}// 显示管理员子菜单
void Manager::showSecondMenu()
{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;
}

Student.cpp

#include"student.h"// 默认构造
Student::Student() {
}
// 有参构造
Student::Student(int id, string name, string pw) {m_id = id;m_name = name;m_password = pw;
}
// 申请预约
void Student::applyOrder() {// 相当于在order.txt中创建一条预约指令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;ifstream ifsCom;string m_ComId;string m_MaxNum;ifsCom.open(COMPUTER_FILE, ios::in);while (ifsCom >> m_ComId && ifsCom >> m_MaxNum) {cout << "机房编号: " << m_ComId << " 机房最大容量: " << m_MaxNum << endl;}ifsCom.close();while (true){cin >> room;if (room >= 1 && room <= 3){break;}cout << "输入有误,请重新输入" << endl;}cout << "预约成功!审核中" << endl;ofstream ofs(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() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date;string interval;string id;string name;string room;string status;while (ifs >> date && ifs >> interval  && ifs >> id && ifs >> name && ifs >> room && ifs >> status) {string t_name = name.substr(name.find(":")+1); //  拿到真实姓名if (t_name.compare(this->m_name) == 0) {cout << date << interval << id << name << room << status << endl;}}ifs.close();
}
// 查看所有预约
void Student::showAllOrder() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date;string interval;string id;string name;string room;string status;while (ifs >> date && ifs >> interval && ifs >> id && ifs >> name && ifs >> room && ifs >> status) {cout << date <<  interval << id << name << room <<  status << endl;}ifs.close();
}
map<int, map<string, string>> txtTomap() {ifstream ifs;ifs.open(ORDER_FILE, ios::in);map<int, map<string, string>> Bigmap;string date;string interval;string id;string name;string room;string status;int count = 0; // 序号string line;while (getline(ifs, line)) {istringstream iss(line);string date, interval, id, name, room, status;if (iss >> date >> interval >> id >> name >> room >> status) {map<string, string> mp;mp.insert(make_pair("date", date));mp.insert(make_pair("interval", interval));mp.insert(make_pair("id", id));mp.insert(make_pair("name", name));mp.insert(make_pair("room", room));mp.insert(make_pair("status", status));Bigmap.insert(make_pair(count, mp));count++;}}ifs.close();return Bigmap;
}
void mapToTxt(map<int, map<string, string>> Bigmap) {ofstream ofs;ofs.open(ORDER_FILE, ios::trunc);for (map<int, map<string, string>>::iterator it = Bigmap.begin(); it != Bigmap.end(); it++) {string date = (*it).second["date"];string interval = (*it).second["interval"];string id = (*it).second["id"];string name = (*it).second["name"];string room = (*it).second["room"];string status = (*it).second["status"];ofs << date << " ";ofs << interval << " ";ofs <<id << " ";ofs << name << " ";ofs << room << " ";ofs << status << endl;}ofs.close();
}
// 取消预约
void Student::cancelOrder() {map<int, map<string, string>> Bigmap = txtTomap();ifstream ifs;ifs.open(ORDER_FILE, ios::in);string date;string interval;string id;string name;string room;string status;int count = 1; // 计数器int target;cout << "请输入你要修改第几条记录:" << endl;cin >> target;string line;while (getline(ifs, line)) {istringstream iss(line);string date, interval, id, name, room, status;if (iss >> date >> interval >> id >> name >> room >> status) {string t_name = name.substr(name.find(":") + 1);if (count == target) {if (t_name == this->m_name) {Bigmap[count - 1]["status"] = "status:0";cout << "修改成功!" << endl;}else {cout << "修改失败!" << endl;}}count++;}}mapToTxt(Bigmap);ifs.close();
}
// 显示学生子菜单
void Student::showSecondMenu()
{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;
}

四、机房预约系统

#include <iostream>
using namespace std;
#include "Identity.h"
#include <fstream>
#include "student.h"
#include "teacher.h"   
#include "manager.h"void managerMenu(Identity*& manager)
{while (true){//管理员菜单manager->showSecondMenu();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->clearFile();}else{delete manager;cout << "注销成功" << endl;system("pause");system("cls");return;}}
}
//学生菜单
void studentMenu(Identity*& student)
{while (true){//学生菜单student->showSecondMenu();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* tea = (Teacher*)teacher;//教师菜单teacher->showSecondMenu();int select = 0;cin >> select;if (select == 1){//查看所有预约tea->showAllOrder();}else if (select == 2){//审核预约tea->vaildOrder();}else{delete teacher;cout << "注销成功" << endl;system("pause");system("cls");return;}}
}
void showmenu() {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";
}
// 登录验证的全局函数
void LoginIn(string Filename, int type) {// Filename表示应该读哪个文件,type表示哪一个类别角色Identity* person = NULL;int id=0;string name;string pwd;// 创建读文件对象ifstream ifs;ifs.open(Filename,ios::in);// 判断文件是否存在if (!ifs.is_open()) {cout << "文件不存在!" << endl;ifs.close();return;}else {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;string Fname;string Fpwd;while (ifs >> Fid && ifs >> Fname && ifs >> Fpwd) {if (Fid == id && (Fname.compare(name) == 0) && (Fpwd.compare(pwd) == 0)) {cout << "登录成功!" << endl;// 创建学生对象person = new Student(id, name, pwd);studentMenu(person);system("pause");system("cls");return; // 退出}}}else if (type == 2) {// 教师登录int Fid;string Fname;string Fpwd;while (ifs >> Fid && ifs >> Fname && ifs >> Fpwd) {if (Fid == id && (Fname.compare(name) == 0) && (Fpwd.compare(pwd) == 0)) {cout << "登录成功!" << endl;// 创建教师对象person = new Teacher(id, name, pwd);TeacherMenu(person);system("pause");system("cls");return; // 退出}}}else if (type == 3) {// 管理员登录string Fname;string Fpwd;while (ifs >> Fname && ifs >> Fpwd) {if ((Fname.compare(name) == 0) && (Fpwd.compare(pwd) == 0)) {cout << "登录成功!" << endl;// 创建管理员对象person = new Manager(name, pwd);managerMenu(person);system("pause");system("cls");return; // 退出}}}}cout << "登录失败!" << endl;system("pause");system("cls");
}int main() {int num=0;while (true){showmenu();cout << "请输入你的身份:";cin >> num;switch (num){// 进入学生子菜单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;return 0;default:cout << "没有这个选项,请重新输入!" << endl;break;}}system("pause");return 0;}

五、测试案例

======================  欢迎来到机房预约系统  =====================-------------------------------|                               ||          1.学生代表           ||                               ||          2.老    师           ||                               ||          3.管 理 员           ||                               ||          0.退    出           ||                               |-------------------------------
请输入你的身份:1
请输入学号:
1
请输入姓名:
张三
请输入密码:
123
登录成功!
欢迎学生代表:张三登录!----------------------------------|                                 ||          1.申请预约              ||                                 ||          2.查看我的预约          ||                                 ||          3.查看所有预约          ||                                 ||          4.取消预约              ||                                 ||          0.注销登录              ||                                 |----------------------------------
请选择您的操作:
3
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:2interval:2stuId:2stuName:李四roomId:2status:1
date:2interval:1stuId:2stuName:李四roomId:2status:0
欢迎学生代表:张三登录!----------------------------------|                                 ||          1.申请预约              ||                                 ||          2.查看我的预约          ||                                 ||          3.查看所有预约          ||                                 ||          4.取消预约              ||                                 ||          0.注销登录              ||                                 |----------------------------------
请选择您的操作:
2
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:0
欢迎学生代表:张三登录!----------------------------------|                                 ||          1.申请预约              ||                                 ||          2.查看我的预约          ||                                 ||          3.查看所有预约          ||                                 ||          4.取消预约              ||                                 ||          0.注销登录              ||                                 |----------------------------------
请选择您的操作:
4
请输入你要修改第几条记录:
2
修改成功!
欢迎学生代表:张三登录!----------------------------------|                                 ||          1.申请预约              ||                                 ||          2.查看我的预约          ||                                 ||          3.查看所有预约          ||                                 ||          4.取消预约              ||                                 ||          0.注销登录              ||                                 |----------------------------------
请选择您的操作:
3
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:2interval:2stuId:2stuName:李四roomId:2status:1
date:2interval:1stuId:2stuName:李四roomId:2status:0
欢迎学生代表:张三登录!----------------------------------|                                 ||          1.申请预约              ||                                 ||          2.查看我的预约          ||                                 ||          3.查看所有预约          ||                                 ||          4.取消预约              ||                                 ||          0.注销登录              ||                                 |----------------------------------
请选择您的操作:
======================  欢迎来到机房预约系统  =====================-------------------------------|                               ||          1.学生代表           ||                               ||          2.老    师           ||                               ||          3.管 理 员           ||                               ||          0.退    出           ||                               |-------------------------------
请输入你的身份:2
请输入职工号:
1
请输入姓名:
老王
请输入密码:
123456
登录成功!
欢迎教师:老王登录!----------------------------------|                                  ||          1.查看所有预约          ||                                  ||          2.审核预约              ||                                  ||          0.注销登录              ||                                  |----------------------------------
请选择您的操作:
1
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:2interval:2stuId:2stuName:李四roomId:2status:1
date:2interval:1stuId:2stuName:李四roomId:2status:0
欢迎教师:老王登录!----------------------------------|                                  ||          1.查看所有预约          ||                                  ||          2.审核预约              ||                                  ||          0.注销登录              ||                                  |----------------------------------
请选择您的操作:
2
date:1interval:1stuId:1stuName:张三roomId:1status:2
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:1interval:1stuId:1stuName:张三roomId:1status:0
date:2interval:2stuId:2stuName:李四roomId:2status:1
date:2interval:1stuId:2stuName:李四roomId:2status:0
请输入你要审核第几条记录:
2
欢迎教师:老王登录!----------------------------------|                                  ||          1.查看所有预约          ||                                  ||          2.审核预约              ||                                  ||          0.注销登录              ||                                  |----------------------------------
请选择您的操作:
======================  欢迎来到机房预约系统  =====================-------------------------------|                               ||          1.学生代表           ||                               ||          2.老    师           ||                               ||          3.管 理 员           ||                               ||          0.退    出           ||                               |-------------------------------
请输入你的身份:3
请输入姓名:
admin
请输入密码:
123
登录成功!
欢迎管理员:admin登录!---------------------------------|                                ||          1.添加账号            ||                                ||          2.查看账号            ||                                ||          3.查看机房            ||                                ||          4.清空预约            ||                                ||          0.注销登录            ||                                |---------------------------------
请选择您的操作:
2
查看账号
请输入查看账号的类型
1、查看学生
2、查看老师
1
学号1 姓名:张三   密码:123
学号2 姓名:李四   密码:456
欢迎管理员:admin登录!---------------------------------|                                ||          1.添加账号            ||                                ||          2.查看账号            ||                                ||          3.查看机房            ||                                ||          4.清空预约            ||                                ||          0.注销登录            ||                                |---------------------------------
请选择您的操作:
2
查看账号
请输入查看账号的类型
1、查看学生
2、查看老师
2
职工编号1 姓名:老王   密码:123456
欢迎管理员:admin登录!---------------------------------|                                ||          1.添加账号            ||                                ||          2.查看账号            ||                                ||          3.查看机房            ||                                ||          4.清空预约            ||                                ||          0.注销登录            ||                                |---------------------------------
请选择您的操作:
3
查看机房
欢迎管理员:admin登录!---------------------------------|                                ||          1.添加账号            ||                                ||          2.查看账号            ||                                ||          3.查看机房            ||                                ||          4.清空预约            ||                                ||          0.注销登录            ||                                |---------------------------------
请选择您的操作:
1
添加账号
请输入添加账号的类型
1、添加学生
2、添加老师
1
请输入学号:
1
该编号已存在!
请输入学号:
3
请输入姓名:
赵六
请输入密码:
678
录入完成!
请按任意键继续. . .

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

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

相关文章

RPC教程 6.负载均衡

1.负载均衡策略 假设有多个服务实例&#xff0c;而每个实例都提供相同的功能&#xff0c;为了提高整个系统的吞吐量&#xff0c;每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用&#xff0c;获取想要的结果。那如何选择呢&#xff1f;取决于负载均衡的策略。…

Visual Studio如何修改成英文版

1、打开 Visual Studio Installer 2、点击修改 3、找到语言包&#xff0c;选择需要的语言包&#xff0c;而后点击修改 4、等待下载 5、 安装完成后启动Visual Studio 6、在工具-->选项-->环境-->区域设置-->English并确定 7、重启 Visual Studio&#xff0c;配置…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)三

第六部分、数据结构树&#xff0c;树存储结构详解 数据结构的树存储结构&#xff0c;常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中&#xff0c;最常用的还是二叉树&#xff0c;本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

Python 命令行工具开发入门

在实际应用中,我们常常需要编写一些命令行工具,以便在终端或脚本中执行特定的任务。本文将介绍如何使用 Python 编写一个简单的命令行工具,并展示一些常见的实用技巧。 1. 概述 我们的命令行工具将具备以下功能: 输出文件内容到标准输出显示 Python 版本号显示帮助信息2.…

QT实现USB摄像头接入显示

一、UVC协议简介 UVC全称是USB Video Class&#xff08;USB视频类&#xff09;&#xff0c;是一种标准化的USB视频设备通信协议&#xff0c;它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现&#xff0c;解决了摄像头厂商之间互不兼容&#xff0c;以及摄像头应…

(二十八)ATP应用测试平台——使用electron集成vue3桌面应用程序

前言 Electron 是一个开源的框架&#xff0c;它允许使用 Web 技术&#xff08;HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序。通过 Electron&#xff0c;开发者可以使用前端技术栈来创建具有原生应用程序体验的桌面应用。 Electron可以在 Windows、Mac 和 L…

Nacos源码解析:String.intern()方法的巧妙应用

引言&#xff1a; 在阅读Nacos源码时&#xff0c;发现其中使用了String.intern()方法&#xff0c;这个使用并不是简单的拼接字符串&#xff0c;而是在特定场景下的优化手段。本文将深入探讨Nacos源码中String.intern()方法的应用&#xff0c;以及为什么要使用这个方法。 1. N…

【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

《Python 简易速速上手小册》第8章:Python 网络编程与 Web 开发(基于最新版 Python3.12 编写)

注意&#xff1a;本《Python 简易速速上手小册》 核心目的在于让零基础新手「快速构建 Python 知识体系」 文章目录 <mark >注意&#xff1a;本《Python 简易速速上手小册》<mark >核心目的在于让零基础新手「快速构建 Python 知识体系」 8.1 Python 中的网络通信…

HCS 华为云Stack产品组件

HCS 华为云Stack产品组件 Cloud Provisioning Service(CPS) 负责laas的云平台层的部署和升级是laas层中真正面向硬件设备&#xff0c;并将其池化软件化的部件。 Service OM 资源池(计算/存储/网络)以及基础云服务(ECS/EVS/PC)的管理工具。 ManageOne ManageOne包括服务中心…

数据结构(1)--> 顺序表

定义&#xff1a; 顺序表存储定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构&#xff0c;顺序表功能的实现借助于数组&#xff0c;通过对数组进行封装&#xff0c;从而实现增删查改的功能&#xff0c;严格意义上来说&#xff08;数组无法实现…

如何发布自己的npm包,详细流程

发布自己的npm包需要遵循以下具体流程&#xff1a; 创建npm账号&#xff1a;打开浏览器&#xff0c;访问npm官网&#xff0c;注册一个npm账号。 创建项目文件夹并进入&#xff1a;在本地创建一个项目文件夹&#xff0c;并使用终端进入该文件夹。 初始化包信息管理文件&#x…

第六课:Prompt

文章目录 第六课&#xff1a;Prompt1、学习总结&#xff1a;Prompt介绍预训练和微调模型回顾挑战 Pre-train, Prompt, PredictPrompting是什么?prompting流程prompt设计 课程ppt及代码地址 2、学习心得&#xff1a;3、经验分享&#xff1a;4、课程反馈&#xff1a;5、使用Mind…

由两个有限项的等差数列B, C, 求有多少个有限项的等差数列A,满足C是A, B的所有公共项,若有无穷个A满足条件,输出-1

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back const int maxn 1e6 5, inf 1e9 5, maxm 4e4 5, mod 1e9 7, N 1e6; // int a[maxn], b[maxn]; int n, m; string s;int qpow(int a, int b){i…

Unity中创建Ultraleap 3Di交互项目

首先&#xff0c;创建新的场景 1、创建一个空物体&#xff0c;重命名为【XP Leap Provider Manager】&#xff0c;并在这个空物体上添加【XR Leap Provider Manager】 在物体XP Leap Provider Manager下&#xff0c;创建两个子物体Service Provider(XR)和Service Provider(…

C语言与操作符相关的经典例题

目录 一道变态的面试题&#xff1a;不能创建临时变量&#xff08;第三个变量&#xff09;&#xff0c;实现两个数的交换。 编写代码实现&#xff1a;求一个整数存储在内存中的二进制中1的个数。 二进制位置0或者置1 如果以下的知识点不是很清楚的可以去看这篇文章&#xff1…

Deepin基本环境查看 - 目录/大纲

第一次整理本文材料才发现 原来写博客和写代码一样的 多章节的内容&#xff0c;必须将目录单独取出来 这样才方便作者&#xff0c;也方便读者 奇怪的知识又增加了 ^^ Deepin基本环境查看 - 目录Deepin基本环境查看&#xff08;一&#xff09;【基本信息】Deepin基本环境查看&am…

阿里云部署配置幻兽帕鲁Palworld联机服务器详细教程

阿里云作为国内领先的云计算服务提供商&#xff0c;为企业和个人提供了丰富的云服务。本文将为大家详细介绍如何在阿里云上配置幻兽帕鲁Palworld联机服务器&#xff0c;以便与更多玩家共同体验游戏的乐趣。 第一步&#xff1a;登录服务器创建页 1、进入幻兽帕鲁联机服务快速部…

数据结构——顺序队列(循环)

采用顺序表的方式实现循环队列。其中关键在于如何判断队列已满。通常情况下&#xff0c;当对头和队尾指向同一个节点时&#xff0c;可以判断为队空。但是&#xff0c;倘若队尾不断增加&#xff0c;最后队尾也会指向对头&#xff0c;此时队满和队空的判断条件一致。以下有三种对…

剖析线程池ForkJoinPool

文章目录 一、引言二、ForkJoinPool概述三、工作原理四、案例及分析案例背景案例分析实现 五、注意事项六、总结 一、引言 在并发编程中&#xff0c;线程池是一个常见的工具&#xff0c;用于管理和复用线程&#xff0c;以避免频繁地创建和销毁线程带来的开销。ForkJoinPool是J…