C++ 教室管理系统

        C++ 教室管理系统

目录

        C++ 教室管理系统

运行环境:

详细设计

调试分析

 测试结果

如需源码请后台私信或添加QQ3203499787


如需源码请后台私信或添加QQ3203499787

需求分析
主要目标:开发一个教室管理系统,实现对学校教室的维护、查询、预约和统计功能。系统将具有权限控制,分为管理员和普通用户。

管理员需求:

查看特定楼宇的教室概要信息。
查看每个教室的详细信息,包括教室基本信息、预约情况和上课情况。
修改某个教室的基本信息。
添加新教室。
删除现有教室。
添加教室的上课情况。
统计特定类型教室的综合使用情况(如每周上课率、每周预约率)。
普通用户需求:

查询符合特定条件的空闲教室。
预约空闲教室。
其他需求:程序应具有良好的用户交互性。

概要设计
本程序采用面向对象编程思想进行设计,主要包括教室类、预约信息类和上课信息类。

教室类:
属性:校区编号、楼宇编号、教室编号、教室类型、座位数量、预约状态、预约数量、预约信息、上课数量、上课信息。
方法:默认构造函数、获取属性值的方法、设置属性值的方法。

预约信息类:
属性:课时时间、学号/教工号、姓名、电话。
方法:默认构造函数、带参数的构造函数、获取属性值的方法、重载流运算符。

上课信息类:
属性:教师姓名、教工号、总上课次数、上课时间。
方法:默认构造函数、带参数的构造函数、获取属性值的方法、重载流运算符。

课时时间类:
属性:课时的周数、周、节次。
方法:重载相等、不等和流运算符。

运行环境:

硬件环境:Intel® Core™ i7-6500U CPU @ 2.50GHz 2.59GHz,8.00GB内存,64位操作系统,基于x64的处理器。

软件环境:Windows 11。 开发工具和编程语言:Microsoft Visual Studio Community 2022,C++11。

详细设计

教室信息类:

该类封装有教室的基本属性和方法,用于存储每个教室的信息集合及修 改其中的信息,构成教室管理系统的核心。

class Classroom 
{ 
public: 
 Classroom() = default; //默认构造函数 
 void setCampusType(uint); //设置函数 
 void setBuildID(uint); 
 void setRoomID(uint); 
 void setRoomType(uint); 
 void setSeats(uint); 
 void setOrderStatus(uint); 
 void setOrderCnt(uint); 
 void setClassCnt(uint); 
5 
 void addOrderInfo(OrderInfo); 
 void addClassInfo(ClassInfo); 
 uint getCampusType() const; //获取函数 
 uint getBuildID() const; 
 uint getRoomID() const; 
 uint getRoomType() const; 
 uint getSeats() const; 
 uint getOrderStatus() const; 
 uint getOrderCnt() const; 
 uint getClassCnt() const; 
 vector <OrderInfo> getOrderInfo() const; 
 vector <ClassInfo> getClassInfo() const; 
private: 
 uint m_campusType = 0; //校区 
 uint m_buildID = 0; //楼号 
 uint m_roomID = 0; //教室号 
 uint m_roomType = 0; //教室类型 
 uint m_seats = 0; //座位数 
 uint m_orderStatus = 0; //预约状态 
 uint m_orderCnt = 0; //预约数 
 uint m_classCnt = 0; //课堂数 
 vector <OrderInfo> m_orderInfo; //预约信息数组 
 vector <ClassInfo> m_classInfo; //课堂信息数组 
}; 

预约信息类:

主要用来存取每间教室的一条预约信息,含有预约时间、预约账号、预 6 约者姓名及电话等基本信息,提供构造函数进行初始化,提供获取函数用于 获取私有成员。

class OrderInfo 
{ 
 friend ostream& operator<< (ostream &, const OrderInfo&); 
public: 
 OrderInfo() = default; 
 OrderInfo(const classTime &time, const string &ID, 
 const string &name, const string &phoneNum) : m_time(time), 
 m_ID(ID), m_name(name), m_phoneNum(phoneNum) { } 
 string getID() const; 
 classTime getClassTime() const; 
 string getName() const; 
 string getPhoneNum() const; 
private: 
 classTime m_time; 
 string m_ID = ""; 
 string m_name = ""; 
 string m_phoneNum = ""; 
}; 

上课信息类:

用来存取当前教室的一条上课信息,如上课时间、上课老师姓名、ID。

class ClassInfo 
{ 
 friend ostream& operator<< (ostream &, const ClassInfo &); 
public: 
7 
 ClassInfo() = default; 
 ClassInfo(const string &teacherName, const string &teacherID, uint 
sumClassCnt, vector< classTime > &classTime) 
 :m_teacherName(teacherName),m_teacherID(teacherID), 
m_sumClassCnt(sumClassCnt), m_classTime(classTime) {} 
 string getName() const; 
 string getID() const; 
 uint getSumClassCnt() const; 
 vector<classTime> getClassTime() const; 
private: 
 string m_teacherName = ""; 
 string m_teacherID = ""; 
 uint m_sumClassCnt = 0; 
 vector< classTime > m_classTime; //三元组 (课时周,周,节) 
}; 

查看信息:

查看每座楼的所有教室基本信息,如教室号、教室类型、座位数、预约 数、课程数。查看每个教室的详细信息,包括基本信息、预约信息、上课信 息。 修改信息: 对某个教室的信息进行修改。 修改教室: 可增加、删除一个教室。

增加管理员: 增加一个管理员账号并存储。

增加上课信息: 8 为某个教室增加上课信息。 统计使用情况: 用于统计各类教室的使用率情况。 查询空闲教室: 普通用户可通过输入课时时间来查询某号楼所有的空闲教室,同时可按 照座位数、教室类型进行筛选。 预约空闲教室: 普通用户可通过输入课时时间来预约教室、如果预约时间该教室有课或 已有预约将预约失败。

调试分析

问题 1:程序所有功能都集中一起。

解决:增加用户权限,分为管理员和普通用户。管理员需要密码登陆,并对 其进行校验,可对教室信息进行直接管理维护。对于普通用户仅开放预约及 查询教室功能。

问题 2:预约无校验功能。

解决:为系统添加时间属性、采用课时时间的方式对预约信息、上课信息进 行时间管理。预约时可检测是否当前时间已被上课或预约占用。

问题 3:交互逻辑使用不便。

解决:改进交互逻辑,提供跳转功能、选择错误处理。 程序改进: 1. 改进管理员对教室进行维护的操作逻辑,使得操作更加方便。 2. 增加真实时间、自动对已过期的预约进行删除。 3. 采用更为合理的信息管理方式、使教室信息管理更加高效易行。 4. 增加用户更多功能,如查询自己的预约、删除自己的预约。 5. 增加程序鲁棒性。 6. 改进交互。

 测试结果

管理员功能列表如下图 

查询教室详细信息如下图

普通用户界面如下图

查询空闲教室如下图

预约空闲教室(预约成功)如下图

预约空闲教室(预约失败)如下图

如需源码请后台私信或添加QQ3203499787

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小A远离BUG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值