基于微信小程序的课堂考勤系统的设计与实现
代碼倉(cāng)庫(kù)地址:https://github.com/LicheeGit/Classroom-Attendance-System
Design and Implementation of Classroom Attendance System Based on WeChat Mini Program
?
摘? 要
在目前國(guó)內(nèi)的高校課堂考勤中,傳統(tǒng)的到場(chǎng)點(diǎn)名方式耗費(fèi)了教師大量的時(shí)間和精力,隨著課堂人數(shù)的增加,學(xué)生群體呈現(xiàn)多樣性,這種點(diǎn)名考勤方式將不再適合日常使用,而且傳統(tǒng)的點(diǎn)名考勤無(wú)法避免代人答到現(xiàn)象,極大的降低了考勤效率。
在日趨信息化的互聯(lián)網(wǎng)時(shí)代,使用互聯(lián)網(wǎng)技術(shù)和思維,信息化的方法進(jìn)行設(shè)計(jì)并實(shí)現(xiàn)一套考勤系統(tǒng)變得格外重要。系統(tǒng)基于微信小程序平臺(tái),前端使用wxml語(yǔ)言編寫(xiě),后端使用Javascript,借助微信平臺(tái)提供的微信開(kāi)發(fā)者工具進(jìn)行開(kāi)發(fā)調(diào)試,通過(guò)藍(lán)牙信號(hào)強(qiáng)度測(cè)距和人臉識(shí)別比對(duì)實(shí)現(xiàn)了一套課堂考勤系統(tǒng)。
本系統(tǒng)以較高準(zhǔn)確率實(shí)現(xiàn)了快捷的課堂考勤,操作簡(jiǎn)單,可適用性強(qiáng),成本低廉,系統(tǒng)可靠性高,滿(mǎn)足系統(tǒng)的設(shè)計(jì)需求。
?
關(guān)鍵詞:小程序;課堂考勤;藍(lán)牙技術(shù);人臉識(shí)別;微信
?
?
ABSTRACT
In the current domestic colleges and universities, the traditional paper-based recording of the name of the teacher has spent a lot of time and energy. As the number of students increases and the student group presents diversity at the same time, this type of attendance will no longer be suitable for daily use. And the phenomenon of the other-people-help-answering, which is hard to be avoided by the traditional name attendance, will greatly reducing the efficiency of attendance.
In the increasingly information-based Internet era, it has become particularly essential to use Internet technology and its way of thinking, and to design and implement an attendance system. The system is based on WeChat applet platform, the front end is written in wxml language, the back end using Javascript, and the WeChat developer tool provided by WeChat platform is used for development and debugging, and a set of classroom attendance system based on WeChat mini program using the technology of Bluetooth signal strength ranging and face recognition is realized.
The system achieves efficient and fast classroom attendance with high accuracy, simple operation, strong applicability, low cost and high system reliability, all of these above mentioned achieve the expected development goals.
?
Keywords: Mini program; Class attendance; Bluetooth technology; Facial recognition; WeChat
?
目? 錄
摘? 要... I
ABSTRACT.. II
第1章? 緒? 論... 1
1.1? 課題來(lái)源... 1
1.2? 課題背景... 1
1.3? 國(guó)內(nèi)外的研究現(xiàn)狀及分析... 2
1.3.1? 高校考勤系統(tǒng)研究現(xiàn)狀... 2
1.3.2? 微信小程序藍(lán)牙技術(shù)及人臉識(shí)別應(yīng)用現(xiàn)狀... 3
1.4? 論文主要研究?jī)?nèi)容及組織結(jié)構(gòu)... 3
1.4.1? 本文主要研究?jī)?nèi)容... 3
1.4.2? 論文整體框架... 4
第2章? 相關(guān)技術(shù)及平臺(tái)介紹... 5
2.1? 微信小程序... 5
2.1.1? 微信小程序開(kāi)發(fā)平臺(tái)... 5
2.1.2? 藍(lán)牙技術(shù)在微信小程序開(kāi)發(fā)中的應(yīng)用... 6
2.2? 人臉識(shí)別技術(shù)... 7
第3章? 系統(tǒng)分析與設(shè)計(jì)... 8
3.1? 系統(tǒng)可行性分析... 8
3.1.1? 技術(shù)可行性... 8
3.1.2? 經(jīng)濟(jì)可行性... 8
3.1.3? 操作可行性... 8
3.2? 系統(tǒng)需求分析... 9
3.2.1? 功能需求分析... 9
3.2.2? 非功能需求分析... 9
3.3? 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)... 10
3.3.1? 概念設(shè)計(jì)... 10
3.3.2? 邏輯設(shè)計(jì)... 12
3.4? 系統(tǒng)設(shè)計(jì)... 13
3.4.1? 系統(tǒng)流程... 13
3.4.2? 系統(tǒng)功能模塊設(shè)計(jì)... 14
第4章? 系統(tǒng)實(shí)現(xiàn)... 19
4.1? 系統(tǒng)開(kāi)發(fā)環(huán)境... 19
4.2? 系統(tǒng)功能的實(shí)現(xiàn)... 19
4.2.1? 用戶(hù)注冊(cè)與登錄... 19
4.2.2? 藍(lán)牙測(cè)距... 20
4.2.3? 人臉識(shí)別... 22
4.2.4? 考勤管理... 23
4.3? 系統(tǒng)測(cè)試... 25
4.3.1? 系統(tǒng)功能測(cè)試... 25
4.3.2? 系統(tǒng)界面及窗體測(cè)試... 27
結(jié)? 論... 28
參考文獻(xiàn)... 30
?
?
?
第1章? 緒? 論
1.1? 課題來(lái)源
根據(jù)導(dǎo)師指導(dǎo)意見(jiàn),通過(guò)分析高校日常考勤需求,查閱該方向相關(guān)資料,最終確定本課題。
1.2? 課題背景
課堂考勤作為監(jiān)督學(xué)生出勤率以及提高課堂質(zhì)量的關(guān)鍵環(huán)節(jié),在日常高校教學(xué)生活中起著非常重要的作用。目前大部分高校采用的基于紙質(zhì)、依賴(lài)于學(xué)生答到的傳統(tǒng)考勤方式多數(shù)情況下并不能有效避免學(xué)生代答到的情況,而且在完整的點(diǎn)完所有同學(xué)名單的過(guò)程中浪費(fèi)了大量寶貴的課堂時(shí)間。對(duì)于學(xué)生并不能起到預(yù)期的督促效果,對(duì)于學(xué)校和教師則是一種需要耗費(fèi)極大精力和時(shí)間但是準(zhǔn)確率得不到保證、低效的考勤。隨著課堂的人數(shù)與日俱增,傳統(tǒng)的上課點(diǎn)名答到的考勤方式的效率變得越來(lái)越低。因此,將信息技術(shù)與互聯(lián)網(wǎng)思維技術(shù)相結(jié)合,設(shè)計(jì)并實(shí)現(xiàn)一套基于微信小程序的課堂考勤系統(tǒng),使之能夠方便地應(yīng)用于高校課堂,變得越來(lái)越有意義。一個(gè)易用高效的課堂考勤系統(tǒng)不僅能夠有效地督促學(xué)生按時(shí)到教室上課,提高學(xué)生的學(xué)習(xí)質(zhì)量,而且有利于學(xué)校了解教師的任課情況進(jìn)行教學(xué)改革。
微信作為一個(gè)日常手機(jī)應(yīng)用擁有著很高的使用頻率和裝機(jī)率,其推出的微信小程序憑借出色的體驗(yàn)倍受開(kāi)發(fā)者青睞。微信小程序平臺(tái)為開(kāi)發(fā)者提供了包括調(diào)用手機(jī)藍(lán)牙模塊進(jìn)行搜索和通信的功能接口在內(nèi)豐富的應(yīng)用程序接口,使我們可以使用微信小程序平臺(tái)開(kāi)發(fā)工具設(shè)計(jì)并實(shí)現(xiàn)一些原本只能夠以手機(jī)應(yīng)用形式使用的功能。
隨著人工智能在各個(gè)領(lǐng)域的廣泛應(yīng)用和飛速發(fā)展,人臉識(shí)別變得越來(lái)越觸手可及,越來(lái)越多的企業(yè)和工廠(chǎng)開(kāi)始啟用人臉打卡考勤,但是在高校環(huán)境中現(xiàn)有設(shè)備并不能很好的發(fā)揮作用,如果能夠?qū)⑷四樋记谂c移動(dòng)設(shè)備進(jìn)行結(jié)合將極大程度的解決高校傳統(tǒng)考勤方式低效的問(wèn)題,并且極大地提高課堂考勤的準(zhǔn)確度。
1.3? 國(guó)內(nèi)外的研究現(xiàn)狀及分析
1.3.1? 高校考勤系統(tǒng)研究現(xiàn)狀
目前在中國(guó),有許多的大中小企業(yè)事業(yè)單位進(jìn)行考勤已經(jīng)不再使用基于紙質(zhì)的簽名考勤或者單純的指紋打卡,有日趨成熟的基于智能辦公硬件員工考勤解決方案被廣泛應(yīng)用。然而,目前還沒(méi)有滿(mǎn)足國(guó)內(nèi)高校需求的低成本考勤系統(tǒng)可以在大多數(shù)高校中使用。在研究領(lǐng)域,目前高校課堂考勤系統(tǒng)的設(shè)計(jì)方法主要有以下幾類(lèi)[1]。
一是以手機(jī)服務(wù)為主的智能考勤:如使用微信公眾號(hào)服務(wù)、位置服務(wù)、Wi-Fi、實(shí)時(shí)二維碼等。有研究人員基于微信企業(yè)號(hào)開(kāi)發(fā)出了微信考勤系統(tǒng)并在學(xué)院進(jìn)行應(yīng)用[2],從該系統(tǒng)的反饋分析,存在難以杜絕代替考勤的現(xiàn)象以及對(duì)上課地點(diǎn)有要求等問(wèn)題。有的研究人員開(kāi)發(fā)出基于Wi-Fi的高校課堂考勤系統(tǒng)[3],這種考勤系統(tǒng)需要提前架設(shè)Wi-Fi熱點(diǎn)服務(wù)器才能開(kāi)始考勤。
二是以智能卡為主的考勤:有研究人員設(shè)計(jì)了基于校園一卡通的考試簽到系統(tǒng)[4]。這類(lèi)考勤適用于紙質(zhì)考試等不能攜帶手機(jī)的場(chǎng)景,同時(shí)需要專(zhuān)門(mén)的讀卡設(shè)備進(jìn)行驗(yàn)證。
三是以藍(lán)牙設(shè)備為主的考勤:如物聯(lián)網(wǎng)、射頻識(shí)別技術(shù)、藍(lán)牙、iBeacon等。有研究人員開(kāi)發(fā)了基于iBeacon定位技術(shù)的高校考勤系統(tǒng)[5],基于藍(lán)牙的考勤方式可以通過(guò)微信或移動(dòng)設(shè)備進(jìn)行簽到,但是需要提前布置iBeacon設(shè)備,有一定維護(hù)成本,通信中也存在安全隱患。有研究人員在安卓平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了藍(lán)牙考勤系統(tǒng)[9],但是該系統(tǒng)只支持安卓平臺(tái),如果學(xué)生使用IOS系統(tǒng)則無(wú)法使用,不具有適用性。前面提到的三種考勤方式均是以移動(dòng)終端或便攜設(shè)備作為識(shí)別主體,并沒(méi)有對(duì)學(xué)生進(jìn)行準(zhǔn)確識(shí)別,和傳統(tǒng)的點(diǎn)名答到方式一樣無(wú)法有效避免考勤代簽的問(wèn)題。
四是以生物特征識(shí)別為主的考勤:這類(lèi)考勤主要使用人體的生物特征,如指紋和人臉等能夠唯一識(shí)別一個(gè)個(gè)體的特征。有研究人員提出了使用指紋識(shí)別技術(shù)進(jìn)行課堂考勤的方法[6],但該方法的實(shí)現(xiàn)基于特定設(shè)計(jì)的指紋識(shí)別設(shè)備。基于虹膜識(shí)別技術(shù)的課堂考勤雖然保證了較高的準(zhǔn)確率,但是不僅會(huì)帶來(lái)較高的設(shè)備成本,還會(huì)耗費(fèi)一定的準(zhǔn)備時(shí)間[7]。人臉識(shí)別考勤相對(duì)來(lái)說(shuō)比較易用,學(xué)生只需打開(kāi)智能手機(jī)的攝像頭并且聯(lián)網(wǎng)即可完成簽到,降低了系統(tǒng)的使用成本。
綜合考量上述四類(lèi)考勤系統(tǒng)的設(shè)計(jì)優(yōu)缺點(diǎn),如果想要在低成本的條件下實(shí)現(xiàn)對(duì)學(xué)生進(jìn)行準(zhǔn)確的課堂考勤,就需要結(jié)合硬件設(shè)備和生物識(shí)別的優(yōu)點(diǎn),而目前指紋識(shí)別和虹膜識(shí)別的實(shí)現(xiàn)中存在一些困難,因此,本文選擇基于藍(lán)牙定位和人臉識(shí)別的方法設(shè)計(jì)并實(shí)現(xiàn)高校課堂考勤系統(tǒng)。
1.3.2? 微信小程序藍(lán)牙技術(shù)及人臉識(shí)別應(yīng)用現(xiàn)狀
微信小程序因其便捷性和輕量化的體驗(yàn)而廣受開(kāi)發(fā)者青睞,其應(yīng)用前景極其廣泛,現(xiàn)在還有很多領(lǐng)域是微信小程序沒(méi)有觸及的,高校課堂考勤便是其中一處。有研究人員開(kāi)發(fā)出了基于BLE(Bluetooth Low Energy,藍(lán)牙低能耗)技術(shù)的智能公寓門(mén)鎖控制微信小程序[8],具有簡(jiǎn)單易用,易獲取,擴(kuò)展性強(qiáng),安全性高的特點(diǎn),填補(bǔ)了基于小程序的智能門(mén)鎖市場(chǎng)的空缺[8]。Github上也不乏開(kāi)發(fā)者從事微信小程序藍(lán)牙模塊的應(yīng)用開(kāi)發(fā),有的開(kāi)發(fā)者將微信小程序平臺(tái)提供的藍(lán)牙應(yīng)用程序編程接口進(jìn)行包裝,打包成模塊開(kāi)源,極大的方便了后來(lái)者的小程序藍(lán)牙開(kāi)發(fā)。有的開(kāi)發(fā)者使用藍(lán)牙設(shè)備發(fā)射信號(hào)的接收信號(hào)強(qiáng)度指示結(jié)合計(jì)算公式開(kāi)發(fā)出了藍(lán)牙測(cè)距的方法。在人臉識(shí)別的應(yīng)用開(kāi)發(fā)方面,有許多人工智能服務(wù)提供商開(kāi)放了人臉識(shí)別的應(yīng)用程序編程接口,極大的降低了基于人臉識(shí)別應(yīng)用開(kāi)發(fā)的門(mén)檻。
1.4? 論文主要研究?jī)?nèi)容及組織結(jié)構(gòu)
1.4.1? 本文主要研究?jī)?nèi)容
以高校課堂智能考勤的需求為切入點(diǎn),本文將微信小程序可以被便捷地獲取和傳播等優(yōu)勢(shì)與基于深度學(xué)習(xí)的人臉識(shí)別方法,基于手機(jī)藍(lán)牙模塊的定位方法三者相結(jié)合,解決了高校傳統(tǒng)考勤無(wú)法避免的代答到、紙質(zhì)考勤效率不高的問(wèn)題,實(shí)現(xiàn)了基于微信小程序的課堂考勤系統(tǒng)。
本文的主要研究?jī)?nèi)容如下。
1、針對(duì)基于手機(jī)應(yīng)用的考勤系統(tǒng)需要開(kāi)發(fā)至少兩套基于不同手機(jī)系統(tǒng)平臺(tái)的應(yīng)用程序,本文設(shè)計(jì)的系統(tǒng)基于微信小程序平臺(tái),通過(guò)微信的高度普及避免了不同手機(jī)系統(tǒng)的適配問(wèn)題。
2、針對(duì)考勤簽到定位服務(wù)使用GPS對(duì)考勤環(huán)境有一定限制,比如在室內(nèi)會(huì)影響定位的精度,使用Wi-Fi考勤需要提前架設(shè)服務(wù)器等定位難題,本文提出使用基于藍(lán)牙設(shè)備信號(hào)強(qiáng)度的距離測(cè)量公式,借此可以方便地計(jì)算出學(xué)生所持藍(lán)牙設(shè)備與教師設(shè)備之間的距離。而使用該功能只需雙方打開(kāi)手機(jī)的藍(lán)牙開(kāi)關(guān)即可,使用便利。
3、針對(duì)單純的設(shè)備定位無(wú)法有效避免學(xué)生代替簽到的問(wèn)題,本文提出了結(jié)合藍(lán)牙技術(shù)與生物識(shí)別的解決方案。將藍(lán)牙定位獲取的距離作為進(jìn)入簽到的判斷條件,如果經(jīng)藍(lán)牙測(cè)試不在教室則無(wú)法進(jìn)行考勤,有效避免了學(xué)生在非教室環(huán)境進(jìn)行人臉識(shí)別簽到成功的問(wèn)題,同時(shí)提高了課堂考勤的效率。
4、針對(duì)藍(lán)牙測(cè)距只能通過(guò)將藍(lán)牙設(shè)備接收到的信號(hào)強(qiáng)度輸入公式計(jì)算距離,存在不穩(wěn)定的偏差,提出了結(jié)合微信小程序開(kāi)發(fā)平臺(tái)提供的獲取用戶(hù)位置信息的應(yīng)用程序開(kāi)發(fā)接口,獲取到教師所處位置的經(jīng)緯度上傳服務(wù)器端,學(xué)生在簽到前獲取到服務(wù)器中教師的位置,與自己所處位置的經(jīng)緯度進(jìn)行測(cè)距,得出基于位置信息的距離作為參考。從而使得出學(xué)生所持設(shè)備與教師設(shè)備的距離值更加準(zhǔn)確,為后續(xù)的程序流程以及是否滿(mǎn)足簽到條件的判斷工作奠定了基礎(chǔ)。
5、針對(duì)網(wǎng)絡(luò)通信過(guò)程中可能存在的密碼等關(guān)鍵信息明文傳輸被攔截讀取的不安全因素,本文在客戶(hù)端和云端信息交互過(guò)程中使用HTTPS和SSL加密傳輸,有效防止了信息泄露以及被篡改。
1.4.2? 論文整體框架
論文將分四章分別展開(kāi),下面是具體章節(jié)內(nèi)容。
第一章為緒論。本章主要闡述了課題的來(lái)源,通過(guò)對(duì)課題背景的分析得出課堂考勤目前存在的痛點(diǎn),同時(shí)分析了在該方向上國(guó)內(nèi)相關(guān)技術(shù)的研究現(xiàn)狀,探討了本課題的研究意義,隨后是對(duì)本文的主要研究?jī)?nèi)容以及論文的整體框架的介紹。
第二章為相關(guān)技術(shù)及平臺(tái)介紹。本系統(tǒng)基于微信小程序平臺(tái)開(kāi)發(fā),使用了藍(lán)牙技術(shù)和人臉識(shí)別技術(shù),并且使用了豐富的應(yīng)用編程接口進(jìn)行開(kāi)發(fā),為了便于更好地理解和掌握全文,本章簡(jiǎn)要介紹了本文涉及的相關(guān)技術(shù)。
第三章為系統(tǒng)分析與設(shè)計(jì)。本章使用軟件工程的方法,分析了本文設(shè)計(jì)的系統(tǒng)需求,給出了系統(tǒng)用例圖,進(jìn)行了系統(tǒng)可行性分析,確定了系統(tǒng)結(jié)構(gòu),制作了系統(tǒng)流程圖,并詳細(xì)介紹了功能模塊和數(shù)據(jù)庫(kù)設(shè)計(jì)。
第四章為系統(tǒng)實(shí)現(xiàn)。本章按照系統(tǒng)設(shè)計(jì)對(duì)系統(tǒng)的各個(gè)模塊的實(shí)現(xiàn)步驟作了簡(jiǎn)要敘述,并展示了系統(tǒng)各項(xiàng)功能的測(cè)試方法和測(cè)試結(jié)果。
?
?
第2章? 相關(guān)技術(shù)及平臺(tái)介紹
本系統(tǒng)是在微信小程序平臺(tái)的基礎(chǔ)上,使用微信提供的微信開(kāi)發(fā)者工具進(jìn)行開(kāi)發(fā)的。前端使用wxml和wxss語(yǔ)言編寫(xiě),后端用Javascript語(yǔ)言編寫(xiě)。調(diào)用了微信小程序的藍(lán)牙模塊應(yīng)用開(kāi)發(fā)接口和百度云人工智能接口。本章主要介紹微信小程序開(kāi)發(fā)平臺(tái)以及藍(lán)牙通信、人臉識(shí)別等相關(guān)技術(shù)。
2.1? 微信小程序
時(shí)至今日,使用微信已經(jīng)變成了很多人的生活日常。在2018年每月有超過(guò)十億人使用微信[10],其中微信小程序?yàn)楦又悄艿纳钐峁┝思夹g(shù)和平臺(tái)。
2.1.1 ?微信小程序開(kāi)發(fā)平臺(tái)
42B1、小程序技術(shù)發(fā)展史
小程序最開(kāi)始是微信的JS API(JavaScript Application Programming Interface,JavaScript 應(yīng)用程序編程接口),當(dāng)時(shí)微信中的網(wǎng)絡(luò)視圖正逐漸成為移動(dòng)Web的一個(gè)重要入口。2015年初,微信發(fā)布了一套名為JS-JDK的網(wǎng)頁(yè)開(kāi)發(fā)套件,允許開(kāi)發(fā)者使用微信的原生能力,賦予了微信應(yīng)用開(kāi)發(fā)者更強(qiáng)的便捷性和更多可能性。隨后為了使得所有開(kāi)發(fā)者在微信中都能獲得更好的體驗(yàn),推出了現(xiàn)在版本的小程序系統(tǒng)。
43B2、小程序的特點(diǎn)
微信小程序有如下特點(diǎn)。
(1)小程序可以被便捷地獲取,用戶(hù)可以通過(guò)掃描小程序二維碼或搜索來(lái)打開(kāi)小程序。第二次使用時(shí)只需要打開(kāi)手機(jī)端的微信應(yīng)用,在主界面下拉,點(diǎn)擊小程序的圖標(biāo)即可進(jìn)入小程序開(kāi)始使用。無(wú)需安裝,在小程序的體驗(yàn)中,沒(méi)有安裝包,也沒(méi)有動(dòng)輒耗時(shí)幾分鐘的安裝過(guò)程,只需掃描小程序碼,幾秒便可以進(jìn)入應(yīng)用。用完即走,不用擔(dān)心退出應(yīng)用后殘留的內(nèi)存占用。無(wú)需卸載,不想使用時(shí)從小程序列表刪除小程序即可。
(2)高效和簡(jiǎn)單的開(kāi)發(fā)。小程序可以實(shí)現(xiàn)一次開(kāi)發(fā)、多平臺(tái)通用。因?yàn)槲⑿判〕绦虼嬖谟谖⑿诺氖褂铆h(huán)境中,所以不存在不同的平臺(tái)需要做額外開(kāi)發(fā)進(jìn)行兼容的問(wèn)題,與以往開(kāi)發(fā)手機(jī)應(yīng)用至少需要針對(duì)安卓和iOS(iPhone OS,蘋(píng)果公司的移動(dòng)操作系統(tǒng))平臺(tái)分別開(kāi)發(fā)兩款應(yīng)用相比,大大降低了開(kāi)發(fā)成本。而且微信小程序推廣更加容易,無(wú)需下載安裝包,在小程序頁(yè)面右上角點(diǎn)擊即可分享給好友使用。每次版本的更新只需要提交小程序平臺(tái)審核即可完成版本更迭,無(wú)需像傳統(tǒng)手機(jī)應(yīng)用需要把安裝包提交各個(gè)不同的應(yīng)用市場(chǎng)進(jìn)行審核再上架,也無(wú)需給用戶(hù)推送更新消息。
(3)微信小程序有著卓越的使用體驗(yàn)。相較于傳統(tǒng)網(wǎng)頁(yè)的信息呈現(xiàn)方式,小程序使用了WebSocket雙向通信、本地緩存技術(shù),使得小程序的使用體驗(yàn)更加接近原生應(yīng)用。開(kāi)發(fā)者在編寫(xiě)代碼過(guò)程中可以隨意調(diào)用小程序平臺(tái)提供的API而無(wú)需擔(dān)心瀏覽器的兼容,從而更加專(zhuān)注于內(nèi)容的呈現(xiàn)。
(4)微信小程序也擁有實(shí)現(xiàn)更多的任務(wù)和滿(mǎn)足更多的應(yīng)用場(chǎng)景的可能。與HTML5網(wǎng)絡(luò)應(yīng)用相比,微信小程序可以調(diào)用更多系統(tǒng)接口,如藍(lán)牙模塊、全球定位系統(tǒng)、傳感器等。
(5)微信小程序安全性更高,小程序需要審核后才能發(fā)布,通信采用的是超文本傳輸安全協(xié)議訪(fǎng)問(wèn),安全套接層加密通信。
2.1.2 ?藍(lán)牙技術(shù)在微信小程序開(kāi)發(fā)中的應(yīng)用
藍(lán)牙是一種在工業(yè)、科學(xué)和醫(yī)療無(wú)線(xiàn)電頻段內(nèi)使用無(wú)線(xiàn)電波在固定和移動(dòng)設(shè)備的短距離之間交換數(shù)據(jù)以及構(gòu)建個(gè)人局域網(wǎng)無(wú)線(xiàn)技術(shù)標(biāo)準(zhǔn)。現(xiàn)在市面上的多數(shù)移動(dòng)操作系統(tǒng)均已原生支持低功耗藍(lán)牙。下面就本文中主要用到的部分微信小程序平臺(tái)提供的藍(lán)牙模塊API按使用順序進(jìn)行簡(jiǎn)要介紹。
1、openBluetoothAdapter(Object object),該接口用于藍(lán)牙模塊初始化,其他藍(lán)牙相關(guān)API必須在此接口調(diào)用之后使用,否則會(huì)返回錯(cuò)誤。該接口參數(shù)中可以設(shè)置接口調(diào)用成功的回調(diào)函數(shù)、調(diào)用失敗的回調(diào)函數(shù)或是接口調(diào)用結(jié)束的回調(diào)函數(shù)。
2、onBluetoothAdapterStateChange(function callback),該接口主要監(jiān)聽(tīng)手機(jī)藍(lán)牙狀態(tài)的改變。它可以調(diào)用藍(lán)牙模塊的所有應(yīng)用編程接口。該接口的返回結(jié)果將判斷藍(lán)牙適配器是否可用,以及是否處于搜索狀態(tài)。為后續(xù)的藍(lán)牙模塊功能接口的調(diào)用奠定基礎(chǔ)。
3、startBluetoothDevicesDiscovery(Object object),成功調(diào)用該接口即可開(kāi)始搜索周?chē)O(shè)備發(fā)出的藍(lán)牙信號(hào)。通過(guò)設(shè)置參數(shù)中的services數(shù)值可以搜索廣播包有對(duì)應(yīng)服務(wù)的藍(lán)牙設(shè)備。參數(shù)interval可以調(diào)整上報(bào)設(shè)備的間隔。
4、onBluetoothDeviceFound(function callback),調(diào)用該接口將獲得新搜索到的設(shè)備列表。返回的列表中每臺(tái)設(shè)備的信息包括藍(lán)牙設(shè)備的名稱(chēng)、設(shè)備的id、當(dāng)前藍(lán)牙設(shè)備的信號(hào)強(qiáng)度、當(dāng)前藍(lán)牙設(shè)備廣播數(shù)據(jù)段中的ServiceUUIDs、LocalName、ServiceData數(shù)據(jù)段等。
5、createBLEConnection(Object object),調(diào)用該接口與低功耗藍(lán)牙設(shè)備建立連接。從搜索到的藍(lán)牙設(shè)備中選擇一個(gè),傳入該設(shè)備的deviceId建立連接。
2.2? 人臉識(shí)別技術(shù)
目前國(guó)內(nèi)許多主流科技公司都面向開(kāi)發(fā)者推出了人工智能開(kāi)放平臺(tái),將基于深度學(xué)習(xí)的計(jì)算機(jī)視覺(jué)技術(shù)以API或SDK的形式開(kāi)放給開(kāi)發(fā)者。本文主要使用的是百度AI開(kāi)放平臺(tái)提供的API進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)了人臉注冊(cè)和人臉比對(duì)考勤。在本節(jié)對(duì)部分在本文系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中使用到的接口進(jìn)行簡(jiǎn)要說(shuō)明。
1、人臉檢測(cè)接口,調(diào)用該接口可以檢測(cè)出圖片中人臉的位置并標(biāo)記出位置信息。
2、人臉?biāo)阉鹘涌?#xff0c;調(diào)用該接口可以進(jìn)行人臉?biāo)阉骱妥R(shí)別。返回結(jié)果為匹配的用戶(hù)信息列表,其中每項(xiàng)包含了如下用戶(hù)信息:用戶(hù)的組,用戶(hù)的id,注冊(cè)用戶(hù)時(shí)攜帶的附加信息以及用戶(hù)的匹配得分。本系統(tǒng)使用了這個(gè)接口返回的匹配得分以八十分為閾值進(jìn)行判斷是否是本人來(lái)進(jìn)行簽到。
3、人臉庫(kù)人臉注冊(cè)接口,調(diào)用該接口可以向人臉庫(kù)中添加新用戶(hù)信息。請(qǐng)求參數(shù)包括圖片信息、圖片類(lèi)型、用戶(hù)組id、用戶(hù)id和可選的用戶(hù)信息。本系統(tǒng)使用該接口提供學(xué)生注冊(cè)和教師注冊(cè)功能,對(duì)學(xué)生和教師劃分了不同的用戶(hù)組進(jìn)行權(quán)限區(qū)分。
4、人臉庫(kù)用戶(hù)信息查詢(xún)接口,調(diào)用該接口可以獲取指定用戶(hù)的注冊(cè)信息內(nèi)容。請(qǐng)求參數(shù)中需要指明用戶(hù)id和用戶(hù)組id。返回參數(shù)包括一個(gè)請(qǐng)求標(biāo)識(shí)碼,以及查詢(xún)到的用戶(hù)列表,其中包括被查詢(xún)的用戶(hù)資料和被查詢(xún)用戶(hù)所在的組。
5、人臉庫(kù)獲取用戶(hù)列表接口,調(diào)用該接口輸入用戶(hù)組id即可返回組內(nèi)用戶(hù)id列表。本系統(tǒng)使用該接口進(jìn)行查詢(xún)當(dāng)前使用用戶(hù)是否已注冊(cè),如果未注冊(cè)將跳轉(zhuǎn)注冊(cè)頁(yè)面,已注冊(cè)將彈出登錄窗口進(jìn)行密碼驗(yàn)證。
6、人臉庫(kù)創(chuàng)建和刪除用戶(hù)組接口,這兩個(gè)接口在本系統(tǒng)內(nèi)被成對(duì)使用,前者用于創(chuàng)建一個(gè)空的用戶(hù)組,后者刪除用戶(hù)組下所有用戶(hù)及人臉。輸入?yún)?shù)均為用戶(hù)組id,如果該用戶(hù)組存在,則返回創(chuàng)建失敗。在本系統(tǒng)中,這兩個(gè)接口用于為教師開(kāi)啟考勤和關(guān)閉考勤功能實(shí)現(xiàn)提供支持。
?
?
第3章? 系統(tǒng)分析與設(shè)計(jì)
3.1? 系統(tǒng)可行性分析
本系統(tǒng)的設(shè)計(jì)是面向高校日常課堂考勤需求,基于微信小程序結(jié)合藍(lán)牙技術(shù)和人工智能技術(shù),提出一種高效的考勤方式。就本系統(tǒng)的設(shè)計(jì)能否行得通并且有效解決高校課堂考勤問(wèn)題,下面從三個(gè)方面進(jìn)行詳細(xì)分析。
3.1.1? 技術(shù)可行性
軟件部分,本系統(tǒng)是基于微信小程序平臺(tái)、使用Javascript語(yǔ)言和wxml語(yǔ)言進(jìn)行開(kāi)發(fā)的。使用微信小程序開(kāi)發(fā)工具可以方便的進(jìn)行代碼編輯和編譯調(diào)試。同時(shí)微信小程序還開(kāi)放了功能齊全的應(yīng)用程序開(kāi)發(fā)接口供開(kāi)發(fā)者調(diào)用,其中包括了通過(guò)小程序?qū)λ{(lán)牙模塊的調(diào)用,可以實(shí)現(xiàn)搜索藍(lán)牙設(shè)備和進(jìn)行藍(lán)牙連接等本系統(tǒng)需要的功能。百度AI人工智能平臺(tái)開(kāi)放了人臉識(shí)別API,可用于人臉考勤。硬件方面,本系統(tǒng)基于微信,使用了手機(jī)的藍(lán)牙模塊和攝像頭模塊,使用過(guò)程中需要網(wǎng)絡(luò)連接。藍(lán)牙模塊的近距離通信信號(hào)可以在教室范圍內(nèi)覆蓋,保證了本系統(tǒng)的技術(shù)可行性。
3.1.2? 經(jīng)濟(jì)可行性
開(kāi)發(fā)過(guò)程中無(wú)需使用收費(fèi)開(kāi)發(fā)軟件,百度AI平臺(tái)提供的免費(fèi)服務(wù)基本可以滿(mǎn)足一百名左右學(xué)生的班級(jí)考勤。本系統(tǒng)的使用環(huán)境只需要是普通的智能手機(jī)即可,無(wú)特定系統(tǒng)和手機(jī)型號(hào)要求,無(wú)需其他輔助設(shè)備。在使用過(guò)程中除少量流量消耗外不會(huì)有另外的成本產(chǎn)生。
3.1.3? 操作可行性
使用本系統(tǒng)進(jìn)行考勤只需教師和學(xué)生打開(kāi)微信掃描小程序二維碼,授予小程序所需的權(quán)限即可。使用過(guò)程中依照系統(tǒng)提示打開(kāi)藍(lán)牙模塊以及進(jìn)行人臉拍照即可完成考勤,教師端可以方便的查看簽到和缺勤人數(shù)和名單。
3.2? 系統(tǒng)需求分析
需求分析是銜接可行性分析與系統(tǒng)設(shè)計(jì)的重要活動(dòng)。需求分析環(huán)節(jié)將闡述本系統(tǒng)所實(shí)現(xiàn)的功能需求和非功能需求。
3.2.1? 功能需求分析
本系統(tǒng)的功能設(shè)計(jì)主要是面向高校師生的、為了解決傳統(tǒng)高校課堂考勤效率低和無(wú)法避免代答到的難題。使用本系統(tǒng),高校教師可以通過(guò)手機(jī)微信開(kāi)啟簽到,隨時(shí)可以停止簽到,并且可以方便地查看簽到統(tǒng)計(jì)結(jié)果。學(xué)生簽到只需在教室范圍內(nèi)刷臉。
進(jìn)入小程序需要用戶(hù)選擇自己的身份,選擇身份之后如果是未注冊(cè)用戶(hù)需要先進(jìn)行注冊(cè),注冊(cè)過(guò)程需要錄入人臉以及輸入自己的密碼。已注冊(cè)用戶(hù)則直接在彈窗內(nèi)輸入密碼登錄即可。教師身份用戶(hù)的注冊(cè)需要有權(quán)限限制。教師登錄之后進(jìn)入管理界面,可以進(jìn)行開(kāi)啟考勤和關(guān)閉考勤以及分別查看已簽到和未簽到的學(xué)生人數(shù)和名單,還可以進(jìn)一步對(duì)未簽到學(xué)生進(jìn)行勾選其中的請(qǐng)假學(xué)生,確定最終的缺勤名單。學(xué)生登錄之后進(jìn)入藍(lán)牙操作界面,開(kāi)啟藍(lán)牙搜索并匹配教師設(shè)備的藍(lán)牙信號(hào),選定教師設(shè)備后通過(guò)判斷學(xué)生與教師的距離決定學(xué)生是否可以進(jìn)行簽到,如果在教室范圍內(nèi),則學(xué)生將通過(guò)刷臉驗(yàn)證身份進(jìn)行簽到。
圖3.1所示用例圖對(duì)本系統(tǒng)的功能進(jìn)行了描述,同時(shí)闡述了用戶(hù)使用本系統(tǒng)的場(chǎng)景。
3.2.2? 非功能需求分析
功能性需求介紹的內(nèi)容是系統(tǒng)做什么,非功能性需求則側(cè)重于闡述系統(tǒng)怎么樣,如表3.1所示。
表3.1 系統(tǒng)性能需求
| 需求名稱(chēng) | 詳細(xì)要求 |
| 可靠性 | 運(yùn)行流暢,處理時(shí)間在可接受范圍內(nèi) |
| 可維護(hù)性 | 易于修改調(diào)試 |
| 可擴(kuò)充性 | 可根據(jù)現(xiàn)實(shí)需求增刪功能模塊 |
| 易用性 | 系統(tǒng)界面友好,有相應(yīng)提示引導(dǎo),人性化 |
圖3.1 系統(tǒng)用例圖
3.3? 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
從本系統(tǒng)的數(shù)據(jù)需求出發(fā),本節(jié)將對(duì)本系統(tǒng)數(shù)據(jù)存儲(chǔ)設(shè)計(jì)方法進(jìn)行介紹。
32B3.3.1? 概念設(shè)計(jì)
本系統(tǒng)涉及的數(shù)據(jù)可分為以下三個(gè)實(shí)體。
1、學(xué)生信息
學(xué)生信息如圖3.2所示,包括學(xué)生的用戶(hù)名、用戶(hù)組、賬戶(hù)密碼、人臉信息和位置信息。用戶(hù)名用于唯一識(shí)別學(xué)生,賬戶(hù)密碼用于驗(yàn)證用戶(hù)身份,用戶(hù)組用于區(qū)分師生權(quán)限,人臉信息用于考勤,位置信息用于輔助定位。
2、教師信息
教師信息如圖3.3所示,包括教師的用戶(hù)名和賬戶(hù)密碼、用于區(qū)別教師權(quán)限的用戶(hù)組、用于登錄驗(yàn)證的人臉信息、用于學(xué)生簽到測(cè)距的藍(lán)牙設(shè)備信息和位置信息。
3、考勤統(tǒng)計(jì)信息
考勤統(tǒng)計(jì)信息如圖3.4所示,包括應(yīng)到人數(shù)、實(shí)到人數(shù)、簽到名單、請(qǐng)假名單和缺勤名單。
圖3.2 學(xué)生的屬性信息
圖3.3 教師的屬性信息
圖3.4 考勤統(tǒng)計(jì)的屬性信息
各實(shí)體之間的E-R圖如圖3.5所示。
圖3.5 系統(tǒng)數(shù)據(jù)庫(kù)E-R圖
一個(gè)學(xué)生對(duì)應(yīng)一條出勤統(tǒng)計(jì)信息,將多名學(xué)生的考勤信息統(tǒng)計(jì)之后反饋給老師,一名老師可以查看多條考勤統(tǒng)計(jì)信息。
3.3.2 ?邏輯設(shè)計(jì)
本系統(tǒng)涉及數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)分為學(xué)生信息表、教師信息表、考勤統(tǒng)計(jì)表,具體設(shè)計(jì)分別如下所示。
1、學(xué)生信息表,表名Students,結(jié)構(gòu)設(shè)計(jì)如表3.2所示。
表3.2 學(xué)生信息表
| 字段名 | 字段說(shuō)明 | 數(shù)據(jù)類(lèi)型 | 約束 | 是否可空 | 備注 |
| uid | 用戶(hù)名 | varchar(128) | PK | 不可為空 | 主鍵 |
| group_id | 用戶(hù)組 | varchar(128) | - | 不可為空 | - |
| user_info | 密碼 | varchar(256) | - | 不可為空 | - |
| image | 人臉信息 | varchar(512) | - | 不可為空 | base64編碼的圖片數(shù)據(jù) |
2、教師信息表,表名Teachers,結(jié)構(gòu)設(shè)計(jì)如表3.3所示。
表3.3 教師信息表
| 字段名 | 字段說(shuō)明 | 數(shù)據(jù)類(lèi)型 | 約束 | 是否可空 | 備注 |
| uid | 用戶(hù)名 | varchar(128) | PK | 不可為空 | 主鍵 |
| group_id | 用戶(hù)組 | varchar(128) | - | 不可為空 | - |
| user_info | 賬戶(hù)密碼 | varchar(256) | - | 不可為空 | - |
| image | 人臉信息 | varchar(512) | - | 不可為空 | - |
| user_location | 位置信息 | varchar(256) | - | 不可為空 | - |
| uuid | 藍(lán)牙設(shè)備信息 | varchar(256) | - | 不可為空 | - |
3、考勤統(tǒng)計(jì)表,表名PresentList,結(jié)構(gòu)設(shè)計(jì)如表3.4所示。
?
?
?
?
表3.4 考勤統(tǒng)計(jì)表
| 字段名 | 字段說(shuō)明 | 數(shù)據(jù)類(lèi)型 | 約束 | 是否可空 | 備注 |
| studentsNum | 簽到人數(shù) | integer | - | 不可為空 | - |
| kaoqinStudents | 簽到名單 | varchar(512) | - | 可空 | - |
| notPresentNum | 未簽到人數(shù) | integer | - | 不可為空 | - |
| notPresentList | 未簽到名單 | varchar(512) | - | 可空 | - |
| lessonToken | 考勤口令 | varchar(512) | PK | 不可為空 | 主鍵 |
3.4? 系統(tǒng)設(shè)計(jì)
3.4.1? 系統(tǒng)流程
系統(tǒng)流程如圖3.6所示,用戶(hù)通過(guò)掃描二維碼或者點(diǎn)擊課程群的分享鏈接進(jìn)入本系統(tǒng),首先在歡迎界面選擇自己的身份。選擇完成后系統(tǒng)會(huì)將用戶(hù)微信id發(fā)回相應(yīng)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún),查詢(xún)失敗則該用戶(hù)為未注冊(cè)用戶(hù),需要先進(jìn)行注冊(cè),注冊(cè)過(guò)程需要輸入密碼和進(jìn)行拍照,密碼和人臉信息將與用戶(hù)id綁定存入云端數(shù)據(jù)庫(kù),用作后續(xù)登錄和簽到的操作的二重驗(yàn)證。系統(tǒng)的正式版本中未開(kāi)放教師的注冊(cè)權(quán)限。注冊(cè)成功的用戶(hù)將返回起始界面,選擇身份后在彈出的系統(tǒng)提示框內(nèi)輸入自己賬戶(hù)的密碼,用戶(hù)輸入的密碼將和數(shù)據(jù)庫(kù)中存儲(chǔ)的同id下的密碼進(jìn)行比對(duì),如果相同則登錄成功,教師身份的用戶(hù)將跳轉(zhuǎn)到人臉識(shí)別界面做第二步的身份驗(yàn)證,在該環(huán)節(jié)教師將通過(guò)攝像頭拍照傳回云端的人臉庫(kù)進(jìn)行人臉比對(duì),如果判定為同一人則登陸成功,教師進(jìn)入考勤管理環(huán)節(jié)。教師在開(kāi)啟考勤需要輸入一個(gè)考勤口令,用于唯一識(shí)別本節(jié)課以及學(xué)生簽到驗(yàn)證,如果考勤口令未被使用則可以開(kāi)啟考勤,如果輸入已存在的口令則可以查看相應(yīng)課堂的考勤歷史信息。教師開(kāi)啟考勤之后自己的藍(lán)牙設(shè)備信息和位置信息將被上傳至數(shù)據(jù)庫(kù),同時(shí)新建一個(gè)用于本次考勤的數(shù)據(jù)庫(kù)存放已經(jīng)簽到的學(xué)生名單。學(xué)生經(jīng)密碼驗(yàn)證成功后將開(kāi)啟藍(lán)牙搜索功能,此時(shí)將獲取學(xué)生與教師設(shè)備的距離,如果經(jīng)藍(lán)牙測(cè)距判定學(xué)生在教室范圍內(nèi),學(xué)生將被允許使用人臉識(shí)別功能完成簽到,否則該生將無(wú)權(quán)進(jìn)入人臉識(shí)別環(huán)節(jié)。學(xué)生進(jìn)入人臉簽到環(huán)節(jié)需要輸入正確的考勤口令和通過(guò)人臉驗(yàn)證才可以簽到成功,完成簽到的學(xué)生可隨時(shí)退出系統(tǒng)。教師在開(kāi)啟考勤后可隨時(shí)進(jìn)行刷新查看已考勤學(xué)生名單和未考勤學(xué)生名單,同時(shí)本系統(tǒng)也提供考勤人數(shù)統(tǒng)計(jì)顯示。教師可以點(diǎn)擊按鈕關(guān)閉考勤,在此之后學(xué)生在進(jìn)行考勤嘗試將被提示考勤未開(kāi)啟。教師可以進(jìn)一步對(duì)未到學(xué)生名單勾選其中的請(qǐng)假學(xué)生,以生成最終的缺勤名單。教師可將考勤情況截圖保存后退出系統(tǒng),或者直接退出系統(tǒng)。
3.4.2? 系統(tǒng)功能模塊設(shè)計(jì)
按照功能需求分析和流程設(shè)計(jì),本系統(tǒng)的功能模塊設(shè)計(jì)分為四個(gè)模塊:注冊(cè)與登錄模塊、藍(lán)牙測(cè)距模塊、考勤管理模塊、人臉識(shí)別模塊。如圖3.7所示,注冊(cè)與登錄模塊是通過(guò)驗(yàn)證用戶(hù)密碼和人臉信息保證系統(tǒng)的安全性。藍(lán)牙測(cè)距模塊是主要功能模塊,通過(guò)藍(lán)牙信號(hào)結(jié)合位置信息判斷學(xué)生是否在教室,從而決定是否有權(quán)簽到。人臉識(shí)別模塊,在本系統(tǒng)中是學(xué)生考勤驗(yàn)證的最后一步,通過(guò)將簽到時(shí)的照片與注冊(cè)時(shí)存入人臉庫(kù)的圖片進(jìn)行比對(duì)判斷是否簽到成功,同時(shí)人臉識(shí)別也被用于教師登錄過(guò)程的二次驗(yàn)證,保證的教師權(quán)限的安全性。本系統(tǒng)的關(guān)鍵模塊是考勤管理模塊,教師通過(guò)此模塊擁有開(kāi)啟考勤和關(guān)閉考勤的權(quán)限,對(duì)考勤情況也可以有全面的掌握。
1、注冊(cè)與登錄模塊
如表3.5所示,本模塊功能包括用戶(hù)身份選擇,注冊(cè)和登錄。首先需要區(qū)分學(xué)生或教師身份,選擇完相應(yīng)的身份后,首次使用的用戶(hù)應(yīng)該進(jìn)行注冊(cè),已經(jīng)注冊(cè)的用戶(hù)應(yīng)該輸入密碼進(jìn)行驗(yàn)證。注冊(cè)過(guò)程中除了設(shè)置密碼,還需要保存用戶(hù)的人臉信息。登錄時(shí),學(xué)生輸入密碼驗(yàn)證即可,教師除了輸入正確密碼,還應(yīng)該進(jìn)行人臉驗(yàn)證,以增強(qiáng)系統(tǒng)的安全性。
表3.5 注冊(cè)與登錄模塊的具體設(shè)計(jì)表
| 模塊名稱(chēng) | 注冊(cè)與登錄模塊 | |
| 功能說(shuō)明 | 身份選擇,用戶(hù)注冊(cè),用戶(hù)登錄 | |
| 輸入 | 身份信息,用戶(hù)密碼,人臉信息 | |
| 輸出 | - | |
| 關(guān)鍵邏輯 | | |
| 函數(shù)方法 | bindGetUserInfo() | 獲取用戶(hù)信息 |
| confirm() | 登錄密碼驗(yàn)證 | |
| takePhoto() | 拍照并上傳對(duì)應(yīng)人臉庫(kù) | |
圖3.6 系統(tǒng)流程圖
圖3.7 系統(tǒng)功能結(jié)構(gòu)圖
2、藍(lán)牙測(cè)距模塊
如表3.6所示,藍(lán)牙測(cè)距模塊主要設(shè)計(jì)手機(jī)藍(lán)牙模塊的開(kāi)啟和關(guān)閉功能,藍(lán)牙連接,顯示師生距離,跳轉(zhuǎn)簽到界面等功能。學(xué)生進(jìn)入藍(lán)牙搜索界面首先點(diǎn)擊開(kāi)始搜索按鈕,搜索欄顯示教師設(shè)備后學(xué)生點(diǎn)擊該設(shè)備,如果學(xué)生在教室則成功進(jìn)入簽到頁(yè)面,否則繼續(xù)搜索。
表3.6 藍(lán)牙測(cè)距模塊設(shè)計(jì)表
| 模塊名稱(chēng) | 藍(lán)牙測(cè)距模塊 | |
| 功能說(shuō)明 | 藍(lán)牙搜索,藍(lán)牙連接,距離計(jì)算 | |
| 輸入 | 教師設(shè)備信息 | |
| 輸出 | 距離 | |
| 關(guān)鍵邏輯 | | |
| 函數(shù)方法 | Search() | 搜索藍(lán)牙設(shè)備并顯示 |
| Connect() | 藍(lán)牙設(shè)備連接并顯示距離 | |
| getGps() | 獲取學(xué)生和教師的位置信息計(jì)算基于GPS的距離 | |
3、考勤管理模塊
如表3.7所示,考勤管理模塊主要設(shè)計(jì)開(kāi)啟考勤、關(guān)閉考勤和查詢(xún)考勤情況功能。教師點(diǎn)擊開(kāi)啟考勤后學(xué)生的簽到才有效,教師關(guān)閉考勤后學(xué)生簽到失敗。教師點(diǎn)擊刷新按鈕會(huì)顯示已簽到學(xué)生人數(shù)和名單,點(diǎn)擊獲取未登錄列表按鈕會(huì)顯示未簽到學(xué)生人數(shù)和名單。點(diǎn)擊清空l(shuí)og日志按鈕可以清空列表。
表3.7 考勤管理模塊設(shè)計(jì)表
| 模塊名稱(chēng) | 考勤管理模塊 | |
| 功能說(shuō)明 | 開(kāi)啟考勤,關(guān)閉考勤,考勤統(tǒng)計(jì),清空日志 | |
| 輸入 | - | |
| 輸出 | 考勤信息 | |
| 關(guān)鍵邏輯 | | |
| 函數(shù)方法 | startKq() | 開(kāi)啟考勤 |
| getUnpresent() | 刷新顯示缺勤名單 | |
| checkboxChange() | 獲取請(qǐng)假學(xué)生 | |
| checkToken() | 檢查考勤口令是否可用 | |
| getToken() | 獲取相應(yīng)權(quán)限 | |
| endKq() | 結(jié)束考勤 | |
| refreshList() | 刷新已簽到學(xué)生人數(shù)和名單 | |
| getUnpresentList() | 獲取未簽到學(xué)生人數(shù)和名單 | |
| getDeviceId() | 獲取教師設(shè)備uuid | |
4、人臉識(shí)別模塊
如表3.8所示,本模塊的主要功能為拍照上傳人臉庫(kù),與用戶(hù)的人臉信息進(jìn)行對(duì)比判斷是否為同一人,如果一致則執(zhí)行后續(xù)操作,對(duì)學(xué)生身份的用戶(hù)為簽到成功,將簽到信息存入云端數(shù)據(jù)庫(kù),對(duì)教師身份的用戶(hù)為跳轉(zhuǎn)考勤管理界面。
表3.8 人臉識(shí)別模塊
| 模塊名稱(chēng) | 人臉識(shí)別模塊 | |
| 功能說(shuō)明 | 拍照,人臉信息編碼并上傳,簽到或登錄 | |
| 輸入 | 人臉信息 | |
| 輸出 | - | |
| 關(guān)鍵邏輯 | | |
| 函數(shù)方法 | takePhoto() | 拍照 |
| wx.switchTab() | 執(zhí)行頁(yè)面跳轉(zhuǎn) | |
| wx.getFileSystemManager() | 對(duì)人臉信息進(jìn)行base64編碼 | |
?
第4章? 系統(tǒng)實(shí)現(xiàn)
本章將在系統(tǒng)設(shè)計(jì)的基礎(chǔ)上對(duì)系統(tǒng)主要功能的實(shí)現(xiàn)方法進(jìn)行敘述。
4.1 ?系統(tǒng)開(kāi)發(fā)環(huán)境
對(duì)于基于微信小程序平臺(tái)開(kāi)發(fā)的應(yīng)用,可選擇的集成開(kāi)發(fā)環(huán)境有很多種,本系統(tǒng)使用了微信小程序平臺(tái)為開(kāi)發(fā)者提供的小程序開(kāi)發(fā)者工具進(jìn)行全部的開(kāi)發(fā)工作和部分調(diào)試。
4.2 ?系統(tǒng)功能的實(shí)現(xiàn)
4.2.1 ?用戶(hù)注冊(cè)與登錄
如圖4.1所示,用戶(hù)進(jìn)入系統(tǒng)之后首先需要在歡迎界面選擇自己的身份。選擇自己的身份時(shí)會(huì)觸發(fā)一個(gè)按鈕點(diǎn)擊事件,會(huì)根據(jù)用戶(hù)選擇的身份到相應(yīng)的數(shù)據(jù)庫(kù)中查詢(xún)用戶(hù)的id是否已經(jīng)注冊(cè),如果未注冊(cè)的學(xué)生將跳轉(zhuǎn)注冊(cè)界面,教師未注冊(cè)則跳轉(zhuǎn)提示界面,正式版本的系統(tǒng)中只有管理員擁有注冊(cè)教師的權(quán)限,對(duì)于已注冊(cè)用戶(hù)將會(huì)彈窗請(qǐng)用戶(hù)輸入自己的密碼進(jìn)行驗(yàn)證登錄,密碼驗(yàn)證界面如圖4.2所示。查詢(xún)及登錄的關(guān)鍵代碼為:
for (var i = 0; i < that.data.userNum; i++) { // 遍歷獲取到的用戶(hù)列表
if (that.data.userID == that.data.nickName) { // 查詢(xún)到用戶(hù)id
that.setData({userInList: true})}} // 標(biāo)記該用戶(hù)已注冊(cè)
if (that.data.userInList) { // 用戶(hù)已注冊(cè)則進(jìn)入登錄流程
that.setData({hiddenPass: false}) // 顯示輸入密碼彈窗
wx.request({ // 發(fā)起請(qǐng)求,從數(shù)據(jù)庫(kù)獲取該用戶(hù)的密碼
data: { user_id: that.data.nickName, // 數(shù)據(jù)庫(kù)中的用戶(hù)id
group_id: that.data.userGroup },// 用戶(hù)組id
success(res2) {// 獲取到用戶(hù)密碼進(jìn)行后續(xù)驗(yàn)證
if ((that.data.password) == that.data.user_info) { //密碼輸入正確
if (that.data.userGroup == "Students") { // 檢查身份信息是否是學(xué)生
wx.navigateTo({url: '../search/search', })}//跳轉(zhuǎn)進(jìn)入藍(lán)牙界面
圖4.1 歡迎界面??????????? ??????????????圖4.2 密碼驗(yàn)證界面
4.2.2? 藍(lán)牙測(cè)距
登錄成功的學(xué)生將進(jìn)入藍(lán)牙搜索界面,該界面如圖4.3所示。學(xué)生通過(guò)點(diǎn)擊開(kāi)始搜索藍(lán)牙啟動(dòng)手機(jī)藍(lán)牙模塊,開(kāi)啟藍(lán)牙適配器掃描周邊藍(lán)牙設(shè)備,同時(shí)從數(shù)據(jù)庫(kù)中讀取教師藍(lán)牙設(shè)備的uuid,如果發(fā)現(xiàn)教師藍(lán)牙設(shè)備的信號(hào)可以點(diǎn)擊該設(shè)備,系統(tǒng)將獲取教師藍(lán)牙設(shè)備信號(hào)的強(qiáng)度并基于此計(jì)算學(xué)生與老師設(shè)備的距離,系統(tǒng)將基于該距離進(jìn)行判斷學(xué)生是否在教室范圍內(nèi),如果藍(lán)牙距離過(guò)遠(yuǎn)或獲取失敗,出于系統(tǒng)可靠性考慮,本系統(tǒng)會(huì)獲取學(xué)生的位置信息,并同時(shí)從云端數(shù)據(jù)庫(kù)讀取教師在開(kāi)啟考勤時(shí)存入的位置信息,如果基于GPS距離的判斷為在教室內(nèi),學(xué)生同樣可以進(jìn)入考勤界面。
wx.openBluetoothAdapter({ // 打開(kāi)藍(lán)牙適配器
success: function(res) { // 開(kāi)啟藍(lán)牙適配器成功的回調(diào)函數(shù)
wx.getBluetoothAdapterState({ // 檢查當(dāng)前藍(lán)牙適配器狀況
success: function(res) { console.log(res) }})
wx.startBluetoothDevicesDiscovery({ // 開(kāi)始掃描藍(lán)牙設(shè)備
allowDuplicatesKey: false, // 掃描藍(lán)牙設(shè)備的參數(shù):不允許重復(fù)掃描設(shè)備
success: function(res) {
that.setData({devicesList: []})}})}}), // 更新設(shè)備列表
iRSSI = Math.abs(that.data.devicesList[i].RSSI)
??????? power = (iRSSI - 70) / (10 * 2.0)
??????? initDis = Math.pow(10, power)
??????? that.setData({
????????? dis_ble: initDis
??????? })
這段代碼用到的公式如公式(4.1)所示,其中dis為所求距離,RSSI為掃描到藍(lán)牙設(shè)備信號(hào)的強(qiáng)度,p為實(shí)測(cè)兩臺(tái)設(shè)備距離一米時(shí)的RSSI,c為環(huán)境衰減因子。
dis=10(RSSi-p÷10×c)? (4.1)
4.2.3? 人臉識(shí)別
本系統(tǒng)提供的功能模塊中教師登錄第二步驗(yàn)證和學(xué)生的簽到驗(yàn)證都用到了人臉識(shí)別,人臉識(shí)別界面如圖4.4所示。本系統(tǒng)人臉考勤功能是基于調(diào)用百度AI人工智能平臺(tái)的開(kāi)放接口實(shí)現(xiàn)的。用戶(hù)在注冊(cè)賬戶(hù)時(shí)需要拍照作為人臉信息與用戶(hù)名綁定傳回云端人臉庫(kù),登錄時(shí)調(diào)用攝像頭進(jìn)行拍照,將拍攝的人臉照片編碼后通過(guò)微信網(wǎng)絡(luò)請(qǐng)求接口傳輸回云端人臉庫(kù),與相應(yīng)用戶(hù)id下的人臉進(jìn)行對(duì)比,將獲得一個(gè)相似度的評(píng)分,本系統(tǒng)以八十分作為標(biāo)準(zhǔn),如果成績(jī)超過(guò)八十分則判定用戶(hù)為同一人,驗(yàn)證通過(guò),該方法對(duì)應(yīng)誤判率為萬(wàn)分之一。
人臉識(shí)別的實(shí)現(xiàn)代碼如下所示。
takePhoto() {//拍照并編碼
const ctx = wx.createCameraContext()
ctx.takePhoto({ //拍照
quality: 'high',})
wx.request({//上傳人臉進(jìn)行 比對(duì)
data: {
image: this.data.base64,
image_type: 'BASE64',
group_id_list: 'Teachers},'//自己建的用戶(hù)組id
success(res) {
if (that.data.msg > 80) {
wx.showToast({
title: '驗(yàn)證通過(guò)', icon: 'success', duration: 1000})
wx.switchTab({
url: '../start/start', })}}});//驗(yàn)證通過(guò),跳轉(zhuǎn)至開(kāi)啟考勤頁(yè)面
4.2.4 ?考勤管理
教師在通過(guò)了密碼驗(yàn)證和人臉識(shí)別雙重驗(yàn)證之后,方可進(jìn)入考勤管理界面,該界面如圖4.5所示。教師可以在此界面開(kāi)啟考勤、關(guān)閉考勤以及查看簽到統(tǒng)計(jì)。教師需要先輸入考勤口令,如果口令可用則可以開(kāi)啟新的考勤,如果口令已存在則可以查看相應(yīng)課程的考勤歷史。開(kāi)啟考勤后系統(tǒng)打開(kāi)教師的藍(lán)牙適配器,發(fā)送藍(lán)牙信號(hào),并檢查適配器狀態(tài),將在數(shù)據(jù)庫(kù)中新建一個(gè)表,已考勤的學(xué)生被復(fù)制到新表中,教師需要輸入自己的藍(lán)牙設(shè)備uuid,系統(tǒng)將該uuid傳回后端數(shù)據(jù)庫(kù),學(xué)生在搜索藍(lán)牙設(shè)備時(shí)將以此作為參考,同時(shí)系統(tǒng)也會(huì)獲取教師的位置信息,包含基于wgs84坐標(biāo)系經(jīng)度和緯度,并將這兩個(gè)參數(shù)傳回云端數(shù)據(jù)庫(kù)供學(xué)生考勤使用。教師點(diǎn)擊刷新學(xué)生名單按鈕后,將會(huì)觸發(fā)一個(gè)查詢(xún)事件,系統(tǒng)將新建的表與全部學(xué)生表進(jìn)行比較,分別返回已簽到學(xué)生人數(shù)和名單。教師點(diǎn)擊顯示缺勤學(xué)生列表按鈕之后,界面日志框?qū)@示未簽到學(xué)生的人數(shù)和名單,可以選中其中的已請(qǐng)假學(xué)生,以生成最終的缺勤名單,如圖4.6所示。教師在管理界面關(guān)閉考勤后,新建的考勤數(shù)據(jù)庫(kù)將被刪除,關(guān)閉考勤后學(xué)生將無(wú)法再進(jìn)行考勤。
wx.request({ // 發(fā)起請(qǐng)求,將教師設(shè)備的uuid傳回遠(yuǎn)端數(shù)據(jù)庫(kù)
data: {group_id: 'Database', //自己建的用戶(hù)組id
user_id: 'serviceId',
user_info: that.data.bDeviceId},
success(res) {
that.setData({error_msg: res.data.error_msg, }) // 這里輸出錯(cuò)誤信息
if (res.data.error_msg == "SUCCESS") { // 判斷數(shù)據(jù)存入操作成功
wx.showToast({ // 輸出提示信息
title: 'uuid input', })}}})
圖4.5 考勤管理界面 ????????????????????????????圖4.6 查詢(xún)歷史考勤信息
that.setData({
allStudents: res.data.result.user_id_list, // 獲取到的全體學(xué)生名單
totalNum: res.data.result.user_id_list.length})} // 獲取到的學(xué)生總?cè)藬?shù)
var notPresentNum = 0; // 聲明未考勤學(xué)生數(shù)量變量
that.setData({
realNotPresentNum: that.data.totalNum - that.data.studentsNum}) // 計(jì)算未考勤人數(shù)
for (var i = 0; i < that.data.totalNum; i++) { // 遍歷全體學(xué)生名單
var studentPresent = false;
for (var j = 0; j < that.data.studentsNum; j++) { // 遍歷已考勤學(xué)生名單
if (that.data.allStudents[i] == that.data.kaoqinStudents[j]) { // 如果有匹配項(xiàng)
studentPresent = true; }} // 學(xué)生已考勤
if (!studentPresent) {
that.setData({notPresentList: log})} // 更新缺勤學(xué)生名單
4.3? 系統(tǒng)測(cè)試
本節(jié)將通過(guò)人工或自動(dòng)手段對(duì)本系統(tǒng)的功能和界面在運(yùn)行過(guò)程中及運(yùn)行結(jié)果的表現(xiàn)來(lái)檢驗(yàn)系統(tǒng)是否符合設(shè)計(jì)需求。根據(jù)本系統(tǒng)應(yīng)用場(chǎng)景和特點(diǎn),本節(jié)系統(tǒng)測(cè)試主要使用動(dòng)態(tài)黑盒測(cè)試方法進(jìn)行。
4.3.1? 系統(tǒng)功能測(cè)試
1、注冊(cè)登錄模塊測(cè)試
表4.1 注冊(cè)登錄模塊測(cè)試表
| 序號(hào) | 測(cè)試內(nèi)容 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 1 | 選擇學(xué)生或教師身份,能否正確進(jìn)入對(duì)應(yīng)身份流程 | 30 | 通過(guò) |
| 2 | 如果用戶(hù)未注冊(cè),能否跳轉(zhuǎn)注冊(cè)界面 | 15 | 通過(guò) |
| 3 | 用戶(hù)已注冊(cè),能否彈出登錄窗口 | 15 | 通過(guò) |
| 4 | 非管理員教師未注冊(cè),能否跳轉(zhuǎn)提示界面 | 5 | 通過(guò) |
| 5 | 管理員教師未注冊(cè),能否跳轉(zhuǎn)教師注冊(cè)界面 | 10 | 通過(guò) |
| 6 | 登錄窗口能否獲取密碼輸入進(jìn)行驗(yàn)證,密碼正確是否跳轉(zhuǎn)后續(xù)界面 | 15 | 通過(guò) |
| 7 | 注冊(cè)界面能否獲取用戶(hù)信息和密碼并存入后端數(shù)據(jù)庫(kù)與用戶(hù)名進(jìn)行綁定 | 15 | 通過(guò) |
| 8 | 注冊(cè)界面能否通過(guò)攝像頭模塊拍攝照片 | 15 | 通過(guò) |
| 9 | 人臉信息編碼是否正確存入人臉庫(kù)可用 | 15 | 通過(guò) |
2、云端交互請(qǐng)求測(cè)試
表4.2 云端交互模塊測(cè)試表
| 序號(hào) | 測(cè)試內(nèi)容 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 1 | 系統(tǒng)頁(yè)面加載時(shí)能否獲取交互token并在控制窗口輸出 | 50 | 通過(guò) |
| 2 | 從交互窗口獲取輸入數(shù)據(jù)能否存儲(chǔ)入云端數(shù)據(jù)庫(kù) | 50 | 通過(guò) |
| 3 | 能否能從云端數(shù)據(jù)庫(kù)正確獲取數(shù)據(jù) | 50 | 通過(guò) |
3、藍(lán)牙搜索模塊測(cè)試
表4.3 藍(lán)牙搜索模塊測(cè)試表
| 序號(hào) | 測(cè)試內(nèi)容 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 1 | 用戶(hù)點(diǎn)擊藍(lán)牙搜索按鈕后,是否會(huì)檢測(cè)藍(lán)牙模塊開(kāi)啟狀態(tài)并提示 | 40 | 通過(guò) |
| 2 | 藍(lán)牙適配器能否正常開(kāi)啟并時(shí)刻檢測(cè)狀態(tài) | 20 | 通過(guò) |
| 3 | 學(xué)生端能否獲取到教師的藍(lán)牙設(shè)備uuid | 20 | 通過(guò) |
| 4 | 學(xué)生端系統(tǒng)能否準(zhǔn)確測(cè)量、計(jì)算并顯示距離信息 | 20 | 通過(guò) |
| 5 | 能否從云端獲取教師的位置信息 | 20 | 通過(guò) |
| 6 | 小程序是否能獲取到學(xué)生的位置信息并進(jìn)行距離計(jì)算 | 20 | 通過(guò) |
| 7 | 藍(lán)牙設(shè)備能否成功成功建立連接 | 20 | 通過(guò) |
| 8 | ??學(xué)生在教室范圍內(nèi)時(shí)能否跳轉(zhuǎn)考勤界面 | 20 | 通過(guò) |
| 9 | ??停止搜索或者跳轉(zhuǎn)之后藍(lán)牙模塊是否關(guān)閉 | 40 | 通過(guò) |
4、人臉驗(yàn)證模塊測(cè)試
表4.4 人臉驗(yàn)證模塊測(cè)試表
| 序號(hào) | 測(cè)試內(nèi)容 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 1 | 進(jìn)入人臉測(cè)試界面,攝像頭能否正常開(kāi)啟 | 40 | 通過(guò) |
| 2 | 能否拍攝人臉照片并進(jìn)行編碼輸出 | 20 | 通過(guò) |
| 3 | 考勤失敗是否提示重試 | 10 | 通過(guò) |
| 4 | 教師登錄成功后能否跳轉(zhuǎn)考勤管理界面 | 20 | 通過(guò) |
| 5 | 能否檢測(cè)在輸入已關(guān)閉考勤口令時(shí)給出提示 | 20 | 通過(guò) |
| 6 | 在輸入正確口令時(shí)能否跳轉(zhuǎn)簽到成功界面 | 20 | 通過(guò) |
5、考勤管理模塊測(cè)試
表4.5 考勤管理模塊測(cè)試表
| 序號(hào) | 測(cè)試內(nèi)容 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 1 | 未授權(quán)是否拒絕開(kāi)啟考勤及關(guān)閉考勤 | 20 | 通過(guò) |
| 2 | 未開(kāi)啟考勤是否拒絕關(guān)閉考勤操作 | 20 | 通過(guò) |
| 3 | 點(diǎn)擊開(kāi)啟考勤按鈕能否獲取數(shù)據(jù)庫(kù)建立信息 | 20 | 通過(guò) |
| 4 | 點(diǎn)擊刷新按鈕能否在已簽到窗口顯示簽到學(xué)生人數(shù)和名單 | 20 | 通過(guò) |
| 5 | 點(diǎn)擊未簽到學(xué)生按鈕能否顯示缺勤學(xué)生人數(shù)和名單 | 20 | 通過(guò) |
| 6 | 點(diǎn)擊清空l(shuí)og按鈕能否清除窗口內(nèi)容并將人數(shù)清零 | 20 | 通過(guò) |
| 7 | 口令可用時(shí)能否開(kāi)啟考勤 | 20 | 通過(guò) |
| 8 | 口令已存在時(shí)能否提示查看歷史考勤信息 | 20 | 通過(guò) |
本系統(tǒng)的各項(xiàng)功能測(cè)試結(jié)果表明,本系統(tǒng)各個(gè)功能模塊的實(shí)現(xiàn)均滿(mǎn)足設(shè)計(jì)需求。
4.3.2? 系統(tǒng)界面及窗體測(cè)試
表4.6 系統(tǒng)界面及功能測(cè)試表
| 測(cè)試用例 | 用例說(shuō)明 | 測(cè)試方法 | 用例數(shù)量 | 測(cè)試結(jié)果 |
| 界面內(nèi)容 | 界面中是否存在錯(cuò)別字 | 手動(dòng)測(cè)試 | 30 | 通過(guò) |
| 界面控件 | 界面中是否有多余控件 | 手動(dòng)測(cè)試 | 30 | 通過(guò) |
| 界面字體 | 界面字體、大小、顏色是否一致 | 手動(dòng)測(cè)試 | 30 | 通過(guò) |
| 提示 | 各種提示是否正確、明了 | 手動(dòng)測(cè)試 | 30 | 通過(guò) |
?
結(jié)? 論
本文設(shè)計(jì)并實(shí)現(xiàn)了基于微信小程序的課堂考勤系統(tǒng),該系統(tǒng)主要使用了藍(lán)牙技術(shù)和人工智能技術(shù),相較于傳統(tǒng)課堂考勤方式,使用本系統(tǒng)可以實(shí)現(xiàn)準(zhǔn)確且高效的課堂考勤。未來(lái)可以在本系統(tǒng)設(shè)計(jì)的基礎(chǔ)上進(jìn)行優(yōu)化和拓展,以解決高校日常考勤過(guò)程中的其他問(wèn)題。
本文主要涉及的工作主要包括以下幾個(gè)方面。
1、系統(tǒng)注冊(cè)與登錄模塊
本系統(tǒng)根據(jù)學(xué)生和教師的身份不同分別設(shè)置了不同的權(quán)限,必須選擇身份并且完成對(duì)應(yīng)身份所需的驗(yàn)證才可以進(jìn)行后續(xù)使用。對(duì)于教師身份除了密碼驗(yàn)證還需要人臉驗(yàn)證才可以使用教師功能,從而保證了系統(tǒng)的安全性。
2、藍(lán)牙搜索模塊
該模塊通過(guò)控制手機(jī)藍(lán)牙適配器,對(duì)周?chē)O(shè)備進(jìn)行掃描,從而判斷學(xué)生是否可以進(jìn)行簽到。是本系統(tǒng)的主要功能之一。
3、人臉識(shí)別簽到模塊
該模塊主要是對(duì)學(xué)生進(jìn)行簽到前的身份認(rèn)證,確認(rèn)學(xué)生是本人,結(jié)合學(xué)生在教室的前提,從而杜絕了代簽到的行為。
4、考勤管理模塊
本模塊是面向教師進(jìn)行考勤管理的各項(xiàng)功能的實(shí)現(xiàn)。教師可以控制學(xué)生考勤的時(shí)間,以及方便地查詢(xún)學(xué)生的簽到和缺勤情況。
本系統(tǒng)的主要特點(diǎn)是將藍(lán)牙測(cè)距與人臉識(shí)別結(jié)合,充分利用智能手機(jī)硬件和人體生物信息,保證學(xué)生在教室且是本人簽到,既節(jié)省了考勤的時(shí)間,又提高了課堂考勤的準(zhǔn)確性。并且基于微信小程序平臺(tái),使用用戶(hù)微信id作為識(shí)別更加高效,無(wú)需考慮不同手機(jī)系統(tǒng)的適配,可以方便地被獲取使用,并且用完即走,節(jié)省系統(tǒng)空間,網(wǎng)絡(luò)信息使用HTTPS和SSL加密傳輸,系統(tǒng)擁有更高的安全性。
本文設(shè)計(jì)的系統(tǒng)已經(jīng)基本實(shí)現(xiàn)高校課堂考勤所需的功能,但是由于開(kāi)發(fā)時(shí)間有限,加之本人能力有限,無(wú)法將本系統(tǒng)做到足以完全取代傳統(tǒng)考勤方式的程度,為進(jìn)一步提升系統(tǒng)的可靠性,綜合考量本系統(tǒng),還存在以下不足需要后續(xù)進(jìn)行完善。
1、系統(tǒng)可以為教師提供更加豐富的考勤管理功能,比如將考勤情況統(tǒng)計(jì)后保存到本地或者發(fā)送到郵件,目前只能通過(guò)截圖實(shí)現(xiàn)。
2、本系統(tǒng)用于定位的藍(lán)牙設(shè)備可以替換成低成本的iBeacon設(shè)備放置在教室,這種設(shè)備可以在微信小程序開(kāi)發(fā)時(shí)獲得更好的平臺(tái)支持,從而實(shí)現(xiàn)更準(zhǔn)確的定位。
3、系統(tǒng)的界面還過(guò)于簡(jiǎn)單,目前只是足夠正常使用的狀態(tài),后續(xù)可以對(duì)界面進(jìn)一步美化,提升師生考勤體驗(yàn)。
4、可以對(duì)系統(tǒng)流程和發(fā)起數(shù)據(jù)請(qǐng)求的頻率進(jìn)行優(yōu)化,本系統(tǒng)使用的百度AI平臺(tái)的人工智能API只是免費(fèi)版本的,只能支持不超過(guò)一百人的同時(shí)簽到。
參考文獻(xiàn)
[1]李鐘石,蔡珉官.“互聯(lián)網(wǎng)+”環(huán)境下高校課堂的快速簽到應(yīng)用研究[J].延邊大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2019(02):83-90+142.
[2]李湘勤,黃晨華,門(mén)戈陽(yáng).微信考勤管理系統(tǒng)在高校課堂中的應(yīng)用——以韶關(guān)學(xué)院為例[J].教育教學(xué)論壇,2018(17):8-11.
[3]楊永平,曾藝,劉世興.基于WIFI的高校課堂考勤系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[J].信息技術(shù)與信息化,2017(Z1):102-103+106.
[4]鄭瑩,孟安寧,孫久舒.基于校園一卡通的考試簽到系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2017(12):96-99.
[5]彭毅弘.基于iBeacon定位技術(shù)的高校考勤系統(tǒng)設(shè)計(jì)[J].福建電腦,2018,34(11):36-37+22.
[6]吳海龍,柏正堯,武文強(qiáng).基于STM32和C#的學(xué)生考勤系統(tǒng)設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(shù),2017,36(12):113-116.
[7]方冠男.基于視頻流人臉識(shí)別的課堂考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].華中師范大學(xué),2018.
[8]葛偲涵,劉毅,陳健.BLE技術(shù)在智能公寓門(mén)鎖微信小程序中的開(kāi)發(fā)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2018,31(06):112-113+116.
[9]葛會(huì)會(huì).基于Android 藍(lán)牙考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].東華理工大學(xué),2016.
[10]騰訊公司.2018微信數(shù)據(jù)報(bào)告[EB/OL],2019,[2019-01-10]. https://support.weixin.qq.com/cgi-bin/mmsupport-bin/getopendays.
總結(jié)
以上是生活随笔為你收集整理的基于微信小程序的课堂考勤系统的设计与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CRC校验算法学习
- 下一篇: 【Linux学习】Vim 怎么设置显示行