1. 引言
随着信息技术的发展与进步,各行各业都在加快自己信息化的脚步。而作为高校来说最重的一项任务就是教学,如何进行信息化的教务管理也就成了迫在眉睫的任务。而教务管理中很多都是围绕着如何管理课程进行的,如何合理地安排课程,也就成为了重中之重。
目前信息化的课程管理系统已经层出不穷 [1] [2],在国外由公司开发的产品像比较著名的Blackboard 和WebCT (已被Blackboar并购),其中教师可以管理课程、制作课件、布置作业和交流沟通等,学生可以自主学习。还有由加拿大Canada Desire2Learn公司开发的Desire2Learn课程管理系统,支持学校教学的各种需求。但它们是商品软件,需要每年按使用人数和年度付费,这也限制了它的深入推广。当然也有一些开源的课程管理系统,比如ATutor,是一种基于Web的开源学习内容管理系统;Claroline,是由比利时鲁汶大学于2000年开发的一个免费的开源的学习管理系统;Sakai,是由美国密西根大学、斯坦福大学、印第安纳大学和麻省理工学院于2004年共同发起的一个协同学习的开放源码环境;Dokeos,是一个课程管理系统和学习管理系统软件,由一家比利时公司组织和开发的开源平台;Moodle,是由澳大利亚的马丁•多格玛斯博士主持开发的开放源码的网络教育平台;Bodington,是由英国利兹大学开发的一个免费的开源的虚拟学习环境和学习管理系统。它们各自有各自的优势和适用范围。总体来说由于国内外教育的一些差异,很多并不适合国内的高校课程管理。
国内课程管理系统的发展较晚,但也取得了丰硕成果 [3] [4] [5] [6] [7]。许多公司也开发出了相关的课程管理系统,比如EDUS,它是针对培训机构的培训计划而设计的;又如ELP,它是基于企业的一种学习平台;还有其他一些基于云的管理平台等等。同时许多国内学校也自主开发了课程管理系统,建立了课程管理网站,并在提高学校教学管理效率方面取得了一定的成效。但这些课程管理系统在某些方面还不够完善,比如目前许多课程管理系统重形式,轻实践,使得系统在实用性、稳定性等大打折扣。另外由于很多公司开发人员缺少教学实践经验,对课程管理的实质不明了,很难适应学校的实际需求。因此,本文从高校实际需要出发,设计实现了一个符合老师和学生需求的课程管理系统。
2. 课程管理系统的需求分析
为了适应高校课程管理的需要,更好的实现课程管理的信息化,要分析课程管理的实质,明确课程管理系统是谁在用、为什么用、用来干什么,然后在课程管理研究的基础上,提出了适合高校使用的课程管理系统方案。
课程管理总体可以分为三个功能模块,分别为管理员模块、学生模块、老师模块。其中管理员模块下面划分为学生信息子管理、老师信息子管理、课程信息子管理,每个子模块都实现对相应信息的增加、修改、删除、与查询,这其中课程管子理模块中还要包含对课程的自动排课功能。在老师模块中,包含对课表的查看和对学生信息的查询,以及对成绩的管理等。在学生模块中包含查看个人课表,进行选课及成绩查询等,如图1所示。

Figure 1. Functional module diagram of course management system
图1. 课程管理系统功能模块图
2.1. 管理员模块功能
管理员有系统的信息配置功能,可以对教室、班级这些基本信息进行查看,添加,修改等。
管理员对于老师信息的管理和对学生信息的管理是类似的,作为管理员可以查看所有老师或学生的信息,也可以根据查询条件查看指定老师或学生的信息,并且可以修改指定老师或学生的信息,删除指定老师或学生的信息,还可以添加老师或学生信息。
管理员还可以查看所有课程的信息,也可以根据查询条件查看指定课程的信息,并且可以修改指定课程的信息和删除指定课程的信息,还可以有添加课程信息。除此之外,管理员也可以查看课表,包括班级课表、老师的课表或学生的课表的查看。
管理员模块部分还有一个最重要的功能是要在其中实现自动排课,管理员选择学期之后,系统自动将符合条件的课程安排上课时间与教师。自动排课需要有时间限制,在每年八月之后,本学年上学期的课就无法进行的排课了,在每年的二月之后本学年下学期就无法进行排课了。
2.2. 老师模块功能
老师可以查看老师教授的课程,可以针对某课程进行学生成绩管理,在成绩管理页面显示选择本课程的所有学生,可以选择学生进行某学生的成绩录入、查看、修改等,在点击确定提交按钮之后无法再修改成绩。老师可以查看全校的教室和教室的容量,方便进行调补课安排;可以查看自己的课表和班级的课表,查看个人资料并修改个人资料等。
2.3. 学生模块功能
学生可以进行按要求进行选课,查看自己的选课情况,退选课程,查看班级的选修和必修课等。学生可以查看全校的教室和教室的容量,方便学生进行自习安排。学生还可以查看自己的课表,查并修改个人资料等。
3. 课程管理系统的设计
在课程管理系统的设计中,最重要的也是最难的一部分就是如何进行课程安排,这里采用基于优先策略的排课方案,既能按各类要求排课,又能达到较高的排课效率。
3.1. 基于优先策略的排课方案设计
教务系统中如何排课也有许多的研究及策略 [8] [9],这里采用一种较为快速的,基于优先策略的排课方案。排课流程如图2所示。

