彭小明 葉 潔
(貴州大學計算機科學與技術學院 貴州 貴陽 550025)
?
基于3G/WIFI的遠程指紋考勤系統的設計與實現
彭小明葉潔
(貴州大學計算機科學與技術學院貴州 貴陽 550025)
摘要針對工程質量監督中現有指紋考勤方式的不足,如移動性差、數據不能通過網絡及時上傳、數據統計不及時、結果展示不直觀等缺點,結合某省工程質量監督實際需求,以目前最新的移動指紋設備為基礎,提出一種基于3G/WIFI的遠程指紋考勤系統。描述系統架構、無線網絡指紋考勤終端和WEB服務器端軟件設計,最后闡述系統開發過程中的數據同步、指紋識別二次開發等關鍵技術。系統試運行情況表明,基于3G/WIFI的遠程指紋考勤系統具有更好的效率和實用性。
關鍵詞指紋識別GPS定位WebService數據同步水晶報表
0引言
隨著科學技術的發展和社會的進步,移動智能設備在人們的生活中扮演著越來越重要的角色。它已成為人們生活的一部分,并對人們的信息獲得、思考和生活產生不可低估的影響。目前,就指紋考勤產品而言,市面上常見的指紋考勤設備有兩種。一種是聯機式產品,其特點是使用時必須同電腦配合使用,并且指紋的比對操作需要后臺計算機支持。所以大大加重了后臺計算機負擔,同時無論是考勤設備、傳輸線路、計算機這些環節的哪一環出現任何故障,整個考勤系統必然會癱瘓,其系統處理能力和處理進度根本無法保障[1]。另一種是脫機型產品,單機就可以完成考勤全過程,使用方便,得到廣泛應用。但這類產品也有一些缺點:一方面,移動性差。通常設備大而笨重,且使用交流電源供電。另一方面,數據共享性差。考勤產品要么通過有線網絡來傳輸數據,要么在網絡不可用時,先將數據臨時存儲在設備中,后面集中導出數據,顯然這樣的設備只適合對工作地點相對固定的情況進行考勤管理[10]。雖然有一些設備做到了可移動考勤,但卻無法實時共享數據,對管理人員來說,對數據匯總、實時查看和分析非常不便。基于3G/WIFI的遠程指紋考勤系統就是在傳統考勤系統的基礎上,利用最新的設備和技術進行定制。解決了目前指紋考勤產品中存在的局限,做到了可以在野外工地無交流電源、無有線網絡和工作地點易變動的復雜條件下進行考勤。并在考勤后能夠通過現有無線網線實時上傳考勤數據,在服務器端及時生成考勤分析結果,大大提高了管理和工作效率。
1系統設計
1.1系統架構
根據貴州省水利廳已建好的服務端管理平臺和現有的最新移動指紋識別設備以及網絡基礎設施,基于3G/WIFI的遠程指紋考勤系統的系統框架設計示意如圖1所示。其中,GGSN(Gateway GPRS Support Node)為網關GPRS支持節點[5]。移動考勤終端為深圳市安華達科技有限公司生產的便攜式平板如圖2所示。此終端是一個7寸大的基于Android平臺的平板,平板上集成了指紋識別、GPS、GPRS和3G等模塊。自身配有5500 mAh/3.7 V鈷酸鋰電池,這款平板具有輕巧、移動性強,接入網絡方便,待機時間長等優點。關鍵是平板系統基于安卓平臺,使得在平板上進行按需開發應用軟件變得現實可行。另外,框架圖中除了后臺服務器端和考勤移動終端需要自己搭建和開發外,其他組成部分都可以利用現有基礎設施,無需專門搭建,開發成本較低[7]。

圖1 系統框架示意圖

圖2 移動考勤終端
遠程指紋考勤系統主要由指紋考勤移動終端軟件和WEB服務器考勤管理系統兩部分組成。其中,指紋考勤移動終端軟件包含指紋錄入模塊、指紋識別模塊、考勤設置模塊和無線通信模塊等模塊。圖3給出了完整的系統結構框圖。

