机房预约系统(c++案例)能够实现机房的预约与审核,教师,学生,管理员的登陆与信息的处理,读取和写入文件信息等功能

该博客介绍了一个使用C++编写的机房预约系统,涵盖了管理员、教师和学生的登录与信息处理,实现了预约审核及文件读写功能。通过面向对象编程,利用多态和容器组织代码,提高代码清晰度。
摘要由CSDN通过智能技术生成

思维导图:(我是根据这个图做的,自己可能思路没这么清楚,这里建议大家写代码的时候也先进行构思,因为这是一个很好的习惯,写好思维导图之后,写代码按照功能一块一块填好就行了,这里用到了多态,容器,以及一些基本的c++功能,因为最近就在学这些,然后就实践一下,感觉c++的面对对象编程在思路上的确比c的面对过程编程要稍微显得清晰一些,嗯,可能分的块更加清晰了把。分文件的编写会让条理更加清晰。)
在这里插入图片描述
所有文件如下:
在这里插入图片描述
这里将管理员,教师和学生分为3个子类,父类是一个包含他们公共信息的identity类,可以将他们的共性放在里面,然后个性写在子类里就行了,父类是写了个虚函数,所以子类里面一定要重载,最后按功能填写代码就行了,这里注意文件打开后要进行close,一些小细节就不说了下面上代码。
头文件:
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<fstream>
#include"student.h"
#include"teacher.h"
#include<vector>
#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();

	//学生容器
	vector<Student> vstu;

	//教师容器
	vector<Teacher> vtea;

	bool checkRepect(int id, int type);

	vector<computerRoom> vcom;
};

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<string>
#include"orderFile.h"
#include<vector>
//教师类
class Teacher:public Identity
{
   
public:
	//默认构造函数
	Teacher();

	//有参构造函数
	Teacher(int empid, string name, string pwd);

	//子菜单
	virtual void operMenu();

	//查看所有预约
	void showAllOrder();

	//审核预约
	void vaildOrder();

	//职工号
	int EmpId;
};

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"

computerRoom.h(机房类)个人感觉可以升级一下,插入新的机房什么的

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

class computerRoom
{
   
public:

	int m_ComId;//机房的编号

	int m_MaxNum;//机房大小
};

orderFile.h(容器类)

#pragma once
#include<iostream>
using namespace std;
#include"globalFile.h"
#include<fstream>
#include<map>
#include<string>
class OrderFile
{
   
public:

	//默认构造函数
	OrderFile();

	//更新预约记录
	void updataOrder();

	//记录预约信息数量
	int m_Size;

	//记录所有信息的容器 key是记录的条数 value记录的是信息
	map<int, map<string, string>> m_orderData;
};

源文件:(.cpp)

机房预约系统.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 teacherMenu(Identity * &teacher)//教师菜单
{
   
	while (true)
	{
   
		teacher->operMenu();

		Teacher * tea = (Teacher*)teacher;
		int select;
		cin >> select;
		if (select == 1)//查看所有预约
		{
   
			//cout << "查看所有预约" << endl;
			tea->showAllOrder();
		}
		else if (select == 2)//审核预约
		{
   
			//cout << "审核预约" << endl;
			tea->vaildOrder();
		}
		else if (select == 0)
		{
   
			delete teacher;
			cout << "注销成功!!" << endl;
			system("pause");
			system("cls");
			return;
		}
		else
		{
   
			cout << "输入有误,请重新输入!!" << endl;
			system("pause");
			system("cls");
		}
	}
}

void studentMenu(Identity * &student)//学生菜单
{
   
	while (true)
	{
   
		student->operMenu();

		Student * stu = (Student*)student;
		int select;
		cin >> select;
		if (select == 1)//申请预约
		{
   
			//cout << "申请预约" << endl;
			stu->applyOrder();
		}
		else if (select == 2)//查看自身预约
		{
   
			//cout << "查看自身预约" << endl;
			stu->showMyOrder();
		}
		else if (select == 3)//查看所有人预约
		{
   
			//cout << "查看所有人预约" << endl;
			stu->showAllOrder();
		}
		else if (select == 4)//取消预约
		{
   
			//cout << "取消预约" << endl;
			stu->cancelOrder();
		}
		else if(select==0)
		{
   
			delete student;
			cout << "注销成功!!" << endl;
			system("pause");
			system("cls");
			return;
		}
		else
		{
   
			cout << "输入有误,请重新输入!!" << endl;
			system("pause");
			system("cls");
		}
	}
}


void managerMenu(Identity * &manager)//管理员菜单
{
   
	while (true)
	{
   
		manager->operMenu();

		Manager * man = (Manager*)manager;
		int select;
		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 if(select==0)
		{
   
			delete manager;
			cout << "注销成功!!" << endl;
			system("pause");
			system("cls");
			return;
		}
		else
		{
   
		    cout << "输入有误,请重新输入!!" << endl;
		    system("pause");
		    system("cls")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值