基于Microsoft Excel VBA编程的实验课程排课系统

时间:2022-05-31 12:22:56

基于Microsoft Excel VBA编程的实验课程排课系统

摘 要 在以往的实验室管理中,实验课程的安排都是通过人工的方式实现,随着专业种类、学生人数的增多,实验科目也逐渐增多,无疑这种排课手段是非常落后的,以至于庞大的课时、复杂的实验室信息令实验室的管理人员无法合理、迅速、高效地制定出相应的排课计划,本文针对目前实验室排课技术落后、效率低下等问题,提出基于Microsoft Excel开发平台,采用Microsoft Excel VBA、VB等技术,实现对年级专业、实验课程的合理分配,满足实验室管理人员使用要求的实验课程排课系统。

【关键词】时间表问题 排课系统 Microsoft Excel VBA 算法 排列组合

1 引言

在高校中,验课程的编排是一项十分繁重而复杂的工作,由于近些年的扩招,实验室不能完全容纳班级人数,在这种情况下,就必须要对专业、实验课程、学生人数进行合理的组织安排,纯手工排课不仅效率低下而且还经常有出错的可能,通常都要修改三四次左右才可以将之公布给学生,既耗时又费力,种种难题难免给实验室管理人员带来极大的挑战。排课问题不仅是教学管理工作中必须面对的问题,而且也是运筹学中研究的一个问题--时间表问题(Time Table Problems,简记TTPS)。随着计算机技术的不断发展,并且在各领域得到了充分的应用,计算机有着手工管理所无法比拟的优点,其优点是能够极大地提高实验教学管理工作的效率,也是实现教育信息现代化的重要组成部分。因此应用计算机技术开发一个智能排课系统,既可以降低实验室管理人员的工作量又可以节省了时间,为教学工作带来方便,利用计算机辅助手段编排课表是实验室管理实现科学化、现代化、规范化的重要研究课题之一。

对于解决排课问题,相关人员已经采用了很多算法算法,如:FP-Growth关联规则算法,遗传算法,模拟退火算法,禁忌搜索算法,以及多种智能算法相结合的混合算法。这些算法都能在一定程度上解决排课问题,但也存在着一些不足:如对合班的情况考虑比较少。本文在相关理论知识的指导下,提出了一个适用于我校的实验教学排课系统的设计方法,并对一些具体的问题给出相应解决方案。

2 排课系统的设计与实现

排课系统就所要实现的功能而言,其结构功能如图1,该系统考虑了上课时间多样性、上课时间多变性、实验课程多样性及专业人数分组的多样性,使用了自动读取数据库管理模块信息、自动分类打印、可手动调节等动态管理。

2.1 实验课程排课规则

实验室课表安排就是根据理论课及实验课的教学计划,对一学期的每门实验课程进行规划,由于实验室人数的限制,将一个专业划分为数组,每一组是由在一起上课的部分学生组成的临时的上课单位。排课的过程实质上就是对上课单位与实验课程分配的过程。在实际应用中我们可以把排课问题看做是一个有约束的、多目标的、难解的组合而成的优化问题。因此在排课的过程中,必须遵守以下四条基本原则:

(1)每位教师在一个时间段内最多只能进行一门课的教学;

(2)每组的学生在一个时间段内最多只能进行一门实验课;

(3)每个实验室在一个时间段内最多只能有一组学生上课;

(4)每组的学生要在规定的时间内上完规定的实验课程。

也就是说,每个实验室在一个时间段内最多只能安排一个实验课程。此外,每个实验课程还必须与每组同学一一对应,并且所安排的课时数与教学计划中课程时数一致。为了使课表更加准确、合理,排课时还要考虑以下一些因素:

(1)实验课程的开设尽量安排到理论课进行完之后;

(2)尽可能使每一组的学生每天进行的实验课程趋于平衡;

(3)尽可能将实验课程安排到合理的时间,满足该专业的需求;

(4)尽可能的按照组号的顺序进行实验课程;

(5)实验课的安排应与其他教学活动时间没有冲突。

2.2 数据库的设计与实现

将数据库管理模块的每个属性内容按照专业的需求性,不需要填写的属性可以空出,不用填写,不会对系统造成任何影响,如图2,完成填写,之后按下排课按键,则在对应专业的显示界面中显示这一学期的实验课程排课情况,如图3。

课表就是将专业学生、实验课程、实验时间组合成一种新的关系,课表可以用这种关系代数表示。实现计算机自动排课的前提条件是将排课问题转化为数学模型。具体地,定义数个基本信息:专业信息关系:Major{M1,M2,M3,...,Mn}n个专业;课程信息关系:Course{C1, C2, C3,...,Cm}m个实验课程;时间信息关系:Time{T1,T2, T3,...,Tk}k个时间.(每个字母表示某个专业或某个课程或某个时间的所有排课的信息)定义一个产生的新关系:TimeTable{TT1, TT2,TT3,...}每个字母表示相关时段的课程信息。

3 排课系统分析

3.1 功能分析

排课系统是一个庞大而复杂的系统,在排课的整个过程中,始终伴随着元素的层次扫描和元素从旧集合到新集合的迁移。本论文所设计的排课系统具有如下基础功能:

(1)年级专业基础数据录入功能,包括:专业名称、专业分组数的相关信息的录入。

(2)实验基础数据录入功能:录入各专业实验名称、实验代码、实验数量信息等。

(3)实验时间安排的数据录入功能:根据专业的空余时间和实验数量录入合适的起始时间和结束时间。

(4)个别实验课程进行特殊设置:如,优先级设置,连续排课设置。

(5)特殊情况设置功能:能根据具体情况设置实验课程的排课。如:遇到节假日需要修改实验课程时间、教师有特殊情况需要调整试验时间等。

(6)在完成上述信息输入后,按下排课按钮能实现自动排课功能。

(7)在自动排课结束后可以人为手动地对排课情况进行调整,提高课表的满意度。

(8)查询功能:使用者利用Excel的基本操作能搜所需的相关信息。如:任意班级实验课表等。

3.2 结构分析

本排课系统是基于C/S的环境,把排课和数据库资源管理、课表输入模块结合在一起,排课工作计划具体到各个年级专业。各个年级专业在客户机上完成自己的课程计划,再通过互联网发到服务器中,服务器选择性的根据这些排课计划完成排课,把生成的课表再发放到各个年级专业中,各个年级专业可根据具体情况进行补课、调课等。

工具的便利性和语言的伸缩性是密不可分的,只有便利和工具,却没有伸缩性和Z言支撑,许多个性化的处理动作必需要消耗更多的工夫来处理完成。因此针对如何选择一个合适的开发工具尤为关键。而本排课系统用的是Microsoft VBA开发语言,该语言容易学习,调试也相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的;软件方面:为了减少系统设计时环境安装的复杂性,因此选择大家都熟悉的办公软件的 Excel实现该系统,这样可以免除熟悉软件环境的过程,而且可靠性能高、成本低,完全能满足系统的需求,操作上并没有太高的难度,所以在运行上是可行性的,而且本系统的开发,主要是对现有数据的处理,及数据的各种组合形式的输出,已无技术上的问题。本系统建成之后将为今后学院安排实验课程提供很大的方便。

4 排课工作流程与算法分析

在分析其他高校的排课算法的同时结合我院的实验室课程安排情况,设计了适用于我院实验课程安排的排课算法,充分考虑到了多种情况,该算法编程容易,易于实现。结果表明,该算法可以满足排课的各种规则,排出的课表较为合理,具有一定的实用性。

4.1 一般情况排课算法分析

应用计算机来实现自动排课需要解决的问题有:一如何决定实验课程次序,即优先开始哪些课程,才能使冲突的概率出现最小;二是如何为每门实验课程合理分配时间。

本系统采用优化穷举算法进行排课,首先计算出所有排课情况将众多排课情况划分优先级,先采用优先级高情况,若出现冲突,再选择其他情况直至完成排课。本系统以分阶段的形式进行排课,即把一学期分为几个阶段排课,以一周为一个阶段,即在时间上我们是按一周为单位来进行排课。将一天以两节课为单位划分成数个单元,每个单元或者被占用或者不被占用。根据数据库管理模块,读取所要安排实验课程的起始时间,即可确定第一个实验的位置,为了便于表示,我们将每门实验课程所做的实验用一串代码(甲、乙、丙...)表示,将实验代码与分组号一一匹配安排在相应的Excel的单元格中,如图3,为了实现上述功能,将Excel的单元格定义成一个结构体二维数组time_day(wk,dy)二维数组的下标wk表示所在的周,dy表示所在的某一天的第几节课,根据课程表格我们可以看出,具体时间可用一个二维坐标表示,

如(4,3)表示第四周周一的第1-2节课,此外我们在结构体里定义了两个数组class_zu(t)、class_sy(t),其中class_zu(t)用来存放组号;class_sy(t)用来存放实验代码。为了减少穷举法的时间复杂度,本系统将组号按照顺序安排设为最高优先级,即下一个组号为上一个组号加1。排课有多种情况,可能一个单元格只有一个实验代码和组号的连接,也可能有两个实验代码和组号的连接,不同情况分别有着不同的排课过程,所以需要前提判断是否已经排过实验了。其大致流程如图4,实验代码:

For wk = 起始周 To 结束周

For dy = 起始课时 To 结束课时

If 已经排了一门实验课程Then

time_day(wk, dy).class_zu(t1) = “已经排的组号 + 1”

time_day(wk, dy).class_sy(t1) = “实验代码”

flag1 = flag1 + 1

If 组号 = 分组数 Then

“组号初始化为1”

End If

If flag1 = 分组数 Then

flag1 = 0

“实验代码++”

End If

Else

time_day(wk, dy).class_zu(t1) = “组号”

time_day(wk, dy).class_sy(t1) = “实验代码”

“组号++”

If 组号 = 分组数+1 Then

“组号初始化为1”

“实验代码++”

End If

End If

Next dy

Next wk

4.2 节假日的情况的排课算法分析

