机房预约管理系统(c++完整实现)

代码框架

  • 编译运行环境:vs2017 IDE
  • 源代码文件分类窗口如下:
  • 涉及的主要技术点:map,vector容器,文件读写操作,c++的封装、继承、多态
    在这里插入图片描述

Gitee源码

项目源码
在这里插入图片描述

系统实现思路

- 思路在资源文件Text.txt文件中

可优化方向

  • 增加界面,按钮,可使用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++)
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex1_Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值