APP下载

基于VBA 的PPT 考勤管理系统的设计与实现

2020-06-15王宏杰许丽娟

现代计算机 2020年13期
关键词:数组控件考勤

王宏杰,许丽娟

(广东财经大学华商学院,广州 511300)

0 引言

考勤是教师管理课堂、督促学生学习的一个重要手段,也是评定学生平时成绩的一个重要因素。尽管信息化教学已发展多年,各课室都配备了多媒体设备,几乎所有教师都使用电子课件,但考勤工作却没能跟上信息化的步伐。目前市面上有很多具有考勤功能的软件,但往往需要联网、安装第三方软件等,这与很多学校的设施或管理是相冲突的,导致很多教师只能采用传统的纸质考勤。但传统纸质考勤,存在携带、篡改、丢失、统计等问题,使得部分教师对考勤比较消极,不打或很少打考勤,进而导致对学生平时成绩的评定无法公开、公平。

对此,本文提出基于VBA 的PPT 考勤管理系统,通过VBA 技术实现在Microsoft PowerPoint 课件上点名,在Microsoft Excel 中存储考勤数据,使得考勤工作完全电子化。系统完全集成在PPT 课件上,无需安装任何软件,无需网络连接,只要能播放PPT 的环境就能运行。Microsoft Excel 中的考勤数据,教师可以直接打开进行查看、统计等。

1 技术基础

1.1 VBA

VBA(Visual Basic For Application)是美国微软公司在Visual Basic 基础上开发出来,应用于其桌面应用程序的一种自动化任务编程语言。1993 年,VBA 开始出现在 Microsoft Excel 和 Microsoft Project 中[1],以满足用户在特定领域对Office 基本功能扩展的需求。目前,VBA 已集成于Microsoft Office 的大多数产品中,包括 Word、Excel、PowerPoint、Outlook 等。

本系统使用的VBA 是基于Microsoft PowerPoint 2016 的 Microsoft Visual Basic for Application 7.1。

1.2 ActiveX控件

ActiveX 是微软公司对一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。ActiveX 控件,是可以在应用程序中重复使用的程序对象,它的主要技术是ActiveX。VBA 编辑器提供的ActiveX 控件比较丰富,本系统使用到的有:命令按钮控件、标签控件、文本框控件、List Box 控件、单选按钮控件等。

2 系统设计

2.1 功能设计

系统以PPT 为宿主对象,以Excel 为数据文件对象,以班级为基本操作对象,设置新增考勤、再次考勤、更新考勤三大功能模块(图1)。

(1)新增考勤。用于一天中第一次对某班级点名,考勤数据将以当前时间为索引单独保存在Excel 的一列中。

(2)再次考勤。用于对前一次考勤进行补充,新考勤数据将之前的进行合并。根据再次点名的学生是否能与之前已点名的学生重复,分为两种情况:一是“全量随机”,此时可以重复,被重复点名的学生,考勤数据以最后一次为准;二是“剩余随机”,此时再次点名的学生不会与已经点过名的学生重复。

(3)更新考勤。用于对历史考勤数据的修改,系统先列出当前班级所有的历史考勤时间索引;然后,根据用户指定的时间索引将历史考勤数据呈现出来;最后,用户对历史数据进行修改,提交保存。

(4)点名方式。点名方式分两种:一是全量点名,对选定班级的所有学生进行点名;二是随机点名,在选定班级中随机抽取一定数量的学生进行点名。两种点名方式,最后都将点名结果以时间为索引保存在Excel 中。

2.2 数据存储设计

VBA 技术支持对 MySQL、SQL Server、Access 等数据库的访问[2]。但考虑系统的简单、实用性,本设计以Microsoft Excel 作为考勤数据的“数据库”,以方便非专业的用户对考勤数据的查看、统计等操作。

(1)Excel 文件。考勤数据的存储以课程为单位,一门课程一个考勤表(Excel 文件),以“xxx 考勤表”为文件命名,并和PPT 放在同一目录下。

(2)Excel 工作表。一个Excel 文件里面可以有多个工作表(sheet)。一个班级设置为一个工作表,工作表表名为班级名称。工作表里第一行为标题行,初始设置 2 列(第 1 列标题为“学号”,第 2 列标题“姓名”),将班级学生信息填充到表中,学号顺序没有要求。

(3)考勤信息。从工作表的第3 列开始,系统自动写入考勤信息。其中,第一行为时间索引表示点名时间,格式为“年/月/日/小时:分钟”(如 2020/01/28/11:07);其余行用字母作为考勤标识:C-迟到,D-到课,K-旷课,Q-请假,Z-早退,没有任何标识的表示该学生没被点名。

3 系统实施

3.1 初始化Excel

