湯文俊 彭立 席博文
摘? 要: 智能手機(jī)已用于課堂考勤,但現(xiàn)有的系統(tǒng)沒有兼顧考勤效率和身份識別。為了彌補(bǔ)現(xiàn)有系統(tǒng)的不足,通過綜合運(yùn)用人臉識別及手機(jī)定位技術(shù),設(shè)計(jì)了一個(gè)基于智能手機(jī)的課堂考勤系統(tǒng),該系統(tǒng)采用C/S架構(gòu),客戶端運(yùn)行于Android手機(jī),服務(wù)端運(yùn)行于后臺服務(wù)器,學(xué)生通過客戶端以簽到和簽退的方式來完成考勤,教師通過客戶端可直接查詢考勤結(jié)果。
關(guān)鍵詞: 課堂考勤; 智能手機(jī); 人臉識別; 手機(jī)定位
中圖分類號:TP311.1? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ?文章編號:1006-8228(2019)02-18-04
A mobile phone based classroom attendance checking system
Tang Wenjun, Peng Li, Xi Bowen
(Department of Information Science and Engineering, Hunan First Normal University, Changsha, Hunan 410205, China)
Abstract: The mobile phone has been applied to check attendance, but existing systems do not give attention to both efficiency and identity recognition. To compensate for the shortcomings of these systems, a mobile phone based system for checking classroom attendance is designed. The system adopts the C/S architecture, in which the client side runs on Android mobile phones, and the server side runs on a back-end server. Using the client side, students can record their attendance in a way of checking in and checking out, and teachers can query students' attendance directly.
Key words: classroom attendance checking; mobile phone; face recognition; mobile phone location
0 引言
在高校這種較為寬松的學(xué)習(xí)環(huán)境中,因?qū)W生缺乏自覺性和自律性,逃課現(xiàn)象較為嚴(yán)重。為了嚴(yán)肅教學(xué)紀(jì)律,確保教學(xué)質(zhì)量,有必要采取相應(yīng)措施來打擊這種現(xiàn)象。課堂考勤是目前各高校普遍采用的一種手段。任課教師一般是通過點(diǎn)名來進(jìn)行考勤,在學(xué)生人數(shù)較多的情況下,無疑會耗費(fèi)較多的時(shí)間,并影響教學(xué)進(jìn)度。為了在有限的課時(shí)內(nèi)完成既定的教學(xué)任務(wù),有些教師干脆不考勤或盡量少考勤,這給那些不自覺的學(xué)生可乘之機(jī)。另外,人工考勤一般只會記錄在紙上,也不便于做考勤結(jié)果的統(tǒng)計(jì)。
隨著智能手機(jī)的普及和其功能的不斷強(qiáng)大,已出現(xiàn)一些基于智能手機(jī)的課堂考勤系統(tǒng)[1-2]。這些系統(tǒng)分為兩類,一類基于人臉識別技術(shù)并只運(yùn)行在教師的手機(jī)上,另一類基于手機(jī)定位技術(shù)并只運(yùn)行在學(xué)生的手機(jī)上。前者通過比對現(xiàn)場掃描到的學(xué)生臉部信息和事先采集到的學(xué)生臉部信息來確認(rèn)哪些學(xué)生到課,從而解決了身份識別問題,但考勤時(shí)需要教師對所有學(xué)生進(jìn)行臉部掃描,耗費(fèi)的時(shí)間并不比傳統(tǒng)的點(diǎn)名方式少。后者通過比較學(xué)生手機(jī)的位置和教室的位置來確認(rèn)學(xué)生是否到課,因?yàn)椴恍枰處焻⑴c考勤,所以提高了考勤效率,但無法識別學(xué)生身份。為了彌補(bǔ)以上兩類系統(tǒng)的不足,本文設(shè)計(jì)了一個(gè)基于智能手機(jī)的課堂考勤系統(tǒng),該系統(tǒng)通過綜合運(yùn)用人臉識別和手機(jī)定位技術(shù),解決了到課確認(rèn)和身份識別問題,且具有較好的考勤效率。
1 系統(tǒng)功能
該系統(tǒng)由客戶端和服務(wù)端構(gòu)成,用戶分為學(xué)生和教師??蛻舳诉\(yùn)行于Android手機(jī),為學(xué)生和教師提供了訪問入口;服務(wù)端運(yùn)行于后臺服務(wù)器,負(fù)責(zé)具體的業(yè)務(wù)邏輯處理。學(xué)生通過客戶端以簽到和簽退的方式來完成考勤,教師不需要參與考勤便可通過客戶端查詢到考勤結(jié)果。
1.1 賬號激活
系統(tǒng)事先為學(xué)生和教師設(shè)置了個(gè)人賬號,他們必須激活賬號才能使用系統(tǒng)。學(xué)生激活賬號時(shí),需選擇用戶類別為學(xué)生,輸入學(xué)號和密碼,并通過前置攝像頭拍攝人臉照片(拍攝3張),系統(tǒng)根據(jù)以上信息激活相應(yīng)的賬號并進(jìn)行人臉識別器的訓(xùn)練。只有當(dāng)學(xué)號和密碼正確,且3次拍照都拍到了人臉時(shí),激活賬號才會成功。教師激活賬號時(shí),選擇用戶類別為教師并輸入工號和密碼,系統(tǒng)根據(jù)以上信息激活相應(yīng)的賬號。只有當(dāng)工號和密碼正確時(shí),激活賬號才會成功。
1.2 登錄
已激活賬號的學(xué)生和教師在每次使用系統(tǒng)時(shí)需先登錄。用戶登錄時(shí),需選擇用戶類別并輸入賬號和密碼,系統(tǒng)根據(jù)以上信息完成登錄處理。只有當(dāng)賬號和密碼正確時(shí),登錄才會成功。
1.3 簽到和簽退
學(xué)生登錄系統(tǒng)后,可通過簽到和簽退來完成考勤。學(xué)生簽到時(shí),需選擇簽到的課程(含節(jié)次)并通過前置攝像頭拍攝人臉(拍攝1張),系統(tǒng)根據(jù)簽到的課程、簽到的時(shí)間、手機(jī)所在的位置、人臉照片等信息來完成簽到處理。對于任意一門課程,只有在規(guī)定的時(shí)間和上課地點(diǎn)由學(xué)生本人簽到,簽到才能成功。簽退流程與簽到類似。其他要求如下:①每次課都要進(jìn)行簽到和簽退,任何一個(gè)操作未完成都將視為缺勤;②正常簽到時(shí)間為上課前10分鐘內(nèi),不能提前簽到,上課后10分鐘內(nèi)簽到則視為遲到,10分鐘后將無法簽到并視為缺勤;③正常簽退時(shí)間為下課后10分鐘內(nèi),不能延后簽退,提前簽退則視為早退。
1.4 考勤查詢
教師登錄系統(tǒng)后,可查詢本學(xué)期任教課程的考勤情況,考勤查詢只能在登錄的當(dāng)天進(jìn)行。查詢時(shí),需選擇任教課程(含班級),并選擇是查詢當(dāng)天的考勤情況還是查詢本學(xué)期的考勤情況,系統(tǒng)根據(jù)以上信息返回查詢結(jié)果。若查詢的是當(dāng)天的考勤情況,查詢結(jié)果為該課程當(dāng)天每次課的考勤情況,包含課程、班級、節(jié)次、缺勤人姓名、遲到者姓名、早退者姓名等信息;若查詢的是本學(xué)期的考勤情況,查詢結(jié)果為本學(xué)期該課程到目前為止總的考勤情況,包含課程、班級以及每位學(xué)生的出勤次數(shù)、出勤率等信息。
2 系統(tǒng)設(shè)計(jì)
2.1 基本設(shè)計(jì)思想
⑴ 整體設(shè)計(jì)思路
系統(tǒng)采用C/S架構(gòu),其中客戶端運(yùn)行于Android手機(jī),為學(xué)生和教師提供訪問入口,服務(wù)端運(yùn)行于后臺服務(wù)器,負(fù)責(zé)具體的業(yè)務(wù)邏輯處理。針對系統(tǒng)的功能需求,在客戶端中設(shè)計(jì)相應(yīng)的模塊;針對客戶端中的每一個(gè)模塊,在服務(wù)端中設(shè)計(jì)相應(yīng)的服務(wù)模塊。客戶端的實(shí)現(xiàn)采用Android開發(fā)技術(shù);服務(wù)端的實(shí)現(xiàn)采用Java Web開發(fā)技術(shù)[3]:運(yùn)行服務(wù)端程序的Web服務(wù)器為Tomcat,系統(tǒng)數(shù)據(jù)存放于MySQL數(shù)據(jù)庫,服務(wù)模塊被封裝成Servlet??蛻舳送ㄟ^HTTP協(xié)議與服務(wù)端通信,客戶端模塊將用戶提交的信息以HTTP請求發(fā)往后臺服務(wù)器,當(dāng)Tomcat接收到HTTP請求后,將請求轉(zhuǎn)發(fā)給相應(yīng)的服務(wù)端模塊進(jìn)行處理,期間服務(wù)端模塊會根據(jù)需要訪問MySQL數(shù)據(jù)庫,請求處理完畢后,Tomcat將處理結(jié)果以HTTP響應(yīng)返回至客戶端。系統(tǒng)架構(gòu)如圖1所示。
⑵ 到課確認(rèn)的方法
學(xué)生簽到時(shí),客戶端利用百度地圖API[4]獲取學(xué)生手機(jī)所在的位置并將該信息發(fā)往服務(wù)端,服務(wù)端通過比較該信息和數(shù)據(jù)庫中存放的教室位置信息來判斷學(xué)生是否到課。
⑶ 身份識別的方法
學(xué)生激活賬號時(shí),客戶端把要激活的賬號和拍攝到的人臉照片發(fā)往服務(wù)端,服務(wù)端以賬號作為人臉照片的分類標(biāo)簽,并以人臉照片和其分類標(biāo)簽作為訓(xùn)練樣本來訓(xùn)練人臉識別器,人臉識別器是Opencv for Java[5]提供的人臉識別器類的實(shí)例。學(xué)生簽到和簽退時(shí),客戶端會把當(dāng)前用戶的賬號和采集到的人臉照片發(fā)往服務(wù)端,服務(wù)端利用人臉識別器識別出人臉照片的分類標(biāo)簽,并比較當(dāng)前用戶的賬號與分類標(biāo)簽是否相同,以此判斷是否學(xué)生本人簽到或簽退。
2.2 軟件結(jié)構(gòu)
本系統(tǒng)的客戶端和服務(wù)端各有5個(gè)模塊??蛻舳撕头?wù)端的軟件結(jié)構(gòu)分別見圖2和圖3。
2.3 模塊設(shè)計(jì)
⑴ 賬號激活模塊
該模塊先接收用戶輸入的賬號和密碼,對于學(xué)生用戶,還要通過前置攝像頭采集3張人臉照片。之后,將用戶類別(學(xué)生或教師)、賬號、密碼、人臉照片(學(xué)生用戶)發(fā)往發(fā)往服務(wù)端的賬號激活服務(wù)模塊,以激活用戶的個(gè)人賬號。
⑵ 賬號激活服務(wù)模塊
該模塊先根據(jù)接收到的用戶類別、賬號和密碼來查詢數(shù)據(jù)庫,以確認(rèn)賬號和密碼正確且賬號的狀態(tài)為未激活,之后將賬號的狀態(tài)改為激活。接著,對于學(xué)生用戶,將接收到的3張照片放置于人臉照片目錄并用目錄中的所有照片來訓(xùn)練人臉識別器。最后將處理結(jié)果返回客戶端。
⑶ 登錄模塊
該模塊先接收用戶輸入的賬號和密碼,之后將用戶類別、賬號、密碼、登錄日期發(fā)往服務(wù)端的登錄服務(wù)模塊,以確認(rèn)用戶是否有使用該系統(tǒng)的資格。
⑷ 登錄服務(wù)模塊
該模塊先根據(jù)接收到的用戶類別、賬號和密碼來查詢數(shù)據(jù)庫,以確認(rèn)賬號和密碼正確且賬號的狀態(tài)為已激活。之后,根據(jù)接收到的賬號和登錄日期在數(shù)據(jù)庫中進(jìn)行以下查詢:對于學(xué)生用戶,查找當(dāng)天可簽到的課程及相應(yīng)節(jié)次;對于教師用戶,查找本學(xué)期的任教課程及相應(yīng)班級。最后,將處理結(jié)果返回客戶端。在登錄成功的情況下,處理結(jié)果中會包含當(dāng)天可簽到的課程及相應(yīng)節(jié)次(學(xué)生用戶)或本學(xué)期的任教課程及相應(yīng)班級(教師用戶)。
⑸ 簽到模塊
該模塊先接收學(xué)生選擇的簽到課程(含節(jié)次),并通過前置攝像頭采集1張人臉照片。之后,調(diào)用百度地圖API獲取手機(jī)所在的位置。最后,將賬號、簽到課程(含節(jié)次)、簽到時(shí)間、手機(jī)所在的位置、人臉照片發(fā)往服務(wù)端的簽到服務(wù)模塊,以實(shí)現(xiàn)學(xué)生對該次課的簽到。
⑹ 簽到服務(wù)模塊
該模塊先根據(jù)接收到的賬號、簽到課程(含節(jié)次)、簽到時(shí)間、手機(jī)所在的位置來查詢數(shù)據(jù)庫,以確認(rèn)該生該次課尚未簽到,并確認(rèn)該生在規(guī)定的時(shí)間和地點(diǎn)簽到。之后,用人臉識別器根據(jù)接收到的人臉照片識別出照片對應(yīng)的賬號,并確認(rèn)識別出的賬號與接收到的賬號一致。接著,將簽到情況(正?;蜻t到)記錄在數(shù)據(jù)庫中。最后,將處理結(jié)果返回客戶端。
⑺ 簽退模塊
該模塊先接收學(xué)生選擇的簽退課程(含節(jié)次),并通過前置攝像頭采集1張人臉照片。之后,調(diào)用百度地圖API獲取手機(jī)所在的位置。最后,將賬號、簽退課程(含節(jié)次)、簽退時(shí)間、手機(jī)所在的位置、人臉照片發(fā)往服務(wù)端的簽退服務(wù)模塊,以實(shí)現(xiàn)學(xué)生對該次課的簽退。
⑻ 簽退服務(wù)模塊
該模塊先根據(jù)接收到的賬號、簽退課程(含節(jié)次)、簽退時(shí)間、手機(jī)所在的位置來查詢數(shù)據(jù)庫,以確認(rèn)該生該次課尚未簽退,并確認(rèn)該生在規(guī)定的時(shí)間和地點(diǎn)簽退。之后,用人臉識別器根據(jù)接收到的人臉照片識別出照片對應(yīng)的賬號,并確認(rèn)識別出的賬號與接收到的賬號一致。接著,將簽退情況(正?;蛟缤耍┯涗浽跀?shù)據(jù)庫中。最后,將處理結(jié)果返回客戶端。
⑼ 考勤查詢模塊
該模塊先接收用戶選擇的任教課程(含班級)和查詢方式(查詢當(dāng)天考勤情況或本學(xué)期考勤情況),之后將賬號、任教課程(含班級)、查詢方式、查詢時(shí)間發(fā)往服務(wù)端的考勤查詢服務(wù)模塊,以實(shí)現(xiàn)對該課程考勤結(jié)果的查詢。
⑽ 考勤查詢服務(wù)模塊
該模塊根據(jù)接收到的賬號、任教課程(含班級)、查詢方式、查詢時(shí)間來查詢數(shù)據(jù)庫,以獲得該課程當(dāng)天每次課的考勤情況或本學(xué)期到目前為止總的考勤情況。之后,將處理結(jié)果返回客戶端,處理結(jié)果中包含該課程當(dāng)天每次課的考勤情況或本學(xué)期到目前為止總的考勤情況。
2.4 數(shù)據(jù)庫表
本系統(tǒng)共有9個(gè)表。
⑴ student表(存放學(xué)生用戶的基本信息,表結(jié)構(gòu)見表1)。
⑵ teacher表(存放教師用戶的基本信息,表結(jié)構(gòu)見表2)。
⑶ class表(存放班級的基本信息,表結(jié)構(gòu)見表3)。
⑷ course表(存放課程的基本信息,表結(jié)構(gòu)見表4)。
⑸ classroom表(存放上課教室的基本信息,表結(jié)構(gòu)見表5)。
⑹ semester表(存放學(xué)期的基本信息,表結(jié)構(gòu)見表6)。
⑺ schedule表(存放教學(xué)計(jì)劃信息,表結(jié)構(gòu)見表7)。
⑻ curriculum表(存放課表信息,表結(jié)構(gòu)見表8)。
⑼ kaoqin表(存放考勤結(jié)果,表結(jié)構(gòu)見表9)。
3 結(jié)束語
本文設(shè)計(jì)了一個(gè)基于智能手機(jī)的課堂考勤系統(tǒng),該系統(tǒng)采用C/S架構(gòu),客戶端運(yùn)行于Android手機(jī),服務(wù)端運(yùn)行于后臺服務(wù)器,學(xué)生通過客戶端以簽到和簽退的方式來完成考勤,教師通過客戶端可直接查詢考勤結(jié)果。該系統(tǒng)通過綜合運(yùn)用人臉識別及手機(jī)定位技術(shù),不但解決了到課確認(rèn)和身份識別問題,還具有較好的考勤效率。
參考文獻(xiàn)(References):
[1] 陳鴻飛,嚴(yán)忱君,俞寶福.基于人臉識別的中學(xué)課堂考勤系統(tǒng)的設(shè)計(jì)[J].科技傳播,2015.7(15):91-92
[2] 王大偉.基于Android的課堂考勤系統(tǒng)設(shè)計(jì)[J].電子世界,2015.22:176-177
[3] 郭克華,李敏,陳志剛.Java Web程序設(shè)計(jì)[M].清華大學(xué)出版社,2011.
[4] 百度文庫.百度地圖移動版API for android開發(fā)指南[EB/OL].https://wenku.baidu.com/view/1b03451959eef8c75-fbfb363.html
[5] 毛星云,冷雪飛,王碧輝等.OpenCV3編程入門[M].電子工業(yè)出版社,2015.