计算机排课系统的实现

时间:2022-04-08 09:02:27

计算机排课系统的实现

摘要:计算机排课系统是计算机在学校管理工作中的一个非常重要的应用,它极大地提高了排课的效率,排课的准确性,为学校的管理工作顺利进行提供了有力的帮助。计算机排课系统的实现主要从数据准备入手,如何提供组织合理的数据至关重要,具体排课时的算法在逻辑上要做到严密、连贯,报表的格式应尽量满足用户需求。面向用户是计算机应用的基本原则,系统界面、系统操作、系统结果都应从用户的意志出发。

关键词: 数据库;数据表;功能模块;数据源;初始化;冲突处理;缓冲区;报表

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30482-04

Computer System for Arranging Schedule

HUANG Qi

(Sino-South African Industrial Information Engineering,Yueyang 414000,China)

Abstract: Computer course scheduling is a computer in the school system in the management of a very important applications, it has greatly improved the efficiency of the course arrangement, the accuracy of course arrangement for the management of schools to provide a smooth and effective help. Computer System for the main course arrangement from the start with data preparation, how to provide a reasonable organization of data is essential, specific course arrangement, the algorithm in terms of logic to be tight, coherent, statements of the format should try to meet user demand. User-oriented computer applications is the basic principle, the system interface, operating system, the system should result from the will of users.

Key words: databases; data sheets; function modules; data sources; initialization; conflict management; buffer zones;statements

1 引言

笔者是一名从事计算机教学与管理多年的计算机教育工作者,所在单位是一所具有三十多年历史的部级重点职业技术学院,在多年的管理工作中,先后参与过教学管理、学籍管理、工资管理等学校管理工作,利用计算机专业知识开发了工资管理系统、成绩分析系统、户籍管理系统、计算机排课系统等一系列教学管理软件,为学校的发展作出了一定的贡献。

学校的前身是一所部属技工学校,主要培养化工设备安装方面的中级技术工人,规模不大,学生约四五百人,十来个班级,早期排课工作都是由教务员手工编排。随着国家教育政策的调整,学校办学模式不断丰富,学校规模不断扩大,排课工作手工进行,效率低、难度大,几乎不再可行。随着计算机应用的普及,计算机进入学校日常管理工作中,各种应用软件也如雨后春笋,其中不泛各种排课系统。

根据学校教学管理的需要,结合多年从事教学管理工作的经验,笔者对计算机排课进行细致科学的分析,开发出计算机排课系统,并在实际应用中不断得到完善,下面就基于VFP6.0编程语言开发的计算机排课系统的实现进行阐述。

2 系统框架

3 功能模块及实现

3.1 数据准备

数据准备工作,关乎整个系统的成功与否,关乎系统实现方法是否有效、科学,特别重要。在设计上本功能模块主要解决:专业开设情况、班级信息的建立、专业教学计划的设置、教师基本信息的准备。这些项目所对应数据表的结构及属性尤为关键,有关联整个系统的纽带作用,在设计时经过了反复推敲。

3.1.1 专业开设情况

专业设置情况数据的准备,源于数据表ZYKU.DBF,具体实现上,设计一表单,该表单用于创建数据表ZYKU.DBF,并对该表进行增加、删除、插入等编辑操作,退出该表单时,系统将生成新开设各专业的教学计划表,并将它们按开设时间存放在对应的文件夹下。ZYKU.DBF文件是整个系统的数据源头,其他数据的生成都由其衍生,数据表具体结构及各字段名对应含意为:

说明:“ZJH”字段内容对应该专业教学计划的数据文件名,由系统生成,字段内容为“ZJC”字段各汉字的首字母+“ZDT”字段的后两位数字。

3.1.2 班级信息

从班级信息库BJKU.DBF中,我们将获取进行排课的班级的具体信息,设计该表格时,入学时间是判别是否排课的一个参考项目,系统将依据入学时间进行计算。具体实现上,设计一表单,该表单实现数据表BJKU.DBF的创建,表数据的增加、删除、插入等编辑操作。数据表结构及各字段名对应信息如下表所示:

说明:“BJMC”字段由系统生成,字段内容为ZYKU.DBF中“ZJC”字段的内容+“ZDT”字段的最后一位数字+班级顺序号。

3.1.3 专业教学计划

每开设一专业,都建立有专门的教学计划表,设计一表单进行教学计划的设置,在该表单中,设计两个下拉列表,分别选取入学时间、专业,在ZYKU.DBF表中获取对应的教学计划表,如“JD07.DBF”,该文件名表示“2007级机电专业”所对应的教学计划表。教学计划表结构所对应各字段及作用如下表所示:

