一种基于智慧校园教学平台的教师总课表快速生成方法

  • 来源:消费电子
  • 关键字:办公自动化,教学管理,VBA 宏语言
  • 发布时间:2024-09-11 13:50

  黄玲娜

  【摘 要】智慧校园环境下教师的课务信息全部在教学服务管理平台中,查询时需要在联网的状态下登录平台,输入关键字后进行查询,有一定的局限性。为了提高工作效率,一个本地化的全院教师电子总课表是必不可少的,利用Excel自带的VBA 宏语言能快速制作教师电子总课表,极大减轻了教务员的工作量,同时也避免了传统制作过程中人为因素造成的错误。

  【关键词】办公自动化;教学管理;VBA 宏语言

  背景

  智慧校园建设为教育教学的日常管理注入了新的动能,智慧校园教学服务管理平台(简称教务平台)提供了多项教务管理功能(如教学计划及任务安排、课表编排、调课处理、成绩管理、学籍管理等),这使得教务员大大提高了办公效率,各项资源的利用率也大大提高。但教务平台依托网络,须在联网的前提下,登录系统后方可查询信息,而在实际工作中,为了及时响应工作需求,也为了有助于调课安排,往往需要汇总全院教师的课表信息,制作一张电子总表,教务员虽然可以从教学平台中导出教师的课表信息,但导出的课表体积大、一页上仅显示一位教师的课表安排情况,不管是打印还是查看都不太方便,因此,教务员需要自行制作符合实际工作要求的总课表。

  如果教务员采用手工录入的方法制作总课表,不仅效率低,而且会存在错误,如果能根据教务系统中的排课情况,一键生成教师总课表,会极大地提高教务员的办公效率。

  一、方案

  教务平台是高校在智慧校园建设环境下购买使用的一个通用型应用软件,其功能可以满足大部分教学管理所需,但教务平台不具备一键生成符合实际需求的、有特定格式的全院教师总课表的功能,如果通过软件定制功能来满足要求,需要投入的资金巨大。本方案采用Office软件自带的VBA宏语言功能,通过编写一些简单的代码,即可实现一键生成教师总课表,避免了手工录入产生的错误,极大地提高了办公效率。

  (一) Excel VBA的介绍

  Microsoft Excel是广大办公用户所熟知的Microsoft Office软件中的电子表格软件,在计算机专业人员眼中,它也是一种操作简便的数据库管理工具。VBA是Visual Basic forApplications的缩写,是微软公司开发的宏语言,它被内置于Microsoft Office软件中。依靠VBA,Excel可以成为数据库管理工具;有了VBA,可以基于Excel应用程序进行二次开发;通过VBA,可以设计出与Windows窗口风格一致的交互式界面,便捷地实现对Excel表格的数据管理。这种基于ExcelVBA管理信息系统得到较为广泛的应用[1]。

  (二)选择EXCEL VBA宏语言的原因

  VBA是一种简单且功能强大的编程语言,可用于扩展Office应用程序,VBA 脚本可用于加速执行日常任务,为Office应用程序添加新功能,使用 Excel VBA可代替大部分格式设置、编辑或者函数调用[2]。

  用于功能开发的计算机语言种类繁多,VBA不是最常使用的,甚至有人认为VBA已经过时了,但从实际应用来看,VBA并未完全过时,目前最新的 MS Office 2021 、365 版本都还支持 VBA,因此只要微软 Office 新版本继续支持,VBA就不会过时、不会消失。相比Java、C#、python来看,VBA是office原生支持的,不需要部署环境,也无须安装数据库软件,在使用时,如果用其他开发语言,需要先部署环境,建立数据库,编写代码,设计人机交互界面(制作网页等),步骤十分繁琐,而excel就是一个整体,工作表可以作为“数据库表”,工作表也可作为“交互界面”,相比较而言,VBA更适合用于办公过程中实现某个既定流程的自动化处理,可提高办公效率,且移植性高。因此在本方案中,选择用Excel VBA宏语言编程实现教师总课表的一键生成。[3]为了更快捷地生成教师总课表,也曾使用MySQL数据库+PHP环境的方式制作教师总课表,但这个方法存在一些局限性,有以下不便之处:

  (1)需要搭建环境

  搭建环境,首先是下载安装Apache HTTP服务器软件,其次是PHP及MySQL软件包,这些软件都是免费的,可在官网上下载,同时,为了保证软件能够正常使用,还需配置PHP运行的环境参数,过程较为复杂;

  (2)需要维护数据库

  使用MySQL数据库软件管理数据时,首先要设计数据库的模型、建立数据表的结构、录入数据,而为了生成教师总课表,在数据库中至少需要建立3个工作表:教研室表、教师信息表、教师课务表,在每次生成新课表前,还需要对数据表进行更新维护,增加了工作量和复杂性;

  (3)需要调整格式

  PHP是一种在服务器端执行的脚本语言,通过编写代码首先在网页上生成教师总课表,再下载到本地计算机,保存下载的文件格式为Excel文件,这种方法得到的电子表的行列格式还存在着很大的问题,每次生成新课表后都需要花费一定的时间反复地调整格式,给工作带来了不便。

  因此,相比较而言,直接使用Excel的VBA宏语言更加简便快捷。Excel软件在电脑中使用非常普遍,不管是微软还是WPS,其Excel都支持VBA,也无需再另外安装其他软件,不需要配置环境参数,直接在Excel中编写简单的代码就能实现目标功能。

  (三)实现过程

  1.数据准备

  智慧校园教学管理服务平台提供了课表编排的功能,每学期课表编排结束后,从教务平台中导出全院教师课表数据文件,这份原始文件中的数据格式与实际所需的格式往往不同,因此要根据原始数据内容来制作符合实际需要的总课表。

  首先准备好一个Excel文件,在Excel文件中包含2个工作表,工作表1用于生成总表,可将其命名为教师总表,教师总表内先预填一系列空白课表,每张空白课表的行标题为节次,列标题为星期,每横向放置4位教师的课表,课表按教研室名称分类,预先将全院教师名字按照其所在教研室分类后填入空白课表中;工作表2用作数据源,命名为数据库表,每学期课表编排完成后,教务员从教务平台中导出全院教师课表原始数据,将原始数据用作数据源时,需对内容和结构进行调整,原始数据中可能会存在合并的单元格,要取消合并的单元格,删除不符合要求的标题,整理数据,确保每个教师在数据表中仅有一条课务数据记录。为了后续生成课表时数据能自动对应填入,数据表中每位教师的课务数据记录采用一1、一2、一3、一4作为列标题,分别代表星期一第1-2节、3-4节、5-6节、7-8节课,后续列标题依此类推记录每位教师每天的课务情况。

  2.分析及实现

  (1)生成课表

  在Office软件中,VBA提供了大量访问对象(如页面设置 PageSetup、表格设置 Tables、段落设置 Paragraph、字体设置Font等),由于它具有强大的对象控制能力、功能的扩展及定制能力,突破了Office的自身极限,因此可以完成MS Office本身无法完成的功能[4]。通过对这些对象的属性设置、方法使用和事件驱动,实现对office的再次开发,从而实现一键生成总课表的功能。Excel在设计模式下提供了丰富的表单控件用于交互界面的制作,要使用表单控件首先要启用Excel的开发工具,需要进入Excel文件菜单→选项→自定义功能区,将开发工具添加到主选项卡中。添加成功后,在窗口上方选项卡上点击“开发工具”栏,在“插入”按钮下即可找到表单控件,本方案使用了表单控件中的按钮控件,在工作表界面的空白处插入两个按钮,一个用于一键生成总课表内容,一个用于一键清除总课表课务信息内容,通过按钮控件的属性对话框,可以轻松地修改按钮文字、大小、颜色等样式。

  VBA作为一种面向对象的编程方法,它将代码组织为不同的对象、类、模块等不同的层次,这样可以更加灵活地处理数据逻辑、提高代码的可读性和维护性[ 5 ]。在工作表中插入两个窗体按钮控件后,将其中一个按钮(CommandButton1)的caption属性设置为“生成”,进入代码编辑界面,选择代码编辑对象为“CommandButton1”,事件为“click”。需要实现的功能为:当点击该按钮时,由Excel自动将工作表2:数据库表中的数据内容按教师名称填入工作表1:教师总表的对应单元格内,生成一张适合打印、便于查看的总课表。

  实现自动生成总课表的核心算法即为“两个表的循环判断”,如何实现这一过程呢?为了生成教师总课表,需要在工作表2:数据库表中逐个取出每条数据记录,将该条数据记录中的教师姓名与工作表1:教师总表中的教师姓名进行比较,如果相同则将该条数据记录中的课务信息填入工作表1中该教师课表的相应单元格内。

  教师总表中每横向显示4位教师的课务信息,因此这四位教师姓名分别位于A、I、Q、Y列,在自动匹配过程中,程序自动从工作表2:数据库表中取出一位教师的数据记录(即一行数据),将教师姓名与工作表1:教师总表中的第A、I、Q、Y列单元格内教师姓名逐个比对,如果相同,则在工作表1该教师的课表内按序将课务填入,填入的规则是——工作表2:数据库表中某教师数据行中列标题为“一1”的单元格数据内容填入工作表1:教师总表对应教师“周一”节次为“[1-2]”后的一个单元格内,其他依此类推,最后将该教师课务信息完整地填入课表中。

  实现此过程的主要关键技术为:

  ①Excel表的实例化:通过set关键字创建数据表的实例化对象,如:Set b1 = Sheets("教师课表"),后续可通过实例化对象名b1访问Excel文件中的“教师课表”工作表。

  ②获取数据表中的记录总数:VBA的Range对象提供了CurrentRegion属性,这个属性返回一个Range对象,该对象表示当前区域,常常用来获取动态的单元格区域。CurrentRegion.Rows.Count可用于返回区域中行的个数,是一种常用的行计数方法。

  ③循环判断:为了匹配数据,需采用循环嵌套,外层循环逐条获取工作表2:数据表中每一条课务数据记录,取出后在内层循环遍历工作表1:教师课表中每个教师姓名,如相同,通过Range对象获取单元格内数据填入教师课表中。

  (2)清除教师总表中的课程内容

  每当新学期来临,教师总课表需要清除原数据,生成新数据,因此清除功能也是必不可少的,清除数据时,仅需删除课务信息,但要保留数据表的行列格式,在核对更新各教研室的教师名单后,点击生成按钮,即可得到新学期的教师总课表。

  实现清除数据功能同样采用表单控件中的按钮控件,将之前插入的按钮(CommandButton2)的caption属性设置为“清除”,进入代码编辑界面,选择代码编辑对象为“CommandButton2”,事件选择为“click”。需要实现的功能为:仅删除当前工作表中的课务信息。由于教师总表中每横向显示4位教师的课表,清除时仅去除掉课务信息,保留其他部分,每位教师的课表占5列,4位教师的课表数据分别位于C-G列、K-O列、S-W列、AA-AE列,点击清除按钮,即要清除这些列中的课务信息内容。

  实现此过程的主要关键技术为:

  ①清除信息:通过设置课表中单元格数据为空值来达到清除的目的,例如:b1.Range("C 4") = "",即清除C4单元格中的内容。

  ②保留需要的数据:在清除数据时要保留部分数据,如教研室名称、教师姓名、课表中的星期和节次,需要清除的仅是教师课表中每天的课务数据,因此遍历+判断的方法来判定实现哪些数据需要清除。Range("A1").CurrentRegion.Rows.Count可获取教师总表中的记录数,在遍历过程中,如果某单元格的内容为节次标题(如:[1-2]),即清除该单元格之后横向5个单元格中的数据(即每天该节次的数据)。

  二、实施效果

  该方案在150人规模背景下已使用数个学期,每学期课表编排完成后,从智慧校园教务平台中导出原始课表数据,用该方案生成全院教师电子总课表花费时间在5秒以内,此方案快速有效、准确性高,也无须重新调整电子表格式,极大地提高了办公效率。实践证明方案是成功的,当然在代码设计时还有一些不足之处,会在今后的使用过程中进一步完善和维护。

  结束语

  智慧校园教学服务管理平台在日常教学管理中发挥着重要的作用,但无法满足教务员所有的实际工作需求,教务平台功能的升级完善需要一定的时间周期,也需要投入不菲的资金数额,而且也不是所有的需求都能实现升级补充,Excel的VBA功能设计实现自动生成教师总表,既能满足个性化需求,又提高了办公效率,具有一定的应用价值。

  用本方案自动生成教师总课表,其实就是一个启用了宏的Excel文件,因此操作简便,节省资源,易于维护。实践表明,Excel及VBA,在实现办公流程的自动化处理方面具有优势,可开发出易维护、易操作、省资源的系统,是实现办公自动化,提高工作效率的便捷手段。

  参考文献:

  [1] 刘柱鸿, 黎鑫, 彭元辉. 基于Excel VBA 的教学秩序督查报表管理系统设计与实现[J]. 软件工程,2018,21(4):45-48.

  [2] 杨明, 傅天翔. 基于VBA 的汽车零部件物流包装方案信息管理应用[J]. 电脑编程技巧与维护,2022(12):94-96.

  [3] 周德林. 运用VBA 自动生成子课程表[J]. 电子测试,2018(21):135-136.

  [4] 马宁, 邓先瑞, 杜瑞庆. 基于VBA 和EXCEL 的学生成绩排序[J]. 中国科技信息,2007(1):231-232.

  [5] 王超. 基于VBA 技术的一键公文自动排版的实现[J]. 淮海工学院学报(自然科学版),2015,24(3):42-46.

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: