鄭曉東 宋思琪*
(三峽大學科技學院,湖北 宜昌 443002)
高校中的曠課、遲到、早退現象一直存在且不能得到很好的解決。 傳統的人工點名簽到方式效率低下,而且難以確認其準確性,這個時候就需要一種既方便又能快速完成課堂簽到的方法。本課堂手機簽到系統,可以做到僅學生手機與教師手機接觸,便可以判斷這個學生是否出勤,老師要做的僅僅是在旁邊監督是否有學生會拿出多個手機代其他同學簽到。安卓目前是最流行的移動開發平臺, 隨著具有NFC 功能的安卓手機越來越多,這種功能可以被利用起來以方便我們的生活和學習。
NFC 代表“近場通信”,它是兼容設備之間的短程通信[1]。 NFC 需要至少一個信號發射設備和一個信號接收設備。 本系統采用的是NFC 三大開發模式中的P2P 對等模式。該模式允許兩個具有NFC 功能的設備建立雙向連接,以交換聯系人信息、藍牙配對信息或任何其他類型的數據。通信時需要建立一個從連接客戶端,即NFC P2P 發起人,到一個正在搜索NFC 對等目標主機之間的連接。本系統采用NFC NDEF 數據交換格式來傳輸數據[2]。 需要通信時,將兩個開啟NFC功能的手機相互碰撞, 這時兩個手機的屏幕都會縮小,當你點擊其中一個屏幕時,這個被點擊的手機便會成為發送端,并發送一條NDEF 格式的數據,同時另外一個手機自然便成為了接收端。這里用到的實際上是Android Beam 通信[3-4]。
系統模塊劃分有學生手機端App、 教師手機端App、后臺數據存儲和Web 端查詢服務器。 核心功能有教師開啟簽到、學生觸碰簽到、簽到成功處理、后臺簽到數據查詢等。
課堂簽到學生端App 安裝在學生手機上,每個學生通過輸入自己的學號和相關信息從而在手機上綁定自己的ID。 上課時,打開手機上的App 和NFC 功能,與教師的手機進行后背NFC 接觸,模擬打卡簽到[5]。
教師也是通過在手機上安裝手機簽到教師端App,然后每次上課時開啟App,放置在桌上模擬打卡機,由學生手機依次進行NFC 接觸來實現簽到。 每次形成的考勤記錄都會記錄在后臺數據庫中,教師可以根據自己的ID、 密碼登錄Web 端網站來查詢或統計每次的課程考勤記錄。
學生簽到成功后的信息由學生手機發往后臺服務器,教師可以在Web 端查詢和統計簽到記錄。 系統數據流程圖如圖1 所示。

圖1 簽到系統數據流圖
本系統主要是利用三大模式中的P2P 模式,開啟學生和教師雙方手機的NFC 功能以NDEF 格式進行信息傳遞[6]。 本系統在Android 擁有兩個端,教師端和學生端,兩個端都搭建了簡潔的界面。
(1)定義了一個checkNFCFunction()方法, 判斷NFC 功能是否開啟,這個功能主要是強制開啟NFC 功能,如果手機沒有NFC 這個功能,程序就無法運行。
(2)定義了一個extractData()方法,解析傳輸中的NDEF 格式數據。這段數據取出的最終內容就是學生端的信息簽到信息,包括簽到ID,學生ID,簽到時間等。
(3) 將信息整合并發送到服務器, 這里是使用HttpURLConnection 的方式發送到服務器, 最終將完整的簽到數據存儲在數據庫表中。
教師端的主要任務是模擬一個讀卡器。 首先,通過NFC 功能收集學生端的信息;其次,將收集來的信息進行整合;最后,將簽到信息上傳到搭建好的服務器。 實現NFC 信息收取的具體步驟如下。
學生端的主要任務是模擬一張卡,將學生的簽到信息轉化為NDEF 數據格式發送。 學生端需要一個BobNdefMessage 這樣的封裝類,用于NDEF 消息的封裝。使用這個類可以很方便地實現封裝功能和消息發送功能,然后就可以在NFC 上實現傳輸。 下面代碼先是通過BobNdefMessage 進行信息的封裝:
NdefMessage message=BobNdefMessage.getNdefMsg_from_RTD_TEXT(“學生的簽到信息”,false,false);
然后是發送代碼的設置。 只有這一條代碼執行,手機碰撞后才會發送上面封裝好的NDEF 信息數據:
mNfcAdapter.setNdefPushMessage(message, Main Activity.this);
手機端簽到成功后, 簽到數據會被發送到Web服務器并存儲到數據庫服務器。 同時,在Web 服務器上可以方便地分析和統計歷史簽到數據。數據庫使用的是Oracle 11g,表設計有教師表、學生表、課程表、課程安排表、學生課程表、學生簽到考勤記錄表等。
教師表主要針對學校所有的教師, 包含姓名、編號、入職日期、以及一些個人信息。學生表主要針對學校所有的學生,包含姓名、學號、年齡以及一些個人信息。課程表包含了學校所有課的基本屬性,例如,課程名、課程編號、課程時長,等等。 課時安排表包含了學年度每一次課的安排,例如,一次課程安排的課程名,所對應的教師編號,所對應的日期時間,以及此次安排應到的人數。學生課程表包含了學生個人在被安排在每一次的到課情況,其中有學生學號,課程安排的ID,已經是否出勤該堂課。 學生考勤記錄表包含了學生與課程的ID,學生ID 每一次簽到的記錄。
Web 端主要功能是接收手機端發來的消息并存儲,然后為教師的簽到記錄查詢和分析統計提供操作界面。Web 服務器端是學生簽到成功后發送數據的接收方, 這里使用的是HTTP 通信協議。 教師端利用HttpURLConnection 連接上服務器,在簽到過程中,也就是學生機觸碰教師機后, 教師手機端通過NFC 對學生簽到信息進行采集, 并負責將簽到信息如簽到ID、學生ID、教師和課程信息、簽到日期和時間等上傳到服務器以便處理。 服務器根據上傳的信息,解析出簽到的人員與課程,改寫簽到信息,將考勤記錄設置成已簽到。 需要使用簽到查詢功能時,教師輸入自己的教師工號和密碼即可登錄Web 服務器, 然后進行相應操作。
簽到作為高校課堂的一個必要環節,使用新的技術可以提高其效率和準確性。NFC 近場通信技術能在短距離內與兼容設備進行識別和數據交換,NFC 在門禁、公交、手機支付等領域內發揮著巨大的作用。本文利用NFC 實現了一個結合Android 手機的課堂點名簽到系統, 使用本系統的技術可以大大縮短簽到時間。 在實現上,本文已經解決了數據交換與存儲的核心功能,在數據查詢統計上可以進一步完善。 從應用角度來看,本系統具有很強的實用性。