论文部分内容阅读
摘要:计算机排课系统是计算机在学校管理工作中的一个非常重要的应用,它极大地提高了排课的效率,排课的准确性,为学校的管理工作顺利进行提供了有力的帮助。计算机排课系统的实现主要从数据准备入手,如何提供组织合理的数据至关重要,具体排课时的算法在逻辑上要做到严密、连贯,报表的格式应尽量满足用户需求。面向用户是计算机应用的基本原则,系统界面、系统操作、系统结果都应从用户的意志出发。
关键词: 数据库;数据表;功能模块;数据源;初始化;冲突处理;缓冲区;报表
中图分类号: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 系统框架
说明:“ZJH”字段内容对应该专业教学计划的数据文件名,由系统生成,字段内容为“ZJC”字段各汉字的首字母 “ZDT”字段的后两位数字。
3.1.2 班级信息
从班级信息库BJKU.DBF中,我们将获取进行排课的班级的具体信息,设计该表格时,入学时间是判别是否排课的一个参考项目,系统将依据入学时间进行计算。具体实现上,设计一表单,该表单实现数据表BJKU.DBF的创建,表数据的增加、删除、插入等编辑操作。数据表结构及各字段名对应信息如下表所示:
说明:“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),用来收集将要进行本次排课的班级,以及各班级本期所开设课程、及课程对应课时数等基本信息。数据表结构及各字段作用如下表所示:
说明:J11、J12、……、J53表示节次,如J21表示星期二第一节,逻辑型,如为“真”,表示该教师在该节次上已有排课,不能再排。
3.2.3 总课程表
总课程表(ZKB.DBF)用来存放排课的结果,表格包含项目如下表所示:
冲突是指在对某班进行排课时,编排课程的任课教师在该节课上已在其他班有任课安排。
由于正常排课时,并未考虑解决排课冲突的问题,一般情况下会出现一些节次未进行编排的情况,这些未排节次可从课程设置情况表中已排节数(YJS字段)信息中获取,或从总课表中字段值为空判定。考虑篇幅,此处仅指出具体解决方案,编程时应多使用几种调整方法,以尽可能保证解决冲突。
调整方案一:在当天进行调整
调整方案三:调整A、B冲突课。如以上两种方案仍不能解决冲突,这时可调整A或B冲突课,调整方法同方案一和方案二,不再重复。但在实际编程时,算法较复杂,应画出详细流程图,提高编程效率。
3.5 手工调整课表
排课工作完成后,系统的主体工作基本完成,为方便用户需要,设置课表手工调整功能。调整课程由用户指定,在操作表单中将显示出指定班级的课程表,调整课程时可能会存在冲突,可由用户确定是否进行冲突处理来进行调整,方法同系统排课中的冲突处理方案。
算法:设计一缓冲区,用来存放其中一节课的信息(如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)总课表
3) 教师授课表
4 系统补充说明
笔者从事职业教育近二十年,对学校管理工作积累了一些经验,不同的学校在办学模式、管理方式上会存在一些差异,因此要使排课系统能尽量使用户满意,还应解决下面一些问题:
1)办学形式:笔者所在学校是一所职业学校,有技校、中专、高职等办学模式,此外还有普通中小学、高中、高等学校等办学形式。系统设计时,应综合不同的用户需求,使大多数用户都能根据自己的需要进行课表编排。
2)课程节数设置:不同形式的学校,授课方式有所不同,当前普通学校一般都一门课程上一个课时,笔者所在职业学校则是一门课程连续上两课时,因此编排课程前应先给定相关信息。
3)排课条件:实际情况中,某些教师的授课安排可能有些特殊的要求,可设置一专门的数据表存放这些信息,排课时优先考虑。
4)实习场地限制:某些课程可能经常要做实验,而实验室数量有限,在排课时考虑尽量将这些课程分散,避免冲突出现。
5)特殊课程的编排:在某些学校开设有一些公共课,这些课程编排的节次是固定的,如笔者所在学校星期一下午为“班会”课,排课时应首先将这些课程编排好,并且不能被调整。
关键词: 数据库;数据表;功能模块;数据源;初始化;冲突处理;缓冲区;报表
中图分类号: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 系统框架
说明:“ZJH”字段内容对应该专业教学计划的数据文件名,由系统生成,字段内容为“ZJC”字段各汉字的首字母 “ZDT”字段的后两位数字。
3.1.2 班级信息
从班级信息库BJKU.DBF中,我们将获取进行排课的班级的具体信息,设计该表格时,入学时间是判别是否排课的一个参考项目,系统将依据入学时间进行计算。具体实现上,设计一表单,该表单实现数据表BJKU.DBF的创建,表数据的增加、删除、插入等编辑操作。数据表结构及各字段名对应信息如下表所示:
说明:“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),用来收集将要进行本次排课的班级,以及各班级本期所开设课程、及课程对应课时数等基本信息。数据表结构及各字段作用如下表所示:
说明:J11、J12、……、J53表示节次,如J21表示星期二第一节,逻辑型,如为“真”,表示该教师在该节次上已有排课,不能再排。
3.2.3 总课程表
总课程表(ZKB.DBF)用来存放排课的结果,表格包含项目如下表所示:
冲突是指在对某班进行排课时,编排课程的任课教师在该节课上已在其他班有任课安排。
由于正常排课时,并未考虑解决排课冲突的问题,一般情况下会出现一些节次未进行编排的情况,这些未排节次可从课程设置情况表中已排节数(YJS字段)信息中获取,或从总课表中字段值为空判定。考虑篇幅,此处仅指出具体解决方案,编程时应多使用几种调整方法,以尽可能保证解决冲突。
调整方案一:在当天进行调整
调整方案三:调整A、B冲突课。如以上两种方案仍不能解决冲突,这时可调整A或B冲突课,调整方法同方案一和方案二,不再重复。但在实际编程时,算法较复杂,应画出详细流程图,提高编程效率。
3.5 手工调整课表
排课工作完成后,系统的主体工作基本完成,为方便用户需要,设置课表手工调整功能。调整课程由用户指定,在操作表单中将显示出指定班级的课程表,调整课程时可能会存在冲突,可由用户确定是否进行冲突处理来进行调整,方法同系统排课中的冲突处理方案。
算法:设计一缓冲区,用来存放其中一节课的信息(如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)总课表
3) 教师授课表
4 系统补充说明
笔者从事职业教育近二十年,对学校管理工作积累了一些经验,不同的学校在办学模式、管理方式上会存在一些差异,因此要使排课系统能尽量使用户满意,还应解决下面一些问题:
1)办学形式:笔者所在学校是一所职业学校,有技校、中专、高职等办学模式,此外还有普通中小学、高中、高等学校等办学形式。系统设计时,应综合不同的用户需求,使大多数用户都能根据自己的需要进行课表编排。
2)课程节数设置:不同形式的学校,授课方式有所不同,当前普通学校一般都一门课程上一个课时,笔者所在职业学校则是一门课程连续上两课时,因此编排课程前应先给定相关信息。
3)排课条件:实际情况中,某些教师的授课安排可能有些特殊的要求,可设置一专门的数据表存放这些信息,排课时优先考虑。
4)实习场地限制:某些课程可能经常要做实验,而实验室数量有限,在排课时考虑尽量将这些课程分散,避免冲突出现。
5)特殊课程的编排:在某些学校开设有一些公共课,这些课程编排的节次是固定的,如笔者所在学校星期一下午为“班会”课,排课时应首先将这些课程编排好,并且不能被调整。