黑马:机房预约系统(282~314)

1、机房预约系统需求


1.1 系统简介
学校现有几个规格不同的机房,由于使用时经常出现"撞车"现象,现开发一套机房预约系统,解决这一问题。


1.2 身份简介
分别有三种身份使用该程序

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


1.3 机房简介
机房总共有3间

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


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


1.5 系统具体需求
首先进入登录界面,可选登录身份有:
        学生代表
        老师
        管理员
        退出


每个身份都需要进行验证后,进入子菜单
        学生需要输入 :学号、姓名、登录密码
        老师需要输入:职工号、姓名、登录密码
        管理员需要输入:管理员姓名、登录密码


学生具体功能:
        申请预约 — 预约机房
        查看自身的预约 — 查看自己的预约状态
        查看所有预约 — 查看全部预约信息以及预约状态
        取消预约 — 取消自身的预约,预约成功或审核中的预约均可取消
        注销登录 — 退出登录


教师具体功能
        查看所有预约 — 查看全部预约信息以及预约状态
        审核预约 — 对学生的预约进行审核
        注销登录 — 退出登录


管理员具体功能
        添加账号 — 添加学生或教师的账号,需要检测学生编号或教师职工号是否重复
        查看账号 — 可以选择查看学生或教师的全部信息
        查看机房 — 查看所有机房的信息
        清空预约 — 清空所有预约记录
        注销登录 — 退出登录
 

头文件:

computerRoom.h

#pragma once
#include<iostream>
using namespace std;

//机房类
class ComputerRoom {
public:
	int m_ComId; //机房

	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"globalFile.h"
#include<vector>
#include"student.h"
#include"teacher.h"
#include<algorithm>
#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();

	//检测重复		检测学号/职工号   检测类型
	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<string>
#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();

	int m_EmpId;
};

源文件

manager.cpp

#include"manager.h"
#include<fstream>

//默认构造
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();

	cout << "当前机房数量: " << vCom.size() << endl;
}

//菜单界面
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 << &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值