1. 引言
教室是高校开展教学与学生进行自主学习的重要场所,如今,随着教学要求的提高,教室智慧化也成为了高校提高教学质量的重要途经。门禁考勤系统是智慧教室的重要板块,便捷、高效、准确的考勤系统能够有效节省传统考勤点名所产生的无效时间,一定程度上保障学生的课堂出勤率 [1]。响应迅速、易于管理的门禁系统则为学校管理教室、学生进出教室提供了方便。现有的几种主流门禁考勤系统在准确性、快捷性、部署成本等方面往往难以兼顾。通过分析现有主流门禁考勤系统存在的不足,本文以当下较为流行的微信小程序为核心,结合二维码解码技术与人脸识别检测技术设计了一个智慧门禁考勤系统。该智慧门禁考勤系统兼顾考勤准确度高、速度快、部署成本低、门禁开启方便快捷等优点,实现了教室考勤与来访人员的信息化管理,有效节约了人力资源,提升了高校日常考勤管理工作的效率,对于强化学生管理、构建良好的校园学习环境有重要的参考价值与意义。
2. 现有门禁考勤系统
1) 人工门禁考勤 [2]。此种门禁方式下,为了便于学生平时上课使用,教室一般长期处于门锁打开状态,任何人都能随意进出教室,这给学校的安全带来了一些隐患,同时,也不便于学校对教室使用情况进行掌握。人工考勤的方式为上课时抽出几分钟由教师或班委根据名单进行点名。缺点为:占用课堂时间较多(在60人的班级大约需要占用5分钟);存在他人顶替或代答使得准确性较低;考勤信息一般为纸质记录且没有数据备份,不利于统计保存。优点为:流程简单,成本低。
2) 刷卡(NFC)门禁考勤 [3]。校园卡存储了师生的个人信息,通过简单的集成,学生将校园卡放置到对应机器感应区域就可完成考勤,同时,开启门禁。缺点为:存在他人代打卡的情况使得考勤准确率低;需要排队进行打卡导致速度慢;卡容易忘带或丢失。优点为:校园卡本身存储了师生的信息,所以方便集成开发;成本较低。
3) 指纹识别门禁考勤系统 [4]。此种方式使用较广泛,师生将手指放于机器指纹感应区便可以完成考勤开启门禁。缺点为:当手指受伤或脱皮可能导致指纹识别失败,所以对手指皮肤质量要求较高;学校师生人数众多,指纹录入工作量大;单次只能识别一人,速度慢。优点为:指纹识别的准确率仅次于虹膜识别,所以其准确性高。
4) 人脸识别门禁考勤系统 [5]。使用者需要将脸凑近对应机器的摄像头,经过人脸比对,完成考勤,开启门禁。缺点为:每次只能识别一人,速度慢;部署成本较高。优点为:能够杜绝他人代打考勤的现象,提高考勤准确性。
5) 基于微信小程序的智慧门禁考勤系统。本文提出的此种考勤门禁方式,以微信小程序为基础进行设计。考勤方面,进行微信小程序设计时,引入了人脸识别算法,通过调用手机摄像头学生可完成考勤打卡,非常方便。同时,该人脸算法具有活体检测功能,杜绝了学生使用照片进行打卡的情况,保障了考勤结果的准确性。在微信小程序中,所有学生可同时进行考勤工作,考勤速度快。门禁方面,硬件部分由电磁锁与二维码扫描器组成,部署成本低,利与推广。使用时只需将微信小程序所生成的门禁二维码置于二维码扫描器前,便可快速开启门禁,十分方便快捷。同时,微信小程序开发成本低,维护和升级较容易 [6],后期可根据需要进行二次开发,进一步拓展系统的功能。
3. 基于微信小程序的智慧门禁考勤系统
3.1. 系统结构
本文的微信小程序智慧门禁考勤系统由前端微信小程序、Web后台、MySQL数据库、电磁锁控制组件、二维码扫描器几个部分组成。前端微信小程序接收用户发出的交互信息,同时,将对应请求发送给后台,Web后台作为信息交互站,接收小程序端以及二维码扫描器发出的数据信息,进行逻辑处理后返回对应数据信息。MySQL数据库可存储从Web后台获取的学生考勤信息及门禁开启日志。二维码扫描器与电磁锁组件负责门禁的控制。系统主要功能包括了门禁控制与考勤打卡,具体流程如图1,图2所示。
3.2. 系统功能
整个系统主要包含两个功能,课堂考勤签到与二维码门禁识别开启,日常情况下,学生和老师可通过微信小程序生成的门禁二维码开启教室门禁。上课时,老师可以通过微信小程序随时发起考勤打卡,学生只需进入微信小程序打卡页面,将手机摄像头对准自己即可完成实时考勤打卡。教室相关的访问信息与考勤信息会存入MySQL数据库中,便于学校管理,同时,设置了注册页面,方便后续同学及老师的添加。进行微信小程序编写时,为老师和学生设计了不同的页面,分别为教师端及学生端,主要功能如下:
1) 教师端:随时发起考勤;查看管理班级学生签到情况;生成门禁二维码。
2) 学生端:通过手机摄像头进行人脸识别完成考勤签到;查看自身签到记录;生成门禁二维码。
3.3. 关键技术概括
3.3.1. HTML、CSS、JavaScript语言
HTML(超文本标记语言)、CSS(层叠样式表)以及JavaScript(解释型编程语言)共同构成了前端开发的基础,利用这三门语言可进行前端的设计与开发。本系统中,作为前端的微信小程序以这三门语言为基础,通过微信开发者工具进行开发 [7]。设计时,HTML用于控制小程序的页面显示布局,CSS用于控制小程序的页面样式(字体间距,模块样式等),JavaScript用于实现小程序的页面逻辑控制。
3.3.2. Java语言
Java是一门面向对象编程语言,在吸收了C++语言的各种优点的同时摒弃了C++里难以理解的多继承、指针等概念,因此,Java语言功能强大且简单易用。利用JVM (Java虚拟机),Java开发的软件有良好的跨平台性,软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行,因此,在嵌入式开发中常使用Java语言进行开发。本系统中,考虑到后续的可移植性,采用Java语言进行后台的开发。同时,使用Maven开发工具进行Java程序编写,节省了手动导入依赖的时间,大大提高了开发效率。
3.3.3. 人脸识别
人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术 [8]。通过调用摄像头,人脸识别系统能够动态抓取人脸并完成人脸特征信息的提取,将提取的信息与终端缓存、后台服务器中预留的人脸信息进行比对,以最终的比对结果来验证身份的合法性。本系统中的人脸识别通过调用百度人脸识别接口来实现,此接口通过检测人脸的150个关键点信息,计算两张人脸的相似度,从而判断是否为同一个人。利用该人脸识别接口,仅需通过微信小程序调用手机摄像头便可对相关人员进行快速识别。同时,接口结合了活体检测技术,杜绝了利用照片蒙混的现象。
4. 智慧门禁考勤系统的实现
4.1. 硬件实现
4.1.1. 门禁控制模块
本次实验采用的门锁为电磁锁,利用电生磁的原理,当电流通过硅钢片时,电磁锁会产生强大的吸力紧紧的吸住吸附铁板达到锁门的效果。因此,仅需通过对高低电平的控制即可控制整个门禁,易于开发使用。同时,相比于高级的智能锁,其造价更低,更利于普及。图3为所用电磁锁。
4.1.2. 门锁模块
二维码扫描器是解析二维码信息的仪器,常见有嵌入式、固定式、手持式。通过其内置软件,二维码扫描器能够很快读出二维码的相关信息并将其传输到后台。本实验中所采用的是一款固定式的二维码扫描器,检测到有人出示二维码时,二维码扫描器会立即进行二维码信息解析并将相关信息传入后台,经过后台信息比对,确认无误后二维码扫描器会发出一个高电平激活电磁锁,以此开启门禁。图4为门锁控制模块。
4.2. 软件实现
4.2.1. 微信小程序
微信小程序总体包括三个部分,考勤打卡模块、门禁二维码生成模块以及考勤情况查看模块,分别对应了微信小程序上的首页、二维码以及个人中心主界面。为了便于学生和老师的使用微信小程序,针对学生和老师分别设计了不同的界面,分为教师端(如图5),学生端(如图7)。在首页,老师可通过发起签到按钮进行学生签到开始时间与结束时间的设置(如图6),学生则可通过签到按钮进行人脸识别检测,完成实时的考勤签到(如图8)。在二维码界面,学生与老师均可通过点击微信小程序的生成二维码按钮生成门禁二维码,出示该门禁二维码即可开启门禁。在个人中心界面,老师可以查看其所管理班级所有学生的考勤情况,学生则只能查看自身考勤情况。最终,相关的门禁开启日志与考勤记录信息会同步传入微信小程序所关联的MySQL数据库,进行相关信息的存储,便于后续查看与修改,同时,也设计了登录与注册界面(如图9),以便老师和学生进行登录与注册。

Figure 6. Attendance page of teacher terminal
图6. 教师端考勤页面

Figure 8. Attendance page of student terminal
图8. 学生端考勤页面

Figure 9. Page of login and registration
图9. 登录和注册页面
4.2.2. web后台
本实验中的Web后台采用JavaWeb进行开发,通过http协议,微信小程序以及二维码扫描器可将获得的信息及相关请求传入后台Web端。对于这些信息,Web端会进行即时响应并进行一些逻辑处理,管理员也可直接对Web后台进行操作,对整个系统的一些参数进行修改。
4.2.3. MySQL数据库
MySQL是一种关系型数据库管理系统,它将数据保存在不同的表中。其灵活性强,速度快,同时,它由C和C++语言编写、支持多个操作系统,后续移植十分方便。本文实验中使用MySQL数据库存储小程序所产生的门禁开启日志信息及打卡信息,为后续查询及导出相关信息提供了方便。
5. 系统测试与分析
5.1. 实验设置
由于条件有限,本次实验仅在微信开发者工具中进行测试,实验中,预先设置了一个老师账号与两个学生账号来进行日常上课情景的模拟。首先,登录预先设置的老师账号,使用微信小程序首页的发起签到功能进行签到打卡的时间的设置,同时,发布签到信息。之后,分别登录两个学生账号并采用两种不同的方式进行人脸识别签到,观察签到情况与人脸识别成功率。最后,切换账号为老师端,使用微信小程序的二维码生成门禁二维码,将生成的门禁二维码放于二维码扫码器,查看门禁开启情况以及响应速度。
5.2. 人脸识别考勤打卡测试
本次实验以一个教师账号与两个学生账号模拟上课时进行考勤签到的情形,测试了两种不同的打卡情况下,人脸识别签到结果的可靠性。第一位学生在面部无任何遮挡的情况下进行考勤签到,在此情况下,人脸识别算法能够很好地对人脸进行对比识别,考勤签到几乎不存在失败的情况(如图10)。第二位同学使用照片进行考勤签到,尝试多次仍然显示签到失败(如图11)。
由以上实验现象看出:学生通过微信小程序进行人脸识别考勤签到时,微信小程序所接入的人脸识别算法有着很好的辨别图像与真人的能力,整个人脸识别考勤结果有较高的可靠性。
5.3. 二维码门禁测试
本次实验使用教师账号模拟教师进入教室的情景。教师进入教室时,首先需要进入微信小程序的二维码界面,使用二维码生成功能生成相对应的门禁二维码,将二维码放置于二维码扫描器前,电磁锁锁头缩回,门禁开启(如图12)。当未检测到合法二维码时,电磁锁凸起,此时门禁处于关闭状态(如图13)。具体过程为二维码扫描器会对出示的二维码进行解析,同时,通过http协议将信息发送给后台,后台对该条信息的合法性校验后,会返回信息指令,决定对电磁锁输出高电平或者低电平。
由以上实验现象看出:学生或者老师进入教室时,只需出示通过微信小程序生成的门禁二维码即可快速开启门禁,进入教室。
6. 结语
本系统开发完成后,对学生在多种情况下进行考勤签到的情形进行了模拟,以此测试系统签到结果的准确性。以50个样本为例,测试结果如下表1所示。

Table 1. System sign in result data under simulated environment
表1. 模拟环境下的系统签到结果数据
测试结果表明,学生使用小程序进行打卡签到时,即使在面部遮挡或光线暗淡的环境下,系统仍然能很好地识别出学生的人脸完成签到。同时,系统有良好的活体检测能力,杜绝了使用照片签到或他人代签的情况。经过多次测试,单个学生仅需20~30秒(受网络情况影响)就可以完成课堂考勤签到,整个班级完成考勤的时间可控制在2分钟以内。当需要开启门禁时,从出示二维码到门禁开启的响应时间也不会超过一秒钟。
综上可知,本系统为督促学生学习、促进教室智慧化提供了一种较为新颖的方案。该方案具有考勤速度快、准确度高、门禁开启方便快捷等优点,具有一定的研究价值与研究意义。
基金项目
贵州大学“创新创业训练计划项”项目(贵大省创字(2020) 071号)。
NOTES
*通讯作者。