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