◆魏嵩 王天鑫 閆冉 黎茂林 宿世博 陳曉宇
基于地理位置信息的自動打卡簽到應用研究
◆魏嵩 王天鑫 閆冉 黎茂林 宿世博 陳曉宇
(北京信息科技大學 北京 100083)
以往的紙質簽到,浪費時間和資源,而且當前大多簽到APP使用較為煩瑣,而針對簽到的功能設計比較單一,不能較好滿足使用需求。本款簽到APP面向所有簽到場景,用GPS獲取地理位置信息,從時間、位置、簽到碼三個方面來進行簽到。
簽到;GPS定位;短信驗證碼;簽到碼
對于課堂、會議等各種形式下的簽到而言,方便、迅速、準確成為用戶的首選,每次會議都采用紙質簽到的方法,不僅很浪費時間和資源,而且不能保證簽到的有效性和正確性。當前已有相關應用實現在線簽到功能,但普遍存在操作較為煩瑣,針對簽到功能點的設計不夠完善等問題。本項目是面向“打卡簽到”需求設計的一款應用,采用APP形式。基于地理位置信息實現無干涉自動打卡簽到。接下來解釋此應用的研發。
基于實現方便、準確的簽到需求,系統應包括新建簽到、加入簽到、查看簽到記錄、手機驗證碼登錄等。
如圖1所示,此APP主要由四大模塊組成,即“簽到列表”、“加入簽到”、“新建簽到”和“我的”組成。其中“簽到列表”可以查看我加入和創建的簽到,在“我的”里可以查看簽到記錄和設置。
圖1 架構圖
圖2 系統流程圖
如圖2所示,用戶在登錄后可以選擇“新建簽到”、“加入簽到”和“我的”。若選擇“加入簽到”,則輸入簽到碼“加入簽到”即可。若選擇“新建簽到”,則填寫簽到的信息,然后系統會自動生成一個簽到碼,并把簽到的信息存儲到數據庫中。若選擇“我的”,可從數據庫中調取簽到記錄并查看,或在“設置”中更改綁定的手機號,或退出登錄。
根據APP功能模塊的設計需求,建立了3個數據表,即用戶表(User)、發布簽到表(Sign)、簽到狀態表(State)。后端編寫采用的是nodejs中的express框架,用Sequelize操作mysql數據庫。前后端采用post傳輸數據,數據格式為json格式。用戶表是用于存放用戶手機號,簽到發布表是用于存放發布簽到的信息,簽到狀態表是用于存放簽到記錄的信息。
表1 用戶表字段詳細信息
表2 簽到發布表字段詳細信息
表3 簽到狀態表字段詳細信息
如圖3所示,登錄模塊采用短信驗證碼進行登錄,短信驗證碼服務采用阿里云的短信驗證服務。調用阿里云短信驗證的API,前端將用戶輸入的手機號用post方法傳給后端,調用API,返回是否成功的參數值,“驗證碼”則會發送到用戶手機中。用戶輸入驗證碼后會與后端數據庫中的驗證碼比較,驗證是否登錄成功。
如圖4所示,通過H5新增功能地理位置 Geolocation,來獲取可以較為準確地獲取到經緯度信息,在地圖中顯示出來,需要把它移植到Android中,這里借用的是Android中WebView控件,可以很好地展示出網頁中的內容,這就能完成獲取地理位置信息了。
簽到模塊分為創建簽到、加入簽到、查看簽到情況這三個方面。如圖5所示,用戶點擊創建簽到后,填寫表單信息后,前端會把用戶填寫的表單發送給后端,后端把信息添加進數據庫,并且隨機生成數字簽到碼存入數據庫,用json格式返回一個值表示創建成功。如圖6所示,加入簽到模塊,用戶輸入簽到碼,前端把用戶地理位置的經緯度、當前時間、“簽到碼”用post方式傳給后端。從時間是否在規定時間內,簽到的經緯度與簽到地點是否在規定范圍來確定是否為有效簽到。如圖7所示,查看簽到記錄方面,后端查看數據庫即可完成此操作,以json格式傳給前端。
圖3 登錄模塊
圖4 獲取地理位置信息模塊
基于地理位置信息的自動打卡簽到應用已經完成基本簽到功能,已經發布了第一版基于Android的APP,軟件性能良好,操作簡單便捷。本款APP不僅解決了傳統紙質簽到浪費資源、耗時的問題,還優化了目前市場上簽到APP操作較為煩瑣的問題。在今后的研究中,將繼續對軟件的性能和定位的精度進行優化,讓用戶擁有更好的使用體驗。
圖5 新建簽到
圖6 加入簽到
圖7 簽到記錄
[1]馬炳周.基于Android的考勤系統的設計方案[J].中國新通信,2019,21(18):48-49.
[2]劉香燕,李揚. 智能簽到系統的設計與應用[J]. 信息通信,2018(02):95-96.
本文由北京信息科技大學2020年大學生創新創業訓練計劃項目資助