閔 慧,李 鵬,劉 婷,章宜玉
(1.湖南信息職業(yè)技術(shù)學院軟件學院,湖南 長沙 410200;2.湖南中醫(yī)藥大學信息科學與工程學院)
校園安全是順利開展學校教育活動的基礎(chǔ),而定時查寢是學校的一種常態(tài)化的安全管理方式。除了學校宿管的定期查寢,各個二級學院也有查寢任務。大多數(shù)二級學院的查寢,是由學生會或班主任、輔導員去執(zhí)行。學生會查寢提前發(fā)布查寢通知,然后走訪所有的寢室。由于人力、物力的原因,不可能每天都進行一次大規(guī)模的查寢。在這個科技如此發(fā)達的時代,機器、程序可以去做很多繁瑣和復雜的事物。本款小程序意在幫助老師及學生會成員更好的管理學生的出勤狀況,提高學生打卡的興致,提高管理人員查寢的效率,節(jié)省人力物力成本。
本系統(tǒng)采用前、后端分離的方式開發(fā),分為微信小程序前端和服務器后端兩個技術(shù)端。在微信小程序端,綜合使用了微信小程序原生組件進行布局,使用組件庫進行優(yōu)化,使用微信小程序原生API進行功能的實現(xiàn)。后端使用Node.js 結(jié)合Express 框架進行開發(fā),姿勢和手勢的識別采用了百度AI技術(shù)。使用MySQL數(shù)據(jù)庫存儲數(shù)據(jù)。系統(tǒng)采用的開發(fā)與測試環(huán)境如表1所示。
表1 開發(fā)與測試環(huán)境
Node.js是一個開源跨平臺的服務器端Java Script運行環(huán)境,它以Google Chrome V8 解析引擎為基礎(chǔ),采用類似Nginx的以事件循環(huán)驅(qū)動的異步I/O模型提高運行效率,Node.js的核心優(yōu)勢在于通用、靈活、高性能。
Express 是一個簡潔而靈活的Node.js Web 應用框架,提供了一系列強大的功能,能夠幫助人們創(chuàng)建各種Web應用。
微信小程序是一種無需下載即可使用的應用,它依托于微信,可跨安卓和iOS 平臺使用,開發(fā)成本低,操作簡單,微信客戶可以通過微信聊天進入小程序,也可以在使用小程序時方便切換到聊天界面,靈活快捷?;谛〕绦虻闹T多優(yōu)點,小程序的線上線下推廣十分普遍。
百度AI技術(shù)擁有語音技術(shù)、圖像技術(shù)、文字識別、人臉與人體識別、視頻技術(shù)等多種人工智能技術(shù)解決方案。手勢識別技術(shù)是其中的一種,它可識別圖片中的手部位置和手勢類型,可識別包括拳頭、比心、祈禱、點贊等24種常見手勢。本文中的手勢和姿勢識別調(diào)用的就是百度AI中的相關(guān)API接口實現(xiàn)。
查寢打卡小程序中擁有管理員、學生兩種角色。管理端主要用于學院管理,供學生會、老師等管理員角色使用,用于管理學生的日常出勤。學生端主要是學生角色使用,用于打卡簽到。此系統(tǒng)是基于校園層次上的學生簽到打卡系統(tǒng),能便捷、高效的檢查出勤狀況,能夠系統(tǒng)、完整的顯示學生簽到情況。系統(tǒng)靈活性較高,操作簡單快捷,而且不受時間和地域的限制。管理員在管理員端可新增學生、一鍵發(fā)布簽到任務,學生就可以在學生端收到打卡推送,只要學生在宿舍,能按時按照指定的要求完成指定的動作,完成打卡即可。系統(tǒng)具體的功能結(jié)構(gòu)如圖1所示。
圖1 查寢打卡微信小程序功能結(jié)構(gòu)
數(shù)據(jù)庫在整個系統(tǒng)設計開發(fā)流程中有著至關(guān)重要的作用,數(shù)據(jù)庫的設計直接影響整個系統(tǒng)的運行效率。本小程序使用MySQL8.0.12 進行開發(fā),共設計了包括學校表、班級表、宿舍表、學生表、樓棟表、簽到表、手勢表等在內(nèi)的14張表。
查寢打卡小程序?qū)碛袃煞N角色,管理員角色和學生角色。管理員角色可以添加學生、發(fā)起簽到、請假審批和查看簽到詳情,每一個功能對應的界面效果圖2(a)~圖2(d)所示。學生角色可以進行簽到打卡和請假提交。
圖2 管理員功能
打卡小程序因為需要進行人臉對比,初次進入時數(shù)據(jù)庫中無學生的數(shù)據(jù),需要管理員登錄管理員賬號,進入添加學生頁面,添加待管理的學生信息。添加學生信息界面如圖2(a)所示。
管理員可以選擇修改簽到的開始時間和結(jié)束時間、動作和手勢,發(fā)起簽到。如果當前時間段已經(jīng)發(fā)起過簽到,則發(fā)起簽到失敗;如果當前時間段沒有發(fā)起過簽到,反之則發(fā)起簽到成功,允許接收訂閱消息的學生將會收到簽到提示。這里用到了微信云函數(shù)推送消息來通知各個學生。學生在登錄小程序允許授權(quán)后,會將openid 存入數(shù)據(jù)庫,管理員發(fā)起簽到,根據(jù)數(shù)據(jù)庫存儲的openid,給學生推送消息。發(fā)起簽到界面如圖2(b)所示。
管理員登錄之后選擇右下邊個人中心,點擊查看請假申請,能看到今天需要申請請假的人數(shù),通過點擊申請記錄可以查看請假詳情。管理員可以根據(jù)請假理由和相關(guān)證明,進行批假或者打回。請假審批界面如圖2(c)所示。
管理員可以查看學生的簽到情況。小程序前端向后臺提交請求并帶上院系id、日期和簽到次數(shù)(如無日期和當日發(fā)起簽到次數(shù),默認查詢最新數(shù)據(jù)),后臺查詢出已簽學生信息和未簽學生信息,返回給小程序前端。查看簽到界面如圖2(d)所示。
學生登錄成功后,進入簽到頁面。第一次登錄的學生需要給小程序授權(quán),方便后面簽到通知的發(fā)送。簽到頁面的正中間是一個醒目的相機圖標,點擊該圖標就可以進行簽到。簽到時需要拍攝自己的臉部及管理員指定地具體的動作或者手勢,才能簽到成功。具體簽到打卡頁面效果如圖3所示。
圖3 學生簽到
學生如果有事或生病可以提交請假申請。請假經(jīng)過審批之后便無需簽到;如果請假未通過,則還需要學生去簽到或者再次提交相關(guān)信息進行重新申請。在遞交請假申請時,需要選擇請假類型,填寫請假理由,上傳相關(guān)證明,比如病假就需要上傳病歷單。
本文設計并實現(xiàn)了一款查寢打卡微信小程序,系統(tǒng)采用微信云開發(fā)技術(shù)、Node.js 技術(shù)、Express 框架技術(shù)、百度AI手勢識別技術(shù)、MySQL 數(shù)據(jù)庫技術(shù)等多種技術(shù)實現(xiàn)。小程序目前擁有24 種固定手勢和6 種手繪姿勢,識別能力具有一定的限制,下一步研究重點是將打卡形式多樣化,進一步提高手勢、姿勢識別的正確率。