教室预约管理系统

Classroom.h

#pragma once
#include<iostream>
using namespace std;
class Classroom
{
public:
	int m_ComId;//id号
	int m_MaxNum;//教室最大容量
};

globalFile.h

#pragma once
//#define ADMIN_FILE "admin.txt"
//#define STUDENT_FILE "student.txt"
//#define TEACHER_FILE "teacher.txt"
#define PERSON_FILE "person.txt"
//机房信息文件
#define CLASSROOM_FILE "classroom.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;  //密码
};

Login.h

#pragma once
#include <bits/stdc++.h>
#include "Identity.h"
#include "manager.h"
#include "teacher.h"
#include "student.h"
#include "globalFile.h"
#include "studentMenu.h"
#include"TeacherMenu.h"
#include"ManagerMenu.h"
using namespace std;
class Login
{
public:
	void LoginIn(int type);
};

manager.h

#pragma once
#include <iostream>
#include "Identity.h"
#include "globalFile.h"
#include "student.h"
#include "teacher.h"
#include"Classroom.h"
#include <vector>
#include<algorithm>
#include <fstream>

using namespace std;

class Manager : public Identity
{
public:
    Manager();
    Manager(string name, string pwd);
    virtual void operMenu();
    //添加账号
    void addPerson();
    //查看账号
    void showPerson();
    //查看机房信息
    void showComputer();
    //清空预约记录
    void cleanFile();
    //初始化容器
    void initVector();
    //检测重复参数:(传入id,传入类型)返回值:(true代表有重复,false代表没有重复)
    bool checkRepeat(int id, int type);
    //学生容器
    vector<Student> vStu;
    //老师容器
    vector<Teacher> vTea;
    //机房容器
    vector<Classroom>vCom;
}; 

ManagerMenu.h

#pragma once
#include"menu.h"

class Manager_Menu :public Menu
{
public:
	virtual void showMenu(Identity*& I);
};

menu.h

#pragma once
#include"menu.h"

class Manager_Menu :public Menu
{
public:
	virtual void showMenu(Identity*& I);
};

orderFile.h

#pragma once
#include<iostream>
using namespace std;
#include<map>
#include<fstream>
#include<cstring>
#include"globalFile.h"

class OrderFile
{
public:
	OrderFile();
	//更新预约记录
	void updateOrder();
	//记录的容器
	map<int, map<string, string>>m_OrderData;//key--记录的条数   val--具体记录的键值所对的信息
	int m_Size;
};

student.h

#pragma once
#include <iostream>
#include "Identity.h"
#include<fstream>
#include"globalFile.h"
#include"Classroom.h"
#include<vector>
#include"orderFile.h"
using namespace std;

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<Classroom>vCom;
};

studentMenu.h

#pragma once
#include"menu.h"

class Student_Menu:public Menu
{
public:
	virtual void showMenu(Identity*& I);
};

teacher.h

#pragma once
#include <iostream>
#include "Identity.h"
#include<fstream>
#include"globalFile.h"
#include"Classroom.h"
#include<vector>
#include"orderFile.h"
using namespace std;

class Teacher : public Identity
{
public:
    Teacher();
    Teacher(int empId, string name, string pwd); //职工编号,姓名,密码
    //菜单界面
    virtual void operMenu();
    //查看所有预约
    void showAllOrder();
    //审核预约
    void validOrder();

    int m_EmpId; //教师编号
};

TeacherMenu.h

#pragma once
#include"menu.h"

class Teacher_Menu :public Menu
{
public:
	virtual void showMenu(Identity*& I);
};

UI.h

#pragma once
#include"menu.h"
#include"Login.h"

class UI
{
public:
	void showMenu();
};

Login.cpp

#include"Login.h"