圖3 系統結構框圖
1.2數據庫設計
指紋考勤移動端是基于Android平臺,系統自身帶有一個輕量級的、嵌入式的、關系型數據庫SQLite。 SQLite可移植性好、容易使用、高效而且可靠。從外部看,它并不像一個RDBMS,但在進程內部,它卻是完整的、自包含的數據庫引擎[2]。
指紋考勤移動端軟件所涉及到的數據主要有三類:員工的基本信息表(序號、項目編號、員工工號、員工姓名、員工性別、員工年齡、員工身份證、員工地址、聯系方式、入職時間、指紋原始圖像、指紋存放地址、是否同步、是否刪除、備注、是否管理員、密碼)、考勤時間段數據表(序號、項目編號、考勤開始時間、考勤結束時間、是否同步、是否刪除、備注)和考勤記錄信息表(序號、項目編號、員工工號、時間段編號、考勤時間、考勤結果、所在經度、所在緯度、是否同步、是否刪除、備注)。數據表名分別為Employee、Settings和Attendance, 相應的實體關系如圖4所示。

圖4 實體關系圖
2軟件設計
本系統的軟件設計主要包括兩大部分:指紋考勤移動終端的軟件設計和Web服務端管理系統的設計。這兩大部分分別實現不同的功能,且互相配合共同實現基于3G/WIFI的移動指紋考勤功能[5]。
2.1移動指紋考勤終端的軟件設計
移動指紋考勤終端軟件設計主要是針對原硬件設備進行二次開發。主要包括人機交互界面設計、基本數據的管理、指紋識別二次開發、控制網絡模塊(GPRS和3G)數據上下傳操作、考勤人員地理位置定位等模塊。功能結構如圖5所示。

圖5 移動考勤終端的軟件組成框圖
(1) 人機交互界面設計
人機交互界面設計模塊主要實現各項功能操作界面的切換,移動終端軟件系統的界面設計采用類似Win8風格,并堅持簡單直觀的設計原則,主要有以下幾個特點:
① 簡單化
② 可利用性
③ 直接操作
④ 動畫效果
⑤ 看和點擊
⑥ 用戶控制
⑦ 反饋和交流
(2) 基本數據的管理
移動指紋考勤終端大體上包含了如下幾類數據:員工的指紋數據(存儲地址和指紋特征值)、員工的基本信息(工號、姓名、性別等)、特定項目考勤時間段數據、考勤產生的考勤記錄。這些數據移動終端都可以實現對其進行管理(即對數據的增、刪、改、查操作),數據變動后并對該條數據進行特定的改動標記,這是后面數據同步時的依據。
(3) 指紋識別二次開發
指紋識別二次開發實質就是利用現有設備集成的指紋模塊。通過此模塊來采集指紋并存儲在閃存和數據庫,在進行指紋匹配時利用實時采集到的指紋數據和存儲到閃存的數據進行對比,達到區別人與人的目的。但設備本身只實現了指紋識別硬件的正常工作的各種接口,沒有應用程序進行按需的輸入和輸出。所以在開發中關鍵在于使用指紋產品提供的二次開發接口來開發一款可視操作的應用程序。在應用程序中通過調用開發商提供的接口從而操作指紋模塊的硬件,獲取所需的指紋數據以及指紋匹配的結果,以一種友好的方式進行人機交互。
(4) 數據上傳與下載
為了方便數據的共享,以及共享的實時性,系統加入了數據上傳與下載功能,即指紋考勤終端可以通過無線網絡將移動端數據上傳到服務器,也可以從服務器端下載數據。而通過網絡進行數據交互不可能像本地那樣直接對數據庫數據直接操作即可,必須依靠特定的方式與服務器數據庫連通。連通方式有很多種,結合本系統的特點,移動端與服務器是不同的平臺和開發語言。最終,本系統采用的是WebService技術與服務器進行數據交互,達到移動端能與服務端進行數據交互的目的。
(5) 考勤人員位置定位

