嚴(yán)宇倞
[摘要]文章針對(duì)大學(xué)中使用校園卡進(jìn)行考勤、簽到的需求,描述了一種較為通用的考勤簽到系統(tǒng)設(shè)計(jì)。讀卡的硬件采用成熟通用的產(chǎn)品,軟件開(kāi)發(fā)利用流行的平臺(tái)或框架技術(shù)。系統(tǒng)整體具有成本低、開(kāi)發(fā)周期短、高可靠性等特點(diǎn)。
[關(guān)鍵詞]考勤;簽到;校園卡;Java;Android;Play framework
[DOI]1013939/jcnkizgsc201650224
1項(xiàng)目背景及概述
在大學(xué)中,經(jīng)常出現(xiàn)學(xué)生活動(dòng)簽到、早鍛煉考勤、上課點(diǎn)名之類(lèi)的考勤簽到應(yīng)用場(chǎng)景。使用校園卡進(jìn)行刷卡考勤簽到是一種低成本,簡(jiǎn)單可靠的方法。本文描述的系統(tǒng),現(xiàn)已應(yīng)用于南京郵電大學(xué)早鍛煉考勤,部分活動(dòng)及課堂的考勤。由于早鍛煉考勤與活動(dòng)簽到的業(yè)務(wù)邏輯有細(xì)微不同,總體架構(gòu)高度一致,本文僅以早鍛煉考勤為例進(jìn)行描述。
在針對(duì)早鍛煉考勤需求的開(kāi)發(fā)過(guò)程中,讀卡環(huán)節(jié)需要的硬件為采購(gòu)獲得,手持讀卡器軟件,后臺(tái)數(shù)據(jù)接口,管理端網(wǎng)站,學(xué)生查詢(xún)網(wǎng)站,數(shù)據(jù)庫(kù)程序均為自行開(kāi)發(fā)。
2背景技術(shù)要點(diǎn)
第一,Mifare S50、S70校園卡。Mifare非接觸式智能卡作為校園卡,是學(xué)校師生在校園生活中不可缺少的一部分。消費(fèi)和身份的識(shí)別等功能均集成在一卡通系統(tǒng)內(nèi)。通過(guò)物理卡號(hào),可以在一卡通系統(tǒng)和學(xué)校現(xiàn)有學(xué)生數(shù)據(jù)庫(kù)中獲得學(xué)生的基本信息。
第二,Play Framework。Play框架是基于Java的Web全線式開(kāi)發(fā)框架。開(kāi)發(fā)效率高,使用靈活,能夠滿足本系統(tǒng)快速上線的需求。
第三,RESTful。使用REST風(fēng)格的軟件架構(gòu),幫助數(shù)據(jù)在不同環(huán)節(jié)高效流轉(zhuǎn),系統(tǒng)各個(gè)部分低耦合,方便維護(hù)和后期升級(jí)。
第四,Android系統(tǒng)。讀卡器手持機(jī)為內(nèi)置Android系統(tǒng)。開(kāi)發(fā)一個(gè)Android應(yīng)用,實(shí)現(xiàn)讀卡,數(shù)據(jù)存儲(chǔ)、上傳和校驗(yàn)的功能?,F(xiàn)在內(nèi)置讀卡器的Android手持機(jī)在市場(chǎng)上選擇很多,廣泛應(yīng)用于物流、倉(cāng)儲(chǔ)等場(chǎng)景,是很成熟的產(chǎn)品。
3需求分析
第一,讀卡部分。讀卡器讀取校園卡物理卡號(hào),并發(fā)出提示音。讀卡器能從NTP同步時(shí)間。讀卡器在讀卡后存儲(chǔ)物理卡號(hào)、讀卡時(shí)間信息。刷卡記錄在有網(wǎng)絡(luò)連接時(shí)能實(shí)時(shí)上傳。如果離線刷卡,能在獲得網(wǎng)絡(luò)連接后將沒(méi)有上傳的數(shù)據(jù)傳送至服務(wù)器。
第二,后臺(tái)服務(wù)部分。數(shù)據(jù)庫(kù)定期從一卡通數(shù)據(jù)庫(kù)和學(xué)生數(shù)據(jù)庫(kù)獲得學(xué)生最新的物理卡號(hào)和信息。提供數(shù)據(jù)接口,接收讀卡器上傳的數(shù)據(jù)。提供數(shù)據(jù)接口,接收數(shù)據(jù)查詢(xún)請(qǐng)求。業(yè)務(wù)邏輯提供早鍛煉次數(shù)統(tǒng)計(jì)功能。
第三,操作管理部分。用戶界面提供簽到信息、時(shí)間、地點(diǎn)、記錄人查詢(xún)。在有基礎(chǔ)數(shù)據(jù)支持情況下,能精確顯示學(xué)生學(xué)號(hào)、姓名、學(xué)院等信息,并提供篩選機(jī)分類(lèi)查詢(xún)服務(wù),查詢(xún)條件可按學(xué)院、專(zhuān)業(yè)、班級(jí)、時(shí)間段。也可根據(jù)校園卡號(hào)進(jìn)行單個(gè)學(xué)生晨練出勤情況查詢(xún)。每天晨練的出勤人數(shù),出勤率可實(shí)時(shí)統(tǒng)計(jì),界面上有相應(yīng)的展現(xiàn)模塊。并可提供Excel導(dǎo)出。
第四,非功能需求。一是可用性:操作簡(jiǎn)單,界面簡(jiǎn)潔;二是安全性:部分學(xué)生基礎(chǔ)信息和數(shù)據(jù)涉及防止泄漏和防止篡改;三是可靠性:軟件長(zhǎng)期在線運(yùn)行,訪問(wèn)量大,需保證服務(wù)不下線,刷卡數(shù)據(jù)不丟失;四是性能:一般操作響應(yīng)時(shí)間不能大于2s;五是標(biāo)準(zhǔn)化要求:采用UTF8字符集,按照學(xué)校信息化標(biāo)準(zhǔn)執(zhí)行。
4設(shè)計(jì)
41系統(tǒng)框架
讀卡器將物理卡號(hào)和刷卡時(shí)間發(fā)送給后臺(tái)服務(wù)。后臺(tái)服務(wù)將刷卡數(shù)據(jù)進(jìn)行持久化,同時(shí)將刷卡信息中的物理卡號(hào)和一卡通數(shù)據(jù)及學(xué)校數(shù)據(jù)庫(kù)中的學(xué)生信息進(jìn)行關(guān)聯(lián)。Web服務(wù)從后臺(tái)的功能接口進(jìn)行各個(gè)業(yè)務(wù)邏輯的調(diào)用,包括數(shù)據(jù)的管理和查詢(xún)等。同時(shí),Web服務(wù)也提供多個(gè)入口,給類(lèi)似于微信、網(wǎng)頁(yè)、App等多種應(yīng)用接入。詳見(jiàn)下圖。
結(jié)構(gòu)圖
42設(shè)計(jì)思路
本次開(kāi)發(fā)在實(shí)際實(shí)施過(guò)程中,用戶對(duì)開(kāi)發(fā)周期提出了高要求。從硬件選型、采購(gòu)、軟件開(kāi)發(fā)到上線的周期在一周左右。所以本系統(tǒng)在實(shí)施時(shí),以完成業(yè)務(wù)邏輯,可靠實(shí)現(xiàn)功能為出發(fā)點(diǎn),用戶體驗(yàn)和可用性的優(yōu)化放在后期進(jìn)行。
讀卡器是整個(gè)系統(tǒng)中關(guān)鍵的一環(huán)。讀卡器的穩(wěn)定可靠關(guān)系到數(shù)據(jù)源的準(zhǔn)確性和學(xué)生刷卡的實(shí)際體驗(yàn)。選擇成熟的Android手持機(jī)是一個(gè)比較穩(wěn)妥的方案,采購(gòu)選型也較為容易。在實(shí)際使用中,不同版本的手持機(jī)應(yīng)用代碼兼容性也比較好,升級(jí)和更新設(shè)備所帶來(lái)的開(kāi)發(fā)量在可控范圍內(nèi)。
數(shù)據(jù)庫(kù)方面,應(yīng)用對(duì)數(shù)據(jù)庫(kù)類(lèi)型沒(méi)有特別要求,但考慮到數(shù)據(jù)集成的便利性和可靠性,使用和一卡通等系統(tǒng)一致的數(shù)據(jù)庫(kù),可減少對(duì)ETL工具的依賴(lài)。在本系統(tǒng)中,僅靠少量存儲(chǔ)過(guò)程即能滿足數(shù)據(jù)同步和匹配的需求。
在后臺(tái)和Web架構(gòu)的選擇上,考慮到開(kāi)發(fā)團(tuán)隊(duì)規(guī)模和經(jīng)驗(yàn),選取Java平臺(tái),使用Play framework 是一種比較合理的技術(shù)方案。基于以上架構(gòu)進(jìn)行敏捷開(kāi)發(fā),能夠符合項(xiàng)目初期的功能需求和可靠性需求。
本系統(tǒng)設(shè)計(jì)方案中其他技術(shù)路線,也更多基于已有的項(xiàng)目經(jīng)驗(yàn)和成熟案例。
5實(shí)施要點(diǎn)
51關(guān)鍵類(lèi)的數(shù)據(jù)元素
511用戶類(lèi)ReadcardUser
本類(lèi)描述了學(xué)生的信息,是整個(gè)早鍛煉考勤系統(tǒng)的基礎(chǔ)。學(xué)生的物理卡號(hào)來(lái)自一卡通數(shù)據(jù)庫(kù),專(zhuān)業(yè)、班級(jí)等信息來(lái)自學(xué)校其他數(shù)據(jù)庫(kù)。表單使用學(xué)生的學(xué)號(hào)作為唯一的標(biāo)識(shí)。詳見(jiàn)表1。
512統(tǒng)計(jì)時(shí)間段ValidDate
本類(lèi)用于描述統(tǒng)計(jì)刷卡業(yè)務(wù)邏輯的時(shí)間范圍,在哪些有效的日期進(jìn)行統(tǒng)計(jì)。詳見(jiàn)表2。
513刷卡記錄類(lèi)StudentRecord
本類(lèi)描述了刷卡考勤的記錄。這是本系統(tǒng)核心的數(shù)據(jù),描述了刷卡的物理號(hào)、對(duì)應(yīng)的刷卡學(xué)生、刷卡時(shí)間、在哪個(gè)讀卡器上刷卡。查詢(xún)的業(yè)務(wù)邏輯也以此表為基礎(chǔ),定期對(duì)此表進(jìn)行分析,獲得統(tǒng)計(jì)數(shù)據(jù)。詳見(jiàn)表3
52后臺(tái)主要服務(wù)功能接口
詳見(jiàn)表4。
53圖形用戶界面
早鍛煉考勤系統(tǒng)的軟件涉及用戶界面的部分為手持讀卡器App、教師管理端Web和學(xué)生查詢(xún)Web。在App方面,手持讀卡器的界面簡(jiǎn)單地展示了刷卡信息和本機(jī)儲(chǔ)存刷卡記錄的統(tǒng)計(jì)。在Web方面,教師管理端將提供完整的數(shù)據(jù)查詢(xún)分析功能,而在學(xué)生查詢(xún)網(wǎng)頁(yè)上只能展現(xiàn)單人的刷卡記錄和統(tǒng)計(jì)信息。校園微信號(hào)等系統(tǒng)對(duì)早鍛煉數(shù)據(jù)的展現(xiàn)界面由各平臺(tái)自行實(shí)現(xiàn)。由于功能相對(duì)簡(jiǎn)單,圖形用戶界面使用AngularJS庫(kù)和Bootstrap樣式庫(kù),做到PC瀏覽器和移動(dòng)瀏覽器的自適應(yīng)。
6結(jié)論
學(xué)生在手持刷卡機(jī)上刷校園卡,刷卡記錄通過(guò)網(wǎng)絡(luò)上傳。服務(wù)器后端能夠?qū)⑺⒖〝?shù)據(jù)存儲(chǔ)、分析,并呈現(xiàn)給教師。在高校校園卡得到廣泛應(yīng)用的環(huán)境下,校園卡考勤簽到的使用,低成本高效率地滿足了多個(gè)應(yīng)用場(chǎng)景的使用需求。在后續(xù)的維護(hù)和優(yōu)化過(guò)程中,可在現(xiàn)有架構(gòu)上可進(jìn)行無(wú)縫的功能伸縮,滿足校園碎片化多樣化的小應(yīng)用需求。
參考文獻(xiàn):
[1]Android[EB/OL].https://developerandroidcom
[2]Play framework[EB/OL].https://www.playframeworkcom
[3]RESTful[EB/OL].http://wwwibmcom/developerworks/library/ws-restful
[4]Mifare[EB/OL].https://wwwmifarenet/en