说明:“XQ1”、“XQ2”字段内容为学期序号,如该课程在第3、4学期开设,考核形式为“考试”,则在XQ1中填入“34”,10以上的数字,则依次用大写字母“ABCD”等表示;字段X1、X2等表示学期,1、2表示第1学期、第2学期,字段内容表示课时数。

3.1.4 教师基本信息

对应表JSXX.DBF,设计表单对表进行数据插入、修改及删除等操作,表的具体内容如下表所示:

3.2 排课数据初始化

数据准备工作完成后,接下来的工作是排课数据初始化,为本次排课生成班级课程设置情况表(PKBJ.DBF)、教师排课情况表(JSPK.DBF)用来收集本次排课的基本数据,以及总课程表(ZKB.DBF),用来存放本次编排的课程表数据。

3.2.1 班级课程设置情况信息收集

班级课程设置情况信息收集,建立数据表(PKBJ.DBF),用来收集将要进行本次排课的班级,以及各班级本期所开设课程、及课程对应课时数等基本信息。数据表结构及各字段作用如下表所示:

说明:“YJS”字段用于排课时统计该课程已经编排的课时数;J11、J12、……、J53表示节次,如J53表示星期五第三节,逻辑型,如为“真”,表示该课程在该节次上已有编排。均为排课时用。

课程设置信息收集方法如下:

1)打开班级库(BJKU.DBF);2)取出当前班级的班级名称(BJMC)、入学时间(RXDT),将班级名称存入变量BMC中;3)根据系统当前时间和入学时间计算出该班级编排学期;4)根据入学时间、班级名称,找到该班级对应的教学计划,打开该教学计划数据表;5)在教学计划表的XQ1、XQ2字段中查找对应的学期序号,如找到则在PKBJ.DBF尾增加一空记录,将变量BMC、教学计划表中当前记录所对应的课程简名(KCMC)、课时数、考核形式等内容填入PKBJ.DBF中新增记录的对应字段。完成教学计划表中所有记录的查找;6)回到BJKU.DBF,将记录指针下移一记录,重复2到6的步骤,直到BJKU.DBF所有记录操作完成。

3.2.2 教师排课情况表

教师排课情况表(JSPK.DBF)主要用于课表编排时的冲突处理,该表结构简单,如下表所示:

说明:J11、J12、……、J53表示节次,如J21表示星期二第一节,逻辑型,如为“真”,表示该教师在该节次上已有排课,不能再排。

3.2.3 总课程表

总课程表(ZKB.DBF)用来存放排课的结果,表格包含项目如下表所示:

表格建立好后,将PKBJ.DBF表中的班级字段(BJ)内容追加到总课表中,再将BJKU.DBF中对应班级班主任(BZW)字段的内容追加到总课表中。

3.3 排课信息录入

完成数据初始化工作后,将进行具体授课安排,将各班级所设课程指定给相关老师教授。这项工作较为简单,只需为课程设置情况表(PKBJ.DBF)中的任课教师(RKJS)一项给定数据。

建立一表单,在表单上设计一下拉列表框,将下拉列表框连接到PKBJ.DBF表的BJ字段;设计一表格,显示PKBJ.DBF中指定班级的课程(KCMC)、考核形式(KHXS)、任课教师(RKJS)、课时数(JS)等字段内容,仅任课教师列可编辑,直接在表格中任课教师列输入相关授课信息即可,完成后选择下一班级录入,直到完成所有班级的录入,退出表单。

3.4 系统编排课程表

在所有准备工作就绪后,正式开始系统排课,这是整个系统的关键工作,是面向用户的终端输出。由于牵涉的数据较多,也较复杂,在编程前应绘制出系统算法的流程图,使思维清晰,从而提高编程效率及准确性。排课工作分两步进行,正常排课和冲突处理,具体算法如下:

3.4.1 正常排课

打开数据表总课程表(ZKB.DBF)、班级课程设置表(PKBJ.DBF)、教师排课情况表(JSPK.DBF),选择ZKB.DBF

1)判断文件是否结束(EOF()值为真),如结束,则排课工作完成,进行下一步工作;

2)取出中表的“BJ”字段值,置入变量“BJM”;

3)设置双层循环,完成“BJM”指定班级的排课;

a: For i=1 to 5

tj=“J”+i+“1 or J”+i+“2 or J”+i+“3”

b: For j=1 to 3

jc=“J”+i+j

1>选择表PKBJ.DBF,利用索引功能,筛选出表中所有“BJ”字段为“BJM”的数据记录。

2>GO TOP将记录指针移向顶部。

3>设置循环进行该节课的编排,程序段框架如(图1)所示。

b:EndFor

a:EndFor

4)选择ZKB.DBF;

5)执行SKIP命令,使记录指针指向下一记录;

6)返回步骤1),编排下一班级。

3.4.2 冲突处理

冲突是指在对某班进行排课时,编排课程的任课教师在该节课上已在其他班有任课安排。