根据上述数据存储设计规则,新建一个Excel 文件,并将学生信息按班级写入表格中。Excel 文件的存放路径与PPT 保持一致。

3.2 界面初始化

(1)系统触发。设置一个命令按钮控件作为用户调用系统的触发器,由于点名时PPT 可能在任意页面,所以将命令按钮设置在幻灯片母版中[3],这样由母版创建的每一张PPT 页面都有这个按钮,而我们只需对母版命令按钮的点击事件进行编程即可。

系统触发后先读取考勤表里的班级、人数信息,然后加载到初始化窗口中。但以PPT 为宿主的VBA 不能直接使用Excel 相关对象和函数,需要先加载Excel对象库,即通过VBA 编辑器的“工具”,引用“Microsoft Excel 16.0 Object Library”,之后就可以通过程序来操作Excel 了,部分代码如下:

(2)初始化窗口。将上一步读到班级、人数信息,加载到初始化窗口(图2)的ListBox 控件中,并设置单选按钮作为用户选择点名方式的控件。如果是随机点名,则将班级人数四分之一的整数值作为文本框控件的默认值。同时,根据班级的不同,动态给出输入值范围,并对用户输入的合法性进行校验处理,部分代码如下:

图2 初始化窗口

3.3 新增考勤

(1)生成要点名的学生ID 数组。一个班级里可能有学生退学、重修等情况,导致一个班级里学号可能不连续,所以不能用学号作为序号。本系统将Excel 的行号作为学生ID,由于第一行是标题,因此ID 数组的取值范围为[2,PUB_studentsnum+1],其中 PUB_students⁃num 为全局变量,用于保存当前班级的学生人数。

全量点名时,ID 数组的数据元素就是{2,3,4,…,PUB_studentsnum+1}。随机点名时,利用Rnd 函数产生一系列不重复的随机数并保存到ID 数组中,代码如下:

(2)读取班级表格中需要点名的ID 对应的学生信息。上述得到的ID 数组,实际就是Excel 的行号,根据行号读取对应班级表里的学生信息:第一列的学号和第二列的姓名,组合成字符串“学号-姓名“,保存到数组中。部分代码如下:

(3)点名。点名窗口(图3)的ListBox 控件设置为2 列,第1 列用于加载上一步的学生信息,第2 列表示考勤信息。考勤信息用字符标识:C-迟到,D-到课,K-旷课,Q-请假,Z-早退。同时,为每个考勤标识设置单选按钮控件并对其点击事件编程,达到通过点击单选按钮动态改变考勤标识的作用。以“请假”单选按钮为例的代码如下:

图3 点名窗口

(4)保存考勤数据。遍历图3 的ListBox 控件,得到考勤标识,如果考勤标识为空则默认为“D”(到课)。然后,在班级表里新增一列,将这些考勤标识逐一写到ID 数组所记录的行里。部分代码如下:

3.4 再次考勤

设置“全量随机”和“剩余随机”两个单选按钮,系统动态给出取值范围。同时,以最大值的1/3 作为“剩余随机”的默认输入值,1/4 作为“全量随机”的默认输入值供用户参考,如图4。

再次考勤窗口的参数由用户设定后,点击“确定”,系统将生成新的需要点名的ID 数组,之后的操作与前面类似。再次考勤的数据将与之前的数据进行合并,时间索引更新为最后一次点名时间。

图4 再次考勤界面

3.5 更新考勤

遍历班级表的第一行,取出所有的历史时间索引(图5),加载到考勤时间选择窗口的ListBox 控件中(图6)。待用户确定时间点后,系统读取表里该时间点所在列的相关信息:行ID,学号-姓名,考勤标识。考勤标识不为空的,就是之前点过名的学生,之后的操作与前面类似。新考勤数据覆盖到原考勤时间所在的列中,实现历史考勤的更新。

图5 班级考勤表

图6 考勤时间选择窗口

4 结语

本系统以PPT 为宿主对象,以Excel 为数据文件对象,以班级为基本操作对象,利用VBA 技术实现了考勤管理的自动化、电子化,能满足部分教师的日常考勤需要。VBA 简单易学,教师们可以开发更多特色功能,丰富自己的教学工具,提升教学工作的“科技含量”。

猜你喜欢

数组控件考勤
国有企业考勤管理的问题和对策探究
基于C++Builder 的电子邮件接收程序设计*
JAVA稀疏矩阵算法
使用“填表单”微信小程序 统计信息很方便
事业单位人员考勤管理存在的问题及对策
基于.net的用户定义验证控件的应用分析
JAVA玩转数学之二维数组排序
三级甲等医院应用PDCA循环提升考勤管理的创新
更高效用好 Excel的数组公式
寻找勾股数组的历程