void Login::LoginIn(int type) //身份
{
    Identity* Person = NULL;
    ifstream ifs;
    ifs.open(PERSON_FILE, ios::in);
    //文件不存在情况
    if (!ifs.is_open())
    {
        cout << "文件不存在" << endl;
        ifs.close();
        return;
    }

    int id = 0;
    string name;
    string pwd;
    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 select;
        int fid;
        string fname;
        string fpwd;
        while (ifs>>select&&ifs >> fid && ifs >> fname && ifs >> fpwd)
        {
            if (id == fid && name == fname && fpwd == pwd&&select==type)
            {
                cout << "学生验证成功!" << endl;
                system("pause");
                system("cls");
                Person = new Student(id, name, pwd);
                Student_Menu S;
                S.showMenu(Person);
                return;
            }
        }
    }
    else if (type == 2)
    {
        //教师登录验证
        int select;
        int fid;
        string fname;
        string fpwd;
        while (ifs >> select && ifs >> fid && ifs >> fname && ifs >> fpwd)
        {
            if (id == fid && name == fname && fpwd == pwd && select == type)
            {
                cout << "教师验证成功!" << endl;
                system("pause");
                system("cls");
                Person = new Teacher(id, name, pwd);
                Teacher_Menu T;
                T.showMenu(Person);
                return;
            }
        }
    }
    else if (type == 3)
    {
        //管理员登录验证
        int select;
        string fname;
        string fpwd;
        int zhanwei;
        while (ifs >> select && ifs>>zhanwei&&ifs >> fname && ifs >> fpwd)
        {
            if (name == fname && fpwd == pwd && select == type)
            {
                cout << "管理员验证成功!" << endl;
                system("pause");
                system("cls");
                Person = new Manager(name, pwd);
                Manager_Menu M;
                M.showMenu(Person);
                return;
            }
        }
    }

    cout << "验证登录失败" << endl;
    system("pause");
    system("cls");
    return;
}

manager.cpp

#include "manager.h"

Manager::Manager()
{
}

bool Manager::checkRepeat(int id, int type)
{
    if (type == 1)
    {
        for (vector<Student>::iterator it = vStu.begin(); it != vStu.end(); it++)
        {
            if (id == it->m_Id)
            {
                return true;
            }
        }
    }
    else
    {
        for (vector<Teacher>::iterator it = vTea.begin(); it != vTea.end(); it++)
        {
            if (id == it->m_EmpId)
            {
                return true;
            }
        }
    }
    return false;

}

void Manager::initVector()
{
    ifstream ifs;
    ifs.open(PERSON_FILE, ios::in);
    if (!ifs.is_open())
    {
        cout << "文件读取失败" << endl;
        return;
    }
    vStu.clear();
    vTea.clear();
    Student s;
    int select;
    while (ifs>>select >> s.m_Id && ifs >> s.m_Name && ifs >> s.m_Pwd)
    {
        if(select==1)
        vStu.push_back(s);
    }
    cout << "当前学生数量为:" << vStu.size() << endl;
    ifs.close();
    ifs.open(PERSON_FILE, ios::in);
    Teacher t;
    while (ifs >>select>> t.m_EmpId && ifs >> t.m_Name && ifs >> t.m_Pwd)
    {
        if(select==2)
        vTea.push_back(t);
    }
    cout << "当前老师数量为:" << vTea.size() << endl;
    ifs.close();
}

Manager::Manager(string name, string pwd)
{
    this->m_Name = name;
    this->m_Pwd = pwd;
    this->initVector();
    //获取机房信息
    ifstream ifs;
    ifs.open(CLASSROOM_FILE, ios::in);
    Classroom c;
    while (ifs >> c.m_ComId && ifs >> c.m_MaxNum)
    {
        vCom.push_back(c);
    }
    cout << "当前教室数量为:" << vCom.size() << endl;
    ifs.close();
}

//菜单
void Manager::operMenu()
{
    cout << "欢迎管理员:" << this->m_Name << "登录" << endl;
    cout << "-----------------" << endl;
    cout << "1.添加账号" << endl;
    cout << "2.查看账号" << endl;
    cout << "3.查看教室" << endl;
    cout << "4.清空预约" << endl;
    cout << "0.注销登录" << endl;
    cout << "-----------------" << endl;
    cout << "请选择你的操作:" << endl;
}

//添加账号
void Manager::addPerson()
{
    cout << "请输入添加账号的类型" << endl;
    cout << "1.添加学生" << endl;
    cout << "2.添加老师" << endl;
    string filename;
    string tip;
    ofstream ofs;
    int select = 0;
    cin >> select;
    string errorTip;
    if (select == 1)
    {
        filename = PERSON_FILE;
        tip = "请输入学号:";
        errorTip = "学号重复,请重新输入";
    }
    else
    {
        filename = PERSON_FILE;
        tip = "请输入职工编号:";
        errorTip = "职工号重复,请重新输入";
    }
    ofs.open(filename, ios::out | ios::app);
    int id;
    string name;
    string pwd;
    cout << tip << endl;
    while (true)
    {
        cin >> id;
        bool ret = checkRepeat(id, select);
        if (ret)
        {
            cout << errorTip << endl;
        }
        else
        {
            break;
        }
    }
    cout << "请输入姓名:" << endl;
    cin >> name;
    cout << "请输入密码:" << endl;
    cin >> pwd;
    ofs <<select<<" "<< id << " " << name << " " << pwd << " " << endl;
    cout << "添加成功" << endl;
    system("pause");
    system("cls");
    ofs.close();
    this->initVector();
}

//查看账号

void printStudent(Student &s)
{
    cout << "学号:" << s.m_Id << " 姓名:" << s.m_Name << " 密码:" << s.m_Pwd << endl;
}

void printTeacher(Teacher& t)
{
    cout << "学号:" << t.m_EmpId << " 姓名:" << t.m_Name << " 密码:" << t.m_Pwd << endl;
}


void Manager::showPerson()
{
    cout << "请选择你要查看的内容" << endl;
    cout << "1.查看所有学生" << endl;
    cout << "2.查看所有老师" << endl;
    int select = 0;
    cin >> select;
    if (select == 1)
    {
        cout << "所有学生信息如下" << endl;
        for_each(vStu.begin(), vStu.end(), printStudent);
    }
    else
    {
        cout << "所有老师信息如下" << endl;
        for_each(vTea.begin(), vTea.end(), printTeacher);
    }
    system("pause");
    system("cls");
}

//查看机房信息
void Manager::showComputer()
{
    cout << "教室信息如下:" << endl;
    for(vector<Classroom>::iterator it = vCom.begin();it!=vCom.end();it++)
    {
        cout << "教室编号:" << it->m_ComId << " 教室最大容量:" << it->m_MaxNum << endl;
    }
    system("pause");
    system("cls");
}

//清空预约记录
void Manager::cleanFile()
{
    ofstream ofs(ORDER_FILE,ios::trunc);
    ofs.close();
    cout << "清空成功" << endl;
    system("pause");
    system("cls");
}

ManagerMenu.cpp

#include"ManagerMenu.h"

void Manager_Menu::showMenu(Identity*& manager)
{
    while (true)
    {
        manager->operMenu();
        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->cleanFile();
        }
        else
        {
            delete manager;
            cout << "注销成功" << endl;
            system("pause");
            system("cls");
            return;
        }
    }
}

orderFile.cpp

#include"orderFile.h"

OrderFile::OrderFile()
{
	ifstream ifs;
	ifs.open(ORDER_FILE, ios::in);
	string date;//日期
	string interval;//时间段
	string stuId;//编号
	string stuName;//姓名
	string roomId;//教室号
	string status;//状态
	this->m_Size = 0;
	while (ifs >> date && ifs >> interval && ifs >> stuId && ifs >> stuName && ifs >> roomId && ifs >> status)
	{
		string key;
		string val;
		map<string, string>m;
		int pos = date.find(":");
		if (pos != -1)
		{
			key = date.substr(0, pos);
			val = date.substr(pos + 1, date.size() - pos);
			m.insert(make_pair(key, val));
		}
		pos = interval.find(":");
		if (pos != -1);
		{
			key = interval.substr(0, pos);
			val = interval.substr(pos + 1, interval.size() - pos);
			m.insert(make_pair(key, val));
		}
		pos = stuId.find(":");
		if (pos != -1);
		{
			key = stuId.substr(0, pos);
			val = stuId.substr(pos + 1, stuId.size() - pos);
			m.insert(make_pair(key, val));
		}
		pos = stuName.find(":");
		if (pos != -1);
		{
			key = stuName.substr(0, pos);
			val = stuName.substr(pos + 1, stuName.size() - pos);
			m.insert(make_pair(key, val));
		}
		pos = roomId.find(":");
		if (pos != -1);
		{
			key = roomId.substr(0, pos);
			val = roomId.substr(pos + 1, roomId.size() - pos);
			m.insert(make_pair(key, val));
		}
		pos = status.find(":");
		if (pos != -1);
		{
			key = status.substr(0, pos);
			val = status.substr(pos + 1, status.size() - pos);
			m.insert(make_pair(key, val));
		}
		this->m_OrderData.insert(make_pair(this->m_Size, m));
		this->m_Size++;
	}
}

void OrderFile::updateOrder()
{
	if (this->m_Size == 0)
	{
		return;
	 }
	ofstream ofs(ORDER_FILE,ios::out|ios::trunc);
	for (int i = 0; i < m_Size; i++)
	{
		ofs << "date:" << this->m_OrderData[i]["date"] << " ";
		ofs << "interval:" << this->m_OrderData[i]["interval"] << " ";
		ofs << "stuId:" << this->m_OrderData[i]["stuId"] << " ";
		ofs << "stuName:" << this->m_OrderData[i]["stuName"] << " ";
		ofs << "roomId:" << this->m_OrderData[i]["roomId"] << " ";
		ofs << "status:" << this->m_OrderData[i]["status"] << endl;
	}
	ofs.close();
}

student.cpp

#include "student.h"

Student::Student()
{
}

Student::Student(int id, string name, string pwd) //学号,姓名,号码
{
	this->m_Id = id;
	this->m_Name = name;
	this->m_Pwd = pwd;
	//查询教室容器
	ifstream ifs;
	ifs.open(CLASSROOM_FILE, ios::in);
	Classroom c;
	while (ifs >> c.m_ComId && ifs >> c.m_MaxNum)
	{
		vCom.push_back(c);
	}
	ifs.close();
}

//菜单界面
void Student::operMenu()
{
	cout << "欢迎学生代表:" << this->m_Name << "登录!" << endl;
	cout << "-------------------" << endl;
	cout << "1.申请预约" << endl;
	cout << "2.查看我的预约" << endl;
	cout << "3.查看所有预约" << endl;
	cout << "4.取消预约" << endl;
	cout << "0.注销登录" << endl;
	cout << "-------------------" << endl;
	cout << "请选择你的操作:" << endl;
	
}

//申请预约
void Student::applyOrder()
{
	cout << "教室开放时间为周一到周五" << endl;
	cout << "请选择申请预约的时间" << endl;
	cout << "1.周一" << endl;
	cout << "2.周二" << endl;
	cout << "3.周三" << endl;
	cout << "4.周四" << endl;
	cout << "5.周五" << endl;
	int date = 0;
	int interval;
	int room;
	while (true)
	{
		cin >> date;
		if (date >= 1 && date <= 5)
		{
			break;
		}
		cout << "输入有误,请重新输入" << endl;
	}
	string what_date;
	if (date == 1)what_date = "周一";
	if (date == 2)what_date = "周二";
	if (date == 3)what_date = "周三";
	if (date == 4)what_date = "周四";
	if (date == 5)what_date = "周五";
	cout << "请选择申请预约的时间段" << endl;
	cout << "1.上午" << endl;
	cout << "2.下午" << endl;
	while (true)
	{	
		cin >> interval;
		if (interval >= 1 && interval <= 2)
		{
			break;
		}
		cout << "输入有误,请重新输入" << endl;
	}
	string time;
	if (interval == 1)time = "morning";
	if (interval == 2)time = "afternoon";
	cout << "请选择教室" << endl;
	cout << "1号教室容量:" << vCom[0].m_MaxNum << endl;
	cout << "2号教室容量:" << vCom[1].m_MaxNum << endl;
	cout << "3号教室容量:" << vCom[2].m_MaxNum << endl;
	while (true)
	{
		cin >> room;
		if (room >= 1 && room <= 3)
		{
			break;
		}
		cout << "输入有误,请重新输入" << endl;
	}
	cout << "预约成功,审核中" << endl;
	ofstream ofs(ORDER_FILE,ios::app);
	ofs << "date:" << what_date << " ";
	ofs << "interval:" << time << " ";
	ofs << "stuId:" << this->m_Id << " ";
	ofs << "stuName:" << this->m_Name << " ";
	ofs << "roomId:" << room << " ";
	ofs << "status:" << 1 << endl;//1为审核中状态
	ofs.close();
	system("pause");
	system("cls");
}