圖6 百度地圖定位流程圖
移動考勤終端在軟件設計時考慮到了方便查看被考勤人員的實際考勤位置。在考勤時利用設備具有的GPS定位功能,實時獲取了考勤機的精確坐標,這做到了考勤考勤記錄的有效性和準確性。被考勤人員一旦考勤則考勤時間、地點就唯一確定下來不可能做假,也不存在部分人員為了人情關系故意讓缺勤人員補打考勤的情況。管理員在移動考勤終端上點擊一條考勤記錄就可以查看到所點擊人員的考勤時位置,一目了然知道此條考勤信息的有效性[9]。考勤位置的展示使用的是百度地圖,使用百度Android定位SDK必須注冊GPS和網絡使用權限。定位SDK采用GPS、基站、Wi-Fi信號進行定位[4]。當應用程序向定位SDK發起定位請求時,定位SDK會根據應用的定位因素(GPS、基站、Wi-Fi信號)的實際情況(如是否開啟GPS、是否連接網絡、是否有信號等)來生成相應定位依據進行定位[3]。
2.2服務器端管理軟件設計

圖7 Web服務端管理系統功能框圖
服務器端管理軟件主要功能是為指紋考勤終端提供接口調用服務、常用數據的管理和對考勤記錄進行分類統計并水晶報表展示。服務器的管理系統由3個模塊組成,分別為數據庫管理模塊、WebService服務接口模塊和水晶報表展示考勤結果,如圖7所示。
(1) 數據庫管理模塊
數據庫管理模塊又細分為員工信息管理、考勤時間信息管理和考勤記錄信息管理3個部分。員工信息管理主要實現對員工的基本的增、刪、改、查操作。這里可以批量導入員工的基本信息(指紋信息除外,指紋需要在指紋考勤機上獲取)。考勤時間信息管理是控制考勤終端考勤的開關,主要作用是完成對考勤時間段的設置。每個時間段控制一個上下班的可打考勤的一段時間和考勤記錄信息管理的作用主要是對考勤中特殊情況的處理,比如員工請假,病假等開情況的操作。
(2) WebService服務接口服務模塊
WebService接口服務模塊的主要功能是接收和發送XML數據包,以實現與指紋考勤終端數據通信。WebService服務接口模塊開發的內容是在服務器端用開發服務器的平臺和語言實現移動終端所需要的對服務端數據庫操作的方法(或函數)。并把這些方法用Web服務發布出來,這樣在移動端或其他平臺上需要操作服務器數據庫時不需要用直接連接服務端數據庫的方式(直連方式需要特定驅動,端口和授權操作等)來操作數據庫。選擇用WebService接口方式的目的就是為了簡化開發方法和提高接口復用率。
(3) 水晶報表展示考勤結果
當管理員在服務器端查看考勤記錄時,這些記錄都是一條一條的零散記錄,沒有直觀的意義。通過水晶報表可以實現對各個時間段的出勤情況進行統計分類查看,以圖形的方式(效果圖由于要用四種顏色來區分不同出勤類型,在轉換成黑白色后無法區分原定義出勤類型,故不列出)展示給管理人員查看,這樣讓管理人員一目了然,便于進行管理。
3系統開發中的關鍵技術
3.1指紋識別二次開發
對指紋平臺指紋識別模塊進行二次開發的關鍵在于使用指紋產品可以提供的二次開發接口。開發接口包含了管理指紋庫的常用操作,比如添加、刪除、搜索等操作功能接口。表1給出了實現指紋識別模塊部分功能的函數列表。

表1 指紋識別模塊部分功能的函數列表
當用戶進行指紋錄入時,需要采集兩次指紋樣本,正如用戶注冊一個網站時密碼需要輸入兩次一樣。當兩次樣本一致時,設備將兩次的樣本進行合并,以特征碼的形式存入設備閃存指紋庫和數據庫中,這是為以后指紋比對提供對比原始數據。用戶按兩次指紋登錄一個模板存于Flash 指紋庫,流程如圖8所示。

圖8 指紋錄入功能流程圖
當用戶進行指紋驗證時,需要將現場采集的用戶特征碼數據與指紋庫中的指紋特征碼數據進行逐一匹配,通過能否找出匹配的指紋數據來確定該用戶是否為用戶本人[5]。考勤終端從傳感器讀入現場指紋并搜索指紋庫,流程如圖9所示。

圖9 指紋匹配功能流程圖
應用程序調用所需接口方法如下:
1) 引入設備商提供的接口庫文件。先將庫文件拷貝到項目指定的./libs/armeabi/libfp.so目錄下,再在程序中用指定語句引入,調用語句如下:
//引入設備商提供的接口庫文件
static {
System.loadLibrary("fp");
}
2) 調用庫文件中所需接口方法。從上面的流程圖可以看出操作指紋硬件設備是一個復雜的過程,需要調用一系列的接口,下面以打開指紋設備驅動為例,源碼如下:
//根據用戶ID及產品ID打開驅動
int nRet = LibFp.FpOpenEx((short) 0x2109, (short) 0x7638);
//判斷是否打開失敗
if (nRet == LibFp.FP_ERROR_OPEN) {
//如果打開失敗,獲取打開驅動的Root權限
LibFp.GetRootRight();
//再次根據用戶ID及產品ID打開驅動
nRet = LibFp.FpOpenEx((short) 0x2109, (short) 0x7638);
}
if (nRet == LibFp.FP_OK) {
//打開成功,繼續下一步操作
} else {
//打開失敗,提示結果
}
3.2數據上傳與下載
移動考勤終端數據上傳和下載功能的實現依賴的技術是WebService技術。WebServices通俗的講它就是服務提供者公布在網絡上的API,但它又與我們常使用的本地API不同,這些API中的函數(或方法)不能直接被調用,而必須按照標準的SOAP(Simple Object Access Protocol)協議把函數名和參數以XML數據格式傳輸給Web服務。然后Web服務接收到XML數據后,對其解析出相應的方法名和參數值。得到具體的方法名和參數后,Web服務調用具體的方法,再把結果以XML格式數據返回給調用端,調用端需要從XML數據中解析出返回的結果[4]。圖10為Android調用WebServices原理。