Figure 2. Flow chart of course scheduling by priority strategy
图2. 按优先策略排课流程图
首先查询所有的课程,根据页面传递的“学期”条件进行课程集合数据筛选,得到要求学期的课程数据集合;然后查询所有的班级集合,对班级集合进行循环,根据当前的班级对课程集合数据进行筛选得到当前班级课程数据集合;之后循环取出当前班级课程数据集合,根据课程类型的“必修”和“选修”条件对课程集合数据进行筛选得到,必修课程集合与选修课程集合,然后分别对两个课程集合中的每一个课程数据进行授课学时提取,然后计算出每周需要上课的节数(如4节、3节、2节等),将课程数据按每周上课节数得到的优先级封装成一个带有优先级的课程实体,然后根据课程优先级从高到底,将必修课和选修课按优先级分别排序,得到降序排列的优先级课程集合;最后先后对必修和选修两个有序优先级课程集进行排课,依次取出集合中的优先级课程,根据优先级知道优先级课程的每周上课节数,然后根据不同的上课节数对课程进行相应的限定,比如每周4节的课程需要排在两天。排课时先对课程做班级判断,是否能在班级中找到位置,判断成功则对课程做老师判断,在课程安排的上课时间,老师是否无课,判断成功后对教室做判断,在课程这个上课时间,教室是否无课,判断成功后则该课程排课成功,更新课程的上课时间属性和教室属性的内容,更新本班级的时间表,老师的时间表,教室的时间表。
在班级排课的过程中,如果出现因为本课程的老师已经在这个时间点有课程,无法安排在班级中的课程(简称老师冲突),则将班级时间表中的这个位置暂时标记为有课,该课程重新排课;如果课程还是无法在班级时间表中排课,则将无法安排的课程放到之前的有序优先级课程集的第一个,得到重新排序的有序优先级课程集,重新开始整个班级排课;之后如果还是产生了老师冲突,将产生冲突的课程按该方法重新排课;其中需要有一个阀值来控制老师冲突产生的次数,否则会一直循环重排。当该课程进过多次循环回到这个位置,说明无法安排课程,排课结束。
3.2. 数据库设计
系统数据库表包括教室表、班级表、学院表、专业表、年级表、学期表、老师表、学生表、课程表、管理员表等。表之间的关系图如图3所示。
在所有的表中,课程表是比较重要的一张表。课程表存储系统的课程信息,课程的编号和课程的类型用于排课时作为约束条件;学院用于标识课程所属的学院;课程的容量用于学生在选课的时候进行限制;课程的选择人数在学生选课时增长,但是不能超过课程的容量;课程的上课时间在管理员使用自动排课以后系统添加用来标识上课的时间;开始上课的周数用于排课时作为约束条件;结束上课的周,用于排课时作为约束条件;课程面向的年级用于约束学生选课时的条件,并用于排课时作为约束条件;学期用于约束学生选课时的条件,并用于用于排课时作为约束条件;课程面向的班级用于约束学生选课时的条件。
3.3. 其他功能设计
其他功能按功能类型主要可以分为查看功能和管理功能,学生还可以进行选课功能。其中查看功能包括查看课程信息,查看教室信息,查看课表,查看个人资料等等。管理功能包括成绩管理,老师管理,学生管理,课程管理,配置管理,个人信息管理等。选课功能是指学生可以在有效时间内选择自己感兴趣的选修课;在在选课之后,学生也可以在有效时间范围内退选课程。这些功能基本上都可以通过对数据库数据的增删改查完成。
4. 课程管理系统测试
系统首页为登录界面,要求用户输入“用户名”,“密码”。登录用户分为管理员、老师和学生。如图4示:
4.1. 管理员界面
管理员登录后,左侧边栏设计为功能导航,右侧首页放置了进入老师管理、学生管理、课程管理和配置管理的功能按钮,下方是日历。如图5所示。
可以在页面上选择老师管理,课程管理,学生管理,配置管理等功能。如课程管理如图6所示。
如想进行自动排课,可以点击配置管理中“排课”功能,选择学期以后系统就可以按照图2所示的按优先策略进行自动进行排课了。
4.2. 学生界面和老师界面
学生登录后显示的是首页,首页放置了进入查看已选课程、选课、查看教室和查看课表等功能,如图7所示。老师登录后可以查看课程、查看教室和查看课表,以及给学生评分等,如图8所示。
5. 总结
本文结合实际排课需要,通过对规则的简化和按优先级组合,实现了一个高效的课程管理系统。但该系统还有许多值得改进的地方,比如排课策略可以加入人工智能的干预,使之更合理,更人性化,后续的研究中将更深入地研究更精准的排课方案及将系统扩展到整个教务的管理中。
基金项目
本文得到2020北京信息科技大学教改项目“基于OBE的数据结构教学方法改革”资助。