教学管理信息系统
1、实验内容:
大学同时开设多门课程。每门课程有一个主讲教师,有多名学生选修;一个学生可选修多门课程并获得相应的学分和成绩;上课的基本单位是"次"(一次 2 学时),每一次课都规定了上课时间和教室(这一规定更灵活,并不像本校现在的情形!)。
2、开发环境:
- 编程环境:VS 2017
- 编程语言:C#
- 辅助插件:DevExpress V18.2.3
- SQL 数据库:SQL Server 2008 R2
- DevExpress 下载地址:DevExpress Universal Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网
3、设计思路:

4、数据库表单:
4.1 学院表(表名:Collage):

4.2 专业表(表名:Major):

4.3 班级表(表名:Class):

4.4 教师基本信息表(表名:Teacher):

4.5 学生基本信息表(表名:Student):

4.6 课程基本信息表(表名:Course):

如上图,对于 CStatus 列,课程的状态有:待审核、已通过、已排课、选课中、待开课、已开课、已结课。
Cload 列为本课程的容量,Cselected 列为本课程已选人数。(上图数据仅供测试,详细数据请看后文测试过程)
4.7 课程安排表(表名:CourseSchedule):

由于本题要求一门课的每次课都有规定的时间和地点上课,所以,对于每一次课(课时),都有一个课程安排记录。上图中,Clesson 列为本课程的第几次课时,Cweeks 为本学期第几周上课,Cweek 为周几上课,Csection 为第几节上课。
4.8 选课信息表(表名:Grade):

如上图,Gtype 为成绩类型,Gdata 为成绩时间,Grade 为成绩,GgradeNormal 为平时成绩,GradeTest 为考试成绩。
5、软件开发界面:

6、完整选课过程:
注:本节部分摘自实验报告,其中学生姓名为真实信息,所以在本文中添加马赛克。
6.1 教师申请开通课程
在本系统的设计中,课程要由老师来申请创建。教师端进入课程管理界面,可以点击"申请开通课程"按钮,添加一门新的课程。假如"王老师"申请开通一门课程"计算机网络",则"王老师"需要填写课程的相关信息,其中课程号是不允许自己设置的,保证唯一性。填写完毕,点击"提交申请"按钮,即可向教务处提出申请。(默认开课年级为大三上,课时为 5 节,如有需要可自行修改)如下图所示:

6.2 教务处管理员审核通过:
老师申请开通一门课程后,教务处管理员有权审核通过或者拒绝通过。如下图所示,刚申请的"计算机网络"课程的状态是"待审核",界面上也只有"通过"和"拒绝"按钮可访问。管理员点击"通过"按钮,该课程即审核通过。

6.3 教务处管理员安排课程
课程通过后,管理员需要根据教学楼等资源,对课程安排课表。本系统以课时为单位,更灵活,操作过程如下图所示:

6.4 教务处管理员开启选课:
该课程的课表安排完毕,则课程状态变为"已排课"状态,即可以开启选课了。管理员将该课程开启选课,如下图所示:

6.5 学生选课:
这时,学生端就可以进行选课操作了。如下图所示,当前学生端登录的学生角色是"大三"的学生,其可选课程也只有当前学期可选。在可选课程栏里选中一条课程,点击"添加至已选课程",如果没有时间冲突,并且课堂容量充足的前提下,就完成了选课操作,在左侧"已选课程"栏就能够看到这门课程。当遇到时间冲突,或者容量不足的时候,自动提示相应的信息,如下图所示:

6.6 学生选课结束:
学生根据时间冲突做调成,最终完成了选课操作,如下图所示:

6.7 教务处管理员关闭选课
选课结束时间到,教务处关闭选课通道,如下图所示。

6.8 课程开始上课
然后就可以安排学生上课了,如下图所示:

6.9 教师查询课表、课堂信息
教师需要上课,也需要知道每节课的上课时间和地点,即课表,如下图"我的教学任务"栏表格所示:

同时,教师上课也需要知道哪些学生选修了我的课程,如下图所示,教师可以查看自己的课程对应的学生信息。

6.10 学生查询课表
同时,学生也需要知道每门课的上课时间和地点。下图课表栏默认显示的是当前周的课程,下图显示的是自主查询"第七周"的上课信息。其中"课次"为本门课程的第几个课时,"星期"为本周的星期几上课,"节次"为第几节课上本门课。

6.11 结课,教师录入成绩:

6.12 教师提交成绩
成绩录入完毕,点击提交按钮,即可提交本门课程的所有成绩。成绩只可以提交一次,提交后课程状态变成"已结课"状态,就不允许修改成绩了。如下图所示:

6.13 学生查询成绩

7、其他界面
补充第 6 节未提到的页面
7.1 登录界面:

如上图,共有三种角色,分别是:学生、教师和管理员。其中学生的登录账号和密码均为学号,教师的用户名和密码均为职工号,管理员的账号和密码均为"admin"。
7.2 教师信息管理界面:

7.3 学生信息管理界面:

7.4 课程信息管理界面:

7.5 选课操作:

8、笔者按:
个人觉得,本次数据库系统综合实验,最好能够自己独立完整个项目。笔者使用了.NET 的第三方插件 DevExpress,试用期 30 天,足够在这期间完成整个项目。其中学习摸索 DevExpress 的插件,大概花费了三四天时间吧。
9、开发环境说明
- 本项目使用 VS 2017 开发,开发语言:C#;
- SQL Server 为 2017 版本:V17.9.1;
- 【重要】插件:DevExpress。插件官网:DevExpress控件中文网 - UI控件,报表图表,.NET界面控件,VCL界面控件,WinForms界面控件,WPF界面控件,DevExpress中文官网。
- 不安装 DevExpress,无法打开项目!!!!!!
- 不安装 DevExpress,无法打开项目!!!!!!
- 不安装 DevExpress,无法打开项目!!!!!!
10、安装教程
-
首先将【SQL Server】文件夹下的两个数据库文件,导入到 Microsoft SQL Server 服务器中;
-
然后将项目代码中的与数据库连接相关的部分的用户名修改为自己的 SQL Server 服务器的用户名
如 FormLogin.cs 项目中的代码:用户名在哪儿?如下图所示: