閔 慧,李 鵬,劉 婷,章宜玉
(1.湖南信息職業技術學院軟件學院,湖南 長沙 410200;2.湖南中醫藥大學信息科學與工程學院)
校園安全是順利開展學校教育活動的基礎,而定時查寢是學校的一種常態化的安全管理方式。除了學校宿管的定期查寢,各個二級學院也有查寢任務。大多數二級學院的查寢,是由學生會或班主任、輔導員去執行。學生會查寢提前發布查寢通知,然后走訪所有的寢室。由于人力、物力的原因,不可能每天都進行一次大規模的查寢。在這個科技如此發達的時代,機器、程序可以去做很多繁瑣和復雜的事物。本款小程序意在幫助老師及學生會成員更好的管理學生的出勤狀況,提高學生打卡的興致,提高管理人員查寢的效率,節省人力物力成本。
本系統采用前、后端分離的方式開發,分為微信小程序前端和服務器后端兩個技術端。在微信小程序端,綜合使用了微信小程序原生組件進行布局,使用組件庫進行優化,使用微信小程序原生API進行功能的實現。后端使用Node.js 結合Express 框架進行開發,姿勢和手勢的識別采用了百度AI技術。使用MySQL數據庫存儲數據。系統采用的開發與測試環境如表1所示。

表1 開發與測試環境
Node.js是一個開源跨平臺的服務器端Java Script運行環境,它以Google Chrome V8 解析引擎為基礎,采用類似Nginx的以事件循環驅動的異步I/O模型提高運行效率,Node.js的核心優勢在于通用、靈活、高性能。
Express 是一個簡潔而靈活的Node.js Web 應用框架,提供了一系列強大的功能,能夠幫助人們創建各種Web應用。
微信小程序是一種無需下載即可使用的應用,它依托于微信,可跨安卓和iOS 平臺使用,開發成本低,操作簡單,微信客戶可以通過微信聊天進入小程序,也可以在使用小程序時方便切換到聊天界面,靈活快捷。基于小程序的諸多優點,小程序的線上線下推廣十分普遍。
百度AI技術擁有語音技術、圖像技術、文字識別、人臉與人體識別、視頻技術等多種人工智能技術解決方案。手勢識別技術是其中的一種,它可識別圖片中的手部位置和手勢類型,可識別包括拳頭、比心、祈禱、點贊等24種常見手勢。本文中的手勢和姿勢識別調用的就是百度AI中的相關API接口實現。
查寢打卡小程序中擁有管理員、學生兩種角色。管理端主要用于學院管理,供學生會、老師等管理員角色使用,用于管理學生的日常出勤。學生端主要是學生角色使用,用于打卡簽到。此系統是基于校園層次上的學生簽到打卡系統,能便捷、高效的檢查出勤狀況,能夠系統、完整的顯示學生簽到情況。系統靈活性較高,操作簡單快捷,而且不受時間和地域的限制。管理員在管理員端可新增學生、一鍵發布簽到任務,學生就可以在學生端收到打卡推送,只要學生在宿舍,能按時按照指定的要求完成指定的動作,完成打卡即可。系統具體的功能結構如圖1所示。

圖1 查寢打卡微信小程序功能結構
數據庫在整個系統設計開發流程中有著至關重要的作用,數據庫的設計直接影響整個系統的運行效率。本小程序使用MySQL8.0.12 進行開發,共設計了包括學校表、班級表、宿舍表、學生表、樓棟表、簽到表、手勢表等在內的14張表。
查寢打卡小程序將擁有兩種角色,管理員角色和學生角色。管理員角色可以添加學生、發起簽到、請假審批和查看簽到詳情,每一個功能對應的界面效果圖2(a)~圖2(d)所示。學生角色可以進行簽到打卡和請假提交。

圖2 管理員功能
打卡小程序因為需要進行人臉對比,初次進入時數據庫中無學生的數據,需要管理員登錄管理員賬號,進入添加學生頁面,添加待管理的學生信息。添加學生信息界面如圖2(a)所示。
管理員可以選擇修改簽到的開始時間和結束時間、動作和手勢,發起簽到。如果當前時間段已經發起過簽到,則發起簽到失敗;如果當前時間段沒有發起過簽到,反之則發起簽到成功,允許接收訂閱消息的學生將會收到簽到提示。這里用到了微信云函數推送消息來通知各個學生。學生在登錄小程序允許授權后,會將openid 存入數據庫,管理員發起簽到,根據數據庫存儲的openid,給學生推送消息。發起簽到界面如圖2(b)所示。
管理員登錄之后選擇右下邊個人中心,點擊查看請假申請,能看到今天需要申請請假的人數,通過點擊申請記錄可以查看請假詳情。管理員可以根據請假理由和相關證明,進行批假或者打回。請假審批界面如圖2(c)所示。
管理員可以查看學生的簽到情況。小程序前端向后臺提交請求并帶上院系id、日期和簽到次數(如無日期和當日發起簽到次數,默認查詢最新數據),后臺查詢出已簽學生信息和未簽學生信息,返回給小程序前端。查看簽到界面如圖2(d)所示。
學生登錄成功后,進入簽到頁面。第一次登錄的學生需要給小程序授權,方便后面簽到通知的發送。簽到頁面的正中間是一個醒目的相機圖標,點擊該圖標就可以進行簽到。簽到時需要拍攝自己的臉部及管理員指定地具體的動作或者手勢,才能簽到成功。具體簽到打卡頁面效果如圖3所示。

圖3 學生簽到
學生如果有事或生病可以提交請假申請。請假經過審批之后便無需簽到;如果請假未通過,則還需要學生去簽到或者再次提交相關信息進行重新申請。在遞交請假申請時,需要選擇請假類型,填寫請假理由,上傳相關證明,比如病假就需要上傳病歷單。
本文設計并實現了一款查寢打卡微信小程序,系統采用微信云開發技術、Node.js 技術、Express 框架技術、百度AI手勢識別技術、MySQL 數據庫技術等多種技術實現。小程序目前擁有24 種固定手勢和6 種手繪姿勢,識別能力具有一定的限制,下一步研究重點是將打卡形式多樣化,進一步提高手勢、姿勢識別的正確率。