//查看我的预约
void Student::showMyOrder()
{
	OrderFile of;
	if (of.m_Size == 0)
	{
		cout << "无预约记录" << endl;
		system("pause");
		system("cls");
		return;
	}
	for (int i = 0; i < of.m_Size; i++)
	{
		if (atoi(of.m_OrderData[i]["stuId"].c_str()) == this->m_Id)
		{
			cout << "预约日期:" << of.m_OrderData[i]["date"]<<" ";
			cout << "时段:" << (of.m_OrderData[i]["interval"] == "morning" ? "上午" : "下午")<<" ";
			cout << "教室:" << of.m_OrderData[i]["roomId"]<<" ";
			string status = "状态:";// 0 取消的预约  1 审核中  2 已预约 -1预约失败 
			if (of.m_OrderData[i]["status"] == "1")
			{
				status += "审核中";
			}
			else if (of.m_OrderData[i]["status"] == "2")
			{
				status += "已预约";
			}
			else if (of.m_OrderData[i]["status"] == "-1")
			{
				status += "预约失败";
			}
			else if (of.m_OrderData[i]["status"] == "0")
			{
				status += "取消的预约";
			}
			cout << status << endl;
		}
	}
	system("pause");
	system("cls");
}

//查看所有预约
void Student::showAllOrder()
{
	OrderFile of;
	if (of.m_Size == 0)
	{
		cout << "无预约记录" << endl;
		system("pause");
		system("cls");
		return;
	}
	for (int i = 0; i < of.m_Size; i++)
	{
		cout << i+1 << "、";
		cout << "预约日期:" << of.m_OrderData[i]["date"] << " ";
		cout << "时段:" << (of.m_OrderData[i]["interval"] == "morning" ? "上午" : "下午") << " ";
		cout << "学号:" << of.m_OrderData[i]["stuId"]<<" ";
		cout << "姓名:" << of.m_OrderData[i]["stuName"] << " ";
		cout << "教室:" << of.m_OrderData[i]["roomId"] << " ";
		string status = "状态:";// 0 取消的预约  1 审核中  2 已预约 -1预约失败 
		if (of.m_OrderData[i]["status"] == "1")
		{
			status += "审核中";
		}
		else if (of.m_OrderData[i]["status"] == "2")
		{
			status += "已预约";
		}
		else if (of.m_OrderData[i]["status"] == "-1")
		{
			status += "预约失败";
		}
		else if (of.m_OrderData[i]["status"] == "0")
		{
			status += "取消的预约";
		}
		cout << status << endl;
	}
	system("pause");
	system("cls");
}

//取消预约
void Student::cancelOrder()
{
	OrderFile of;
	if (of.m_Size == 0)
	{
		cout << "无预约记录" << endl;
		system("pause");
		system("cls");
		return;
	}
	cout << "审核中或预约成功的记录可以取消,请输入取消的记录" << endl;
	vector<int>v;
	int index = 1;
	for (int i = 0; i < of.m_Size; i++)
	{
		if (atoi(of.m_OrderData[i]["stuId"].c_str()) == this->m_Id)
		{
			if (of.m_OrderData[i]["status"] == "1" || of.m_OrderData[i]["status"] == "2")
			{
				v.push_back(i);
				cout << index++ << "、";
				cout << "预约日期:" << of.m_OrderData[i]["date"] << " ";
				cout << "时段:" << (of.m_OrderData[i]["interval"] == "morning" ? "上午" : "下午") << " ";
				cout << "教室:" << of.m_OrderData[i]["roomId"] << " ";
				string status = "状态:";// 0 取消的预约  1 审核中  2 已预约 -1预约失败 
				if (of.m_OrderData[i]["status"] == "1")
				{
					status += "审核中";
				}
				else if (of.m_OrderData[i]["status"] == "2")
				{
					status += "已预约";
				}
				else if (of.m_OrderData[i]["status"] == "-1")
				{
					status += "预约失败";
				}
				else if (of.m_OrderData[i]["status"] == "0")
				{
					status += "取消的预约";
				}
				cout << status << endl;
			}
		}
	}
	cout << "请输入取消的记录,0代表返回" << endl;
	int select=0;
	while (true)
	{
		cin >> select;
		if (select >= 0 && select <= v.size())
		{
			if (select == 0)
			{
				break;
			}
			else
			{
				of.m_OrderData[v[select - 1]]["status"] = "0";
				of.updateOrder();
				cout << "已经取消预约" << endl;
				break;
			}
		}
		cout << "输入有误,请重新输入" << endl;
	}
	system("pause");
	system("cls");
}

studentMenu.cpp

#include"studentMenu.h"

void Student_Menu::showMenu(Identity*& student)
{
    while (true)
    {
        student->operMenu();
        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;
        }
    }
}