本系统还考虑了节假日等特殊情况需要调节上课时间的功能,假若因某一周放假,实验课停课一周,则只需在规定的开始周设置为第七周即可,针对这种情况,本系统首要是判断规定的开始周是否为空,若不为空,则考虑节假日,并且接着节假日之前的排课记录继续进行,若为空,则正常进行循环排课,实验代码:

If 有节假日 Then

For wk = 节假后的起始周To 节假后的结束周

For dy = 节假后的起始课时To节假后的结束课时

time_day(wk, dy).class_zu(t1) = “节假日之前的组号 + 1”

time_day(wk, dy).class_sy(t1) = “实验代码”

“按照上述几种情况正常排课”

Next dy

Next wk

End If

4.3 分时进行实验情况

如图3,分时进行两种实验,针对这种情况,是因为专业分组数比较多,而另一个实验课时不多,但是为了满足实验课尽量在理论课进行完之后进行,所以将第二个实验一周只安排一个半天,第二门课的实验同样要保持每一组都要进行,这样不像前面所述的那种情况,两门课程同时进行后一门实验安排的组号仅仅是前一门实验组号加1即可,此类情况就不能单纯的采用前述的算法,即第二门课程实验的组号不能再是前一门实验组号加1,这时需要穷举出所有排列的情况,然后需要进行冲突检测,所以本系统在采用优化穷举法的基础上拓展了排列组合的算法,统计出所有的分组数的排列组合将其放入二维数组b(ai,aj)中,其核心思想是首先记录前一门实验另一个半天的组号赋给zu_jishu_shuzu1(xb1),然后将其与b(ai,aj)一一比较,将符合条件的组号赋给zu_jishu_shuzu2(xb2),最后再放入第二个实验的class_zu(t)即可。实验代码:

For wk = 节假后的起始周To 节假后的结束周

For dy = 节假后的起始课时To节假后的结束课时

zu_jishu_shuzu1(xb1) = “第一个实验的组号”

xb1 = xb1 + 1

组号++

If 组号=分组是 Then

“组号初始化为1”

End If

Next dy

Next wk

For ai = 0 To 119

For aj = 0 To 分组数- 1

If b(ai, aj) = zu_jishu_shuzu1(xb1) Then

xb1 = (xb1 \ 分组数) * 分组数

xb2 = (xb2 \ 分组数) * 分组数

aj = 分组数 - 1

Else

zu_jishu_shuzu2(xb2) = b(ai, aj)

xb2 = xb2 + 1

xb1 = xb1 + 1

Next aj

Next ai

5 结语

在以前实验室管理人员需要花费几个星期来完成实验课程的排课,运用本系统进行排课,能使实验室管理员的工作量大大减少。本实验室排课系统是基于Microsoft Excel平台采用VBA编程语言来实现,充分考虑到专业的人数的多样性、实验课程数量的多样性以及实验安排时间多样性以及可变性等问题,满足实验室管理人员的使用要求。

本排课系统主要有如下优点:

(1)对软硬件的要求不高,研发本系统的过程开销不高,极大的程度上节约成本。

(2)本系统操作简单方便,为后续的升级留有一定的扩展余量。

(3)本系统的适应能力强,考虑因素多。

参考文献

[1]李富星.自动排课系统的设计与实现[J].西安电子科技大学学报,2010,36(05):199-202.

[2]章玉政,李世杰,李庆男,刘甲第.实验中心排课系统的设计与实现[J].实验室科学,2011,14(06):131-133.

[3]何巍.FP-Growth关联规则算法在高校排课系统设计中的应用研究[J].电子技术与软件工程,2014(06):194.

[4]Minh K N T T,Thanh N D T,Trang K T,et al.Using tabu search for solving a high school timetabling problem[M]//Studies in computational intelligence,2010:305-313.

[5]Jat S N,Yang S.A hybrid genetic algorithm and tabu search approach for post enrolment course timetabling[J].Journal of Scheduling,2011,14(06):617-637.

[6]张赫男,绍文.采用改进的混合遗传算法求解高校排课问题[J].计算机工程与应用,2015,51(05):240-247.

[7]马玉芳,张海娜,邵杰.遗传算法在高校排课系统中研究与实现[J].计算机系统应用,2014,23(05):112-115.

[8]顾治程,蒋艳.基于FDD算法的高校排课系统设计与实现[J]软件导刊,2016,15(01):110-112.

[9]崔妍,王权,王康,车玉军.排课问题的数学模型[J].沈阳工程学院学报(自然科学版),2016,12(03):276-279.

[10]陆静.华北科技学院计算机专业实验室排课系统的设计与实现[D].成都:电子科技大学,2011.

[11]郑杰,周晓宏.基于VBA的辅助排课系统的实现[J].现代计算机,2014,36(19):67-70.

作者简介

过劲劲(1996-),男,大学。主要研究领域为计算机信息处理,身份证:341224199607121338。

曲立国(1979-),男,副教授/硕士。主要研究领域:智能控制及智能信息处理。身份证:220283197901133519。

作者单位

安徽师范大学 安徽省芜湖市 241000

上一篇:计算机技术应用的现状与发展 下一篇:基于匹配点传播的三维重建及深度估计算法