摘 要:摘要:面授课课表编排是电大教学管理工作的基础性工作,采用EXCEL软件开发的教学管理排课系统,既保留了手工排课方便灵活的特点,又可以快速地进行课务报表输出。
关键词:关键词:EXCEL;VBA;数据库;课表;编排;报表;管理系统
中途分类号:TP302.1 文献标识码:A 文章编号:
1. 系统开发的意义
电大面授课课表的编排过程实际上就是教学资源分配、教学策略的实施过程。由于教育市场需求变化,每学期在专业开设、招生人数、课程性质、师资情况等都是不一样的,所以课表编排工作具有复杂性。在课表编排同时,还需要为各使用者,如班主任、教学管理部门、学生提供各式课务报表,这些报表如何快速、准确地生成,是值得探讨的。
多数教学管理部门虽利用现代化的办公软件制作课表,但往往依赖人工决策和校对,忽视数据库及编程技术的运用,许多基层电大管理人员在开学前疲于排课,压力大不用说,到头来仍存在许多错误。而某些全封闭的自动化排课程序,总是以牺牲排课方案的质量为代价换取一、两个小时的速度[1]。这类软件也不能在广大基层电大得到充分推广使用。
因此,好的软件应充分发挥人的主观能动性,让排课人员掌控自己的排课思路、策略和原则[1]。一款实用的排课软件,应具有如下特征:一是能提高了教学管理工作的效率,可以方便地进行课务报表的输出;二是排课更加科学,可以减少甚至消除错误的发生;三是在安排好课程表的同时,可以利用排课数据为各种教学管理提供更好的支持服务,如打印任课通知书、各类统计报表等;四是具有较大灵活性,能充分发挥操作者的主观能动性,这样才有助于推广使用。
2.系统功能及分析
2.1 主要业务处理流程
排课过程中,主要工作由教学管理部门的教学秘书来完成,具体业务处理流程,根据金玉明(2010)研究得出的结论,可用图1加以概括[1],本文对其解释如下:
2.1.1 教务员:根据专业课程规则做好开课计划,向教学管理部门提供新学期的开课信息。
2.1.2 教学秘书:
(1) 检查教师库信息,及时更新教师库信息,以便根据开课信息表,提出任课教师人选的建议;
(2) 安排任课教师:检索教师信息,结合教师工作量要求,给每位教师安排适当的课程和课时数,对存在师资不足的情况,及时向上级反映;
(3) 排课:根据现有的教学任务、教师、课室、可安排的日期时间段,安排好各班课程,要做到无遗漏、无冲突;
(4) 发布课务安排表:根据课程安排结果,根据不同需求生成班级课表、教师课表、总课表等报表。
注:(3)、(4)是本文研究的重点。
2.2 系统构成
为了较好地完成以上工作,本排课系统设计了三个子功能系统,如图2所示:
其中教学安排决策子系统,整合开课计划表、班级情况表、教师情况表、考试合格率等信息,为教学管理部门的决策提供综合信息,以便教学秘书进行进一步课表编排。(注:限于篇幅,本文对决策子系统不作具体介绍)
课表编排子系统,根据开课信息表、课室信息表、开课日期时间信息表、教师信息表,利用二维表格的直观形式进行人工编排,再利用VBA代码进行二维表格向数据库表的转换,以便下一步 在课务安排(报表)子系统中利用该数据进行报表生成。
课务安排表(报表)子系统,利用EXCEL数据透视表技术,生成各类报表。
3.关键技术介绍
3.1 EXCEL控件在排课子系统中的应用
该系统实现在EXCEL中完成全部操作,各工作表由信息表、若干编排子表构成,其中信息表存放了教师、课程、班级、教师、总表数等信息,这些信息在编排课程子表时,由系统自动调用,以提高录入速度和准确性,减少人工录入的差错。
该系统具有教师、教室、班级、课程信息既可直接输入,也可从自制的排课工作栏的组合框控件中选择输入。如图3所示:
图3课表编排子系统
3.2 VBA编程技术在排课软件中的应用
3.2.1 利用VBA代码进行错误的动态排查
在排课子程序中,在输入时自动进行教师、教室冲突检查,并及时提示。VBA代码如下[2]:
Sub ck_tr(s_tc, s_rm, row_no)
For m = 1 To zbs '总表1到zbs循环
s_sheet = "总表" & m '形成工作表名
For k = Asc("E") To Asc("N") Step 3 '列E、H、K、N循环
s_cell = Chr(k) & row_no '形成单元格名
s_tc_v = Worksheets(s_sheet).Range(s_cell).Value '变化教师
s_rm_v = Worksheets(s_sheet).Range(s_cell).Offset(0, -1).Value '变化教室
If s_rm <> "" And s_tc <> "" And (s_tc = s_tc_v And s_rm <> s_rm_v Or _
s_tc <> s_tc_v And s_rm = s_rm_v) Then
'同教室而不同教师,或者不同教室同一教师,则属于排课"冲突"
s_msg = "教师或教室冲突!(" & s_sheet & "," & Chr(k) & row_no & ")"
MsgBox s_msg, vbExclamation, "提醒"
End If
Next
Next
End Sub
3.2.2 排课数据表的自动生成
排课结束后,利用以下VBA代码,可将课表编排结果整理成数据表,字段名包括专业、课程、教师、日期、课室等:
Sub kebiao()
'设置目标单元格所在行号
hh = 2
'提取整理结果
For m = 1 To 15
s_sheet = "总表" & Trim(Str(m)) '形成工作表名
For k = Asc("C") To Asc("L") Step 3
For n = 5 To 106
s_cell_tc = Chr(k) & Trim(Str(n)) '形成课程单元格名
s_kc = Worksheets(s_sheet).Range(s_cell_tc).Value '形成课程名
If s_kc <> "" Then '如果课程名不为空
'形成教室名、日期、老师、班级名单元格地址
s_cell_js = Chr(k + 1) & Trim(Str(n))
s_cell_rq = IIf(n Mod 2 = 1, "A" & Trim(Str(n)), "A" & Trim(Str(n - 1)))
s_cell_teacher = Chr(k + 2) & Trim(Str(n))
s_cell_bj = Chr(k) & "3"
'将有关信息填写到整理结果表中
s_cell_jg = "A" & hh
Worksheets("整理结果").Range(s_cell_jg).Value = Worksheets(s_sheet).Range(s_cell_bj).Value '班级
……(省略4行)
hh = hh + 1 '下一行
End If
Next
Next
Next
End Sub
3.3 利用数据透视表和VLOOKUP函数生成课务报表
以生成“教师授课总表”为例,试将所整理的课程数据表用数据透视表处理一下,我们会发现,尽管数据透视表功能强大,得出的结果却不尽如人意,因为数据透视表的强项是处理数字,对于文本内容,常常无能为力,结果与我们的要求相
距甚远。
当然,处理得当也能为我所用,经研究我们发现,只要给每门课程及所在课室一个检索编号,就可以利用VLOOKUP函数把它重新找回来,用“平均值项”作为数据的处理方式即可。只要排除了课程安排上的冲突,只要同一个课室,就是同一个编号,计算的结果都是准确的。如图4、5、6所示。最后,生成了“教师授课总表”,如图7所示。
图4给课程和课室信息加上检索编号
图5,数据透视表处理结果1
图6,数据透视表操作向导
图7 数据透视表处理结果2
4. 结束语
以上分析主要从管理和技术角度介绍排课系统的特点,由于各个学校情况相差较大,可以直接采用其技术的可能性还是较小的,但如果从提高教学管理水平的愿望出发,则充分进行交流还是有必要的。本软件开发过程,能利用数据库管理知识,把课程安排变成一项教学研究工作,跳出常规的思维,可以说找到适当基层电大的一种较理想的模式,在此撰文,希望起到抛砖引玉的作用。
参考文献:
1,金玉明,课务安排计算机管理系统的一种设计方案,机电信息,2010,(6)
2.李政,梁海英,李昊,《VBA应用基础与实例教程》,国防工业出版社,2005年
3,倪海鸥,教室调度表的设计与实现,宁波广播电视大学学报,2006,(6)
4,张建成,EXCEL在高职院校师资预测中的应用,中国科教创新导刊,2011,(28)
5,何志斌,广播电视大学排课系统研究与实现,电脑与电信,2007,(3)
6,EXCEL HOME,《EXCEL数据处理与分析实战技巧精粹》,人民邮电出版社,2008年8月第一版