劉瓊, 史諾, 劉康
(西安航空學院, 1.計算機學院;2.機械工程學院, 陜西,西安 710077)
目前,大部分高校仍采用傳統(tǒng)課堂考勤方式,由教師口頭點名并手寫記錄學生的到課情況。這種考勤方式占用了大量的課堂時間,影響了教學計劃和進度,同時,依靠教師人工對考勤數(shù)據(jù)進行統(tǒng)計,效率低下而且很容易出現(xiàn)偏差。一部分高校也采用了智能考勤技術(shù)來解決傳統(tǒng)課堂考勤的問題,如射頻技術(shù)[1]、指紋識別、人臉識別[2-4]、藍牙技術(shù)[5]等。其中,射頻技術(shù)的效率和準確率較高,但前期投入基站的成本大,學生必須攜帶卡片,存在替簽、代簽等問題,教師需要在現(xiàn)場對學生進行監(jiān)督;指紋識別和人臉識別技術(shù),學生無需攜帶認證設(shè)備,對技術(shù)要求較高,無法保證100%的準確率,同時,設(shè)備成本高,管理費時費力、管理效率低下[6]。
針對當前常用的學生考勤技術(shù)存在替簽、代簽和管理效率不高的問題,本文以西安航空學院計算機學院計算機科學與技術(shù)專業(yè)《高級語言程序設(shè)計》課程教學考勤為研究對象,設(shè)計并實現(xiàn)了一個基于微信小程序的學生考勤系統(tǒng)。本系統(tǒng)采用Struts+Spring+Hibernate開發(fā)框架,前端采用微信小程序開發(fā)技術(shù),后端采用JavaEE開發(fā)相關(guān)技術(shù),位置信息的獲取采用微信小程序提供的wx.getLocation(object)函數(shù),數(shù)據(jù)的存儲選用MySQL8.0數(shù)據(jù)庫。
學生考勤系統(tǒng)的用戶為學生、教師和系統(tǒng)管理員,主要包括:在線考勤、手動考勤、考勤查詢、考勤統(tǒng)計等功能,系統(tǒng)功能模塊圖如圖1所示。
圖1 學生考勤系統(tǒng)的功能模塊圖
在線考勤模塊主要用于教師對考勤信息的發(fā)布、學生在線簽到、學生定位簽到等。
教師登錄系統(tǒng)后,可以發(fā)布考勤信息,其中包括:考勤科目、考勤班級、考勤時長(超過此時間視為遲到)、考勤開始時間、學生與教師的地理位置距離差(需要開啟位置服務(wù))等。教師可以根據(jù)實際情況選擇在線簽到或者定位簽到方式。其中,在線簽到方式會生成課堂二維碼由學生掃描,定位簽到方式會對教師的地理位置進行定位。
學生收到教師發(fā)送的“在線簽到”方式的考勤信息后,通過手機攝像頭掃描課程二維碼,實現(xiàn)對相應(yīng)課程的在線簽到。學生如果收到的是“定位簽到”方式,則需要開啟位置服務(wù),系統(tǒng)會計算教師和學生的距離信息,當距離小于允許的范圍(該范圍由教師填寫)時,學生簽到成功。
手動考勤模塊分為請假申請、請假審批和異??记谌糠?。
當學生遇到特殊情況需要請假時,對簽到課程提交請假申請,由教師進行請假審批,審批結(jié)果為:拒絕或同意兩種情況。當教師對學生的請假審批同意后,學生簽到成功,該學生的考勤信息顯示為正常;當教師拒絕后,學生簽到為異??记?。
異??记谟糜趯⒏鞣N考勤異常狀況通知學生或教師,如學生請假被拒絕、在線簽到失敗、定位簽到失敗、未簽到等情形,由教師通過搜索學生學號或姓名查詢此學生信息,并手動為學生添加考勤信息。
教師或?qū)W生可以對考勤信息進行查詢,教師可以對考勤信息進行分類統(tǒng)計。
學生可以根據(jù)學號或姓名在系統(tǒng)查看自己的所有考勤歷史信息。
教師可以以學生個人或班級為單位,從多維度查詢某學期自己任教科目的在線簽到信息、定位簽到信息、請假信息和異??记谛畔⒌?;教師也可以對各項考勤信息進行分類統(tǒng)計,掌握學生個人或班級的總體考勤情況,并將詳細的考勤統(tǒng)計數(shù)據(jù)導(dǎo)出。
用戶數(shù)據(jù)管理模塊主要用于管理用戶信息。為了保證系統(tǒng)的安全性,用戶信息由管理員以Excel形式上傳。教師和學生用戶憑借管理員所提供的賬號和密碼(與校園統(tǒng)一認證平臺一致)登錄系統(tǒng),登錄成功后,可以對個人信息進行修改。
本系統(tǒng)前端使用微信小程序開發(fā)相關(guān)技術(shù),包括WXML+WXSS+JavaScript,其中,WXML用來描述系統(tǒng)頁面結(jié)構(gòu),WXSS用了描述頁面的樣式和頁面的顯示,JavaScript用來響應(yīng)頁面交互事件,進行邏輯處理。后端采用JavaEE開發(fā)相關(guān)技術(shù),用來對前端發(fā)來的數(shù)據(jù)和請求進行處理,并對數(shù)據(jù)庫進行操作。數(shù)據(jù)庫采用MySQL8.0,用來存儲用戶的基本信息、學生的簽到信息、簽到打卡記錄等。
教師根據(jù)自己的賬號和密碼登錄系統(tǒng)后,顯示本人當前任教的所有班級信息,教師可以選擇某一授課班級發(fā)布考勤信息??记谛畔l(fā)布界面如圖2所示。教師發(fā)布定位考勤信息界面如圖3所示。
圖2 教師發(fā)布考勤信息
圖3 教師發(fā)布定位考勤信息
教師發(fā)布在線簽到,需要設(shè)置考勤科目編號、考勤班級編號、考勤時長、考勤開始時間、二維碼的寬度、高度信息,由系統(tǒng)自動生成對應(yīng)的二維碼用于考勤任務(wù),為了防止學生替簽、代簽,二維碼會定時自動刷新。
由于QRCode具有免費、支持中文、而且讀取速度快、占用空間小的優(yōu)點,故系統(tǒng)生成的簽到二維碼選擇QRCode。簽到二維碼的生成需要引入wxapp.qrcode.min.js文件,調(diào)用createQRcode(canvasWidth,canvasHeight,canvasId,url)函數(shù),其中,需要傳遞的參數(shù)分別表示:寬度、高度、ID號、地址鏈接。生成的二維碼使用img標簽來展示圖片的載體,并使用Base64存儲圖片的信息。為了使二維碼可以跨界面?zhèn)鬟f,需要導(dǎo)入arale-qrcode庫,根據(jù)傳入二維碼鏈接生成svg或table形式的dom節(jié)點,通過Window.btoa()方法將svg字符轉(zhuǎn)成Base64格式,二次轉(zhuǎn)碼字符串作為URI組件進行編碼和解碼。
教師發(fā)布定位簽到后,由系統(tǒng)對教師進行定位。定位簽到的過程為:申請開發(fā)者密鑰(key),開啟WebServiceAPI服務(wù),設(shè)置request合法域名,調(diào)用wx.getLocation(Object object)獲取當前地理位置的經(jīng)度和緯度。
學生接收到教師發(fā)布的在線考勤任務(wù)后,點擊“掃一掃”按鈕,系統(tǒng)會調(diào)用手機攝像頭,對教師發(fā)布的二維碼進行掃描。簽到具體流程為:學生通過掃描二維碼,調(diào)用小程序wx.scanCode接口,獲得解碼信息;再在success接口里調(diào)用request接口,將二維碼信息發(fā)送給服務(wù)器端,并將識別后的結(jié)果與數(shù)據(jù)庫中的二維碼進行匹配,如果匹配成功,并且簽到時間在教師設(shè)置的打卡時長范圍內(nèi),則在學生簽到記錄表中添加一條簽到成功數(shù)據(jù),簽到結(jié)果如圖4所示。
圖4 在線簽到成功
學生接收到教師發(fā)布的定位打卡簽到任務(wù)后,系統(tǒng)首先將發(fā)布此次考勤任務(wù)的教師的地理位置在騰訊地圖上進行標注;然后計算教師的地理位置與學生打卡的地理位置之間的距離,并將求出的距離與教師之前的設(shè)置的允許的范圍進行對比,如果小于教師設(shè)置的值,則認為學生簽到成功,反之則視為異常簽到,并將簽到結(jié)果記錄在日常定位簽到記錄表中。定位簽到流程如圖5所示。
圖5 定位簽到
計算距離的核心代碼如下:
//lng1、lng2分別表示教師和學生位置的經(jīng)度信息;
// lat1、lat2分別表示教師和學生位置的維度信息
var rad1 = lat1 * Math.PI / 180.0;
var rad2 = lat2 * Math.PI / 180.0;
var a = rad1 - rad2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var r = 6378137;
var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
手動考勤分為請假管理和異??记?。當學生申請并提交請假信息后,系統(tǒng)將學生請假申請傳遞給教師,教師端會出現(xiàn)學生的請假申請,教師根據(jù)請假原因決定是否批準。教師審批請假后,系統(tǒng)會更新學生的考勤信息。請假審批如圖6所示。
圖6 請假審批
當學生手機出現(xiàn)故障或者無法準確進行定位打卡簽到時,教師可以通過搜索學生學號或姓名進行考勤。
本文針對現(xiàn)有學生考勤管理費時費力以及管理效率低下的問題,設(shè)計并實現(xiàn)了基于微信小程序的學生考勤管理系統(tǒng),實現(xiàn)了教師考勤任務(wù)發(fā)布、學生在線簽到、定位簽到、手動考勤等功能,本系統(tǒng)無需下載安裝即可使用,提高了考勤的準確性,并有效地保證了考勤率,為高??记诠芾淼囊?guī)范化提供解決思路。