王宏杰
(广州华商学院,广州511300)
近年来国家从多方面对高等教育提出了改革的意见和方案。目前高等教育在某些环节上存在一定的缺陷和不足,以考勤管理为例,作者通过观察发现上课很少考勤或不考勤的情况在各高等院校中是很常见的。从我国学生的成长过程和实际情况来看,教师不考勤无疑滋生了学生逃课情况的发生、助长了消极的学习氛围、打击了学生的积极性(全勤的学生和零出勤的学生,最后平时成绩的考勤得分都一样)。
教师之所以消极对待考勤,原因主要有两个:一是没有有效的管理制度;二是没有便捷的工具。随着国家相关意见、方案的出台,各高校不断完善自身的教学制度和章程,使得管理制度问题逐步得到解决。工具方面,有些高校引进了互联网产品,如“雨课堂”、各在线教学平台等,这些产品都具有考勤管理功能;还有些高校引进了打卡设备,如刷卡机、刷脸机、指纹机等。
然而,各高校的基础设施是不一样的,有些教室是没有网络或网络不稳定的。另外,各教师对课堂环境的要求也不尽相同,有些要求课堂不能有互联网、有些要求课堂只能用内网或专用网络等,一旦没有外网,传统的互联网考勤工具就无法工作了。打卡设备存在易代打、成本高等缺点[1],传统的纸质考勤存在难携带、难统计、易篡改、易丢失等问题。
对此,本文提出一种与课堂网络无关的高校考勤系统,以解决上述问题。该系统由两个子系统组成,一个是利用VSTO实施的与课堂网络无关的考勤采集子系统,一个是利用SpringBoot和Vue实施的在线考勤信息系统。
VSTO(visual studio tools for office)是微软公司在其.net平台下的Office开发工具包,是升级版的Office产品扩展解决方案。具有多语言支持、托管代码扩展、数据缓存、WPF支持、可视化的设计器、自定义用户界面、安全改进等特点[2]。
SpringBoot是Pivotal团队开发的能有效简化Spring应用程序初始搭建及开发过程的框架,具有简化依赖、简化配置、简化部署、简化监控等特点。
Vue是一套用于构建用户界面的渐进式Java Script框架,具有轻量、数据双向绑定、指令简单、插件丰富等特点。
与课堂网络无关,意味着课堂上现场产生的考勤数据不能立即提交至远程服务器,需要先暂存在本地,待网络良好时再上传。服务器的数据库中有了考勤数据后,就可以通过在线系统向学生、教师以及其他角色提供考勤信息服务。因此,本系统设计了两个子系统:考勤采集子系统和考勤信息子系统,总体结构如图1所示。
图1 总体结构
(1)考勤采集子系统。利用VSTO实施,它以PPT为宿主程序(PPT打开后,该子系统以菜单的形式出现在PPT的菜单栏上),并将Excel作为考勤数据的本地暂存介质[3]。本地保存成功后,自动判断网络是否可用,如果可用则立即将本地数据上传至服务器;如果不可用则等到有网络时,用户通过该子系统的上传功能,将本地考勤表数据提交至服务器。
(2)考勤信息子系统。利用SpringBoot和Vue实施,它是在一个B/S结构的在线WEB系统,用户通过浏览器实现对服务器数据库中考勤数据的操作。
整个系统分为考勤采集子系统和考勤信息子系统,各子系统又分别包含若干个功能模块,如图2所示。
图2 系统功能模块
考勤采集子系统包括文件读取、考勤新增、考勤修改、考勤保存、考勤上传等5个功能模块,具体如下:
(1)文件读取。文件是指考勤表,它是一个Excel文件,用于存放基础信息以及考勤数据的本地暂存,这个文件需要提前按照一定规则初始化好(详见3.1)。系统读取该文件获得教师、课程、班级、学生等信息为后续操作提供数据基础。
(2)考勤新增。向用户提供可视化接口,方便用户选择考勤表文件、班级工作表、考勤方式、学生以及考勤标志等。其中,考勤方式分为全量考勤和随机考勤两种:全量考勤是指对班级的所有学生进行点名;随机考勤是指随机抽取一定数量的学生进行点名。
(3)考勤修改。以时间为索引,展现历史考勤数据,并支持对历史考勤标志的修改。
(4)考勤保存。用于将考勤结果保存至本地考勤表中,考勤结果包括考勤时间、考勤对象和考勤标志。
(5)考勤上传。以本地考勤表Excel的列为数据单元,将新增或修改过的数据上传至服务器的数据库中。
考勤信息子系统包括规则设置、考勤查看、数据统计、用户管理、系统管理等5个功能模块,具体如下:
(1)规则设置。每位教师可以对自己所授课程的考勤评分规则进行设置。如考勤总分、迟到1次扣多少分、旷课1次扣多少分、旷课多少取消考试资格等。
(2)考勤查看。学生可以按课程查看自己的考勤情况、考勤得分等信息。
(3)数据统计。教师可以从班级、学生等维度进行考勤数据统计;管理者可以从课程、教师、班级、学生等维度进行考勤数据统计。
(4)用户管理。管理员对学生、教师、管理者等用户进行批量导入、权限分配以及单个用户的增删改查等操作。
(5)其他管理。包括班级、课程、上课时间、排课等基础数据的管理维护以及其他相关工作等。
按照数据库设计原则,在服务器的MySQL数据库中设计课程信息表(课程id、名称、学期、理论课教材、实验课教材等)、教师信息表(教师id、姓名、性别、电话、院系、专业等)、班级信息表(班级id、名称、院系、专业等)、学生信息表(学生id、姓名、性别、电话、班级id等)、排课信息表(id,学期,班级id,课程id,教师id等)、上课时间表(id、季节、第1节课开始时间、第1节课结束时间、第2节课开始时间、第2节课结束时间等)和班级考勤表等多个数据表。
其中,班级考勤表的设计有些特殊。该表用于记录班级信息、教师信息、课程信息、考勤时间以及各学生的考勤标志等。为了将这些数据方便地插入表中,作者将其设计成表1所示形式(以20本计算机科学与技术1班为例)。该表的特殊在于将学号信息作为表的字段,由于字段不能是纯数字,所以在学号前面加了一个s。
表1 20本计算机科学与技术1班考勤
考勤表Excel文件以模板方式提供给用户,或者通过程序实现相关数据的自动填写后,再提供给用户下载。假设以模板方式提供给用户时,需要用户做以下初始化工作:
(1)考勤表文件名。为了方便程序筛选出所需要的文件,要求文件名必须含有“考勤表”三个字,且直观易懂。通常一门课程对应一个考勤表,以“C语言程序设计”课程为例,其考勤表可以命名为“C语言程序设计-考勤表”。
(2)“设置”工作表。考勤表里有一个名为“设置”的工作表(Sheet),需要在其C列填写相关基础信息,如图3所示。
图3 考勤表基础信息设置
(3)班级工作表。一个班级创建一个工作表(Sheet),并以班级名作为Sheet名,工作表内有学生学号和姓名信息。如某教师本次带20本计算机科学与技术1班与20本软工程1班的C语言程序设计课程,则需要创建2个工作表,并将学生信息录入到表中,如图4所示。
图4 班级工作表初始化
(4)安全规范。考勤表通常保存在教师U盘中,具有很大的丢失风险,为了防止相关数据的泄露,要求考勤表利用Excel密码加密的方式进行安全保护。考勤采集子系统在读取考勤表时会要求用户输入密码。
(1)功能菜单。在Visual Studio中创建项目后,在RibbonMain中添加功能区选项卡,该选项卡就是将来显示在PPT菜单栏上的菜单项。利用可视化工具箱,拖拽Group控件和Button控件创建如图5所示的子菜单。
图5 功能菜单
(2)网络检测。当菜单加载后需要检测到服务器的网络情况,并将结果反映在菜单项的网络状态按钮上。同时,支持用户点击网络状态按钮,触发网络检测。由于通过Ping实施网络检测需要消耗一定时间才能获得返回值,因此网络检测功能需要进行异步处理。部分关键代码如下:
(3)文件读取。按照教学PPT与考勤表通常放在U盘同一目录的习惯,考勤表位置默认为当前PPT路径,也支持用户通过浏览的方式自定义考勤表位置。当路径确定后,系统自动读取并展示所有文件名包含“考勤表”的Excel文件。当用户选择某Excel文件后,弹出密码框,要求用户输入Excel保护密码,验证成功后,以列表方式展示除“设置”以外的所有班级工作表,并将班级人数统计出来,如图6所示。
图6 初始设置界面
(4)考勤新增。用户选择班级工作表后,系统默认选择“随机考勤”,且数量默认是班级总人数的四分之一,也支持用户通过滑动条在[1,班级人数]之间进行调整。点击“确定”后,出现“考勤-新增”选项卡,里面以列表方式展示系统抽取到的需要点名的学生信息,选中学生时,考勤标志默认为到课,通过考勤标志单选按钮进行修改,如图7所示。
图7 考勤新增界面
(5)考勤修改。用户选择班级工作表,选择“更新考勤”后点击“确定”,出现“考勤-修改”选项卡,系统从班级工作表的第3列开始读取所有列的第一个单元格里的时间值并展示在列表中,用户选择时间点后点击“确定”,历史考勤信息被展示出来,通过考勤标识单选按钮进行修改,如图8所示。
图8 考勤修改界面
(6)考勤保存。当用户点击“提交考勤”(考勤新增的提交)或“提交修改”(考勤修改的提交)时,都需要将数据保存至本地考勤表中。如果是考勤新增的保存,则考勤数据追加在班级工作表的最后一列,其第一个单元格为当前时间值;如果是考勤修改的保存,则考勤数据保存在原始列,其第一个单元格里的时间值不变。两种情况的保存,都需要在第一个单元格的时间值后面添加“#”,表示该列数据需要上传。考勤数据保存完毕后,修改考勤表文件名,在原文件名后添加“#”,表示该Excel文件有需要上传的数据。部分关键代码如下:
(7)考勤上传。当考勤保存成功后,自动进行网络检测,若当前网络可用则自动触发考勤上传,此时系统遍历当前班级工作表中的所有列,对第一个单元格含有“#”的列,将其数据插入到数据库对应的班级考勤表中。若当前网络不可用时则不进行上传,待有网络时,用户通过“点击上传”手动触发考勤上传,此时系统遍历当前考勤表里的所有班级工作表,对第一个单元格含有“#”的列,将其数据分别插入到数据库对应的班级考勤表中。列数据上传成功后,自动去掉该列第一个单元格里中的“#”,表示该列数据已上传。所有数据上传完毕后,自动修改考勤表文件名,去掉其“#”,表示该文件的数据已上传。
考勤信息子系统是利用SpringBoot和Vue实施的在线系统,包括规则设置、考勤查看、数据统计、用户管理、其他管理等功能,由于篇幅原因,其实施过程在此不展开论述。
利用VSTO实施的考勤采集子系统,先将考勤数据保存至本地Excel中,再伺机上传至服务器,实现了与课堂网络无关的考勤数据采集,且该子系统以PPT为宿主,贴合课堂考勤场景。利用SpringBoot和Vue实施的在线考勤信息子系统,能满足不同角色对系统和数据的操作要求。两个子系统结合能有效解决文章开篇提出的问题,实现与课堂网络无关的考勤管理。