一级标题c++机房管理系统 大一课程设计

项目要求

机房预约系统

1、机房预约系统需求

1.1 系统简介

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

1.2 身份简介

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

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

1.3 机房简介

机房总共有3间

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

1.4 申请简介

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

1.5 系统具体需求

  • 首先进入登录界面,可选登录身份有:

    • 学生代表
    • 老师
    • 管理员
    • 退出
  • 每个身份都需要进行验证后,进入子菜单
    • 学生需要输入 :学号、姓名、登录密码
    • 老师需要输入:职工号、姓名、登录密码
    • 管理员需要输入:管理员姓名、登录密码
  • 学生具体功能
    • 申请预约 — 预约机房
    • 查看自身的预约 — 查看自己的预约状态
    • 查看所有预约 — 查看全部预约信息以及预约状态
    • 取消预约 — 取消自身的预约,预约成功或审核中的预约均可取消
    • 注销登录 — 退出登录
  • 教师具体功能
    • 查看所有预约 — 查看全部预约信息以及预约状态
    • 审核预约 — 对学生的预约进行审核
    • 注销登录 — 退出登录
  • 管理员具体功能
    • 添加账号 — 添加学生或教师的账号,需要检测学生编号或教师职工号是否重复
    • 查看账号 — 可以选择查看学生或教师的全部信息
    • 查看机房 — 查看所有机房的信息
    • 清空预约 — 清空所有预约记录
    • 注销登录 — 退出登录


机房信息固定

内容、代码如下共有七个头文件五个源文件,可装在一个文件中

机房信息 computerRoom.h
无.cpp部分

#pragma once
#include<iostream>
using namespace std;class ComputerRoom
{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 COMPUTER_FILE  "computerRoom.txt"//订单文件
#define ORDER_FILE      "order.txt"

Identity.h无.cpp实现部分

#pragma once//防止头文件重复包含#include<iostream>
using namespace std;class Identity
{public://操作菜单  纯虚函数virtual void operMenu() = 0;//用户名string m_Name;//密码string m_Pwd;
};

student.h

#pragma once
#include<iostream>
using namespace std;
#include<string>
#include"Identity.h"
#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);//菜单界面void operMenu();//申请预约void applyOrder();//查看自身预约void showMyOrder();//查看所有预约void showAllOrder();//取消预约void cacelOrder();//学生学号int m_Id;//机房容量信息vector<ComputerRoom>vCom;
};

student.cpp

#include"student.h"//默认构造
Student::Student()
{}//有参构造    参数  :学号  姓名  密码
Student::Student(int id, string name, string pwd)
{//初始化属性m_Id = id;m_Name = name;m_Pwd = pwd;//初始化机房信息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();
}//菜单界面
void Student::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 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 = 0;//时间段int room = 0;//机房编号while (true){cin >> date;if (date >= 1 && date <= 5){break;}cout << "输入有误,请重新输入!" <<endl;}cout << "请输入申请预约的时间段:" << endl;cout << "1.上午" << endl;cout << "2.下午" << endl;while (true){cin >> interval;if (interval >= 1 && interval <= 2){break;}cout << "输入有误,请重新输入!" << endl;}cout << "请选择机房:" << endl;for (int i = 0; i < vCom.size(); i++){cout << vCom[i].m_ComId << "号机房容量为" << vCom[i].m_MaxNum << endl;}while (true){cin >> room;if (room >= 1 && room <= 3){break;}cout << "输入有误,请重新输入!" << endl;}cout << "预约成功!审核中" << endl;ofstream ofs;ofs.open(ORDER_FILE, ios::app);ofs << "date:" << date << " ";ofs << "interval:" << interval << " ";ofs << "stuId:" << this->m_Id << " ";ofs << "stuName:" << this->m_Name << " ";ofs << "roomId:" << room << " ";ofs << "status:" << 1 << " " << endl;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++){//string  转为int // string 利用从  .c_str() 转  const char *//利用auti(const char * ) 转 int if (this->m_Id == atoi(of.m_orderData[i]["stuId"].c_str()))//找到自身预约{cout << "预约日期: 周" << of.m_orderData[i]["date"];cout << "  时间段: " << (of.m_orderData[i]["interval"] == "1" ? "上午" : "下午");cout << "  机房号: " << of.m_orderData[i]["roomId"];string status = "  状态: ";//1.审核中   2.已预约    -1.预约失败   0.取消预约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"] == "1" ? "上午" : "下午");cout << " 学号:" << of.m_orderData[i]["stuId"];cout << " 姓名:" << of.m_orderData[i]["stuName"];cout << " 机房编号:" << of.m_orderData[i]["roomId"];string status = " 状态:";//1.审核中    2.已预约     -1.预约失败   0.取消预约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::cacelOrder()
{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 (this->m_Id == atoi(of.m_orderData[i]["stuId"].c_str())){//再筛选状态,审核中或预约成功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"] == "1" ? "上午" : "下午");cout << " 机房编号:" << of.m_orderData[i]["roomId"];string status = "状态:";if (of.m_orderData[i]["status"] == "1"){status += "审核中";}else if (of.m_orderData[i]["status"] == "2"){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");
}

teacher.h

#pragma once
#include<iostream>
#include<vector>
using namespace std;
#include"orderFile.h"
#include<string>
#include"Identity.h"class Teacher :public Identity
{public://默认构造Teacher();//有参构造Teacher(int empId, string name, string pwd);//菜单界面void operMenu();//查看所有预约void showAllOrder();//审核预约void validOrder();//职工号int m_empId;};

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 << "\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|             0.注销登录            |\n";cout << "\t\t|                                   |\n";cout << "\t\t -----------------------------------\n";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"] == "1" ? "上午" : "下午");cout << " 学号:" << of.m_orderData[i]["stuId"];cout << " 姓名:" << of.m_orderData[i]["stuName"];cout << " 机房编号:" << of.m_orderData[i]["roomId"];string status = " 状态:";//1.审核中    2.已预约     -1.预约失败   0.取消预约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;}vector<int>v;int index = 0;cout << "待审核的预约记录如下:" << endl;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"] == "1" ? "上午" : "下午");cout << " 学生编号:" << of.m_orderData[i]["stuId"];cout << " 学生姓名:" << of.m_orderData[i]["stuName"];cout << " 机房编号:" << of.m_orderData[i]["roomId"];string 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");
}

