基于c++的教室管理系统 完整代码可直接运行毕业设计

文章介绍了一个使用C++11实现的教室管理系统,采用面向对象编程思想,包括教室类、预约信息类和上课信息类。系统支持查看、修改教室信息,增加管理员,预约和查询空闲教室等功能。针对调试中发现的问题,如权限管理、时间校验和交互逻辑,进行了改进和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完整代码:

https://download.youkuaiyun.com/download/weixin_55771290/87900708

简介:

程序运用面向对象编程思想进行设计。核心有教室类、预约信息类、上课信息类。

教室类:

成员:校区号、教学楼号、教室号、教室类型、座位数、预约状态、预约数、预约信息、上课数、上课信息。

函数:默认构造函数、成员获取函数、成员设置函数。

预约信息类:

成员:课时时间、学号/教工号、姓名、电话。

函数:默认构造函数、构造函数、成员获取函数、重载流运算符。

上课信息类:

成员:教师姓名、教工号、总上课次数、上课时间。

函数:默认构造函数、构造函数、成员获取函数、重载流运算符。

课时时间类:

成员:课时周、周、节

函数:重载相等、不等、流运算符

程序结构图如图1所示。

图 1 程序结构图

二、运行环境

  • 硬件环境

  • 处理器:Intel Core i7-6500U CPU @ 2.50GHz 2.59GHz

  • 内存:8.00GB

  • 系统类型:64位操作系统,基于x64的处理器 软件环境:

Windows 10 

三、开发工具和编程语言开发工具:

Microsoft Visual Studio Community 2017 

编程语言:

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); 
	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;  //课堂信息数组
}
;

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

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: 
	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。

图2 管理员功能列表 查询教室详细信息如下图3。

图3 查询教室详细信息 普通用户界面如下图4。

图4 普通用户界面查询空闲教室如下图5。

图5 查询空闲教室预约空闲教室(预约成功)如下图6。

图6 预约空闲教室(成功)预约空闲教室(预约失败)如下图7。

图7 预约空闲教室(失败)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员奇奇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值