吴君胜, 莫景彤
(1. 广州市广播电视大学,广州 510091;2. 华南理工大学,广州 510641)
勤管理是人力资源管理的一项重要工作,校园内的考勤管理主要是面向学生和面向教师的签到统计。使用读卡机、指纹识别、人脸识别等生物认证设备,考勤签到成本较高。针对教学的现实需求,面向教师的签到考勤主要是教师任课登记和教学日志记录。面向学生的签到考勤主要是课堂到课率巡查、课堂点名、实验室签到等。依靠人工的记录和统计,既费事又费力,存在效率低下、统计繁琐、数据共享查询不便以及无法解决代签等问题。
随着移动互联网的快速发展,移动终端设备极其普及,在“互联网+教育”的背景下,针对上述问题,本文结合开放大学“面授实训+移动学习”的混合式教学模式的实施,逐步融合面授教学和移动教学的各种数据,以签到数据为入口,提出教师和学生的双签到的系统设计方案,通过移动终端设备完成快速签到,能有效提高统计分析效率并实现数据共享查询。考虑微信公众平台的系统开发能同时适用于Andriod和iOS等移动操作系统,避免开发不同的移动应用程序所带来的新问题,在微信极其普及的情况下,利用云服务器,开发了基于微信公众平台的课程云签到系统。
课程云签到系统重点实现教师和学生双向签到的功能,是服务于教学的智能化系统,既可以用于面授教学也可以用于在线教学,智能化判断签到有效性是系统的关键需求。就面授教学而言,教师的教学日志记录和学生到课率统计情况都能为教学管理提供理论依据。学生到课率是指按教学计划进程安排,教学班级的课程实到人数和应到人数的百分比。在某种意义上,它反映了学生的学习积极性、自觉性,也是学风的重要标志之一[1]。教师的教学日志记录,除了反映教师出勤和学生上课情况,它还反映了教师的教学积极性、责任心,也是教风的重要标志之一。因此,系统需求应能满足以下几点:
1)教师教学日志填写从手工填写转变为微信公众号上的电子填写,完成教学签到,同时替代教学巡查的教师任课登记。学生通过二维码完成到课签到,替代传统课堂点名或实验室签到,后台自动统计数据替代教学巡查到课人数的人工统计。
2)通过移动设备限定教学场地的地理位置范围和时间范围,根据设备数据采集自动识别签到有效性。
3)根据签到数据提供教师任课情况、学生到课情况、课程到课率情况、课室或实验室利用率、实验室设备故障情况等统计信息的查询,并考虑其他系统数据的接入和功能扩展。
基于微信公众平台的课程云签到系统主要由微信公众平台、微信客户端、课程云签到信息管理系统3个部分组成,前两者均为腾讯公司产品。微信公众平台是微信公众号管理后台,微信客户端即是用户界面又是测试界面,作为开发者,实际面对的主要对象是微信服务器和应用程序(网站)服务器,如图1所示。课程云签到信息管理系统是重点开发的Web应用程序(网站),可通过授权接口和功能权限作为公众号第三方管理平台,其用户为教学管理人员。系统采用ASP.NET作为开发平台,部署在云服务器。
图1 消息通讯流程图
系统的基础信息主要包括教师信息、学生信息和课程信息。教师或学生必须先关注微信公众号,教师用户信息和学生用户信息都与每个微信号所具有的唯一用户标识openid相关联,绑定手机号,在一定程度上防止相互代签,并通过课程云签到信息管理系统对微信用户信息进行管理。教师用户信息通过注册完成,经过教师角色审核激活课程设置权限,教师职工编号可关联校园其他管理信息系统,学生用户通过第一次签到录入姓名、学号和手机号,自动完成注册绑定,以后每次使用微信扫码签到时会自动显示学生信息,减少每次输入的繁琐步骤。学生用户不能发起课程设置,仅能签到,学生号可关联校园其他管理信息系统。为了不受限于排课系统数据,课程信息按课次设置课程。所有信息按照设定的表单字段存储在云服务器的数据库中,在课程云签到信息管理系统中提供对信息的增删改操作。
整个系统的所有功能都是基于签到功能获取数据,签到逻辑是系统设计关键,角色及流程图,如图2所示。
教师用户在任课当天连接无线网络,打开微信进入微信公众号,在菜单中选择设置课程,填写或选择课程信息提交,信息内容同时包括自动获取GPS定位数据、IP地址等有效性判定数据,微信公众号生成课程的专属二维码,教师即可向学生展示二维码,教师用户完成任课签到。
学生用户在上课时通过扫描二维码,自动进入微信公众号填写个人信息并提交完成签到,系统将根据,GPS定位数据、IP地址等有效性判定数据,返回签到是否成功的提示。如果显示签到成功,学生完成到课签到。如果不成功,系统将返回原因或错误信息,提示重新签到。
图2 签到角色及流程图
教师任课签到和学生到课签到的所有数据将会传送到云服务器的数据库中进行存储。
教师用户在注册审核后可发起课程签到,微信公众号生成并推送课程的专属二维码,学生扫描二维码后自动进入微信公众号,并向学生直接推送签到链接,每个学生成功签到后推送签到消息到教师用户微信客户端,根据消息顺序号可得知签到人数,同时推送签到成功消息到学生用户微信客户端,反馈签到成功。
系统以网页的形式提供课程云签到信息查询[2],所有微信用户可凭借微信号的openid绑定信息查询签到情况,数据查询功能分为移动设备微信客户端查询和课程云签到信息管理系统PC端查询。
移动设备的微信客户端查询自动判断用户类别。学生用户点击微信公众号菜单的签到查询,显示指定时间段内的个人课程签到情况,并可对课程提交评价。教师用户点击微信公众号菜单的签到查询,根据openid信息显示指定时间段内的个人任课情况,进入课程可查询详细的学生签到名单,并可对学生情况、课室环境、设备状况提交评价反馈。
课程云签到信息管理系统面向教学管理人员,提供按搜索条件查询教师任课情况、学生到课情况、学生签到率统计等信息,并可导出Excel保存或打印。可根据需求不断扩展数据获取范围、数据查询功能以及数据统计内容,例如根据任课教师对设备的故障反馈发送数据到设备维修管理信息系统实现自动生成课室设备维修申报单等。
课程云签到信息管理系统包括微信公众号的信息管理和课程云签到的业务信息管理,是基于ASP.NET开发框架构建的网站,使用PC浏览器进行数据操作管理,数据库设计包含39张二维表。微信公众号的信息管理包括菜单管理、素材管理、用户管理、组别管理、客服管理、模板管理、支付管理和后台维护等。课程云签到业务信息管理是签到系统的核心数据,主要包括学生信息、教师信息、课程信息、签到信息、定位信息等,数据库关系图如图3所示。
图3 签到功能的数据库表间关系图
本文以开发实际可用的系统为研究目标,研究的实验数据依靠系统试运行获得,设计以及算法的实现都体现于系统功能中。
1)系统开发平台
系统的开发工具使用Visual Studio 2017,在ASP.NET的开发框架下,采用C#语言编程,结合SQL Server 2008 R2进行数据库管理,系统以网站形式部署在Windows Server 2012 R2网络操作系统的云服务器上,通过IIS发布网站,在完成一系列域名注册和备案审批流程后,与微信公众号无缝结合。Web服务和数据库服务都在云服务器上稳定运行,同时降低部署实施的技术难度。
2)系统功能的关键技术实现
微信客户端通过https协议访问带有指定跳转URL的链接,发起网页授权请求,微信公众号自动跳转到所带有的URL链接的页面,页面根据微信提供的授权票据获得json数据,在.NET程序中通过JavaScriptSerializer类解释json数据:json={ "access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID","scope":"SCOPE" },字典对象Dictionary里面的每一个元素都是一个键值对,由键和值两个元素组成,从而可获取键openid的值[3]。
在用户允许上报地理位置后,教师用户或学生用户在每次打开微信公众号时,将会自动获取GPS定位数据,上报地理位置以推送XML数据包到开发者填写的URL来实现[3],如图4所示。签到页面获取用户地理位置需要通过引入微信JS文件,使用微信JS-SDK获取信息,并通过jQuery的 AJAX代码写入服务器数据库,包括经度、纬度、精度和速度。为了保证传输数据的真实性,可附加对openid的MD5验证签名,关键代码如下:
//判断openid附加约定的密钥串在MD5算法加密后是否与签名信息一致
if (Utility.DataProtector.EncrypMD5(openid + "," + _system) == sign)
考虑签到提交的地理位置信息可能被篡改伪造,为了防止伪造的http请求,将提交的数据和验证数据的动态签名传输到服务器端,验证签名成功才能保存到数据库,关键AJAX代码如下:
$.ajax({
cache: false,
async: false,
type: "POST",
data: {},
url:
"Position.ashx?openid=<%=_openid%>&sign=<%=_sign%>" + "&latitude=" + latitude + "&longitude=" + longitude + "&accuracy=" + accuracy + "&speed=" + speed + "&rnd=" + Math.random(),
success: function (response) {
//成功信息提示
},
error: function (msg) {
//失败信息提示
}
});
教师用户设置课程时储存教师所在位置的经纬度和精度数据,用于与学生用户签到时所获取的经纬度数据进行比较,计算出距离,以确认签到提交的有效性。根据两点经纬度计算方法,设两点A、B的经纬度为(LngA,LatA)、(LngB,LatB),则半径为R的球面上两点间的最短距离公式为:
LAB=R*arccos[sin(LatA)sin(LatB)+cos(LatA)cos(LatB)cos(LngA-LngB)]
因为地球是一个近乎标准的椭球体,根据三角推导,可以得到如下公式:
C=sin(LatA*Pi/180)*sin(LatB*Pi/180)+cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos(LngA-LngB)*Pi/180
Distance=R*Arccos(C)*Pi/180
两个经纬度之间计算距离的SQL Server自定义标量值函数关键代码如下:
CREATE FUNCTION fnGetDistance(@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL)
RETURNS FLOAT AS
BEGIN
DECLARE @Distance REAL --距离
DECLARE @EARTH_RADIUS REAL --地球半径
SET @EARTH_RADIUS = 6378.137 --以公里为单位
DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL,@RadLngDiff REAL
SET @RadLatBegin = @LatBegin *PI()/180.0
SET @RadLatEnd = @LatEnd *PI()/180.0
SET @RadLatDiff = @RadLatBegin - @RadLatEnd
SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0
SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))
SET @Distance = @Distance * @EARTH_RADIUS
SET @Distance = Round(@Distance * 1000,3,2) --以米为单位
RETURN @Distance
END
函数调用计算出距离后,参考精度数据,确定签到者是否在现场签到,距离过远被判定为无效签到,要求重新签到。重复IP地址被判定为同一设备不能重复签到,也要求重新签到。签到成功教师用户客户端推送签到成功通知,查看签到序号可判断签到总人数,如图4所示。
图4 课程云签到信息管理系统和微信公众号界面截图
本文采用系统试运行期间的教学班数据做随机抽样分析,验证数据的有效性。以同一教室不同时间签到的其中3个教学班级每个学生用户的地理位置数据为样本,A班8人,B班11人,C班12人。
从系统应用效果上分析,在测试和试运行阶段系统能准确实现双向签到,按照学生当面扫码的要求,各班总人数比对正确,准确率达100%,如果公开展示二维码并行签到,同一时刻多人可同时进行签到,使用人数越多系统优势越突出[5],虽签到效率非常高,但无法杜绝携带多台移动设备代签的问题。
从后台数据库数据分析,GPS定位的准确度直接影响签到体验,最高精度为10.01米,最低精度为1310.02米,平均精度为255.93米,计算最近距离为4.018米,计算最远距离为328.98米,平均距离为64.14米,分析签到位置距离情况和地理位置精度情况可知,假如以100米以内为可信距离(浅色区域),平均可信度达74%,定位精度情况则不占优,如图5和图6所示。
因此,移动设备的定位精度,决定了限制签到的有效范围,也影响到用户体验。
图5 签到地理位置距离情况分析
图6 地理位置精度情况分析
基于微信公众平台的课程云签到系统主要用于面授课程教学的教师和学生双向签到,解决了传统人工处理的耗时费力问题,使课堂教学记录和统计以低成本、高效可靠的方式实现信息化,系统既不需要添购设备,又不存在局限性,极大改善师生的签到体验[5]。系统还可用于在线课程或网络答疑的签到管理,分析研究学生学习行为和地理分布等情况。为深度融合面授教学和移动教学的数据建立桥梁,促进了开放大学“面授实训+移动学习”的混合式教学模式的实施。影响学生到课率的因素是多方面的,除了学生自身问题的内在因素外,还包括管理因素、教师因素和课程因素等外部因素[1],虽不能保证学生在面授课程的课堂效率[6],但研究和分析学生到课率对提升学校的教风和学风有着积极的意义,有利于形成“教、学、管”的良性互动。随着系统功能不断扩展,如会议、活动签到等,学校内不同系统的大量数据相互共享,将可对校园大数据做进一步研究和分析,为学校的教学管理和决策提供更便捷、更丰富的数据支持。
[1] 李文斐,开放教育面授课到课率影响因素实证分析[J].中国远程教育,2010(1):33-37.
[2] 吴鹏,基于移动终端的网络签到系统[J].沈阳师范大学学报(自然科学版),2015(4):551-554.
[3] 腾讯公司.微信公众平台技术文档[EB/OL].[2017-10-30].https://mp.weixin.qq.com/wiki?t=resource.
[4] 刘欢,高校微信平台简洁之道[J].中国教育网络,2013(10):52-55.
[5] 徐宁,基于微信平台的并行签到考勤管理系统[J].电脑知识与技术,2016(12):77-79.
[6] 葛子墨,基于微信公众平台的学生日常上课查课系统[J].中国管理信息化,2017(8):158-158.
[7] 李光耀,张笑言,许晓华.基于微信的扫码签到系统的设计与实现[J].2017(12):66:-67.
[8] 梁思丽.现代信息技术在中等职业教育教学中的应用——基于微信的课堂签到系统的实现[J].赤子(上中旬) ,2016(15):179.
[9] 葛子墨.基于微信公众平台的学生日常上课查课系统[J].中国管理信息化,2016(8):158.