teacher.cpp

#include "teacher.h"

Teacher::Teacher()
{
}
Teacher::Teacher(int empId, string name, string pwd)
{
	this->m_EmpId = empId;
	this->m_Name = name;
	this->m_Pwd = pwd;
}
//菜单
void Teacher::operMenu()
{
	cout << "欢迎教师:" << this->m_Name << "登录" << endl;
	cout << "----------------" << endl;
	cout << "1.查看所有预约" << endl;
	cout << "2.审核预约" << endl;
	cout << "0.注销登录" << endl;
	cout << "----------------" << endl;
	cout << "请选择你的操作" << endl;
}
//查看所有预约
void Teacher::showAllOrder()
{
	OrderFile of;
	if (of.m_Size == 0)
	{
		cout << "无预约记录" << endl;
		system("pause");
		system("cls");
		return;
	}
	for (int i = 0; i < of.m_Size; i++)
	{
		cout << i + 1 << "、";
		cout << "预约日期:" << of.m_OrderData[i]["date"] << " ";
		cout << "时段:" << (of.m_OrderData[i]["interval"] == "morning" ? "上午" : "下午") << " ";
		cout << "学号:" << of.m_OrderData[i]["stuId"] << " ";
		cout << "姓名:" << of.m_OrderData[i]["stuName"] << " ";
		cout << "教室:" << of.m_OrderData[i]["roomId"] << " ";
		string status = "状态:";// 0 取消的预约  1 审核中  2 已预约 -1预约失败 
		if (of.m_OrderData[i]["status"] == "1")
		{
			status += "审核中";
		}
		else if (of.m_OrderData[i]["status"] == "2")
		{
			status += "已预约";
		}
		else if (of.m_OrderData[i]["status"] == "-1")
		{
			status += "预约失败";
		}
		else if (of.m_OrderData[i]["status"] == "0")
		{
			status += "取消的预约";
		}
		cout << status << endl;
	}
	system("pause");
	system("cls");
}
//审核预约
void Teacher::validOrder()
{
	OrderFile of;
	if (of.m_Size == 0)
	{
		cout << "无预约记录" << endl;
		system("pause");
		system("cls");
		return;
	}
	cout << "待审核的预约记录如下" << endl;
	vector<int>v;
	int index = 1;
	for (int i = 0; i < of.m_Size; i++)
	{
		if (of.m_OrderData[i]["status"] == "1")
		{
			v.push_back(i);
			cout << index++ << "、";
			cout << "预约日期:" << of.m_OrderData[i]["date"] << " ";
			cout << "时段:" << (of.m_OrderData[i]["interval"] == "morning" ? "上午" : "下午") << " ";
			cout << "学号:" << of.m_OrderData[i]["stuId"] << " ";
			cout << "姓名:" << of.m_OrderData[i]["stuName"] << " ";
			cout << "教室:" << of.m_OrderData[i]["roomId"] << " ";
			string status = "状态:";// 0 取消的预约  1 审核中  2 已预约 -1预约失败 
			if (of.m_OrderData[i]["status"] == "1")
			{
				status += "审核中";
			}
			cout << status << endl;
		}
	}
	cout << "请输入审核的预约记录,0代表返回" << endl;
	int select = 0;
	int ret = 0;
	while (true)
	{
		cin >> select;
		if (select >= 0 && select <= v.size())
		{
			if (select == 0)
			{
				break;
			}
			else
			{	
				cout << "请输入审核结果" << endl;
				cout << "1.通过" << endl;
				cout << "2.不通过" << endl;
				cin >> ret;
				if (ret == 1)
				{
					of.m_OrderData[v[select - 1]]["status"] = "2";
				}
				else
				{
					of.m_OrderData[v[select - 1]]["status"] = "-1";
				}
				of.updateOrder();
				cout << "审核完毕" << endl;
				break;
			}
		}
		cout << "输入有误,请重新输入" << endl;
	}
	system("pause");
	system("cls");
}

TeacherMenu.cpp

#include"TeacherMenu.h"

void Teacher_Menu::showMenu(Identity*& teacher)
{
    while (true)
    {
        teacher->operMenu();
        Teacher* tea = (Teacher*)teacher;
        int select = 0;
        cin >> select;
        if (select == 1)
        {
            //查看所有预约
            tea->showAllOrder();
        }
        else if (select == 2)
        {
            //审核预约
            tea->validOrder();
        }
        else
        {
            delete teacher;
            cout << "注销成功" << endl;
            system("pause");
            system("cls");
            return;
        }
    }
}