manager.h

#pragma once
#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include"Identity.h"
#include<fstream>
#include"globalFile.h"
#include"student.h"
#include"teacher.h"
#include"computerRoom.h"
#include<algorithm>class Manager :public Identity
{public://默认构造Manager();//有参构造Manager(string name,string pwd);//菜单功能void operMenu();//添加账号void addPerson();//查看账号void showPerson();//查看机房信息void showComputer();//清空预约记录void clearFile();//初始化容器void initVector();//检测重复bool checkRepeat(int id, int type);//学生容器vector<Student>vStu;//教室容器vector<Teacher>vTea;//机房容量信息vector<ComputerRoom>vCom;
};

manager.cpp

#include"manager.h"//默认构造
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 << "1.添加学生" << endl;cout << "2.添加老师" << endl;string fileName;//操作的文件string tip;//提示id号string errorTip;//错误重复提示ofstream ofs;//文件操作对象int select = 0;cin >> select;//接受用户选择if (select==1){//添加的是学生fileName = STUDENT_FILE;tip = "请输入学号:";errorTip = "学号重复,请重新输入";}else{fileName = TEACHER_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 << 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 & s)
{cout << "职工号: " << s.m_empId << " 姓名:" << s.m_Name << " 密码: " << s.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<ComputerRoom>::iterator it = vCom.begin(); it != vCom.end(); it++){cout << "机房编号:" << it->m_ComId << "机房最大容量:" << it->m_MaxNum << endl;}system("pause");system("cls");
}//清空预约记录
void Manager::clearFile()
{ofstream ofs(ORDER_FILE, ios::trunc);ofs.close();cout << "清空成功!" << endl;system("pause");system("cls");}//初始化容器
void Manager::initVector()
{//确保文件清空状态vTea.clear();vStu.clear();//读取信息  学生   ifstream ifs;ifs.open(STUDENT_FILE, ios::in);if (!ifs.is_open()){cout << "文件读取失败" << endl;return;}Student s;while (ifs >> s.m_Id && ifs >> s.m_Name && ifs >> s.m_Pwd){vStu.push_back(s);}cout << "当前学生数量为:" << vStu.size()<<endl;ifs.close();ifs.open(TEACHER_FILE, ios::in);Teacher t;while (ifs >> t.m_empId && ifs >> t.m_Name && ifs >> t.m_Pwd){vTea.push_back(t);}cout << "当前老师的数量为:" << vTea.size()<<endl;ifs.close();
}//检测重复
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;
}

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

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){/*测试代码cout << date << endl;cout << interval << endl;cout << stuId << endl;cout << stuName << endl;cout << roomId << endl;cout << status << endl;cout << endl;*///date:1  string key;string value;map<string, string>m;//截取日期int pos = date.find(":"); if (pos != -1){key = date.substr(0, pos);value = date.substr(pos + 1, date.size()-pos-1);m.insert(make_pair(key, value));}/*测试代码cout << "key=" << key << endl;cout << "value=" << value << endl;*///截取时间段pos = interval.find(":");if (pos != -1){key = interval.substr(0, pos);value = interval.substr(pos + 1, interval.size() - pos - 1);m.insert(make_pair(key, value));}//截取学号pos = stuId.find(":");if (pos != -1){key = stuId.substr(0, pos);value = stuId.substr(pos + 1, stuId.size() - pos - 1);m.insert(make_pair(key, value));}//截取姓名pos = stuName.find(":");if (pos != -1){key = stuName.substr(0, pos);value = stuName.substr(pos + 1, stuName.size() - pos - 1);m.insert(make_pair(key, value));}//截取机房信息pos = roomId.find(":");if (pos != -1){key = roomId.substr(0, pos);value = roomId.substr(pos + 1, roomId.size() - pos - 1);m.insert(make_pair(key, value));}//截取状态pos = status.find(":");if (pos != -1){key = status.substr(0, pos);value = status.substr(pos + 1, status.size() - pos - 1);m.insert(make_pair(key, value));}//将小map放到大map中this->m_orderData.insert(make_pair(this->m_Size, m));this->m_Size++;}ifs.close();//测试最大大容器/*for(map<int,map<string,string>>::iterator it=m_orderData.begin();it!=m_orderData.end();it++){cout << " 条数:" << it->first << " value = " << endl;for (map<string, string>::iterator mit = (*it).second.begin(); mit != it->second.end(); mit++){cout << " key = " << mit->first << " value = " << mit->second << " ";}cout << endl;}*/
}//更新预约条数
void OrderFile::updateOrder()
{if (this->m_Size == 0){return;//预约记录零条}ofstream ofs(ORDER_FILE, ios::out | ios::trunc);for (int i = 0; i < this->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();
}

机房预约系统.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 studentMenu(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->cacelOrder();}else//注销登录{delete student;cout << "注销成功!" << endl;system("pause");system("cls");return;}}
}//进入老师的子菜单页面
void teacherMeau(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;}}
}//进入管理员的子菜单页面
void managerMenu(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->clearFile();}else{//注销delete manager;//销毁掉堆区对象cout << "注销成功" << endl;system("pause");system("cls");return;}}
}//登录功能   参数一   操作文件名    参数二     操作身份类型
void LoginIn(string fileName, int type)
{//父类指针, 用于指向子类对象Identity* person = NULL;//读文件ifstream ifs; ifs.open(fileName, 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 fId;         //从文件中读取的id号string fName;    //从文件中获取的密码string fPwd;     //从文件中获取密码while (ifs >> fId && ifs >> fName && ifs >> fPwd){if (fId == id && fName == name && fPwd == pwd){cout << "学生验证登录成功" << endl; system("pause");system("cls");person = new Student(id,name,pwd);//进入学生身份的子菜单     studentMenu(person);return;  }}}else if (type == 2){//教师身份验证int fId;//从文件中获取的id号string fName;//从文件中获取姓名string fPwd;//从文件中获取密码while (ifs >> fId && ifs >> fName && ifs >> fPwd){if (fId == id && fName == name && fPwd == pwd){cout << "教师验证登录成功!" << endl;system("pause");system("cls");person = new Teacher(id, name, pwd);//进入教师子菜单teacherMeau(person);return;}}}else if (type == 3){//管理员的身份验证string fName;string fPwd;while (ifs >> fName && ifs >> fPwd){if (fName == name && fPwd == pwd){cout << "管理员验证登录成功" << endl;system("pause");system("cls");person = new Manager(name, pwd);//进入管理员子菜单页面managerMenu(person);return;}}}cout << "验证登录失败!" << endl;system("pause");system("cls");return;}int main()
{int select = 0;//用于接受用户的选择while (true){cout << "=====================欢迎来到机房预约系统=================" << endl;cout << endl << "请输入您的身份" << 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|             0.退    出              |\n";cout << "\t\t|                                     |\n";cout << "\t\t -------------------------------------\n";cout << "请输入您的选择:" << endl;cin >> select;//接受用户选择switch (select){case 1://学生身份LoginIn(STUDENT_FILE, 1);break;case 2://老师身份LoginIn(TEACHER_FILE, 2);break; case 3://管理员身份LoginIn(ADMIN_FILE, 3);break;case 0://退出系统cout << "欢迎下次使用" << endl;system("pause");exit(0);break;default:cout << "输入有误,请重新输入!" << endl;system("pause");system("cls");break;}}system("pause");return 0;
}

从其b站上按照视频奋战了一天一个一个敲的
点击进入
第二百八十二集开始 ,老师讲解很好 很细 很认真。

该案例中的对c++综合讲解很全面。
和大家一起学习。
文章中可能会有很多问题, 希望和大家一起进步!

c++机房管理系统 大一课程设计相关推荐

  1. 计算机机房管理系统 数据库课设,学校机房管理系统数据库课程设计.doc

    学校机房管理系统数据库课程设计.doc 数据库原理及应用课程设计设计报告题目机房管理系统后台数据库学号131007220学生姓名指导教师提交时间2015/1/4目录第1章需求分析111课程设计概述11 ...

  2. c语言大一课程设计,大一课程设计(C语言).doc

    大一课程设计(C语言) 一. 课程设计目的和要求 (一). 课程设计目的 本课程设计是重要的实践性环节之一,是在学生学习完<程序设计语言(C)>课程后进行的一次全面的综合练习.本课程设计的 ...

  3. C#实现图书管理系统(课程设计)——第五步、查询界面及操作

    C#实现图书管理系统(课程设计)--第五步.查询界面及操作 上一篇:借书界面 (1)界面设计: 前三个框为DataGridView控件,具体的使用方法自行百度,以下简单讲解: 1.创建后点击,右上角会 ...

  4. 医院管理系统mysql课程设计_数据库(课程设计)报告(医院管理系统).doc

    数据库(课程设计)报告(医院管理系统) 数据库课程设计 报告模版 齐齐哈尔大学 数据库课程设计报告 题目: 班级: 姓名: 学号: 指导教师: 2013 医院信息管理系统 摘要:医院作为一个极其重要的 ...

  5. C#实现图书管理系统(课程设计)——第二步、登陆界面

    C#实现图书管理系统(课程设计)--第二步.登陆界面 (1)整体设计方案 划红线的地方是登录界面方案 主要参考:https://blog.csdn.net/weixin_43209848/articl ...

  6. C#winform图书管理系统(课程设计)

    C#winform图书管理系统(课程设计)借书.还书.查询用户信息.查询图书信息.添加图书.删除图书.修改图书信息

  7. c语言学生管理系统结点,学生管理系统(数据结构课程设计之完整代码)

    <学生管理系统(数据结构课程设计之完整代码)>由会员分享,可在线阅读,更多相关<学生管理系统(数据结构课程设计之完整代码)(14页珍藏版)>请在人人文库网上搜索. 1.数据结构 ...

  8. 宿舍住宿管理java课程设计_宿舍管理系统Java课程设计

    宿舍管理系统Java课程设计 Java 课程设计设计(论文) 题目: 宿舍管理系统 所 在 院: 专 业 : 班 级 : 学 生 姓 名: 学 号: 指 导 教 师: 年 月 日课程设计(论文)任务书 ...

  9. 用C#实现一个简单的图书管理系统(课程设计)

    用C#(sharp)实现一个简单的图书管理系统(课程设计) 学校的数据库课程结束了,要求完成一个课程设计,于是我用C#实现了一个简单的图书管理系统(ADO.NET) 源码放在了github上,仅供参考 ...

最新文章

  1. mysql合并查询结果及为表和字段取别名
  2. 解决:Error: Aesthetics must be either length 1 or the same as the data (5): fill
  3. 刷爆全网的动态条形图,原来 5 行 Python 代码就能实现!
  4. Android之linux基础教学之八 内核同步介绍
  5. 几种颜色模型的转换公式
  6. JVM与Dalvik
  7. java epoll select_春招|Java开发实习面经(口头offer),感谢快手给我这个双非一次机会!...
  8. Python爬虫自学之第(④)篇——强大的正则表达式,re模块
  9. Android:四大架构的优缺点,你真的了解吗?
  10. 操作系统和语言的关系(转载)
  11. 解决由于破解软件导致的page fault in nonpaged area蓝屏
  12. win10电脑显示未安装任何音频输出设备问题解决记录
  13. 使用jquery实现图形点击文字按顺序验证码案例及代码完整版
  14. 实验九:采用异步方式实现文件读/写
  15. 知识图谱本体建模之RDF、RDFS、OWL详解
  16. 计算任意多边形的面积
  17. 十三、添加RD 会话主机角色
  18. 推荐系统基础(2):个性化推荐系统简述
  19. MacBook启动cherrytree报错解决
  20. String.chatAt()

热门文章

  1. ROS配置SLAM环境
  2. 自己做的roguelike+恶魔城游戏《魔塔猎人》已发布。
  3. 弘辽科技:社区团购硝烟弥漫,京东对兴盛优选“出手了”
  4. 专访CMU邢波教授:机器学习与医疗大数据,及大规模机器学习系统的开发
  5. python的最佳开发工具_10款最佳Python开发工具推荐,每一款都是神器!
  6. svmtrain笔记----svmtrian函数
  7. HTML 修改时间日期,文件属性创建时间修改时间
  8. spring-bootsql导出date字段时区错误以及格式转换
  9. 怎么更改锁定计算机背景图片,Win7系统怎么更改锁屏壁纸?注册表如何修改锁屏壁纸?...
  10. python谁是卧底、猜词语