# 教室管理系统
# 一、概要设计
程序运用面向对象编程思想进行设计。核心有教室类、预约信息类、上课信息类。
教室类:
成员:校区号、教学楼号、教室号、教室类型、座位数、预约状态、预约数、预约信息、上课数、上课信息。
函数:默认构造函数、成员获取函数、成员设置函数。
预约信息类:
成员:课时时间、学号/教工号、姓名、电话。
函数:默认构造函数、构造函数、成员获取函数、重载流运算符。
上课信息类:
成员:教师姓名、教工号、总上课次数、上课时间。
函数:默认构造函数、构造函数、成员获取函数、重载流运算符。
课时时间类:
成员:课时周、周、节
函数:重载相等、不等、流运算符
程序结构图如图1所示。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/5920e44ed102dc8ff19edd77b8c6bedb.writebug)
图 1 程序结构图
# 二、运行环境
- 硬件环境
- 处理器:Intel Core i7-6500U CPU @ 2.50GHz 2.59GHz
- 内存:8.00GB
- 系统类型:64位操作系统,基于x64的处理器 软件环境:
```c++
Windows 10
```
# 三、开发工具和编程语言开发工具:
```c++
Microsoft Visual Studio Community 2017
```
编程语言:
```c++
C++11
```
详细设计教室信息类: 该类封装有教室的基本属性和方法,用于存储每个教室的信息集合及修改其中的信息,构成教室管理系统的核心。
```c++
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);
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; //课堂信息数组
}
;
```
预约信息类: 主要用来存取每间教室的一条预约信息,含有预约时间、预约账号、预约者姓名及电话等基本信息,提供构造函数进行初始化,提供获取函数用于获取私有成员。
```c++
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。
```c++
class ClassInfo {
friend ostream& operator<< (ostream &, const ClassInfo &);
public:
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;
//三元组 (课时周,周,节)
}
;
```
查看信息: 查看每座楼的所有教室基本信息,如教室号、教室类型、座位数、预约数、课程数。查看每个教室的详细信息,包括基本信息、预约信息、上课信息。修改信息: 对某个教室的信息进行修改。
修改教室: 可增加、删除一个教室。
增加管理员: 增加一个管理员账号并存储。
增加上课信息:
为某个教室增加上课信息。
统计使用情况:
用于统计各类教室的使用率情况。
查询空闲教室:
普通用户可通过输入课时时间来查询某号楼所有的空闲教室,同时可按照座位数、教室类型进行筛选。
预约空闲教室:
普通用户可通过输入课时时间来预约教室、如果预约时间该教室有课或已有预约将预约失败。
# 四、调试分析
问题1:程序所有功能都集中一起。
解决:增加用户权限,分为管理员和普通用户。管理员需要密码登陆,并对其进行校验,可对教室信息进行直接管理维护。对于普通用户仅开放预约及查询教室功能。
问题2:预约无校验功能。
解决:为系统添加时间属性、采用课时时间的方式对预约信息、上课信息进行时间管理。预约时可检测是否当前时间已被上课或预约占用。
问题3:交互逻辑使用不便。
解决:改进交互逻辑,提供跳转功能、选择错误处理。
程序改进:
改进管理员对教室进行维护的操作逻辑,使得操作更加方便。
增加真实时间、自动对已过期的预约进行删除。
采用更为合理的信息管理方式、使教室信息管理更加高效易行。
增加用户更多功能,如查询自己的预约、删除自己的预约。
增加程序鲁棒性。
改进交互。
# 五、测试结果
管理员功能列表如下图2。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/1f3293a7fb8f9867b9bd4bef15d9049a.writebug)
图2 管理员功能列表 查询教室详细信息如下图3。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/5a08d1eb05434591716b7c433b5fc299.writebug)
图3 查询教室详细信息 普通用户界面如下图4。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/e8e0ee187264121bd6e33b85509ecd8a.writebug)
图4 普通用户界面查询空闲教室如下图5。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/fef96b2807f2521af1293d4f71345925.writebug)
图5 查询空闲教室预约空闲教室(预约成功)如下图6。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/f402f03291f5c76c479793b4abcf18aa.writebug)
图6 预约空闲教室(成功)预约空闲教室(预约失败)如下图7。
![](https://www.writebug.com/myres/static/uploads/2023/2/7/34fd2287205c95f9b47f8b6b72e10f15.writebug)
图7 预约空闲教室(失败)
# 六、参考文献
Deitel.C++大学基础教程(第五版)[M]. 北京: 电子工业出版社,
沈学东等. C++面向对象程序设计实用教程[M]. 上海: 上海交通大学出版社,2012.
谭浩强等. C++程序设计 [M]. 北京: 清华大学出版社, 2011.
Stanley B.Lippman等. C++ Primer中文版[M]. 北京:电子工业出版,2017.
Bjarne Stroustrup. C++程序设计语言[M]. 北京:机械工业出版社,2016.
# 七、心得体会
本次的OOP课程设计在19周,赶上各种考试,在时间上很是紧迫。初看题目时想了好久,由于这是一个稍大的系统,不仅要从面向对象思想上去思考代码实现,更要联系现实从
没有合适的资源?快使用搜索试试~ 我知道了~
基于c++设计的(控制台)教室管理系统【100011542】
共13个文件
cpp:4个
h:4个
txt:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 74 浏览量
2023-04-04
09:22:52
上传
评论
收藏 738KB ZIP 举报
温馨提示
主要功能 查看信息: 查看每座楼的所有教室基本信息,如教室号、教室类型、座位数、预约数、课程数。查看每个教室的详细信息,包括基本信息、预约信息、上课信息。 修改信息: 对某个教室的信息进行修改。 修改教室: 可增加、删除一个教室。 增加管理员: 增加一个管理员账号并存储。 增加上课信息:为某个教室增加上课信息。 统计使用情况:用于统计各类教室的使用率情况。 查询空闲教室:普通用户可通过输入课时时间来查询某号楼所有的空闲教室,同时可按照座位数、教室类型进行筛选。 预约空闲教室:普通用户可通过输入课时时间来预约教室、如果预约时间该教室有课或已有预约将预约失败。
资源推荐
资源详情
资源评论
收起资源包目录
100011542-基于c++设计的(控制台)教室管理系统.zip (13个子文件)
orderinfo
LICENSE 1KB
CMS
stdafx.h 3KB
Classroom.cpp 3KB
Classroom.h 3KB
Config.h 525B
Function.cpp 20KB
CMS.cpp 200B
stdafx.cpp 308B
targetver.h 370B
Data
ClassroomInfo.txt 436B
AdminAccount.txt 50B
课程设计报告.pdf 794KB
README.md 9KB
共 13 条
- 1
资源评论
神仙别闹
- 粉丝: 2680
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功