基于计算机的自动排课系统
2020-12-11吴锡雄
吴锡雄
(广东石油化工学院 广东 揭阳 522000)
引言
在当今社会下,素质教育在学校不断地深化,学校对学生的实践能力越来越重视,学校的课程越来越多。在以前互联网并不发达的时代中,排课就只能通过人工方式编排。但是,随着各类学科范围的不断扩大,各个院系的学科科目逐渐增多,导致很多教师、课程管理员不能在短时间内制定合理高效的排课计划,采用计算机为手段来完成之一繁重任务,使课表既符合科学规律,充分利用现有资源,最大限度发挥作用。
1 排课系统的设计方案
1.1 专业信息模块
录入专业信息,主要包括该专业所上的课程以及学时长,比如高数(98),线代(60)....代表高数98个学时,线代60个学时
1.2 教师信息模块
主要包括录入教师所能授课得的科目,以及在职状态。标记离职即不为该教师安排新的课程,但是该教师之前的授课任务仍保留在数据库中,以方便安排别的老师进行任务交接,教师复职后可以在系统中标记复职,教师离复职信息都会在保留在系统日志中。该部分的另外一个功能是查询教师的上课任务
1.3 班级模块
录入该班级名称,如果是多班一起上课,则表示为,如:电子17-1,电子17-2,然后录入班级所属专业名称,点击自动排课,即根据年级的上课任务自动排好一学期所有课程,实现课表合理,规律,使所有课程均匀分布在整个学期中,由于考虑到有的专业课较多,以及大学生课程不应该过于紧密,所以课表按单双周的规律排布,保证大学生有较宽松的课外时间,排课完成后,可以查询该班级的课表
1.4 功能教室模块
录入功能教室名称,人数容纳数量,位置,比如:数电实验室东804,提交后,教师即可根据需要申请该教室的使用或者撤销该教室的申请,同时会更新到教师任务表以及班级课表中
1.5 日志模块
主要记录教师离职复职信息以及其他保留信息
2 排课系统的功能算法
大学排课系统主要能实现两个功能,第一个功能是根据上课任务以及每科目的学时,为全校所有班级自动分配教师,自动安排课表,保证课表合理。以单双周作为课表的周期性,保证课表的规律性,使课表容易记忆。第二个功能是教室预约功能(比如阶梯教室,实验室等),免去传统的教室管理员模式,使得教室使用更方便,该模块支持申请多班级上课,申请后,相应教师的任课表会自动更新,以及班级的课表也会自动更新。整个排课系统,以JavaWeb做后台,Mysql作为数据库,layUI做前端界面,后台使用了较新的服务器部署框架,Spring以及SpringMvc,数据库使用了Mybatis框架,该框架有高效开发,且支持事务处理,还可以预防sql注入等网络攻击,优点较多。
第一个功能的实现使用了排课算法,数据库关联表,数据库存储过程。(1)排课算法:一天5节课,把一周看成25,根据上课任务的总数n,生成n个1到25之间的随机数且不重复,由于一学期有17周,便以此类推到17周中,代表每周中,这些课时被占用,并且在排的过程中,每科目的学时会相应减少当减少到0时,就不再为该科目安排课程,排课一次后,遍历数组,如果课时剩余数量还大于0,则取1到50的随机数,将课表安排进第1和第2周中,以2周作为步长,以此类推到17周。(2)数据库关联表:有学生表,教师表,功能课室表,上课任务表,年级表,科目表。其中学生表与教师表之间是多对多的关系,以外键表相互关联,年级表和科目表之间是多对多关联。由于考虑到功能课室由教师申请,所以功能课室表与教师表关联。(3)数据库存储过程:在这个系统中,由于表的结构比较复杂,且数据量较大,考虑到数据库需要快速响应前端,需要减少与数据库通信次数,降低带宽占用量,所以采用了数据库存储过程。存储过程由于一般的数据库sql语句,在于其编译且存储在数据库服务器上,多条sql语句可编译为一个整体存放在数据库服务器上,通过一条命令就能启动数据库存储过程,相比于一般的多条sql语句组合,无形中减少传输的数据量,减少脚本语句的编译量,降低了带宽,提高了数据库系统的响应速度。
第二个功能则是教师预约模块,主要逻辑是,将每个功能教室的预约情况显示在系统前端上,以课表的表格的形式,已被申请的课时显示被占用,未被申请的课时显示未占用,每位老师,可以访问该前端页面,在网页上点击未被占用的格子进行申请,申请需要写入申请人,联系电话,以及上课班级,系统会根据这些信息,自动更新数据库,更新教师的任课表,以及更新班级的课表,如果其他教师想申请被占用的课时,可根据联系电话联系相应教师进行沟通,申请人可在网页上撤销申请。
3 总结
该自动排课系统具备了基本的查询和修改功能,以JavaWeb做后台,Mysql作为数据库,layUI做前端界面,能轻松自如地通过计算机对课表进行增删改查,既方便了师生对课表的使用,也很好地做到了有序管理整个学校以及学院的课表。