基于B/S架构的机房排课系统设计与实现
2016-01-14王丽华汪海林朱子轩龙润利
王丽华 汪海林 朱子轩 龙润利
摘要:该文针对机房手工排课效率低下问题,采用计算机模拟手工排课法解决机房排课问题,改变了传统的手工排课方式。实践结果表明,这种改进不仅提高了工作效率,也提高了机房排课的科学性。
关键词:机房排课;BIS架构;Ajax;ASP
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)19-0067-03
1概述
合肥工业大学计算机基础实验室承担全校计算机基础课的实验教学任务,承担基于网络(非计算机类)课程的实验教学任务,所开设的课程种类繁多。由于各个机房硬件环境不同,软件环境也存在很大差异。多年来机房排课一直以传统的手工方式操作,排课时教师必须亲临现场,不仅浪费了大量的人力资源,还容易产生冲突引发教学事故。
高校的机房排课问题实质上是一个资源竞争问题,在机房排课过程中要全面考虑教师、课程、班级、机房和时间等多方面的因素,只有统筹兼顾,才能排出既符合教学规律、又满足各方面要求的课表,因此排课问题在程序设计中是一个比较复杂的问题。
近几年随着研究的不断深入,国内外的研究专家已经开发出各种类型的机房排课系统。由于各个学校的管理模式不同,约束条件也复杂多变,因此几乎所有的机房排课系统都是以各个高校的实际情况作为参考对象,没有一个通用的机房排课系统。因此运用现代化手段进行科学管理,制作一套符合我校实际情况的机房计算机自动排课系统迫在眉睫。
2机房计算机自动排课系统设计
2.1机房排课涉及因素
高校的机房排课涉及很多因素,需要考虑学生学习效果、学生有空的时间段、教师有空的时间段等。机房排课主要存在六个因素。课程编号、课程名称、周学时、课程的优先级。教师编号及姓名,教师可以对上课时间提出自己的特殊要求。班级编号、学生人数,班级学生人数不能超过机房的机位数。机房排课涉及学年、学期、周、天、时段、节次等。机房的软硬件环境是否符合课程需求。机房的利用率。排课的时间问题。
2.2约束条件
机房排课的约束条件是课程、机房、班级、教师、学生不能在同一时间发生冲突。根
据学校实际情况,机房排课与教室不同,一个教室在一个时间段只能上一门课,而机房却可以上多门课;机房的可用周跨度要满足课程的面授周跨度;机房的可用节次要满足课程的上课节次要求,本系统将一天划分为12个时间片,即12节课。上午4节课,下午4节课,晚上4节课。某些特定的时间段(周日、国家法定的节假日、校运动会)机房不能排课,如果需要排课只能由admin用户去排课。另外,排课要根据每门课程的特点,设置排课的优先级,通常一些需要记忆的必修课(例如:大学英语网络化教学等课程)要尽量安排在早上,下午尽量安排选修课,操作类的课尽量安排在晚上。课程设计属于集中实践环节,一般放在学期末集中几周时间排课。
3模拟手工排课法解决机房排课问题
3.1基于优先级的机房排课算法的设计原则
课表编排是一个时间、教师、学生、机房软硬件环境、机房机位数五者的组合规划问题。在时间、教师、学生、机房软硬件环境、机房机位数五维关系中,时间是决定排课是否发生冲突的首要因素。根据课程优先原则,确定每类课程的优先次序,系统自动控制让优先级高的课程的任课教师先排课,具体做法是根据课程优先级的高低,将任课教师划分为不同的等级的用户。
3.2基于优先级算法描述及实现方案
本系统在设计算法时,为了降低课程调度算法的复杂性,采用了基于优先级的算法。优先安排某一类课程先排课,实现方法是分时间段对不同等级的教师开放,让优先级高的教师先排课,即运用运筹学中分层规划的思想,把排课问题在数学上看作为一个时间、教师、学生、机房软硬件环境、机房利用率五维空间的调度问题,以教学计划和各种特殊要求为约束条件进行组合规划,采用了化整为零的思想,有效地抽象了实际排课问题,缩小了求解问题的空间。如图1所示,系统对等级为3的用户开放。
在排课算法运行时,需要在课程信息链表中的课程链表中找到合适的机房资源(即哪个机房能够开设该门课程的实验),只有能够开设该门课程实验的机房才允许被申请。该算法的求解步骤是从某一问题的初始解出发:
While约束条件do
求出可行解的一个解元素;
由所有解元素组合成问题的一个可行解。
3.3机房排课问题的数学模型
3.3.1算法设计
在算法的设计过程中,主要使用机房信息数据结构和课程信息数据结构,并采用结构体形式,两者都由系统数据库自动生成。机房信息数据结构主要用来存储机房信息,包括主键、机位数、机房软硬件环境、可用周次、节次等信息。课程信息数据结构主要用来存储对应课程的信息,包括主键、班级、课程、申请周次、申请节次等。排课时首先初始化机房信息链表和课程信息链表,然后由课程信息链表开始循环求解,针对课程信息链表的每一个结点,根据算法准则在机房信息链表中进行循环查找,找到合适的机房资源,并且显示出来,反之则不显示。排课时我们先对时间片进行遍历,从而获得每个时间片的ID,借助于鼠标直接对时间片进行排课操作。
3.3.2算法的求解步骤
3.3.3数学模型
机房教学课表编排过程涉及的实体集合如下:
课程集合:L={L1,L2,…,Li;},Li表示第i门课程。
班级集合:C={C1,C2,…,Ci,},Ci表示第i个班级。
教师集合:T={T1,T2,…,Ti;},Ti表示第i位教师。
时间集合:Q={Q1,Q2,…,Qi},Qi表示第i个时间段。
机房集合:R={R1,R2,…,Ri},Ri表示第i个机房。
上述五个因素的笛卡尔积L×C×X T×Q×R就构成了排课问题的解空间,而排课问题就是在这个解空间中找到一个满足各种约束条件的解。在排课之前,根据教学计划和教学任务安排,课程一班级一教师的对应关系已经明确,所以关系所构成的二分图的最大匹配问题。排课算法也就简化为班级、教师、机房三方面数据在具有共同的空闲时间片前提下的排列组合问题,三者关系在三维空间上的交点P表示一个排课组合的选择,即可能的教学安排。排课遵循这一约束规则,在三维空间搜索空闲的时间片集合,该集合就是排课问题的解。
课表实际上是一个三维表,一周的每一天是列Y,每天的上课时间是行X,每学期的总周数做Z轴,组成的三维数据库系统。但由于学校服务器上没有三维数据库的运行环境,所以在实现时,需要用二维表做字段冗余以模拟三维表的操作。
4.系统实现
4.1用户排课操作关键技术
为了方便操纵页面中的各种对象,以及交互效果,处于安全性和跨平台的考虑,机房排课客户端操作运用Javascript技术。排课时教师只要用鼠标点击、拖动技术即可完成全部排课工作,无需输入汉字。其关键技术是通过获取用户id,(函数构建function funClick(username){})进而判断满足用户需要的机房,并从数据库中提取相应机房的信息,如果机房不为空,并且满足课程所需,在相应的时间段内通过用鼠标点击即可进行排课,(函数构建function chk(id,zc){1)此时我们将课表看成是一个二维表,一周的每一天是列Y,每天的上课时间是行X,通过对行列的遍历,(函数构建function chksq(id,zc){})获取课程名称、班级名称,username赋值给单元格的innerHTML(函数构建function funSetCellData(th,roW,col,zc){})。
在课程调度方面,关键技术主要是对单元格的拖动,(函数构建function DragedTable(tableld){})点击(onmousetup)即可获得目标单元格的内容,显示图层,获取过渡图层,同时计算中间过渡层的位置,并且赋值(函数构建function showDiv0{});鼠标拖动(onmousemove),计算鼠标的位置,是否在某个单元格的范围之内,松开鼠标(onmousedown),交换文本(函数构建functiondragDiv(){}),同时清除原单元格和目标单元格的样式,并且清除提示图层(函数构建function hideDiv(){})。
考虑到在同一个时间段可能有很多教师通过远程网进行排课,为了减少了数据传输量,提高Web响应速度,采用Ajax技术,这样用户提交信息时不必刷新整个页面,而是可以进行并发操作,在不重载页面的情况与web服务器交换数据,大大减少通讯的数据量,加快系统的反应时间,给用户带来全新的感受。
4.2冲突检测
为了避免冲突首先要保证机房资源的正确分配,教师申请机房时,先创建教学任务,程序自动判断能开设该课程的机房是否存在,存在则显示,反之则不显示。其次,就是检测冲突,方法是“先判断后安排”,即先对机房课表的时间片进行遍历,从而获得机房课表中每个时间片的ID,当ID非“0”时才能排课,在课表编排过程中无需回溯,进而能够从根本上切实保证编排出的课程表绝对没有冲突。
5.研究的主要成果
5.1主要功能模块
系统的主要功能模块如图2所示。系统ER图,如图3所示。
5.2主要功能模块的实现
5.2.1教师排课
系统设计时将一天划分为12个时间片,每个时间片为一堂课。上课节次与星期X形成一张二维表,教师首先创建一个教学任务,程序自动判断教师申请的课程允许在哪个机房使用,并且显示出能够开设该门课程的机房,反之则不显示。教师用鼠标选择机房,点击创建的任务,点击相应的时间段,即可完成排课工作。如图4所示:
对于同等级别的用户,系统采用先来先服务的方式工作,系统自动进行冲突检测。
5.2.2排课结果
教师排课结束,系统自动生成教师个人的上机安排表以及全部机房上机安排表。匿名用户可以直接查询上机安排表。教师查询上机安排表,选择机房空闲的时间段自主排课,实验人员查询上机安排表为后续的实验课程做好充分的准备工作,学生查询上机安排表选择机房空闲的时间段零星上机。
5.2.4课表调度
对于教师已申请的课表,admin用户有权进行调整。选择周次,选择机房,用鼠标拖动课程到所需要的位置,如图6所示粉红色为拖动后的位置,点击保存按钮即可。
6结束语
本系统在合肥工业大学计算机基础实验室正式投入使用已经四年多了,系统运行稳定,显示的结果正确,其设计目标得以实现。它对于稳定实验教学秩序,提高实验教学质量,起到十分重要的作用。系统通过静态设置任务的优先级,划分时间片,动态遍历相关资源的算法,同样适合于其他需要安排时间表的场合,例如非机房实验室的排课,会议室的安排等。