吳君勝, 莫景彤
(1. 廣州市廣播電視大學,廣州 510091;2. 華南理工大學,廣州 510641)
勤管理是人力資源管理的一項重要工作,校園內的考勤管理主要是面向學生和面向教師的簽到統(tǒng)計。使用讀卡機、指紋識別、人臉識別等生物認證設備,考勤簽到成本較高。針對教學的現實需求,面向教師的簽到考勤主要是教師任課登記和教學日志記錄。面向學生的簽到考勤主要是課堂到課率巡查、課堂點名、實驗室簽到等。依靠人工的記錄和統(tǒng)計,既費事又費力,存在效率低下、統(tǒng)計繁瑣、數據共享查詢不便以及無法解決代簽等問題。
隨著移動互聯網的快速發(fā)展,移動終端設備極其普及,在“互聯網+教育”的背景下,針對上述問題,本文結合開放大學“面授實訓+移動學習”的混合式教學模式的實施,逐步融合面授教學和移動教學的各種數據,以簽到數據為入口,提出教師和學生的雙簽到的系統(tǒng)設計方案,通過移動終端設備完成快速簽到,能有效提高統(tǒng)計分析效率并實現數據共享查詢??紤]微信公眾平臺的系統(tǒng)開發(fā)能同時適用于Andriod和iOS等移動操作系統(tǒng),避免開發(fā)不同的移動應用程序所帶來的新問題,在微信極其普及的情況下,利用云服務器,開發(fā)了基于微信公眾平臺的課程云簽到系統(tǒng)。
課程云簽到系統(tǒng)重點實現教師和學生雙向簽到的功能,是服務于教學的智能化系統(tǒng),既可以用于面授教學也可以用于在線教學,智能化判斷簽到有效性是系統(tǒng)的關鍵需求。就面授教學而言,教師的教學日志記錄和學生到課率統(tǒng)計情況都能為教學管理提供理論依據。學生到課率是指按教學計劃進程安排,教學班級的課程實到人數和應到人數的百分比。在某種意義上,它反映了學生的學習積極性、自覺性,也是學風的重要標志之一[1]。教師的教學日志記錄,除了反映教師出勤和學生上課情況,它還反映了教師的教學積極性、責任心,也是教風的重要標志之一。因此,系統(tǒng)需求應能滿足以下幾點:
1)教師教學日志填寫從手工填寫轉變?yōu)槲⑿殴娞柹系碾娮犹顚?,完成教學簽到,同時替代教學巡查的教師任課登記。學生通過二維碼完成到課簽到,替代傳統(tǒng)課堂點名或實驗室簽到,后臺自動統(tǒng)計數據替代教學巡查到課人數的人工統(tǒng)計。
2)通過移動設備限定教學場地的地理位置范圍和時間范圍,根據設備數據采集自動識別簽到有效性。
3)根據簽到數據提供教師任課情況、學生到課情況、課程到課率情況、課室或實驗室利用率、實驗室設備故障情況等統(tǒng)計信息的查詢,并考慮其他系統(tǒng)數據的接入和功能擴展。
基于微信公眾平臺的課程云簽到系統(tǒng)主要由微信公眾平臺、微信客戶端、課程云簽到信息管理系統(tǒng)3個部分組成,前兩者均為騰訊公司產品。微信公眾平臺是微信公眾號管理后臺,微信客戶端即是用戶界面又是測試界面,作為開發(fā)者,實際面對的主要對象是微信服務器和應用程序(網站)服務器,如圖1所示。課程云簽到信息管理系統(tǒng)是重點開發(fā)的Web應用程序(網站),可通過授權接口和功能權限作為公眾號第三方管理平臺,其用戶為教學管理人員。系統(tǒng)采用ASP.NET作為開發(fā)平臺,部署在云服務器。
圖1 消息通訊流程圖
系統(tǒng)的基礎信息主要包括教師信息、學生信息和課程信息。教師或學生必須先關注微信公眾號,教師用戶信息和學生用戶信息都與每個微信號所具有的唯一用戶標識openid相關聯,綁定手機號,在一定程度上防止相互代簽,并通過課程云簽到信息管理系統(tǒng)對微信用戶信息進行管理。教師用戶信息通過注冊完成,經過教師角色審核激活課程設置權限,教師職工編號可關聯校園其他管理信息系統(tǒng),學生用戶通過第一次簽到錄入姓名、學號和手機號,自動完成注冊綁定,以后每次使用微信掃碼簽到時會自動顯示學生信息,減少每次輸入的繁瑣步驟。學生用戶不能發(fā)起課程設置,僅能簽到,學生號可關聯校園其他管理信息系統(tǒng)。為了不受限于排課系統(tǒng)數據,課程信息按課次設置課程。所有信息按照設定的表單字段存儲在云服務器的數據庫中,在課程云簽到信息管理系統(tǒng)中提供對信息的增刪改操作。
整個系統(tǒng)的所有功能都是基于簽到功能獲取數據,簽到邏輯是系統(tǒng)設計關鍵,角色及流程圖,如圖2所示。
教師用戶在任課當天連接無線網絡,打開微信進入微信公眾號,在菜單中選擇設置課程,填寫或選擇課程信息提交,信息內容同時包括自動獲取GPS定位數據、IP地址等有效性判定數據,微信公眾號生成課程的專屬二維碼,教師即可向學生展示二維碼,教師用戶完成任課簽到。
學生用戶在上課時通過掃描二維碼,自動進入微信公眾號填寫個人信息并提交完成簽到,系統(tǒng)將根據,GPS定位數據、IP地址等有效性判定數據,返回簽到是否成功的提示。如果顯示簽到成功,學生完成到課簽到。如果不成功,系統(tǒng)將返回原因或錯誤信息,提示重新簽到。
圖2 簽到角色及流程圖
教師任課簽到和學生到課簽到的所有數據將會傳送到云服務器的數據庫中進行存儲。
教師用戶在注冊審核后可發(fā)起課程簽到,微信公眾號生成并推送課程的專屬二維碼,學生掃描二維碼后自動進入微信公眾號,并向學生直接推送簽到鏈接,每個學生成功簽到后推送簽到消息到教師用戶微信客戶端,根據消息順序號可得知簽到人數,同時推送簽到成功消息到學生用戶微信客戶端,反饋簽到成功。
系統(tǒng)以網頁的形式提供課程云簽到信息查詢[2],所有微信用戶可憑借微信號的openid綁定信息查詢簽到情況,數據查詢功能分為移動設備微信客戶端查詢和課程云簽到信息管理系統(tǒng)PC端查詢。
移動設備的微信客戶端查詢自動判斷用戶類別。學生用戶點擊微信公眾號菜單的簽到查詢,顯示指定時間段內的個人課程簽到情況,并可對課程提交評價。教師用戶點擊微信公眾號菜單的簽到查詢,根據openid信息顯示指定時間段內的個人任課情況,進入課程可查詢詳細的學生簽到名單,并可對學生情況、課室環(huán)境、設備狀況提交評價反饋。
課程云簽到信息管理系統(tǒng)面向教學管理人員,提供按搜索條件查詢教師任課情況、學生到課情況、學生簽到率統(tǒng)計等信息,并可導出Excel保存或打印。可根據需求不斷擴展數據獲取范圍、數據查詢功能以及數據統(tǒng)計內容,例如根據任課教師對設備的故障反饋發(fā)送數據到設備維修管理信息系統(tǒng)實現自動生成課室設備維修申報單等。
課程云簽到信息管理系統(tǒng)包括微信公眾號的信息管理和課程云簽到的業(yè)務信息管理,是基于ASP.NET開發(fā)框架構建的網站,使用PC瀏覽器進行數據操作管理,數據庫設計包含39張二維表。微信公眾號的信息管理包括菜單管理、素材管理、用戶管理、組別管理、客服管理、模板管理、支付管理和后臺維護等。課程云簽到業(yè)務信息管理是簽到系統(tǒng)的核心數據,主要包括學生信息、教師信息、課程信息、簽到信息、定位信息等,數據庫關系圖如圖3所示。
圖3 簽到功能的數據庫表間關系圖
本文以開發(fā)實際可用的系統(tǒng)為研究目標,研究的實驗數據依靠系統(tǒng)試運行獲得,設計以及算法的實現都體現于系統(tǒng)功能中。
1)系統(tǒng)開發(fā)平臺
系統(tǒng)的開發(fā)工具使用Visual Studio 2017,在ASP.NET的開發(fā)框架下,采用C#語言編程,結合SQL Server 2008 R2進行數據庫管理,系統(tǒng)以網站形式部署在Windows Server 2012 R2網絡操作系統(tǒng)的云服務器上,通過IIS發(fā)布網站,在完成一系列域名注冊和備案審批流程后,與微信公眾號無縫結合。Web服務和數據庫服務都在云服務器上穩(wěn)定運行,同時降低部署實施的技術難度。
2)系統(tǒng)功能的關鍵技術實現
微信客戶端通過https協議訪問帶有指定跳轉URL的鏈接,發(fā)起網頁授權請求,微信公眾號自動跳轉到所帶有的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數據包到開發(fā)者填寫的URL來實現[3],如圖4所示。簽到頁面獲取用戶地理位置需要通過引入微信JS文件,使用微信JS-SDK獲取信息,并通過jQuery的 AJAX代碼寫入服務器數據庫,包括經度、緯度、精度和速度。為了保證傳輸數據的真實性,可附加對openid的MD5驗證簽名,關鍵代碼如下:
//判斷openid附加約定的密鑰串在MD5算法加密后是否與簽名信息一致
if (Utility.DataProtector.EncrypMD5(openid + "," + _system) == sign)
考慮簽到提交的地理位置信息可能被篡改偽造,為了防止偽造的http請求,將提交的數據和驗證數據的動態(tài)簽名傳輸到服務器端,驗證簽名成功才能保存到數據庫,關鍵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 課程云簽到信息管理系統(tǒng)和微信公眾號界面截圖
本文采用系統(tǒng)試運行期間的教學班數據做隨機抽樣分析,驗證數據的有效性。以同一教室不同時間簽到的其中3個教學班級每個學生用戶的地理位置數據為樣本,A班8人,B班11人,C班12人。
從系統(tǒng)應用效果上分析,在測試和試運行階段系統(tǒng)能準確實現雙向簽到,按照學生當面掃碼的要求,各班總人數比對正確,準確率達100%,如果公開展示二維碼并行簽到,同一時刻多人可同時進行簽到,使用人數越多系統(tǒng)優(yōu)勢越突出[5],雖簽到效率非常高,但無法杜絕攜帶多臺移動設備代簽的問題。
從后臺數據庫數據分析,GPS定位的準確度直接影響簽到體驗,最高精度為10.01米,最低精度為1310.02米,平均精度為255.93米,計算最近距離為4.018米,計算最遠距離為328.98米,平均距離為64.14米,分析簽到位置距離情況和地理位置精度情況可知,假如以100米以內為可信距離(淺色區(qū)域),平均可信度達74%,定位精度情況則不占優(yōu),如圖5和圖6所示。
因此,移動設備的定位精度,決定了限制簽到的有效范圍,也影響到用戶體驗。
圖5 簽到地理位置距離情況分析
圖6 地理位置精度情況分析
基于微信公眾平臺的課程云簽到系統(tǒng)主要用于面授課程教學的教師和學生雙向簽到,解決了傳統(tǒng)人工處理的耗時費力問題,使課堂教學記錄和統(tǒng)計以低成本、高效可靠的方式實現信息化,系統(tǒng)既不需要添購設備,又不存在局限性,極大改善師生的簽到體驗[5]。系統(tǒng)還可用于在線課程或網絡答疑的簽到管理,分析研究學生學習行為和地理分布等情況。為深度融合面授教學和移動教學的數據建立橋梁,促進了開放大學“面授實訓+移動學習”的混合式教學模式的實施。影響學生到課率的因素是多方面的,除了學生自身問題的內在因素外,還包括管理因素、教師因素和課程因素等外部因素[1],雖不能保證學生在面授課程的課堂效率[6],但研究和分析學生到課率對提升學校的教風和學風有著積極的意義,有利于形成“教、學、管”的良性互動。隨著系統(tǒng)功能不斷擴展,如會議、活動簽到等,學校內不同系統(tǒng)的大量數據相互共享,將可對校園大數據做進一步研究和分析,為學校的教學管理和決策提供更便捷、更豐富的數據支持。
[1] 李文斐,開放教育面授課到課率影響因素實證分析[J].中國遠程教育,2010(1):33-37.
[2] 吳鵬,基于移動終端的網絡簽到系統(tǒng)[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] 徐寧,基于微信平臺的并行簽到考勤管理系統(tǒng)[J].電腦知識與技術,2016(12):77-79.
[6] 葛子墨,基于微信公眾平臺的學生日常上課查課系統(tǒng)[J].中國管理信息化,2017(8):158-158.
[7] 李光耀,張笑言,許曉華.基于微信的掃碼簽到系統(tǒng)的設計與實現[J].2017(12):66:-67.
[8] 梁思麗.現代信息技術在中等職業(yè)教育教學中的應用——基于微信的課堂簽到系統(tǒng)的實現[J].赤子(上中旬) ,2016(15):179.
[9] 葛子墨.基于微信公眾平臺的學生日常上課查課系統(tǒng)[J].中國管理信息化,2016(8):158.