代码框架
- 编译运行环境:vs2017 IDE
- 源代码文件分类窗口如下:
- 涉及的主要技术点:map,vector容器,文件读写操作,c++的封装、继承、多态

Gitee源码
系统实现思路

可优化方向
- 增加界面,按钮,可使用QT,MFC实现,让界面更加美观
- 绑定到后台数据库,预约信息直接保存在数据库中,方便显示,查询
运行效果
主界面

子界面-学生

子界面-老师

子界面-管理员

各模块实现代码
computerRoom.h
computerRoom.h
#pragma once
#include<iostream>
class computerRoom {
public:
int m_Id;
int m_MaxNum;
};
globalFile.h
globalFile.h
//管理员文件
#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
Identity.h
#pragma once
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Identity {
public:
virtual void operMenu() = 0;//子菜单界面
public:
string m_name;
string m_pwd;
};
manager.h
manager.h
#pragma once
#include<vector>
#include"computerRoom.h"
#include"Identity.h"
#include"globalFile.h"
#include"teacher.h"
#include"student.h"
class manager:public Identity {
public:
manager() = default;
manager(string name, string pwd);
virtual void operMenu();
void addPerson();
void showPerson();
void showComputer();
//清空预约信息
void cleanFile();
void initVector();
bool checkRepeat(int id, int type);
void initComputerRoom();
public:
vector<student>vStu;
vector<teacher>vTeac;
vector<computerRoom>vCom;
};
orderFile.h
orderFile.h
#pragma once
#include<iostream>
#include<unordered_map>
#include"globalFile.h"
using namespace std;
class orderFile {
public:
orderFile();
void updateOrder();
unordered_map<int, unordered_map<string, string>>m_orderDate;
//预约记录条数
int m_Size{
0 };
};
student.h
student.h
#pragma once
#include"Identity.h"
#include<vector>
#include"orderFile.h"
#include"computerRoom.h"
class student :public Identity {
public:
student() = default;
student(int id, string name, string pwd);
virtual void operMenu();
//申请预约
void applyOrder();
//查看我的预约
void showMyOrder();
//查看所有预约
void showAllOrder();
//取消预约
void cancelOrder();
void initComputerRoom();
public:
int m_Id;
vector<computerRoom>v1;
};
teacher.h
teacher.h
#pragma once
#include"Identity.h"
#include"orderFile.h"
class teacher :public Identity {
public:
teacher() = default;
teacher(int empId, string name, string pwd);
//界面显示
virtual void operMenu();
void showAllOrder();
//审核预约
void validOrder();
public:
int m_EmpId;//教师编号
};
manager.cpp
manager.cpp
#include"manager.h"
#include"student.h"
#include"computerRoom.h"
manager::manager(string name, string pwd) {
this->m_name = name;
this->m_pwd = pwd;
this->initVector();
//获取机房信息
this->initComputerRoom();
}
void manager::initComputerRoom() {
ifstream fd;
fd.open(COMPUTER_FILE, ios::in);
computerRoom c;
while (fd >> c.m_Id && fd >> c.m_MaxNum) {
vCom.push_back(c);
}
cout << "当前机房的数量:" << vCom.size() << endl;
fd.close();
return;
}
void manager::initVector() {
//读取学生文件信息
ifstream fs1;
fs1.open(STUDENT_FILE, ios::in);
if (!fs1.is_open()) {
cout << "文件打开失败" << endl;
return;
}
vStu.clear();
vTeac.clear();
student s;
while (fs1 >> s.m_Id && fs1 >> s.m_name && fs1 >> s.m_pwd) {
vStu.push_back(s);
}
cout << "当前学生的数量:" << vStu.size() << endl;
fs1.close();
//读取老师文件信息
ifstream fs2;
fs2.open(TEACHER_FILE, ios::in);
if (!fs2.is_open()) {
cout << "文件打开失败" << endl;
return;
}
teacher q;
while (fs2 >> q.m_EmpId && fs2 >> q.m_name && fs2 >> q.m_pwd) {
vTeac.push_back(q);
}
cout << "当前老师的数量:" << vTeac.size() << endl;
fs2.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;
}
bool manager::checkRepeat(int id, int type){
if (type == 1) {
for (auto it = vStu.begin(); it != vStu.end(); it++) {
if (id == it->m_Id) {
return true;
}
}
}
else {
for (auto it = vTeac.begin(); it != vTeac.end(); it++)


最低0.47元/天 解锁文章
502