圖10 Android調用WebService原理圖
從WebService調用的整個過程中,我們發現調用端要做的只是發送帶函數名和參數(也可以不帶參數)的XML數據和接收并解析帶返回結果的XML數據。可見,調用端的所使用的開發平臺和編程語言是沒有限制的,可以基于Android、IOS或其他,編程語言可以是任何一種語言。
結合WebService以上的特點和優勢,移動考勤端的系統在實現數據上傳和下載時就使用此技術。通過此技術實現了客戶端與服務端不同平臺,不同開發語言之間進行數據交互,并且兼容性也很好。同時減少了異構平臺組合的難度和成本,甚至為多個組織之間的業務往來提供了一個通用方便的機制[6]。
3.3數據同步原理
本系統中移動考勤終端和服務器相當兩個數據端,用C (Client)、S (Server)表示,它們分處于不同的網絡,數據庫IP不可見,端口不可見,現在需要數據同步,有如下兩個情況:
C中的 t1表--> 單向同步到 S中的 t1表
C中的 t2表<-->雙向同步到 S中的 t2表
雙向同步就是做兩次單向同步而已,我們以從C中的t1表單向同步到S中的t1表為例子說明同步方案。
? 在同步源一端表中(如案例中的C站t1表)增加is_syncis_del兩個int類型或者bite類型的字段;
? 當做insert或者update操作時,同時將is_sync設置成0,等待同步;
? 當做delete操作時,將is_del設置成1,is_sync設置成0,而不是物理刪除;
? 在C端查詢所有is_sync=0的數據,傳遞到S端;
? S端接收到數據之后將S中t1表中已經存在的數據作物理增刪改并將成功的結果返回給C;
? C端收到S端操作成功的結果,將is_sync=0且在返回成功中的數據設置is_sync=1,另外如果有is_del=1則物理刪除。
這種方案是比較常見的,優點是它做到了進行細粒度的同步,同步精度提高,傳輸的數據量減少。但缺點是添加了很多附加操作,如增刪改操作都要更改is_sync的值。如果正好項目已經做到收尾階段,所有的數據層已經實現了,再要加同步的話改動就比較大了,對原本的增刪改代碼影響較大。
另外,在Internet網中必須考慮網絡速度,所以應該保證傳輸的數據量盡量小一點再小一點[8]。
4系統性能
在系統完成設計后,此系統已經應用于貴州省工程施工現場。移動考勤終端應用在每一個項目的施工現場,使用位置不限,工地的負責人員只需要攜帶帶有SIM卡的指紋平板到施工工地即可,無需其他設備輔助,數據的交互無需管理人員來回于工地跟辦公室,通過無線網絡即可實現。通過綜合和實地的測試,得出如下結果:
1) 系統運行特性。指紋考勤平板采用Qualcomm MSM 8225Q 四核處理器,1 GB運行內存,運行考勤應用程序流暢,無卡頓現象。
2) 初始數據來源。員工的基本信息可以直接通過綜合管理平臺直接調用或手動添加。用戶的指紋原始數據需要單獨采集,采集方式可以是移動考勤終端,也可以是服務端專用指紋采集設備采集。考勤設置信息需要服務端管理人員手動錄入。
3) 續航時間。本系統所使用的指紋平板配有5500 mAh/3.7 V鈷酸鋰電池,根據廠家的參數顯示,此電池可以正常充放電500次左右,每次充電大約需要5小時左右完成,在熄屏狀態下可以保持10天以上,用于正常的考勤時可以續航3~5天左右。
4) 指紋容量。該指紋平板的指紋容量可達2000~3000枚,完全可以滿足一個大型的施工團隊的正常考勤。而考勤記錄則采用內置的SQLite數據庫,足夠大的內存空間,考勤記錄的存儲沒有任何問題。
5) 終端并發數。系統完成后經過測試,服務端同一時間支持最大的終端連接數為20臺左右,在不跟服務器進行數據交互時可以自由使用移動終端。
6) 網絡網速。該指紋平板集成了2G/3G/WIFI等多種連網方式,即使在偏僻的山區也可以通過無線網連接到互聯網,網速取決于設備所在位置的信號強弱,在網絡穩定的情況下可以保證數據的正常傳輸。
7) 數據同步。數據同步采用人工手動同步方式,目的是為了節省流量,只在需要同步時才進行數據同步,區別于自動同步無限循環同步浪費流量。同時,只要在網絡可用的情況下都可以完成數據的同步,當然也可以在網絡不可用的情況下通過數據的導出或導入來完成數據的交換。
8) 費用花銷。系統在數據同步(即數據上傳和下載)時需要花費數據流量,一般一條考勤記錄或員工基本信息(指紋圖片不算,上傳指紋圖片時用流量稍多一些)都不超過1 KB。按一條1 KB,一天考勤4次,一個工地20~50人計算,一天的流量花費是80~200 KB,按流量收費標準0.29元/MB計算,一天的花費大約就幾分錢。其他花費包括耗電、設備磨損和SIM卡所屬公司的月租和流量套餐費,幾乎無其他額外費用。
最后,系統在實際使用中也出現了一些問題,如在條件惡劣的地區,工地無法使用正常的交流電充電,在平板電池耗盡時,無法正常完成考勤,目前好的解決方式是備用移動電源,此問題可以得到解決。另外,系統雖然在設計上盡量做到了美觀,操作簡潔,但對于文化水平低和電子產品使用技能不強的員工來說還是會出現操作失誤和錯誤的問題。解決方法是對考勤終端的使用者進行統一培訓和考核,使操作者熟悉、正確地使用考勤設備。
5結語
本文介紹了基于3G/WIFI的遠程指紋考勤系統的軟硬件設計與實現。上述方法設計的指紋考勤系統利用指紋識別技術實現了員工工作考勤,查詢的自動化和智能化,方便管理人員考核員工的出勤情況;利用GPS定位技術獲取員工考勤時的實時位置,做到了考勤記錄位置的準確性,以及直觀查看考勤位置;利用無線網絡技術可以實時跟服務器進行數據上傳與下載,方便服務端管理人員及時統計和查看,促進員工的自主約束和自主管理,及時地為公司各部門提供準確的考勤數據。經過最終的測試,此系統已在某省進行試運行,其結果達到了預想效果,滿足了考勤管理高效性與實用性的要求[2]。不足是系統在特定需求下,根據特定的設備,開發平臺設計和實現,可能無法滿足普遍需求。相信在此基礎上不斷改進,系統的功能也會越來越完善。
參考文獻
[1] 劉記.無線指紋考勤系統的設計與實現[D].河北工程大學,2007.
[2] 林培杰,朱安南,程樹英.Android數據庫SQLite性能優化[J].計算機系統應用,2014,23(4):193-196.
[3] 何錫標,陳淑榮.一種基于無線定位技術的LBS應用[J].微型機與應用,2014(9):7-10.
[4] 孔勇平,鐘致民,楊廣龍.基于多運營商基站信號和Wi-Fi信號的混合定位技術探討[J].移動通信,2013(11):32-37.
[5] 史斌斌,張琴,王宜懷.GPRS無線指紋身份驗證系統的應用研究[J].單片機與嵌入式系統應用,2011(7):71-73.
[6] 彭邦倫.基于Web服務的接口平臺的設計與實現[C]//第五屆中國軟件工程大會,2008.
[7] 章通,陳金玉.網絡指紋考勤系統的設計與實現[J].計算機應用與軟件,2011,28(2):73-75.
[8] 博客園.數據同步解決方案[R].2008.http://www.csharpwin.com/csharpspace/1940.shtml.
[9] 彭曙蓉,王耀南.一種基于指紋識別的網絡考勤系統[J].長沙電力學院學報:自然科學版,2006,21(2):56-58.
[10] 李悅,劉廣榮,林錫龍.一種便攜式自動指紋識別系統的設計與實現[C]//2004全國光學與光電子學學術研討會,2005全國光學與光電子學學術研討會,廣西光學學會成立20周年年會論文集,2005.
DESIGN AND IMPLEMENTATION OF REMOTE FINGERPRINT ATTENDANCE SYSTEM BASED ON 3G/WIFI
Peng XiaomingYe Jie
(SchoolofComputerScienceandTechnology,GuizhouUniversity,Guiyang550025,Guizhou,China)
AbstractAiming at the inadequacy of existing fingerprint attendance methods in engineering quality supervision, such as poor mobility, data can not be uploaded timely to server through networks, untimely statistical data, and unintuitive display of results, etc., we put forward a 3G/WIFI-based remote fingerprint attendance system on the basis of the latest mobile fingerprint devices and in combination with actual needs of project quality supervision in a province. We gave the description on the system architecture, the terminals of wireless network fingerprint attendance and the WEB server software design. At last we expounded some key technologies, they are the data synchronisation in system development process, the secondary development of fingerprint identification, etc. It was showed by the system running situation that remote fingerprint attendance system based on 3G/WIFI had better efficiency and practicality.
KeywordsFingerprint identificationGPS positioningWebServiceData synchronisationCrystal reports
收稿日期:2014-09-25。彭小明,碩士生,主研領域:數據庫與應用系統。葉潔,副教授。
中圖分類號TP311.52
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.05.026