UI.cpp

#include"UI.h"

void UI::showMenu()
{
    int select = 0;
    while (true)
    {
        cout << "欢迎使用教室预约系统" << endl;
        cout << endl
            << "请输入您的身份:" << endl;
        cout << "---------------" << endl;
        cout << "1.学 生" << endl;
        cout << "2.老 师" << endl;
        cout << "3.管理员" << endl;
        cout << "0.退 出" << endl;
        cout << "---------------" << endl;
        cout << "请输入您的选择:" << endl;
        cin >> select;
        Login L;
        switch (select)
        {
        case 1: //学生
            L.LoginIn(1);
            break;
        case 2: //老师
            L.LoginIn(2);
            break;
        case 3: //管理员
            L.LoginIn(3);
            break;
        case 0: //退出
            cout << "欢迎下次使用!" << endl;
            system("pause");
            return;
            break;
        default:
            cout << "输入有误,请重新输入!" << endl;
            system("pause");
            system("cls");
            break;
        }
    }
}

main.cpp

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include "Identity.h"
#include "manager.h"
#include "teacher.h"
#include "student.h"
#include "globalFile.h"
#include"menu.h"
#include"UI.h"
#include"studentMenu.h"
#include"ManagerMenu.h"
#include"TeacherMenu.h"
using namespace std;

int main()
{
    UI ui;
    ui.showMenu();
    system("pause");
    return 0;
}
  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
课程内容主要讲解如下几点:1:如何使用navaicat导入sql2:如何设置网站的的数据库账号等,如何使用iis发布网站3:演示后台管理功能4:如何使用HBuilder X导入app项目,如何设置发布,以及app功能演示 该系统主要分网站管理员、游客、注册用户这几个角色网站管理员系统设置关于我们设置:设置关于我们、联系我们、加入我们、法律声明广告和留言       首页轮播图设置:支持上传轮播图;       留言列表:用户的所有留言信息、支持删除资讯中心       添加资讯:类型、标题、资讯内容等       管理资讯:查看所有资讯列表;支持修改功能;支持删除功能会员管理查看会员信息列表、支持删除功能    查看会员注册时间、手机用户名、姓名、QQ、邮箱、备注等。教室管理       录入教室:选择是上课教室/自习室,录入教室名称和内容(备注不显示)       管理教室:查看后台管理员开放的教室列表;支持修改功能;支持删除功能 教室预约订单管理       教室预约订单列表:查看所有注册的用户的订单信息,包括下单时间,下单用户,用户的手机、姓名、QQ邮箱联系,预约的日期,预约教室名称,预约的哪节课,留言备注信息。       教室预约订单管理:可以修改状态。       状态有:等待审核、拒绝、审核通过游客功能查看平台介绍关于我们、联系我们、加入我们、法律声明资讯中心查看网站的所有资讯列表和详情:通知公告、帮助中心等查看首页广告  查看首页轮播滚动的广告留言反馈给网站管理员留言:主题、联系人、电话、邮箱、内容等查看教室开放信息可以查看已开放教室的所有相关信息:是否已经预约不能进行预约,需要注册登录的用户才可以。 注册用户注册用户除了享有游客的特别功能外,还有一些功能。注册和登录注册功能:填写用户名和密码注册登录:登录后可以享有会员功能。教室预约步骤如下:第一步:通过点击“预约”栏目或进入教室预约页面第二步:选择教室,然后选择需要预约的日期(只开放4天内),点击预约,跳转到提交页面第三步:在提交页面填写联系信息;确认信息后;提交预约,等待后台管理员审核。 我的教室预约可以查看我所有的教室预约订单信息:预约哪个教室预约的哪天、预约的哪节课、预约时候填写的信息。默认提交的教室预约订单信息是“待审核”状态,这个状态的时候可以“取消申请”。后台管理员审核后,状态变更为“已审核”,只能查看不能进行其他操作。 用户信息维护自己的会员信息,包括:头像、姓名、QQ、邮箱、备注等;支持修改功能 密码修改和退出登录密码修改:修改自己的密码退出登录:清除登录的cookie、跳转到首页
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青云遮夜雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值