由于正常排课时,并未考虑解决排课冲突的问题,一般情况下会出现一些节次未进行编排的情况,这些未排节次可从课程设置情况表中已排节数(YJS字段)信息中获取,或从总课表中字段值为空判定。考虑篇幅,此处仅指出具体解决方案,编程时应多使用几种调整方法,以尽可能保证解决冲突。

调整方案一:在当天进行调整

调整方案二:调整冲突课程

调整方案三:调整A、B冲突课。如以上两种方案仍不能解决冲突,这时可调整A或B冲突课,调整方法同方案一和方案二,不再重复。但在实际编程时,算法较复杂,应画出详细流程图,提高编程效率。

3.5 手工调整课表

排课工作完成后,系统的主体工作基本完成,为方便用户需要,设置课表手工调整功能。调整课程由用户指定,在操作表单中将显示出指定班级的课程表,调整课程时可能会存在冲突,可由用户确定是否进行冲突处理来进行调整,方法同系统排课中的冲突处理方案。

3.5.1 方法1

对调,如D2?圮E3,拖放D2到E3,触发事件,判断是否存在冲突,无冲突则完成调整,并修改相关数据;冲突则提示是否进行调整,用户确定则进行冲突处理,否则放弃。

3.5.2 方法2

轮转调换,如:

算法:设计一缓冲区,用来存放其中一节课的信息(如B2),将D2拖放至“B2”,将E3拖放至“D2”,将缓冲区拖放至“E3”,拖放将触发事件,判断是否存在冲突及完成相关调课工作,如存在冲突,将由用户决定是否解决冲突,进行调课。

3.6 手工排课

手工排课工作,仅为方便用户设计,具体排课工作完全由用户自主完成。主要考虑到一些非正常排课工作,如短期培训班等,排课时系统判断是否存在冲突,如存在冲突则提示用户进行调整。设计一操作表单,在表单中首先要求用户进行课程信息设置,具体内容同数据初始化中的班级课程设置信息,完成后显示课程表,用户将所设课程拖放至指定节次进行编排。限篇幅在此不作详细论述。

3.7 课程报表输出

课程报表的输出是本系统的终极服务,课程表格形式应多样化以尽可能的满足用户需要。不同的对象,如班级、老师、部门领导、校长,所需求的课表形式不一样,因此设计时要求课表形式尽可能多样化。笔者根据多年的管理经验设计下列报表,并根据打印机及打印纸张设计不同的表格样式,限于篇幅仅选取其中的一种进行阐述。

根据报表形式,很难直接从现有某一个数据表中提取数据信息生成报表,为便于控制,创建一临时表(TMP.DBF),表格结构同总课程表(ZKB.DBF),完成下列工作:1)将总课程表(zkb.dbf)中的所有数据追加到临时表tmp.dbf中;2)将班级信息表(bjku.dbf)中的班主任姓名(BZW)添加到tmp.dbf中;3)添加教师信息,从第一条记录开始,在每个班的课程信息后插入一空记录,将课程设置信息表(pkbj.dbf)中对应课程的任课教师姓名加入至新记录中。完成报表输出的数据准备工作。

下面列举四种报表,基本能够满足用户需要,在具体输出时,可根据用户需要选定所需报表进行输出,系统将进行处理,输出对应的表格。具体实现上较为复杂,在此不作论述,读者可自行分析或与笔者联系。

1)总课表

2) 班级课程表

3) 教师授课表

4) 部门教师授课情况汇总表

4 系统补充说明

笔者从事职业教育近二十年,对学校管理工作积累了一些经验,不同的学校在办学模式、管理方式上会存在一些差异,因此要使排课系统能尽量使用户满意,还应解决下面一些问题:

1)办学形式:笔者所在学校是一所职业学校,有技校、中专、高职等办学模式,此外还有普通中小学、高中、高等学校等办学形式。系统设计时,应综合不同的用户需求,使大多数用户都能根据自己的需要进行课表编排。

2)课程节数设置:不同形式的学校,授课方式有所不同,当前普通学校一般都一门课程上一个课时,笔者所在职业学校则是一门课程连续上两课时,因此编排课程前应先给定相关信息。

3)排课条件:实际情况中,某些教师的授课安排可能有些特殊的要求,可设置一专门的数据表存放这些信息,排课时优先考虑。

4)实习场地限制:某些课程可能经常要做实验,而实验室数量有限,在排课时考虑尽量将这些课程分散,避免冲突出现。

5)特殊课程的编排:在某些学校开设有一些公共课,这些课程编排的节次是固定的,如笔者所在学校星期一下午为“班会”课,排课时应首先将这些课程编排好,并且不能被调整。

上一篇:微操作机械手自校正模糊控制与仿真 下一篇:谈局域网综合布线的实施