基于PHP+MYSQL教务排课系统的设计与实现
摘要:排课是高校教务管理中一项重要而繁琐的工作,针对于手工排课易出错,效率低等一系列问题,采用当前流行的b/s三层体系结构,将phpmysql数据库相结合,设计实现了教务排课系统。主要对该系统的系统功能模块、排课算法等做出了详细的论述。
关键词:phpmysql;教务排课系统
中图分类号:tp301.6  文献标识码:文章编号:1007-9599 (2011) 22-0000-02
academic scheduling system design and implementation based on php+mysql
gao wang
(wuhan institute of physical education school of sports science and technology,wuhan  430205,china)
abstract:scheduling in educational administration is an important and tedious work,for in the error-prone manual scheduling,efficiency and low range of issues,using the popular b/s three-
tier architecture,the php and mysql databases combination of design and implementation of the academic scheduling system.major system functions of the system,scheduling algorithms to make a detailed exposition.
keywords:php;mysql;academic course scheduling system
排课工作一直是高等院校教学管理中最基本的、最重要的工作。近年来,高等院校的招生规模不断扩大,如果采用过去的手工排课,费时费力且容易出错,其方便性,科学性难以保证。开发简单实用的教务排课系统已经成为满足教务工作高效管理的迫切需求。
一、php+mysql技术
php,是英文超级文本预处理语言hypertext preprocessor的缩写。php可简单地视为一种较流行的开放动态网页的程序语言,是一种服务器端的,嵌入到html中的脚本语言,是一种风格类似于c语言的超文本处理语言[1]。与其他的动态网页开发语言相比,php将自身程序嵌入到静态网页文件中去执行,从执行效率上看,要高于完全生成html标记的cgi;与客户端脚本语言javascript比较,因为php是在服务器端执行,所以可以充分利用服务器的性能;php
行引擎还会在内存中保留用户经常访问的php程序,正是由于这个原因,当其他用户再次访问驻留在内存中的程序时就不需要重新编译了,只要直接执行内存中的代码即可,这也体现了php的高效率[2]。正是由于这些特性,所以本系统采用php作为服务器端脚本语言。
mysql是一个数据库管理系统软件,是一种比较流行的关系型数据库。和其他数据库管理系统(oraceldb2sql server等)相比,mysql具有小巧、功能齐全、查询快捷,并且完全免费使用等特点[3]
所以,采用基于php+mysql技术开发的教务排课系统,具有性价比高、灵活、使用广泛和有良好支持的特点。
二、教务排课系统的具体实现
(一)功能模块
教务排课系统的功能模块总体上可分为权限管理、编辑信息、数据导入导出、课表查询、报表生成与打印、智能排课、帮助七个模块,如图1模块功能图所示。
1功能模块图
各个模块功能如下:(1)权限管理:系统管理员可增加、删除用户(包括管理员),并设置用户权限,也可修改自己的密码。普通用户只能修改自己的密码。(php调用mysql数据库2)编辑信息:可删除所有信息,以便重新输入信息;可输入系别、班级、课程、教师、教室、教师任课(可以设定总课时;可以设定合班课的课程、班级、教师;可以设定单双周;可以由教师设定课程可用时段;可以设置指定教室;可以设置当课时总数超过总课时时,能否进行减少课时;可以设置排课先后,即哪些课排在前,哪些课排在后。)(3)数据导入导出:可以导入导出excel、备份数据。(4)课表查询:可以分别以班级、教室、教师为关键字进行查询。(5)报表生成与打印:可生成的报表包括班级课表、教室课表、教师课表、排课总表。可直接生成excel,也提供打印功能。(6)智能排课:可以自动排课;可以重新排课;可以进行手工调整。(7)帮助:系统功能和用户操作手册。
(二)排课算法
教务排课系统实现的关键是算法。一个好的排课算法不仅可以有效地实现各个功能模块的要求,而且可以很好地降低程序设计的复杂程。其重点在于算法的设计。排课是一个涉及教师、班级、课程分布、时间分配、座位、地点等多种因素的优化组合问题,并且已经证明是
一个np问题。目前为止还没有一套算法可以完全解决此问题,只是利用类似解决的方法来优化组合问题。在本教务排课系统的设计上采用的是优化资源查算法,即把每一个教学任务作为一个基本单位,以计算教学任务排课优先级为基础,自动安排教学任务的时间和教室。
1.确定时间。首先,对所有教学任务中的课程依据设定的优先级进行从高到低的遍历,然后,安排合适的教学时间和教学地点。为了使排课的难度降低,先确定合适的教学时间,教学时间的安排要使相应教学班的时间资源不冲突,也要使教师的时间资源不冲突,当所有教学任务的时间安排好之后,再安排教学任务的教学地点。
2.确定教室。当所有教学任务时间确定之后,接下来的工作就是确定教室。在为教学班确定教室时,也需要设置多个优先级,需要特定教室的教学班,需要特定类型教室(如机房、实验室等)的教学班设置较高的优先级,人数越多的教学班,优先级越高。即对教室要求条件越多的教学班安排教室的优先级越高,反之则优先级越低[4]。如果安排教室时出现了冲突,即将多个教学班安排在室时,则将其中某一个教学班重新安排到其他时间片,直到冲突不再出现,该教学班安排到合适的教室为止。
(三)冲突处理
排课系统中会存在着一些硬性冲突:班级冲突、教师冲突、教室的冲突等。其中教室的冲突包括:同一时间所能提供的教室总数小于安排的课程总数、同一时间在室安排多门课程、某一课程所安排教室的座位数小于参加学习的总人数等。也存在着一些软性冲突,比如课程在一周上多次时,要有一定的时间间隔、尽量将课程安排在上该类课程效果最好的时间段上等。
在排课过程中应当遵循一定的基本规则,只有将规则融入算法中才能够在满足功能要求的同时避免冲突的发生,这些基本原则主要有:(1)特性突出的班级优先级最高。(2)同一时间段同一班级的学生只能安排一门课程。(3)同一时间段师只能安排一门课程。(4)同一时间室只能安排一门课程。(5)同一时间段安排的课程总数只能小于所能提供的教室总数。(6)某一课程参加学习的总人数只能小于所安排教室的座位数。