<nav id="w0g0m"><code id="w0g0m"></code></nav>
  • <xmp id="w0g0m">
    <xmp id="w0g0m"><nav id="w0g0m"></nav><menu id="w0g0m"><strong id="w0g0m"></strong></menu>
  • <xmp id="w0g0m">
  • <nav id="w0g0m"></nav>
    <menu id="w0g0m"><menu id="w0g0m"></menu></menu>
    1. 網站地圖
    2. 設為首頁
    3. 關于我們
    ?

    高校移動考勤系統的設計與實現

    發布時間:2023-01-02 16:14
    第一章 緒 論 1
    1.1課題研究的背景及意義 1
    1.2國內外研究現狀 2
    1.3本論文主要研究內容 3
    1.4本論文的章節結構安排 5
    第二章 相關理論與技術 6
    2.1LBS定位模式 6
    2.1.1基于電信移動網絡的定位模式 6
    2.1.2基于衛星的定位模式 7
    2.2Eclipse開發架構 8
    2.3Android 移動開發技術 9
    2.4本章小結 11
    第三章 系統需求分析 12
    3.1系統建設目標 12
    3.2系統功能需求 12
    3.2.1員工登錄 13
    3.2.2員工信息管理 13
    3.2.3員工移動考勤 14
    3.2.4考勤記錄管理 14
    3.2.5系統管理 15
    3.3系統非功能需求 18
    3.3.1軟硬件需求 18
    3.3.2運行性能需求 19
    3.3.3安全需求 19
    3.3.4接口需求 20
    3.4本章小結 20
    第四章 系統設計 21
    4.1系統設計的目標及原則 21
    4.2系統體系結構設計 21
    4.3系統功能及界面設計 24
    4.3.1員工登錄模塊 25
    4.3.2員工信息管理模塊 27
    4.3.3員工移動考勤模塊 31
    4.3.4考勤記錄管理模塊 32
    4.3.5系統管理模塊 35
    4.4系統數據庫設計 41
    4.4.1表設計 41
    4.4.2數據庫關系 43
    4.5本章小結 43
    第五章 系統實現 44
    5.1前臺手機客戶端實現 44
    5.2員工登錄模塊 47
    5.2.1啟動界面 47
    5.2.2員工登錄 48
    5.2.3主界面 52
    5.3員工信息管理模塊 54
    5.3.1員工信息管理 54
    5.3.2員工通訊錄 54
    5.4員工移動考勤模塊 60
    5.5考勤記錄管理模塊 62
    5.6系統管理模塊 63
    5.6.1考勤管理 63
    5.6.2用戶管理 67
    5.7系統輔助模塊 67
    5.7.1版本更新 67
    5.7.2底部菜單 69
    5.8后臺 Webservice考勤服務端 70
    5.9本章小結 71
    第六章 系統測試及結論 72
    6.1系統測試 72
    6.2測試結論 74
    6.3本章小結 74
    第七章 總結與展望 75
    7.1本文的主要工作 75
    7.2下一步工作展望 76
    致 謝 77
    參考文獻 78
    第一章 緒 論
    1.1課題研究的背景及意義
    目前,各高校在傳統考勤實行推廣方面存在諸如實時性、準確性、跨地域性 及管理性的各類問題,因此,就迫切需要通過信息化、網絡化等高科技手段來提 高考勤管理工作的效率和力度。隨著移動智能設備普及率的“逐年遞增”及三大 電信運營商在移動網絡建設方面的“比學趕超”,我國已經真正迎來了“移動互聯 網”時代,同時,也預示著傳統考勤管理工作的弊端有了完美的解決方案。本課 題源于此,對“高校移動考勤管理系統”進行設計與實現。
    移動考勤,是基于位置服務(LBS)的考勤模式,從實現方式上闡述,其可借 助電信運營商的移動通訊網絡(如GSM網、TD-SCDMA網、CDMA2000網、WCDMA網) 或衛星導航定位方式(如GPS、伽利略、北斗)獲取移動終端用戶的地理坐標位置信 息(即經緯度信息),并根據獲取的位置信息及時間信息,通過無線移動網絡或WLAN 網絡經由考勤服務器判斷簽到退的有效性,是基于移動通訊網絡和GPS的考勤系 統,由智能移動終端和網絡管理平臺組成。
    通過移動考勤方式的實現,可解決傳統考勤方式在考勤實時性、準確性以及 管理成本方面的提升。高校移動考勤系統是為了適應信息化建設的要求,保證高 校教職工到達指定工作地點的準確性和及時性而建設的統一考勤平臺,其改變傳 統僅依賴時間軸作為參考手段的考核辦法,是新一代的考勤系統,考勤管理者只 要通過手機即可實現考勤管理,它將逐步取代傳統考勤系統,與傳統的紙質考勤 及電子考勤模式相比,移動考勤模式具有以下優點:
    1、 便捷的身份認證
    無需進行字跡比對、指紋采集或者卡片登記,移動考勤過程將自動采集考勤 發起用戶的手機號碼及IMSI信息(即國際移動用戶識別碼,與手機號碼一一對應) 綁定起來作為用戶身份識別的標志。該身份認證方式的引入,不僅解決了考勤“可 篡改”的問題,同時也實現了用戶的免注冊使用,即只要事先在后臺考勤服務端 對用戶姓名、手機號碼進行預采集登記,用戶即可實現一鍵登錄考勤,無需另外 注冊用戶名,手機號碼就是用戶唯一的身份識別信息。
    2、 實時的考勤信息
    與傳統紙質簽到模式不同,移動考勤與電子考勤均采自系統時間,考勤時間 準,且不受人為因素所改變,同時,由于移動考勤采用C/S架構,考勤信息可在 互聯網鑒權范圍內共享,做到“一點考勤、全局共享”,適合集團化跨地域企事業
    架構的統一管理。
    3、 準確的位置校驗
    與傳統紙質考勤的隨意性以及電子考勤的固定性不同,移動考勤采用LBS技 術,通過將從客戶端采集到的地理位置信息發送至服務端校驗以判斷考勤信息的 真實可靠性,可廣泛用于跨地域考勤,適用于到崗、出差、走訪考勤。
    4、 及時的報表統計
    移動考勤信息可實現即考勤即查詢,通過統一部署的服務器端的數據庫接口, 便可通過手機、短信及PC實時查詢細化到周期、月、日的考勤情況,減輕考勤員 的統計工作量及考勤信息的透明度。
    高校移動考勤系統的設計與實現,被考勤人員可通過具有GPS定位功能的智 能手機進行遠程上班簽到和下班簽退,系統將會根據其位置信息和時間判斷上班 簽到和下班簽退的有效性并自動生成周期性的考勤報表,實現辦公人員的移動考 勤,將考勤工作由延時且位置固定改造成實時且隨時隨地,從而減少報送環節、 降低了報送成本、提高考勤管理工作效率和監管力度,優化高校乃至其他企事業 單位的考勤流程,使考勤信息更加方便、及時、準確、有效和權威。
    1.2國內外研究現狀
    通過兄弟院校走訪,如福建師范大學、福州大學、福建交通職業技術學院、 福建華南女子職業學院、福建衛生職業技術學院,以及相關資料查閱,國內外眾 多的高校都是采用傳統手工的方式對員工實行考勤制度,存在諸如實時性、準確 性、跨地域性及管理性的各類問題,增加了高校人力部門的資源成本,因此,迫 切需要通過信息化、網絡化等高科技手段來提高考勤管理工作的效率和力度。綜 合國內外各高校的考勤現狀,主要有以下幾種方式:
    1、 紙制考勤
    采用考勤簿登記或考勤機打卡的考勤方式,該方式考勤隨意且位置固定,具 有不可防范的人為可修改性,同時,存在考勤數據報送人力成本高、易出錯、延 時長的缺點。
    2、 電子考勤
    通過公司的局域網搭建一套考勤系統,配置一定的考勤策略,包括考勤時間、 考勤IP等。當系統正式運行時,員工每天到崗后打開PC,登錄電子考勤系統,通 過點擊簽到、簽退來實現考勤,該模式可以顯著解決跨地域考勤的問題,同時, 在考勤報表的統計上也比較方便,但由于技術上只能實現IP綁定,無法限制他人 通過考勤人PC登錄進行“代考勤”的情況發生。另外,對于沒有辦公PC的員工
    或者單位,在該系統推廣上存在瓶頸。
    3、 一卡通考勤
    利用IC卡,在考勤機上進行考勤登記,是一種非常普遍的考勤手段,部署成 本也較低,同時,從管理優化角度出發,一卡通還結合了門禁卡、飯卡等多用途, 一定程度上解決卡管理的問題,但由于人卡分離的原因,還是容易發生代打卡考 勤的情況,另外,一樣無法實行跨地域部署,考勤數據分散,無法統一管理。
    4、 指紋考勤 利用指紋考勤機,只要輕輕一按,就可完成身份識別。指紋考勤機是利用人
    體手指生物識別技術,集成考勤軟件的考勤設備,與紙制考勤以及一卡通考勤相 比較,指紋考勤機可以100%杜絕代打卡現象(由于目前出現了“指紋膜”的產業, 該模式的考勤真實性在逐步下降),同時不用額外攜帶IC卡、考勤紙,但是存在 部署成本高、維護成本高的問題,且無法實行跨地域部署,考勤數據分散,無法 統一管理。
    5、 人臉考勤 為了解決目前“指紋膜”給指紋考勤帶來的難題,出現了人臉考勤的技術,
    但由于人臉考勤設備及系統較指紋考勤的部署費用高,且人臉考勤系統在正式上 線前,還需要進行的費時費力的人臉采集流程,造成整套系統從采購到部署的整 體管理成本較高。同時,由于人臉識別技術仍在探索和完善階段,人臉識別率沒 法達到100%也給該考勤模式在推廣應用上造成一定的障礙。
    1.3本論文主要研究內容 本論文采用迭代型開發模式進行軟件開發,在分析了高校教職工對移動考勤 系統的需求后,根據需求對系統進行分析、設計和實現,將該系統分為前臺手機客 戶端及后臺考勤服務端進行研究,其中包括:
    1、前臺手機客戶端
    1)員工登錄,主要完成員工通過手機客戶端進行身份校驗、平臺接入的功能。
    2)員工信息管理,主要包括員工信息管理及員工通訊錄兩個部分:
    A.員工信息管理:員工可完善各自的姓名、性別、部門、職位和郵箱等 個人信息,并通過管理員審核后成效。
    B.員工通訊錄:通過員工完善各自的個人信息,由后臺考勤服務端反向 推送高校教職工的通訊錄信息到手機客戶端,并實現聯系方式查詢、 短信呼出、電話呼出、來電識別及添加到聯系人功能,從而實現高校 教職工通訊錄的統一管理、集中分享、分散使用。
    3)員工移動考勤,員工可通過手機客戶端,利用智能手機自帶的GPS模塊獲 取經緯度位置信息,并附加當前的時間以及手機身份信息一同發送到考勤 服務端實現簽到和簽退管理,并還可通過考勤記錄管理直觀地查看個人歷 史的考勤記錄。該功能點除了實現考勤信息的封裝并發送至考勤服務器實 現考勤驗證外,還包括兩個重要的技術關鍵點,分別是:
    A.定位:利用Android SDK的GPS_PROVIDER服務及對應開發包采集來自 GPS衛星的位置信息,同時,為了加快位置信息采集的效率,提升響 應時間,引入NETWORK_PROVIDER,即網絡定位方式進行輔助定位。
    B.監聽:即onLocationChanged,考慮到被考勤人員在通過手機進行移 動考勤的過程中位置可能發生變化,為了提升考勤位置信息采集的準 確性,通過位置信息變化監聽技術進行位置信息多次采集、修正。
    4)考勤記錄管理,對于部門、系、院的考勤管理人員,可通過該模塊實時查 看所轄人員的在崗在位情況。同時,可以通過文字、表格、圖形等多種形 式查看人員的出勤率。
    5)考勤管理,主要包括考勤點管理及考勤策略管理兩個部分:
    A.考勤點管理:維護考勤的地點名稱、經緯坐標信息、指定的簽到簽退 時間信息,用于后臺服務端校驗考勤的有效性。
    B.考勤策略管理:維護考勤超時范圍、考勤距離范圍,作為考勤點管理 的輔助拓展信息管理功能,用于后臺服務端輔助校驗考勤的有效性。
    6)用戶管理,主要包括權限管理及密碼管理兩個部分:
    A.權限管理:根據手機號碼對用戶權限進行分配。從角色上分,可區分 為普通用戶和管理用戶,其中普通用戶只有員工登錄、員工信息管理、 人員通訊錄、員工移動考勤和考勤記錄查詢模塊的權限,管理用戶則 擁有所有模塊的訪問和使用權限。
    B.密碼管理:主要用于用戶密碼的修改。
    2、后臺考勤服務端
    后臺考勤服務端通過Webservice方式實現,主要包括員工手機號碼與手機卡 IMSI 號(International Mobile Subscriber Identification Number)的綁定并 存儲到數據庫、員工登錄的合法性鑒權及消息返回、移動考勤合法性校驗及消息 返回、員工通訊錄離線包的推送及更新及其余涉及手機客戶端與服務器交互數據 流的存儲管理。
    1.4本論文的章節結構安排
    本論文研究的內容就是利用基于GPS的LBS定位服務技術,結合移動互聯網 體系,完成高校移動考勤系統的設計和實現。系統采用Android移動開發框架,借 助 Sqlite 移動數據庫及 Oracle 關系數據庫,實現員工登錄、員工信息管理、員工 移動考勤、考勤記錄管理、系統管理及相關后臺考勤服務器設計和實現。論文具 體結構安排如下:
    第一章,緒論。主要對課題研究的背景及意義、國內外各高校考勤管理的現 狀進行介紹,并簡要闡述了本文主要研究的內容和論文的結構安排。
    第二章,相關理論與技術。主要對基于移動網絡及衛星的 LBS 定位服務各自 的技術優劣勢進行介紹,然后對 Eclipse 開發架構及 Android 移動開發技術進行了 介紹,結合當前考勤管理的突破點,選擇基于GPS位置服務的移動定位技術架構。
    第三章,系統需求分析。主要明確了高校移動考勤系統的建設目標,分析了 系統的需求,劃分了系統功能需求點,同時,結合系統功能結構,對系統軟硬件、 運行性能、安全及接口等非功能需求點及設計約束做了規范。
    第四章,系統設計。主要明確了高校移動考勤系統設計的目標及原則,并以 此為指引對系統功能進行了前后臺交互結構、邏輯結構的總體設計,并對系統功 能結構、系統處理流程、系統界面、系統數據庫及系統接口進行了詳細設計。
    第五章,系統實現。主要從高校移動考勤系統的系統開發環境搭建入手,首 先概要介紹了前臺手機客戶端、后臺 Webservice 考勤服務端的代碼框架,然后分 功能點依次介紹了員工登錄模塊(主要包括啟動界面、員工登錄界面和主界面)、 員工信息管理模塊(主要包括信息管理界面和通訊錄界面)、員工移動考勤模塊 (主要包括移動考勤界面)、考勤記錄管理模塊(主要包括考勤記錄界面)、系 統管理模塊(主要包括考勤管理界面和用戶管理界面)、系統輔助模塊(主要包 括版本更新和底部菜單)等的技術和功能實現。
    第六章,系統測試及結論。主要結合系統測試方法論,對高校移動考勤系統 進行了功能測試及性能測試,并得出本系統基本滿足用戶要求的結論。
    第七章,總結與展望。主要介紹了本文的主要貢獻以及下一步的工作展望。
    第二章 相關理論與技術
    本章側重基于各高校考勤管理現狀、GPS的LBS定位服務、Eclipse的開發架 構、Android移動開發技術及軟件開發方法論的探索研究,并作為理論依據用于實 現高校移動考勤系統,解決傳統考勤方式在實時性、準確性、跨地域性及管理性 上存在的種種問題,立足于利用信息化、移動互聯網、衛星定位等相關技術優化 傳統考勤流程。
    結合高校移動考勤系統的設計和實現思路,通過對省內各所兄弟高校的走訪 調研,總結目前主流的教職工考勤方式,主要有指紋考勤、一卡通考勤以及最傳 統的紙制考勤。為了突破傳統考勤方式的瓶頸,在高校移動考勤系統的設計與實 現上,引入GPS定位以及Eclipse的Android移動開發架構,其中全球導航衛星 系統(GPS)是最早民用的定位系統,民用定位精度在10米左右,擁有全球最多 用戶,并已廣泛應用于諸多領域,且本課題主要針對目前主流的Android移動操 作系統進行開發,其與GPS已建立較為便捷的調用接口,故在移動考勤的位置采 集過程中采用基于GPS的定位技術。另外,Eclipse開發平臺,搭配Android開發 插件ADT及Android SDK開發軟件包,可以便捷實現Android客戶端的開發,實 現最便捷的人機交互界面及響應速度,同時,利用該開發平臺,搭配Tomcat中間 件及Xfire服務框架,也可方便實現對后臺考勤服務端WebService的開發。以下 為相關理論和技術的詳細闡述:
    2.1LBS定位模式
    2.1.1基于電信移動網絡的定位模式
    當前,國內的三大電信運營商,主要指中國電信、中國移動、中國聯通,以 下將分別闡述各自基于移動網絡的定位模式:
    中國電信運營的移動網絡制式為CDMA,其在原運營商中國聯通GPSONE高精度 定位系統部署的基礎上,進行了繁復的基站數據采集和優化的工作,現已投入建 設完成并為專用GPSONE終端用戶提供位置業務,該技術方案對移動網絡和手機終 端的要求都比較高,要求網絡支持CDMA1X及以上(首推EVDO),同時要求手機終 端包含GPSONE定位模塊(市面上,一般只有中國電信定制的移動終端才具備該定 位模塊)。
    同時,在CDMA制式牌照交割前期(2008年底),中國聯通已依據不同群體和 不同應用,區隔定位精度和速度的不同要求,在GPSONE定位模塊之外擴容了 CELLID 定位技術(即基站定位技術)作為CDMA定位體系的有效補充,通過粗定位系統有 效滿足普通用戶及行業用戶的需求,因此,中國電信承接CDMA網絡后,通過技術 整合優化將用戶劃分為高精度、中精度、低精度三個層次,有效實現用戶滲透:
    1、 高精度定位
    采用GPSONE技術,提供5—100米的定位精度(具體為室外精度5—10米, 室內精度100米),使用領域如導航、物流跟蹤、路由向導等。高精度定位由于其 對移動終端GPSONE定位模塊及移動網絡適配的要求較高,主要針對高端電信用戶。
    2、 粗精度定位
    采用CELLID定位技術和三角定位技術(在實際應用中,三角定位技術需要手 機能夠同時收到多個基站的信號時才能進行,因此,實際應用中,它一般和CELLID 定位技術混合使用),其定位精度和基站部署密度相關,在城市一般在 200—500 米左右,使用領域如天氣預報等。粗精度定位雖然定位精度低,但具有不需要移 動終端支持GPS模塊、定位響應速度快且在通話過程中也可定位的特點,因此可 以開展一些區別于GPSONE系統的差異化業務。
    同時,中國移動現有的GSM網絡是一個2.5G的網絡,受限于其建設初期設備 的選型和設備的能力,在基于3GPP和OMA的規范和協議標準上,中國移動同樣也 選擇了基于網絡CELLID的定位技術實現。
    最后,中國聯通,在粗精度定位上也相應采用了 CELLID的技術。在高精度定 位上,與中國電信不同的是,其采用的是A-GPS (即輔助GPS技術,Assisted GPS) 技術,而非GPSONE技術,它主要是通過移動通訊基站來輔助GPS進行定位,可以 大大提高定位的效率,目前被廣泛用于移動智能手機上。
    2.1.2基于衛星的定位模式
    全球衛星定位系統(Global Positioning System,簡稱GPS)是美國從70年 代開始為實現全球范圍內的精確定位而構建起來的基于衛星的定位系統,該系統 總共有24顆工作衛星,其定位原理是:GPS終端設備同時接收4顆以上GPS衛星 的定位信息,并測算出終端到衛星之間的精確距離,通過四球交匯即可定位出終 端的空間三維坐標,以下是GPS衛星定位原理圖,如圖1-1所示:
     
     
    同時,GPS衛星定位根據同一次定位過程中GPS接收器數量的多少可以分為單 點定位和相對定位兩種定位方式,其中,僅通過一臺GPS接收器來測量定位的方 式稱為單點定位或絕對定位;通過兩臺及兩臺以上的GPS接收器來測量定位的方 式稱為相對定位或差分定位。后者的定位精度最高,多用于高精度測量及軍事用 途。目前,美國軍方已開放GPS的民用,終端用戶能夠免費獲得GPS的定位服務, 定位精度通常可達到5—15米。
    除了美國的GPS定位系統外,全球范圍內的還有俄羅斯的格洛納斯定位系統 (GLONASS)、歐盟的伽利略定位系統(GALILEO)以及我國自主研制的北斗衛星導 航系統(BEIDOU),由于其在原理和部署規模上相似,在此就不展開論述了。
    綜上所述,考慮到三家電信運營商提供的無線移動網絡定位制式的行業專屬 性及定位模塊的特殊性、GPS衛星定位制式的通用性及Android開發平臺的GPS兼 容性,本課題決定采用基于GPS位置服務的移動定位技術架構。
    2.2Eclipse開發架構
    Eclipse 本身僅僅只是一個框架平臺,但由于能支持擴展各類的插件,使得其 成為一個集成的開發環境(IDE),并且具備跨平臺的特性。Eclipse由IBM公司開 發,從2001年11月起陸續發布版本,但直到2007年,才有了穩定版的Eclipse 3.3 版本并由此開啟了 Eclipse的真正成長歷程:2008年6月發布代號為Ganymede的
    3.4版; 2009年6月發布代號為Galileo的3.5 版; 2010年6月發布代號為Helios 的3.6 版; 2011年6月發布代號為Indigo的3.7 版; 2012年6月發布代號為Juno 的3.8及4.2 版; 2013年6月發布代號為Kepler的4.3版。
    Eclipse的核心是RCP(Rich Client Platform,即富客戶機平臺)。RCP包括用 于啟動Eclipse/運行插件的核心平臺、標準集束框架(即OSGi)、可移植構件工具 包(即SWT)、文件處理編輯器(即JFace),以及包括向導、視圖、編輯等工具欄 在內的Eclipse工作臺(即Workbench)。
    基于以上5大組件,讓開發者通過Eclipse以更高效、更便捷的方式實現可視 化編程開發成為可能。本論文基于Eclipse框架平臺架設C/S的服務架構:后臺考 勤服務端是利用Java語言及Xfire框架編寫的WebService,用于員工身份校驗鑒 權;校驗簽到、簽退信息的有效性;推送人員通訊錄信息;推送考勤記錄等功能。 前臺安卓手機客戶端主要通過 Eclipse 的 Android 開發插件進行編寫,通過其 Android SDK包調用GPS模塊來采集考勤位置信息并反饋給后臺WebService服務 端,并接收其返回的考勤結果。另外,前臺安卓手機客戶端還支持員工登錄、身 份鑒權、通訊錄等附屬功能。
    2.3Android移動開發技術
    Android 是一個以 Linux 為基礎的半開源操作系統,主要用于移動設備,由 Google公司和開放手機聯盟開發與領導。
    在Android操作系統中,整個框架由應用程序層、應用程序框架層、Android 庫層、Android運行時層及Linux內核層等若干部分組成,下圖2-1顯示了 Android 的體系架構:
    應用程序
    主程序4 聯系人4
    J 電話4 瀏覽器4 苴他4
    應用程序框架
     
     
    Android 庫Q
    Android運行時門
     
    Dalvik慮擬機a
     
     
     
    Linux內核1
    Binder(IPC)馳動
    電源管理
    圖2-1 Android的體系架構
     
    1、 應用程序層
    應用程序層,即Application,是Android開發體系架構中已經預置并且能獨立 執行某些功能的程序,如時鐘、電話、短信、通訊錄等,是跟用戶直接交互操作 的一個層次。
    2、 應用程序框架層
    應用程序框架層,即Application Framework,提供API供Android開發人員編 寫自己的應用程序,API中的各個模塊、服務都可以被復用。應用程序框架層中常 用的組件主要有視圖系統(即View)、內容提供者(即Content Providers)>資源管 理器(即Resource Manager)、通知管理器(即Notification Manager)、活動管理器 (即 Activity Manager)> 窗口 管理器(即 Window Manager)> 位置管理器(即 Location Manager)>電話管理器(即Telephoney Manager)、軟件包管理器(即Package Manager)o其中,需要特別闡述的組件有以下:
    1) 視圖系統,用于Android開發人員創建用戶界面,換句話說,構成用戶界 面的最基本元素都是來自視圖系統,包括按鈕(Button)、時間
    (TimePicker)、可編輯文本框(EidtView)、復選框(CheckBox)等。
    2) 資源管理器,用于填充和渲染視圖組件,并與視圖系統一起構成了 Android 程序中的界面體系,其可以分為布局(Layou t)、動畫(Anim)、顏色(Color)、 圖片(Drawable。等資源類型。
    3)活動管理器,扮演控制器的角色,支配著Android程序中所有界面及界面 操作的生命周期,包括創建、啟動、停止、銷毀、暫停、恢復等。高校移 動考勤系統的前臺手機客戶端就是由多個活動及活動之間相互交互構成。
    4)位置管理器,顧名思義,就是Android體系架構中用于坐標、地圖管理用 途,高校移動考勤系統的GPS定位功能就要更多地依靠這個組件來完成。
    5)電話管理器,高校移動考勤系統的通訊錄模塊就需要該組件支持,用于提 供電話相關的服務。
    3、 Android庫及Android運行時層
    Android庫及Android運行時層屬于Android體系架構的底層內核,是上層API 運行的基礎。在高校移動考勤系統的設計實現中,僅僅對其中的Sqlite (Android 自帶的輕量級數據庫。有所涉及,其余的還包括Dalvik虛擬機(Dalvik VM)、系 統 C 庫(libc)、媒體庫(Media Framework)、Surface Manager、WebKit、SGL 底 層的 2D 圖形引擎、OPENGL|ES、FreeType 和 Core Libraries。
    4、 Linux內核層
    Android的開發API是Java語言編寫的,通過Java開發環境調用,而最底層 出于安全和效率方面的考慮,依賴于Linux內核,用于顯示驅動程序、藍牙驅動 程序、相機驅動程序、內存驅動程序、Binder驅動、磁盤驅動程序、USB驅動程 序、Wifi驅動程序、音頻驅動程序及電源管理。
    2.4本章小結
    本章主要以高校考勤管理現狀為優化突破點,結合電信運營商無線移動網絡 定位制式的行業專屬性及定位模塊的特殊性、GPS衛星定位制式的通用性及 Android開發平臺的GPS兼容性,選擇采用基于GPS位置服務的定位技術架構,并 依托Eclipse開發平臺,搭配Android開發插件ADT及Android SDK開發軟件包, 便捷實現Android客戶端的開發,實現最便捷的人際交互界面及響應速度,同時, 利用該開發平臺,搭配 Tomcat 中間件及 Xfire 服務框架,同步實現后臺考勤 WebService服務端的開發。
     
    第三章 系統需求分析
    3.1系統建設目標
    目前,福建生物工程職業技術學院使用的考勤手段為傳統的紙質考勤,該方 式考勤隨意且位置固定,具有不可防范的人為可修改性,同時,還存在考勤數據 報送人力成本高、易出錯、延時長等缺點。
    再者,目前學院內部員工通訊錄的管理和分享比較困難。例如某個科室或部 門員工因公要找另外科室或部門的員工,可能需要多次詢問其他員工才能獲得對 方的聯系方式。由此可見,傳統的獲取通訊方式的過程十分繁瑣,在一定程度上 造成了員工之間交互上的障礙,進而影響到工作或者業務的順利開展。
    為了滿足學院對員工考勤準確性、及時性的要求,以及提高員工內部通信的 便捷性,繼而提升學院員工的工作效率,擬建立一個高校移動考勤系統。本系統 的建設目標是解決上述考勤手段存在的問題以及提升員工通訊錄的管理和分享, 建立一個運用在移動智能終端上,基于無線移動網絡和GPS定位技術的考勤系統。
    3.2系統功能需求
    高校移動考勤系統采用迭代式的需求分析管理,通過不斷地循環校內外需求 調研走訪、需求分析編寫、需求驗證等關鍵活動,確定該系統部署結構上由前臺 手機客戶端、后臺考勤服務器以及不同的系統角色用戶(包括普通用戶、1級管理
    員、 2級管理員)構成,其部署圖見下圖3-1:
     
     
     
     
     
    圖3-1 系統部署圖
    如上圖3-1所示,普通用戶通過手機客戶端進行移動考勤、考勤記錄查閱等操 作;管理員則進行考勤管理、考勤記錄維護等操作。
    3.2.1員工登錄
    員工登錄功能需求點,設定員工登錄的場景流程如下:
    1、 當員工首次登錄的時候,要求輸入員工手機號碼,作為高校移動考勤系統 的員工賬號,同時,通過系統短信網關下發驗證碼作為初始密碼,確保所登記的 手機號碼即員工當前所使用的。一旦員工登錄成功,后臺考勤服務器就會同步收 集員工的手機UIM/SIM卡的IMSI碼(即機身碼)、手機號碼及相互的綁定關系, 并以此作為后續員工登錄時的身份鑒權依據,此舉主要為了防止A員工讓B員工 在其手機上登錄A員工賬號進行考勤的情況發生。
    2、 當員工二次登錄的時候,要求輸入員工手機號碼及對應的密碼進行“密碼 驗證”,當后臺考勤服務器接收到手機客戶端的登錄請求后,檢驗其手機號碼與密 碼是否匹配,另外,同步調用 IMSI 和手機號碼的綁定關系進行“身份鑒權”,一 旦順利通過“密碼校驗”及“身份鑒權”,員工才真正登錄成功。
    具體對應的數據流圖如下圖3-2所示:
     
    圖3-2 員工登錄數據流圖
     
    3.2.2員工信息管理
    員工信息管理功能需求點包括信息管理和員工通訊錄兩個部分:
    1、 信息管理,用于員工完善和管理各自的個人信息,包括:姓名、性別、部 門、職位和郵箱等信息,其中,手機號碼即登錄賬號,不允許修改,只能查閱。
    2、 員工通訊錄,即將后臺考勤服務端上收集到的學院員工通訊信息反向推送 到每個員工的手機客戶端上,并提供聯系方式查詢、短信呼出、電話呼出、來電 識別及添加到聯系人功能,從而實現高校教職工通訊錄的統一管理、集中分享、 分散使用。
    具體對應的數據流圖如下圖3-3所示:
     
     
    3.2.3員工移動考勤
    員工移動考勤功能需求點,主要用于實現員工的考勤功能,完成簽到、簽退 的有效性判斷,并完成考勤日志的存儲記錄工作。從考勤的及時性、準備性及完 備性角度出發,該功能點還要能支持對員工進行位移監聽,實現快速多次定位, 以便準確獲取當前位置、時間等相關信息提交給后臺考勤服務器進行審核。同時, 為滿足公司對出差或者公派員工的考勤需求,一個員工可以對應多個考勤點。
    3.2.4考勤記錄管理
    考勤記錄管理功能需求點,根據后臺考勤服務器收集的員工日常考勤日志, 生成考勤結果。對于普通用戶,支持對本人特定日期考勤結果的查閱;對于管理 員,支持對所管轄員工特定日期考勤結果的查閱及修改,其對應的數據流圖如下 圖3-4所示:
     
     
    圖3-4考勤記錄管理數據流圖
     
    3.2.5系統管理
    系統管理功能需求點,主要分為考勤管理和用戶管理兩個部分:
    1、考勤管理包含了考勤點管理及考勤策略管理,其中,考勤點管理,主要用 于設置和修改不同的考勤點信息,包括:考勤點名稱、地址、經緯度;考勤策略 管理即考勤合法有效性的信息設置管理,主要用于設置考勤簽到時間、簽退時間 以及考勤半徑(考慮到民用GPS定位存在1-10米的誤差,在需求收集過程中特地 引入考勤半徑的概念,即以經緯度坐標為中心的該考勤半徑內都屬于考勤的合理 范圍),其對應的數據流圖如下圖3-5所示:
     
    圖3-5 考勤管理數據流圖
     
    2、用戶管理包含了權限管理和密碼管理,其中,密碼管理主要用于員工管理 各自的賬號密碼以及管理員管理員工的密碼,而權限管理,主要用于給員工設置 不同的菜單權限或角色權限:
    1) 菜單,對應前臺手機客戶端上的各功能需求點及其查詢或修改的權限。
    2) 角色,主要考慮將系統員工分為普通用戶、1級管理員、2級管理員,其 中, 1級管理員即學院管理員, 2級管理員即系部管理員。
     
    具體對應的數據流圖如下圖3-6所示:
     
    圖3-6 用戶管理數據流圖
     
    其中,系統用戶角色構成用例如下圖3-7所示,普通用戶、1級管理員、2級 管理員均是系統用戶泛化的結果:
     
    系統用戶
     
    普通用戶 1級管理員 2級管理員
     
    圖3-7 系統用戶角色用例圖
    對于系統的普通用戶,具有考勤、信息查詢和修改的權限,其中信息查詢又
    包括個人考勤記錄查詢及通訊錄信息查詢,其對應的用例圖如下圖3-8所示:
     
     
    通訊錄信息查詢
     
    圖3-8 普通用戶用例圖
    對于系統的1級管理員,具備所有的系統權限,其用例圖如下圖3-9所示
     
    圖3-9 1級管理員用例圖
    對于系統的2級管理員,不具備角色權限管理,其用例圖如下圖3-10所示:
     
    圖3-10 2級管理員用例圖
     
    3.3系統非功能需求
    3.3.1軟硬件需求
    3.3.1.1 硬件環境
    高校移動考勤系統硬件環境需求如下表
    表3-1 硬件環境
    序號 項目 內容
    1 開發環境 IBM 6850, CPU Intel Xeon 3.0G,內存 4G,硬盤 400G
    2 運行環境(服務端) IBM 6850,CPU Intel Xeon 3.0G,內存 4G,硬盤 400G
    3 運行環境(客戶端) Android 智能手機,CPU 600MHz,:RAM 256MB,ROM
    512MB及以上
    3.3.1.2 軟件環境
    高校移動考勤系統軟件環境需求如下表
    表3-2 軟件環境
    序號 項目 內容
    1 開發環境 Windows Server 2003 企業版,
    8.5,ADT 12.0.0,Tomcat 5.5,
    2.3.3,SQLite Oracle 10g,MyEclipse
    JDK1.6,Android SDK
    2 運行環境(服務端) Windows Server 2003 企業版,Oracle 10g, Tomcat 5.5,
    JDK1.6,Android SDK 2.3.3
    3 運行環境(客戶端) Android 2.1及以上操作系統
     
    3.3.2運行性能需求 準確性:準確性是移動考勤最為核心的性能指標,若無法獲取準確的經緯度 坐標,考勤的合理有效性就無法保證,基于GPS的LBS定位服務,可以把移動考 勤的方位誤差控制在10米以內。
    快速響應性:移動考勤,除了為了解決各類傳統考勤方式存在的弊端外,就 是要求系統登錄、定位、考勤各個步驟的快速響應,其中,定位的時間最為耗時, 解決快速定位問題可以大大提升系統的響應性指標,所以,在后續系統設計實現 上,考慮引入基站定位的方式來補充和解決日常GPS搜索衛星較慢的問題。
    易用性:移動考勤系統前臺手機客戶端設計和實現的易用性,是該系統能夠 批量推廣,并最終替代傳統考勤手段的前提條件。因此,對系統的要求就是:0操 作手冊,1看就會。
    不可替簽性:移動考勤的優勢就是通過準確的定位和移動的方便來解決傳統 考勤方式的劣勢,但新技術帶來考勤便捷性的同時,不可避免存在“替人考勤” 的潛在問題,因此,在系統的設計和實現上,考慮引入IMSI,將員工手機號同手 機卡的IMSI號進行綁定,避免借用他們手機登錄賬號進行替人考勤的情況發生。
    3.3.3安全需求
    移動考勤系統的安全需求主要是信息安全,而涉及信息安全的系統功能需求
    點主要是員工信息管理及考勤記錄管理,要求從員工信息數據及考勤記錄數據的 查詢和修改上需要通過系統權限嚴格管控,確保考勤數據的安全可靠不可篡改性 以及員工信息的不可越權查詢。因此,后續的系統設計和實現上:
    前臺手機客戶端:細分系統用戶,引入權限管理審核制度,對系統的界面操 作及數據操作進行權限域劃分及分配,避免跨域的數據訪問及篡改。
    后臺考勤服務端:對業務服務類方法的的調用實行嚴格的訪問控制。
    3.3.4接口需求
    移動考勤系統存在一個內部接口及一個外部接口: 內部接口,即前臺手機客戶端與后臺考勤服務器的接口,考勤服務器以 Webservice方式架設在Tomcat中間件上,支持手機客戶端通過Xfire架構進行訪 問并接收反饋。
    外部接口,主要涉及短信網關接口,考慮直接使用現有的中國電信企業總機 短信發送網關接口,其為Webservice的調用方式。
    3.4本章小結
    本章主要明確了高校移動考勤系統的建設目標,分析了系統的需求,劃分了 系統功能需求點,同時,結合系統功能結構,對系統軟硬件、運行性能、安全及 接口方面確定了需求和相關規范。
    第四章 系統設計
    4.1系統設計的目標及原則
    本文系統設計的目標是通過系統體系結構設計、系統功能結構劃分、系統處 理流程設計、系統界面設計、系統數據庫設計及接口設計為高校移動考勤系統的 實現確定實施方案,指導后續系統的實現并最終通過該系統解決傳統考勤管理工 作的弊端,提升考勤效率、降低考勤成本。因此,在系統設計上應遵循以下原則:
    1、 實用性:本系統采用移動開發技術,開發出來的結果是手機客戶端,要求 系統界面具有相對一致的設計風格,控件名稱標準化,具備操作提示及錯誤提示 功能,操作簡單方便,提示清晰明了。
    2、 可靠性:本系統屬于生產性系統,為了確保日常考勤工作的順利運作,要 求系統處理流程設計合理,確保系統能夠運行穩定。
    3、 安全性:本系統的設計和實現是用來替代傳統考勤方式的,其產生的考勤 數據是日常考核的重要依據,要求設計上有嚴格的訪問和操作權限的劃分和控制, 避免考勤數據被越權訪問和篡改。
    4、 兼容性:本系統運行于各類安卓智能手機,在設計上要求確保能支持不同 手機硬件和操作系統的適配兼容性。
    5、 擴展性:本系統的設計要符合福建生物工程職業技術學院乃至其他兄弟高 校的推廣需求,要求功能結構、流程處理及接口的設計上具備可擴展性,以適應 后續需求的變更和新增需要。
    4.2系統體系結構設計
    根據需求分析,高校移動考勤系統可以劃分成五大模塊,包括員工登錄模塊、 員工信息管理模塊、員工移動考勤模塊、考勤記錄管理模塊、系統管理模塊。從 系統設計角度出發,結合系統前臺手機客戶端、后臺考勤服務器的體系結構,設 定系統的場景,主要包括安卓移動終端、傳輸網絡、GPS全球定位系統、高校移動 考勤系統(前臺手機客戶端、后臺考勤服務器)和系統用戶,高校移動考勤系統 手機客戶端負載在安卓移動終端上(包括手機、Pad等),通過移動終端的GPS模 塊采集位置信息,并通過無線網絡模塊(包括運營商3G、Wifi等)接入高校移動 考勤系統后臺考勤服務器,將用戶信息、考勤點信息、考勤策略、考勤記錄(包 括用戶、時間、位置)等信息存儲到數據庫,作為考勤管理、考核的依據。同樣
    地,考勤服務器會根據用戶端的請求類型返回通訊錄、考勤記錄、員工信息等信
    息。高校移動考勤系統的前后臺交互架構圖如下圖4-1所示:
     
    系統的體系結構設計上,遵循三層架構體系,分為展示層、業務邏輯層及數 據層,其中,手機客戶端負責展示層、業務邏輯層職責,展示層實現通過Native 界面接受使用者的請求,并根據使用者的請求發起申請與業務邏輯層進行交互; 業務邏輯層接受界面的請求,并對請求進行閱讀審核,然后將請求直接反饋給手 機客戶端界面或者通知后臺考勤服務器;后臺考勤服務器主要履行數據層職責, 數據層收到請求后便開始訪問后臺數據庫,并將數據庫返回的結果通知給業務邏 輯層,業務邏輯層審閱數據結果并封裝后反饋給手機客戶端的展示層,最終用戶 可以在手機界面上查看結果。
    在安卓移動開發架構上,展示層主要包括XML布局、PNG圖片、VALUE定義及 COLOR定義,即Android的Resource Manager(資源管理)部分,用來完成界面 邏輯與數據展現功能。業務邏輯層是考勤系統的核心所在,用來組織和實現整個 業務功能,主要根據系統功能模塊設計,包括員工登錄、信息管理、移動考勤、 考勤記錄管理、系統管理五大模塊。最后,數據層則分成移動數據庫SQLITE及部 署在后臺考勤服務器端的ORACLE,其中,ORACLE數據庫通過Webservice方式與 業務邏輯層進行數據交互,而SQLITE輕量級數據庫則通過Android類庫被各個應 用程序組件調用。綜上,系統總體邏輯結構圖如下4-2所示:
     
     
     
    其中,系統的接口主要位于業務邏輯層,存在一個外部接口及內部接口:
    1、外部接口,主要涉及短信網關接口,考慮直接使用現有的中國電信企業總
    機短信發送網關接口,為Webservice調用方式。以下為調用方式細則,見表4-1 所示:
    表4-1 企業總機短信網關
    序號 項目 內容
    1 地址 http://202.101.100.214/smgp/services/MessageSender7wsdl
    2 方法 public String sendMessage(String sourceNumber,String targetNumber, String msgContent)
    3 參數說明 sourceNumber發送方手機號碼字符串; targetNumber String 手機號碼字符串,多個號碼用逗號 隔開;
    msgContent String 短信內容,最多不能超過 250 個漢 字。
    4 功能 短信單發或群發
     
    2、內部接口,即前臺手機客戶端與后臺考勤服務器端的接口,考勤服務器通 過 Webservice 方式架設在 tomcat 中間件上,支持手機客戶端通過 Xfire 框架進行 訪問。
    在基于前文對Java C/S架構、Android移動開發技術及GPS定位技術研究的
    基礎上,結合上一章對福建生物工程職業技術學院日常考勤的功能需求及非功能 需求分析以及本章的系統總體設計情況,對該系統的技術選型及開發框架定義:
    首先,后臺考勤服務器端的操作系統應用Windows Server 2003。中間件,安 裝Tomcat 5.5并配置JDK 1.6的開發包。開發平臺,采用MyEclipse &5,由于該平 臺已自帶Tomcat的插件,故只要引入Xfire 1.2的服務引擎包即可進行Android平 臺支持的考勤校驗WebService服務端開發。
    同時,前臺Android客戶端開發,仍然采用MyEclipse 8.5的開發平臺,輔以 ADT 1.2開發插件及Android SDK 2.3開發包即可進行Android客戶端開發,為了 實現與考勤服務端通信,即實現服務端考勤校驗WebService的交互,引用輕量級 的kSoap2開發包,即可完成客戶端開發環境的搭建。
    另外,服務端數據庫方面,采用目前成熟的Oracle 10g,用于項目開發過程中 涉及的權限數據、配置數據及應用數據的存儲與使用。
    最后,系統安裝 Microsoft Office 2007 中所包含的 Word、Excel、Power Point、
    Visio 等程序來實現數據流圖、系統部署圖、前后臺交互架構圖、邏輯結構圖、功 能結構圖、UI界面設計圖、處理流程圖、表結構設計的繪圖工作,安裝Rational Rose 來完成用例圖的繪制工作,安裝PowerDegignerl0進行項目涉及數據E/R結構設計。
    以下是項目技術開發框架:
    1、 開發環境:JDK 1.6 + Android SDK 2.3 + MyEclipse & 5 + Tomca t 5.5
    2、 數據庫:Oracle 10g
    3、 移動數據庫:Sqlite數據庫
    4、 移動終端操作系統:Android 2.1及以上
    4.3系統功能及界面設計
    通過前期的需求分析,高校移動考勤系統可以劃分成員工登錄、員工信息管 理、員工移動考勤、考勤記錄管理、系統管理等五大功能模塊,其中,員工登錄 細分成手機綁定及登錄鑒權模塊;員工信息管理細分成通訊錄及信息管理模塊; 員工移動考勤細分成簽到及簽退模塊;考勤記錄管理細分成記錄查詢及修改模塊; 系統管理細分成考勤管理及用戶管理模塊。該系統對應的總體結構圖見下圖4-3:
    圖4-3 系統功能結構圖
    4.3.1 員工登錄模塊
    員工登錄模塊包含手機綁定及登錄鑒權兩個子模塊,
    其處理流程見下圖4-4:
    圖4-4 員工登錄模塊處理流程圖
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    4.3.1.1 手機綁定
    如圖4-4所示,當用戶第一次運行高校移動考勤系統手機客戶端時,將顯示 “手機綁定”界面,主要功能:用戶輸入本機手機號,作為用戶賬號,并點擊“獲 取初始密碼”按鈕獲得后臺考勤服務器發送的賬號初始密碼,最后,用戶填寫正 確的密碼驗證碼后實現首次登錄成功,與此同時,本手機號碼的IMSI碼及手機號 將同步注入后臺數據庫的用戶信息表,并記錄相互綁定關系,為后續“登錄鑒權” 做參考依據。手機綁定界面設計圖如下圖4-5所示:
     
    圖4-5 手機綁定界面
     
    4.3.1.2 登錄鑒權
    如圖4-4所示,若用戶非首次登錄,客戶端將顯示“登錄鑒權”界面,用戶 直接輸入手機號碼和密碼后,點擊“登錄”,通過后臺考勤服務器認證成功后,轉 入系統主界面;否則顯示“登錄失敗提示”。另外,用戶若點擊“退出”則直接退 出本系統。登錄鑒權界面設計圖如下圖4-6所示:
     
    用戶登錄失敗提示的設計圖如下圖4-7所示:
     
     
     
    圖4-7登錄失敗提示
    4.3.1.3 系統主界面 用戶登錄成功后,顯示系統的九宮格主界面,同時,根據登錄用戶的不同角 色,將顯示不同的功能按鈕。
    1、 普通用戶顯示5個功能按鈕:“移動考勤”、“考勤記錄”、“通訊錄”、“信 息管理”、“用戶管理”。
    2、 1級/2級管理員比普通用戶多顯示1個功能按鈕:“考勤管理”。 系統主界面設計圖如下圖4-8所示:
    「移動]「考勤]
    I考勤丿 J
    「信息
    I gg J
     
    圖4-8 主界面
    4.3.2 員工信息管理模塊
    員工信息管理模塊包括員工通訊錄及信息管理兩個子模塊,其中,員工通訊
    錄子模塊提供員工聯系方式的離線下載、查詢、保存到手機、電話呼出、短信呼
    出、來電顯示等功能;信息管理子模塊提供員工個人信息的修改及管理員修改審
    核等功能。具體的模塊介紹如下:
    4.3.2.1 員工通訊錄
    提供系統各種角色查詢本校各系各科室各部門其他員工的通訊方式的功能, 除了員工通訊錄信息的查詢外,還兼具撥號、短信、來電顯示及聯系方式保持至 本機的功能點,其功能結構圖如下4-9所示:
     
     
    結合上圖4-9的功能點,該模塊具體功能設計如下:
    1、 根據輸入的查詢條件,查詢并顯示滿足條件的員工信息列表。
    2、 普通員工不能查詢到某些高級領導的聯系方式,而管理員則可以查詢到所 有人員的聯系方式。
    3、 能夠查看某個員工的詳細信息。
    4、 可以直接撥打某個員工電話或者向某個員工發送短信。
    5、 查詢條件:員工中文姓名、姓名簡拼、手機號碼。
    6、 結果列表:手機號、員工姓名、短信呼出按鈕、電話呼出按鈕。 此模塊功能可以分為兩個設計界面,一個用于查詢員工通訊錄,并支持電話、
    短信的一鍵呼出以及通訊錄信息的保存等功能,如下圖4-10所示:
     
    通過上圖4-10界面,點擊人名可以查看個人信息,長按手機號碼可以將通訊 錄保存到手機,點擊短信和電話按鈕可以實現呼出。同時,由員工通訊錄模塊還 引申出的手機客戶端的“來電顯示”功能,為了實現該功能點,需要設計“通訊 錄離線包”的模塊,即員工首次使用通訊錄功能時,后臺考勤服務器會自動推送 一份本校教職工的通訊錄離線包并注入手機的Sqlite數據庫,以實現當本校教職 工來電時,客戶端可以對Sqlite數據庫進行檢索,實現來電顯示的功能。同時, 另一個界面用于展示員工的個人信息,如下圖4-11所示:
     
     
    4.3.2.2 員工信息管理 員工信息管理模塊主要提供給普通員工和管理員修改員工信息和管理員審核 員工個人信息修改請求,具體功能模塊設計如下:
    1、 普通員工只能修改各自的個人信息,并且修改后還需要通過管理員的審核 通過才能正式生效。
    2、 2級管理員只能查詢和修改所管轄部門下的所有員工的信息,并且能夠審 核該部門下員工的信息修改申請。
    3、 1級管理員可以修改所有員工的信息,并且能夠審核所有員工的信息修改 申請。
    該模塊所涉及的信息修改、審核、歸檔環節的處理流程圖如下圖4-12所示, 其中,個人信息的修改申請將存入后臺數據庫的審核信息表,用于管理員審核, 而當修改信息審核通過后將保存入后臺數據庫的用戶信息表中:
    通過webservice進行存儲
    審核 普通用戶 修改的信息
    后臺數據庫 審核信息表
    審核有效?
     
    通過webservice進行存儲-
    后臺數據庫 用戶信息表
    圖4-12 信息管理模塊處理流程圖
    該模塊對應的員工個人信息修改界面設計圖如下圖4-13所示:
    圖4-13個人信息修改界面
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    當員工在個人信息修改界面提交個人信息修改請求時,對應的級別管理員會
    接受到相關的信息修改申請,信息審核列表界面設計圖如下圖4-14所示:
     
     
    當管理員長按審核列表記錄條時,頁面將跳轉至個人信息審核界面,其設計 圖如下圖4-15所示:
     
     
    4.3.3員工移動考勤模塊
    此模塊提供與員工移動考勤相關的所有功能,具體移動考勤界面設計圖如下
    圖4-16所示:
     
    圖4-16 移動考勤界面
     
    具體功能模塊設計如下:
    1、 點擊主界面中“移動考勤”按鈕后,手機客戶端產生GPS位置監聽機制, 能多次快速定位當前用戶位移并記錄位置坐標,同時,能夠智能判斷用戶 當前的考勤點(由于我院考勤需要,每個用戶可能存在不同的考勤點,如 異地任課、異地培訓等),提示用戶是否就當前位置進行考勤。
    2、 用戶選擇考勤,即點擊“簽到”按鈕,手機客戶端將當前用戶信息及簽到 位置一起提交并向后臺考勤服務器端發起考勤請求。
    3、 考勤包含簽到和簽退兩種動作,手機客戶端會自動進行判斷:如果是上班 時間,且當天用戶尚未有簽到記錄,手機客戶端將自動顯示“簽到”按鈕; 如果是下班時間,且當天用戶已經簽到,手機客戶端將自動顯示“簽退” 按鈕。
    4、 最后,以Toast提示框的形式顯示后臺服務器返回的考勤結果。
    4.3.4考勤記錄管理模塊
    普通用戶可以通過“考勤記錄”模塊來查詢個人特定時間的考勤記錄;管理 員不僅可以通過“考勤記錄”模塊來查詢特定員工特定時間的考勤記錄,還能對 這些記錄進行修改,其對應的處理流程圖如下圖4-17所示:
     
     
     
     
     
    圖4-17 考勤記錄管理模塊處理流程圖
     
    4.3.4.1 考勤記錄查詢 此模塊提供員工考勤記錄的查詢功能,具體功能模塊設計如下:
    1、 顯示從后臺考勤服務器傳送過來的滿足查詢條件的考勤記錄。
    2、 根據登錄用戶的角色不同,點擊“考勤記錄”將顯示不同的界面。
    3、 普通員工用戶只能查詢本人的考勤記錄,即顯示個人考勤記錄界面,通過
    選擇日期可以查看個人某天的考勤記錄,如下圖4-18所示:
     
     
    簽到情況:成功簽到 簽到情況:成功簽退
    圖4-18 個人考勤記錄界面
    4、 管理員用戶可以根據其管理員級別(1級管理員對應學院、2級管理員對 應各系部、科室及部門)查詢對應的考勤人員記錄,可以使用所有查詢條 件,包括時間、對象(員工姓名或手機號碼),支持模糊查詢。管理員提 交查詢條件由后臺考勤服務器返回結果列表,包括手機號、員工姓名、查 詢當日出勤情況,考勤記錄查詢界面設計圖如下圖4-19所示:
     
    5、 出勤情況,包括缺勤:本日沒有簽到記錄;請假:需要申請,由管理員設
    置;遲到:簽到時間晚于指定的簽到時間;早退:未能在指定的簽退時間
    范圍內簽退都算早退;正常:默認為正常,即上班時間內,正常簽到且沒
    有早退。
    4.3.4.2 考勤記錄修改
    此模塊提供給1、2級管理員使用。管理員通過此模塊可以對某員工的某日考 勤記錄的進行修改,具體功能模塊設計如下:
    1、 管理員可以修改某員工某日的考勤情況。
    2、 一旦修改該考勤記錄,需要在該考勤記錄的備注信息中輸入修改原因(必 輸項)。其中,簽到情況包括:請假、缺勤、遲到、成功簽到;簽退情況 包括:請假、缺勤、早退、成功簽退。
    此模塊功能界面設計圖如下圖4-20所示:
     
     
    4.3.5系統管理模塊 系統管理模塊包括考勤管理和用戶管理兩個子模塊,其中考勤管理又包含了 考勤點管理模塊及考勤策略管理模塊;用戶管理又包含了權限管理模塊及密碼管 理模塊,其功能結構圖如4-21所示:
     
    系統管理
    考勤管理 用戶管理
     
     
     
    圖4-21系統管理功能結構圖
    435.1考勤管理
    通過“考勤管理”功能模塊來對高校各考勤點和考勤策略進行新增、修改等
    操作,該模塊對應的處理流程圖如下圖4-22所示:
     
    如上圖4-22所示,該模塊為管理員提供考勤點管理和考勤策略管理功能,管
    理員通過點擊“考勤管理”后進入本功能界面,具體功能模塊流程解析如下:
     
    1、 通過輸入考勤點名稱查詢顯示當前已有考勤點。
    2、 對已有的考勤點進行考勤點信息及其考勤策略修改,對沒有的考勤點按需 要進行新增,并將編輯結果存入后臺數據庫的考勤點信息表。
    3、 允許管理員選擇手動輸入坐標來或者獲取當前坐標作為考勤點的坐標。
    如設計圖4-23考勤點管理界面所示,其中用黑點標注的為默認考勤點,表示 該考勤點對所有員工默認適用,可以通過長按考勤點條目的方式進行修改。另外, 短按考勤點條目可根據彈出對話框選擇進入考勤點信息及策略修改界面:
    請輸入查詢條件 查詢
    編號 考勤點名稱
    • 01 洪山橋本部
    02 齊安分校區
     
    圖4-23 考勤點管理界面
     
    考勤管理員可以選擇手動輸入坐標或者自動獲取當前GPS信息作為考勤點的 坐標(點擊考勤點編輯界面內經緯度右邊按鈕,可以自動定位用戶當前位置并準 確填入經度和緯度數據),考勤點編輯設計圖如圖4-24所示:
     
    圖4-24 考勤點編輯界面
    另外,短按考勤點條目,可根據彈出對話框選擇為用戶添加考勤點,考勤管 理員在查詢輸入框中輸入查詢條件(手機號或姓名)后進行模糊查詢,并用列表 的形式顯示符合條件的員工信息,然后點擊姓名之后"即可選中該員工,點擊確 定便可為被選中的員工添加該考勤點。其中,"是亮的表示為被選中,否則則表 示為未被選中。若員工已經設置該考勤點作為考勤地點的話,則丁則顯示為亮的, 反之亦然,其界面設計圖如下圖4-25所示:
     
     
    4.3.5.2 用戶管理
    用戶管理分為權限管理和密碼管理兩個子模塊,其中,權限管理子模塊包括 用戶新增及權限的分配;密碼管理子模塊則主要實現用戶密碼的修改功能。
    4.3.5.2.1 權限管理
    權限管理模塊,主要提供給系統1、2級管理員使用,其允許管理員查詢當前 用戶列表并能對用戶賬戶進行增加、刪除、修改操作。另外,1級管理員能夠為用 戶分配權限,具體功能模塊設計如下:
    1、 2級管理同樣只能所管轄部門的用戶進行查詢、管理操作,但不能修改普 通用戶的權限;2級管理員所新增用戶的角色權限只能為普通用戶。
    2、 1級管理員能對所有用戶進行查詢管理操作,并能夠為這些用戶分配權限;
    1級管理員所新增用戶的角色權限可以是2級管理員或者普通用戶。
    權限管理模塊中用戶管理界面設計圖如下圖4-26所示:
     
     
     
    點擊其中的“添加用戶”按鈕,就可以對用戶賬號進行新增,其設計圖如下 圖4-27所示:
     
     
    4.3.5.2.2 密碼管理
    密碼管理子模塊提供給用戶進行密碼修改,其功能模塊設計如下:
    1、 普通用戶只能修改自己密碼,并且密碼修改需要首先確認舊密碼
    2、 管理員可以直接在用戶添加界面(如上圖4-27)修改密碼。 此模塊功能界面設計圖如下圖4-28所示:
     
     
    圖4-28 密碼修改界面
    結合以上用戶管理模塊功能點及其流程的描述,設計對應處理流程圖如下:
     
    4.4系統數據庫設計
    4.4.1表設計
    結合高校移動考勤系統五大功能模塊的設計,對該系統涉及的數據結構進行 設計,包括用戶信息表、考勤點管理表、用戶考勤點關系表、考勤記錄表以及審 核信息表,具體的表結構設計見下文:
    4.4.1.1用戶信息表:KQGL_User
    KQGL_User表,用于記錄用戶信息及權限,主鍵為U ser_ID,表設計見下表4-2:
    表4-2 用戶信息表
    字段名 中文名稱 類型 約束 是否為空 備注
    User ID 用戶編號 INT PK NOT NULL 主鍵(自動增加)
    User Name 用戶名 CHAR(45) NOT NULL
    Dep Name 部門名 CHAR(45) NOT NULL
    User Gender 性別 CHAR(45)
    U ser PhoneNum 手機號 CHAR(45) NOT NULL
    User Password 用戶密碼 CHAR(45) NOT NULL
    User_Role 用戶角色 INT NOT NULL 1、2=管理員
    3=普通用戶
    User Email 用戶郵箱 CHAR(45)
    User Imsi 用戶IMSI碼 CHAR(45) NOT NULL
     
    4.4.1.2考勤點信息表:KQGL_Attendance_Points
    KQGL_Attendance_Points表,用于記錄系統的考勤點信息,主鍵為AP_ID, 表設計如下表4-3所示:
    表4-3 考勤點信息表
    字段名 中文名稱 類型 約束 是否為空 備注
    AP ID 考勤點編號 INT PK NOT NULL 主鍵(自動增加)
    AP Name 考勤點名稱 CHAR(45) NOT NULL
    AP Lat 考勤點緯度 Double NOT NULL
    AP Lon 考勤點經度 Double NOT NULL
    AP Rad 考勤點半徑 INT NOT NULL
    AP In StartT ime 簽到開始時間 Time NOT NULL
    AP In EndTime 簽到結束時間 Time NOT NULL
    AP Out StartTime 簽退開始時間 Time NOT NULL
    AP Out EndT ime 簽退結束時間 Time NOT NULL
    AP_Default 默認考勤點 Boolean NOT NULL True=默認考勤點
    False=非默認考勤點
     
     
    441.3用戶考勤點關系表:KQGL_Relation_User_AP
    KQGL_Relation_User_AP 表,用于記錄系統中用戶與考勤點關系,主鍵為
    RelationUAP_ID,聯合外鍵為User_ID、AP_ID,具體表設計如下表4-4所示:
    表4-4 用戶考勤點關系表
    字段名 中文名稱 類型 約束 是否為空 備注
    RelationUAP ID 關系編號 INT PK NOT NULL 主鍵(自動增加)
    User ID 用戶編號 INT FK NOT NULL 外鍵(關聯用戶信息表)
    AP ID 考勤點編號 INT FK NOT NULL 外鍵(關聯考勤點表)
     
    4.4.1.4考勤記錄表: KQGL_Record
    KQGL_Record表,用于記錄用戶考勤信息日志,主鍵為Record_ID,外鍵為
    User_ID,具體表設計如下表4-5所示:
    表4-5 考勤記錄表
    字段名 中文名稱 類型 約束 是否為空 備注
    Record ID 記錄編號 INT PK NOT NULL 主鍵(自動增加)
    User ID 用戶編號 INT FK NOT NULL 外鍵(關聯用戶信息表)
    Record Date 記錄時間 DATETIME NOT NULL
    Record In 簽到記錄 CHAR(45) NOT NULL
    Record Out 簽退記錄 CHAR(45) NOT NULL
    Record Remark 備注 CHAR(64)
     
    4.4.1.5審核信息表: KQGL_Audit
    KQGL_Audit 表,主要用于個人信息修改后的審核記錄存儲,其記錄主鍵為
    Audit_ID,外鍵為User_ID,具體表設計如下表4-6所示:
    表4-6 審核信息表
    字段名 中文名稱 類型 約束 是否為空 備注
    Audit_ID 審核信息編 號 INT PK NOT NULL 主鍵(自動增加)
    User_ID 用戶ID INT FK NOT NULL 外鍵(關聯用戶信息表)
    User_Name 用戶名 CHAR(45) NOT NULL
    Dep_Name 部門名 CHAR(45) NOT NULL
    User Gender 性別 CHAR(45)
    U ser_PhoneNum 手機號 CHAR(45) NOT NULL
    Audit_Status 審核狀態 BOOLEAN True=已審核;
    False=待審核
     
     
    4.4.2數據庫關系
    高校移動考勤系統中各數據表的ER設計如下圖4-30所示,其中,用戶信息 表KQGL_User為主表,考勤記錄表KQGL_Record與審核信息表KQGL_Audit均為從 表,User_ID是其外鍵;用戶考勤點關系表KQGL_Relation_User_AP又以用戶信息 表KQGL_User與考勤點信息表KQGL_Attendance_Points的從表存在,聯合外鍵為
    User_ID、AP_ID:
    □ KQGL Record
     
    User_ID」dx
    AP ID idx
    圖4-30 數據表關系設計
    4.5本章小結
    本章主要明確了高校移動考勤系統設計的目標及原則,并以此為指引對系統 功能進行了前后臺交互結構、邏輯結構的總體設計,并對系統功能結構、系統處 理流程、系統界面、系統數據庫及系統接口進行了詳細設計。
    第五章 系統實現
    根據第四章高校移動考勤系統的設計,本章以系統功能模塊劃分為依據,結 合高校移動考勤系統手機客戶端訪問使用步驟,分別從應用啟動、員工登錄、主 界面、移動考勤、考勤記錄、通訊錄、信息管理、考勤管理、用戶管理等界面功 能點依次入手來闡述系統的具體實現細節。
    5.1前臺手機客戶端實現
    結合前期需求分析及功能界面設計的要求,高校移動考勤系統中前臺Android 手機客戶端的實現,可以映射成Android活動、廣播接收器、服務等組件的實現, 其中,員工登錄模塊(主要包括啟動界面、員工登錄界面和主界面)、員工信息管 理模塊(主要包括信息管理界面和通訊錄界面)、員工移動考勤模塊(主要包括移 動考勤界面)、考勤記錄管理模塊(主要包括考勤記錄界面)、系統管理模塊(主 要包括考勤管理界面和用戶管理界面)均可以通過Activity (即“活動”實現。 在實現的過程中,員工登錄Activity是主Activity,在整個手機客戶端程序加載 的時候展現出來,并由此觸發主界面Activity乃至其他的Activity,從而實現不 同的功能。從開發角度出發,一個Activity包含一個界面布局XML文件、后臺實 現邏輯Activity類以及對應的AndroidManifest (程序全局配置文件)配置,其 Activity類開發代碼框架如下圖5-1所示:
     
     
    與Activity類對應,前臺手機客戶端的布局代碼框架如下圖5-2所示:
    :Ftektct 耳 倉 Mitrfcrchy
    :± 匸■ prc(u«*4
    6 Q r«x
    ◎ G? eftlor
    :丸 E BL*
    * 二,dr*?B*H*-Jit4f S
    ■- dr mkJbL*~ldj*i
    占 mibLv"■如 1
    X->考勤管理布局
    x Z -》考勤蔓理點列表布局
    xx*l -》移動考勤布局
    5(缶1氣X-1 -》彈出對話框布£
    X曲。-》信息管理布胃 八3詛->論列表布胃(帶圖片)
    x list m1 ->list 列表布啟
    E lejift k»1 ->員工登錄布局
    T 1 主界面布尾
    X phen*, xki -》通訊錄布局
    X r*vg&7->考動乜親希局
    、說•血**L_>啟動界面布局
    日 GrrJgy
    苗 ilriftfx al
    圖5-2 Activity布局文件
    對于Activity的開發實現,還需在AndroidManifest (程序全局配置文件) 中完成注冊配置后才能正式生效,配置關鍵代碼如下:
    <application android:icon="@drawable/logo"
    android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
    <!-- Splash 界面-->
    <activity android:name=".SplashActivity" android:label="@string/app_name">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <!-- 登錄界面 -->
    <activity android:name=".Login"></activity>
    <!-- 主界面 -->
    <activity android:name=".AttendanceMain"></activity>
    <!-- 移動考勤界面 -->
    <activity android:name=".Attendance"></activity>
    ...//其余Activity定義配置省略
    <!-- 定義來話監聽服務 -->
    <service android:name=".service.PhoneListenerServ"></service>
    <!-- 定義開機啟動廣播接收器 -->
    <receiver android:name=".service.BootBroadcastRec">
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"> </action>
    </intent-filter>
    </receiver>
    《/application〉
    同時,對于監聽來話從而實現來電顯示的通訊錄附屬功能,可以通過定義一 個Android服務組件,并用廣播接收器監聽事件來啟動后臺服務,代碼實現上, 包含一個廣播注冊類Boo tBroadcas tRec.java以及后臺服務類 PhoneListenerServ.java。服務類的代碼架構如下圖5-3所示:
    -I M erLd:±rLC e
    白…i羅src
    ijj …田 Cum. :±TLilt_iji d. db
    ijj…田 com. :d. util
    莊I…田■ ■: ■:>m. m :a.t t end^LC e. :ac t i vi ty
    I主I••田■ cum. endiiTLce. apply
    S " 由 匚um. m:at t已鞏出王匸lc e. e ervi c e
    @ JJ B0ijtBru宜己匚astRec. java
    £l Jj PhuneLi e tErLErWmr1/. j :并陽
    ! ! .--I .
    圖5-3 服務類
    另外,整體手機客戶端開發框架中,還包括一些常用的功能類,例如客戶端 升級、離線包更新、用戶鑒權、手機信息獲取、字符處理、數據庫處理、Base64 加密等,具體架構如下圖5-4所示:
    + Package Explorer 撫 Hierarchy
    com. :an'lroid. db
    [Ji Db. j ava
    [31 IlbCopy. j ava com. :imiroi d. util
    .m:mt t end:aiLC e. ac t i vi ty
    .rn at t end:aiLC e. apply
    最后,結合手機客戶端需要實現的功能,需要在AndroidManifest (程序全局 配置文件)中聲明相關的授權,包括大屏適應、網絡訪問、文件系統訪問、聯系 人讀寫、撥打電話、發送短信、調用懸浮窗、定位授權等,其關鍵代碼如下: <!--電話撥打的權限-->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <!-- 精細定位的權限 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    …〃其余省略
    基于以上篇幅對前臺手機客戶端開發的總覽,接下來將依照客戶端的活動處 理流程對各個系統模塊進行實現:
    5.2員工登錄模塊
    員工登錄模塊主要可以實現成啟動界面、員工登錄和主界面三個功能界面:
    5.2.1啟動界面
    啟動界面,又稱Splash界面,即高校移動考勤系統手機客戶端啟動歡迎界面, 在設計和實現上除了可以給使用者強烈的第一感官印象刺激外,更重要的作用是 可以避免高校移動考勤手機客戶端主Activity啟動初始化時的耗時而給使用用戶 造成界面假死的感知,其運行界面如下圖5-5所示:
     
    圖5-5 啟動界面
     
    代碼實現上,首先需要編寫Splash界面的XML布局文件splash.xml,及對應 的Activity類SplashActivity.java,類中主要定義Splash界面的延遲時間為3 秒“SPLASH_DISPLAY_LENGHT=3000”以及后續需要跳轉的下一個Activity窗口: 員工登錄“Login.class”,關鍵代碼實現如下: public class SplashActivity extends Activity {
    // 設定延遲時間間隔
    private final int SPLASH_DISPLAY_LENGHT = 3000;
    @Override
    public void onCreate(Bundle bundle) { super.onCreate(bundle);
    // 加載啟動界面布局
    setContentView(R.layout.splash);
    // 異步處理,啟動主界面
    new Handler().postDelayed(new Runnable(){
    @Override
    public void run() {
    Intent main = new Intent(SplashActivity.this,Login.class); SplashActivity.this.startActivity(main);
    SplashActivity.this.finish();
    }
    }, SPLASH_DISPLAY_LENGHT);
    }
    }
    5.2.2員工登錄
    用戶進入“員工登錄”界面,當前活動窗口首先檢測用戶手機客戶端是否處
    在聯網狀態,否則,提示“聯網窗口”,運行界面如下圖5-6所示:
    無網絡連接
    此應用程序需要網絡支持,譴先 幵啟移動互聯網或WLAN
     
    圖5-6 聯網判斷
     
    其中,聯網判斷的關鍵代碼如下: if (!NetUtil.isNetworkAvailable(this)) {
    NetUtil.showNetWorkSetting(this, "此應用程序需要網絡支持,請先開啟移動互聯 網或WLAN","無法連接網絡,考勤系統功能將無法使用”);
    return;
    }
    以上代碼主要調用NetUtil.java功能類中的isNetworkAvailable靜態方法,關 鍵代碼如下:
    public static boolean isNetworkAvailable(Context ctx) {
    try {
    // 獲取網絡連接狀態
    ConnectivityManager cm = (ConnectivityManager)
    ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = cm.getActiveNetworkInfo(); return (info != null && info.isConnected());
    } catch (Exception e) {
    ... // 錯誤信息輸出,省略
    }
    }
    其次,判斷用戶的登錄類型,并根據不同的登錄類型響應不同的登錄界面, 用戶的登錄類型主要可歸納為:首次登錄、手機卡信息變更登錄以及正常登錄, 關鍵代碼實現如下:
    public static int isLoginFirst(Db dbSqlite,String account, String imsi) {
    ... // 變量聲明,省略
    try {
    ... // 變量初始化,省略
    //讀取本機sqlite數據庫imsi與account配置信息 sql = "select account from " + CFGTABLE + " where imsi = '"
    + imsi + "' and account = '" + account + "'"; cursor = dbRead.rawQuery(sql, null);
    // 如果配置表不存在,則表示首次登錄
    if (cursor.getCount() == 0) {
    result = -1;
    } else {
    cursor.moveToFirst();
    //如果號碼account與imsi跟本機預留的信息一致,則允許登錄
    if (imsi.equalsIgnoreCase(cursor.getString(0))) result = 1;
    //如果號碼account與imsi跟本機預留的信息不一致,則需要重新綁定 else
    result = 0;
    }
    } catch (Exception e) {
    ... // 錯誤信息輸出,省略
    } finally {
    ... // 數據庫關閉操作,省略
    }
    return result;
    }
    其中,用戶首次登錄及手機卡信息變更登錄兩種情況,均需要進行手機號與 手機卡I MS I綁定,運行界面如下圖5-7所示:
     
    圖5-7 初次登錄界面
     
    初次登錄,要求用戶輸入手機號碼作為系統賬號,同時獲取“驗證碼”作為 初始密碼,關鍵代碼如下:
    // 設置驗證碼按鈕事件監聽
    check.setOnClickListener(new Button.OnClickListener() {
    public void onClick(View v) {
    // 訪問后臺考勤服務器短信網關接口發送驗證短信 String[] param = new String[] { account };
    SoapObject response = NetUtil.getWS(WSURL, WSNAMESPACE, "sendSms", param);
    }});
    以上代碼調用Ne tUtil .java功能類中ge tWS方法通過調用Webservice的短 信發送方法sendSms來獲取驗證碼,關鍵代碼如下:
    public static SoapObject getWS(String wsURL, String nameSpace, String method,String[] param) {
    try {//生成調用WebService方法的SOAP請求信息 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11);
    //指定WebService的命名空間和調用的方法名
    SoapObject request = new SoapObject(nameSpace, method);
    // 根據參數順序傳參
    for (int i = 0; i < param.length; i++) { request.addProperty("a" + i, param[i]);} envelope.setOutputSoapObject(request); // 發出請求 //創建HttpTransportSE對象并調用方法 HttpTransportSE ht = new HttpTransportSE(wsURL); ht.call(null, envelope);
    // 獲取返回的數據
    SoapObject response = (SoapObject) envelope.bodyIn; return response;
    } catch (Exception e) {
    Log.e(TAG, e.getMessage(), e);}
    return null;
    }
    然后,獲取的短信驗證結果如下圖5-8所示:
     
     
     
    圖5-8 短信驗證
    若用戶非首次登錄,則可直接進入正常登錄界面,其中,當用戶輸入的手機
    號及密碼驗證失敗時,將提示登錄錯誤,具體運行界面如下圖5-9所示:
     
    圖5-9 登錄失敗
     
    5.2.3主界面
    若用戶登錄,驗證手機密碼及IMSI綁定信息成功,則進入考勤客戶端主界面, 如下圖5-10所示:
     
    圖5-10 主界面
     
    主界面采用“九宮格”布局實現,Layo ut .xm l布局代碼女口下:
    <GridView android:id="@+id/GridView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/mainbg" android:numColumns="auto_fit" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center">
    </GridView>
    主界面的Activity 活動類的初始代碼如下:
    GridView gridview = (GridView) f!ndViewById(R.id.GriRPiew);
    ArrayList<HashMap<String, Object>> menuList = new ArrayList<HashMap<String, Object>>();
    // 移動考勤按鈕
    HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemImage", R.drawable.attenR);
    map.put("ItemText","移動考勤 \n"); menuList.add(map) ;
    // 考勤記錄按鈕
    … // 省略
    // 通訊錄按鈕
    … // 省略
    // 信息管理按鈕
    … // 省略
    // 考勤管理按鈕
    … // 省略
    // 用戶管理按鈕 … // 省略
    // 更新軟件按鈕 … // 省略
    5.3員工信息管理模塊
    員工信息管理模塊主要可以分成信息管理界面、通訊錄界面兩個功能子模塊
    5.3.1員工信息管理
    員工信息管理模塊,員工可對個人的信息進行修改,包括姓名、性別、部門、 職務和郵箱信息,但賬號信息不允許修改,僅能通過注冊綁定或由管理員通過用 戶管理模塊進行調整。另外,修改的個人信息必須提交管理員審核后方可生效, 運行界面如下圖5-11所示:
     
    圖5-11 員工信息管理
     
    5.3.2員工通訊錄
    5.3.2.1 員工通訊錄離線包
    考慮到員工通訊錄模塊“來電顯示”的功能,為了確保用戶不論是否處在聯 網狀態都能實現呼入電話自動匹配后臺Sqlite數據庫并將匹配到的結果通過懸浮 窗方式展示在前臺來話界面,在設計實現上,特引入“通訊錄離線包”的概念, 即用戶首次使用通訊錄模塊時,根據用戶注冊的手機號碼聯網后臺服務器獲取該 用戶所在高校的所有員工的通訊錄離線包信息(即匹配下載離線包,故該模式即
    使推廣到多所高校共用時也可以確保各高校通訊錄信息的相互隔離保密),下載到 本地手機客戶端并注入后臺Sqlite數據庫,實現“離線查詢”。首次使用,匹配 后臺服務云端的通訊錄離線包實現界面如下圖5-12所示:
    0溫馨提示
    O 首次使用,自動匹配云端通訊錄離
    線包中…
    圖5-12 首次使用匹配離線包
    當匹配成功,則提示進入離線包下載界面,顯示下載更新進度條,運行界面 如下圖5-13所示:
     
    圖5-13 離線包下載
     
    同時,離線包下載的核心代碼如下:
    String[] param = new String[] { apkName, dbInfo, groupInfo,Base64.encoRe(imsi.getBytes()), "1" };
    SoapObject response = NetUtil.getWS(wsUrl, wsNameSpace,"getPhoneBook", param); if (servGroupInfo != null && !servGroupInfo.equalsIgnoreCase("0")) {
    // 異步調用,確保主界面不會假死 new Thread() { public void run() { handler.post(new Runnable() { public void run() {
    showWaitDialog( 1,"最新離線包版本:"+servDbinfo+".\n更新《” + servGroupInfo.replaceAll("'", "").replaceAll(",", "》,《") + "》通訊錄離線包中,預計1-3分鐘,請稍后...");
    }});
    } }.start(); // 開始更新通訊錄 new Thread(bookUpdateR).start();
    } else { //直接加載在主UI線程中方式 new Thread() {
    public void run() { handler.post(new Runnable() { public void run() {
    if (dbInfo.equalsIgnoreCase("0")) Toast.makeText(activity, "沒有在云端找到與您號碼匹配的 通訊錄離線包,請確認", Toast.LENGTH_LONG).show();
    else Toast.makeText(activity, "您當前的通訊錄離線包已經是最 新版", Toast.LENGTH_SHORT).show();
    }});
    } }.start();
    }
    5.3.2.2員工通訊錄主界面
    員工通訊錄主界面主要實現通過簡拼、姓名、手機號碼等方式查詢員工通訊
    錄信息,并支持短信和電話的呼出,以及長按保存聯系方式到本機通訊錄的功能, 具體實現如下圖5-14所示:
     
    圖5-14 通訊錄
    該界面的實現關鍵代碼主要包括發送短信事件、電話呼出事件、保存通訊錄
    事件部分,具體如下:
    //短信發送事件
    bSms.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) {
    // -1不重復,非-1為從pattern的指定下標開始重復 vibrator.vibrate(pattern, -1);
    ... // 獲取需發送的電話號碼,代碼省略
    // intent短信發送意圖
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + mobile));
    intent.putExtra("compose_mode", true); intent.putExtra("exit_on_sent", true); startActivity(intent);
    }
    });
    // 撥打電話事件
    bPhone.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) {
    ... // 震動設置,同短信發送,省略
    ... // 獲取需發送的電話號碼,代碼省略
    // intent電話撥打意圖
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mobile)); startActivity(intent);
    }
    });
    // 保存聯系方式事件
    tContact.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) {
    ... // 震動設置,同短信發送,省略
    ... // 獲取需保存的電話號碼、姓名等聯系信息,代碼省略
    // intent聯系方式保存意圖
    Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); intent. setType(People. CONTENT」TEM_TYPE); intent. putExtra(Contacts.Intents.InsertN^ME, name.substring(name.indexOf(".", 1) + 1, name.length() - 1));
    intent. putExtra(Contacts.Intents.Insert.PHONE,mobile);
    intent. putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns. TYPE^MO*ILE);
    intent. putExtra(Contacts.Intents.Insert.EM^I£,mobile + "@189.cn");
    intent. putExtra(Contacts.Intents.Insert.EM^I£_TYPE, Contacts.ContactM4ethodsColumns. TYPE_WORK);
    startActivity(intent);
    return false;
    }
    });
    5.3.2.3 來電顯示
    當用戶首次使用通訊錄,并正確下載了通訊錄離線包,此時,如果有本校內 同事電話呼入時,可以在來話界面顯示同事的通訊錄信息,代碼實現上,首先要 注冊來話監聽服務,并設置開機自啟動,關鍵代碼實現如下:
    @Override
    public void onReceive(Context context, Intent intent) {
    // 定義來話監聽的服務
    Intent service = new Intent(context, PhoneListenerServ.class);
    // 開啟服務
    context.startService(service);
    }
    <!-- 定義來話監聽服務 -->
    <service android:name=".service.PhoneListenerServ"></service>
    <!-- 定義開機自啟動廣播接收器 -->
    <receiver android:name=".service.BootBroadcastRec">
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
    </receiver>
    其實,實現來話監聽服務PhoneListenerServ.java,關鍵代碼為懸浮窗展示, 具體如下:
    @Override
    public void onCallStateChanged(int state, String incomingNbr) {
    switch (state) {
    // 空閑狀態
    case TelephonyManager.CALL_STATE_IDLE:
    if (wm != null) {
    ... // 變量和容器初始化,代碼省略
    }
    break;
    // 電話進來
    case TelephonyManager.CALL_STATE_RINGING:
    this.info = getNumInfo(incomingNbr);
    if (!info.equalsIgnoreCase("")) {
    if (tv == null){
    // 展示
    tv = new TextView(PhoneListenerServ.this);
    ... // 懸浮窗字體、背景、坐標等屬性設置,代碼省略
    tp.setFakeBoldText(true);
    // 觸摸監聽事件
    tvListener = new TextViewTouchListener();
    tv.setOnTouchListener(tvListener);
    }
    // 重置來電信息
    tv.setText(info);
    if (wm == null) {
    // 定義懸浮窗口
    wm = (WindowManager) PhoneListenerServ.this .getApplicationContext().getSystemService( Context.WINDOW_SERVICE);
    /*初始化wm參數*/
    params = new WindowManager.LayoutParams();
    // 設置窗口在所有窗口之上
    params.type = WindowManager.LayoutParams.TYPE_PHONE;
    // 讓懸浮窗口失去焦點 params.flags =
    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | indowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    // 懸浮窗口背景透明 params.format = PixelFormat.RGBA_8888;
    // 懸浮窗口布局 params.gravity = Gravity.TOP;
    params.y = 10; params.alpha = 50;
    params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; wm.addView(tv, params);
    }else{ wm.updateViewLayout(tv, params);
    }
    } break;
    // 電話接通
    case TelephonyManager.CALL_STATE_OFFHOOK:
    if (wm != null) {
    ... // 變量和容器重置,代碼省略
    }
    break; default:
    break;
    }
    }
    來電顯示運行界面如下圖5-15所示:
     
     
    5.4員工移動考勤模塊
    完成了考勤點的配置管理后,員工就可以實現一鍵考勤了,為了能直觀反映 員工考勤的當前位置,在實際應用開發實現中特引入“百度地圖” API接口。該 API接口在使用前,需要通過百度地圖官網進行非商用授權申請,并根據授權Key 實現百度地圖API接入使用,關鍵代碼實現如下: private String mStrKey = "B4767F48F2D1A07A7F3CBF0AB50F4833D5F4DA0E"; mapManager = new BMapManager(getApplication()); // 初始化 mapActivity // ini t方法的第一個參數需填入申請的API Key mapManager.init(mStrKey, new CtmapGeneralListener());
    super.initMapActivity(mapManager);
    mapView = (MapView) findViewById(R.id.attendMap); mapView.setBuiltInZoomControls(true); // 設置啟用內置的縮放控件 mapView.setDrawOverlayWhenZooming(true); // 設置在縮放動畫過程中也顯示 // 取得地圖控制器對象,用于控制 overlay mapController = mapView.getController();
    // 設置地圖默認的縮放級別
    MapView mapController.setZoom(15); overlays = mapView.getOverlays();〃 獲取overlay圖層列表 myLocationOverlay = new MyLocationOverlay(this, mapView); // 獲取位置層 overlays.add(myLocationOverlay); // 將位置層添加到地圖底層中 // 注冊定位事件 locationListener = new LocationListener(){
    @Override
    public void onLocationChanged(Location arg0) { if (argO != null && gpsModel){
    //生成GEO類型坐標并在地圖上定位到該坐標標示的地點
    lat = arg0.getLatitude();
    lon = arg0.getLongitude();
    point = new GeoPoint((int)(lat*1e6),(int)(lon*1e6)); mapController.animateTo(point);
    }
    }
    運行界面圖如下圖5-16所示:
     
    圖5-16 員工考勤
     
    另外,由于百度地圖與考勤點管理中設置的GPS考勤坐標存在不同坐標體系 差異,故在驗證用戶考勤有效性上,需要額外引入GPS坐標與百度坐標的轉換機 制,核心代碼如下:
    public String changeXY(String xx, String yy) {
    try {
    Socket s = new Socket("api.map.baidu.com", 80);
    BufferedReader br = new BufferedReader(new InputStreamReader(
    s.getInputStream(), "UTF-8"));
    OutputStream out = s.getOutputStream();
    StringBuffer sb = new StringBuffer("GET /ag/coord/convert?from=0&to=4"); sb.append("&x=" + xx + "&y=" + yy);
    //通過百度地圖API調用接口進行坐標轉換 sb.append("&callback=BMap.Convertor.cbk_3976 HTTP/1.1\r\n"); sb.append("User-Agent: Java/1.6.0_20\r\n");
    sb.append("Host: api.map.baidu.com:80\r\n");
    sb.append("Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n");
    sb.append("Connection: Close\r\n");
    sb.append("\r\n");
    out.write(sb.toString().getBytes());
    String json = "";
    String tmp ="”;
    while ((tmp = br.readLine()) != null) { json += tmp;
    }
    int start = json.indexOf("cbk_3976");
    int end = json.lastIndexOf("}");
    if (start != -1 && end != -1&& json.contains("\"x\":\"")) { json = json.substring(start, end); String[] point = json.split(",");
    String x = point[1].split(":")[1].replace("\"", "");
    String y = point[2].split(":")[1].replace("\"", "");
    // base64 解碼 BASE64Decoder decoder = new BASE64Decoder(); return (new String(decoder.decodeBuffer(x)) + "," + new String(decoder.decodeBuffer(y)));
    } out.close(); br.close();
    } catch (Exception e) e.printStackTrace();
    return “”;
    }
    5.5考勤記錄管理模塊
    考勤記錄管理模塊,在實現上考慮權限區隔,普通用戶角色僅能查詢自己的 考勤記錄,即根據員工登錄時綁定的手機號碼信息默認展示對應該手機號碼的考 勤記錄;管理員角色支持輸入框,并可以對考勤情況進行修改,實現如下圖5-17 所示:
     
    圖5-17 考勤記錄
    5.6系統管理模塊
    系統管理模塊主要可分解成考勤管理和用戶管理兩個功能子模塊:
    5.6.1考勤管理
    用戶進入考勤管理界面,可以根據實際需求,對考勤點進行新增或對現有考 勤點進行查詢修改,其中,考勤點新增信息和修改信息將通過Webservice方式同 步到后臺考勤服務器,類似的,考勤點查詢,也要通過與后臺考勤服務器交互, 并通過ListView控件進行返回信息的界面展示,關鍵代碼如下: lvContent = ((ListView) AttendanceManagement.this.findViewById(R.id.lvContent)); list = new ArrayList<HashMap<String, Object>>();
    //生成適配器的Item和動態數組對應的元素 listItemAdapter = new SimpleAdapter(
    this,
    list,
    R.layout.list,
    new String[] {"itemTitle", "itemText"},
    new i nt[] {R.id.itemTitleRId.itemText}// 對應 1 ist布局文件中的id); lvContent.setAdapter(listItemAdapter);
    // List監聽事件
    c1ass ButtonC1ickListener imp1ements View.OnC1ickListener {
    pub1ic void onC1ick(View v) {
    // 獲取輸入信息
    pointName = ((EditText) AttendanceManagement.this .findViewById(R.id.etext1)).getText().toString().rep1ace(" ", "");
    if (pointName.equa1s("")) {
    …〃提示"輸入內容為空,請重新輸入"
    } e1se {
    String[] param = new String[] { pointName };
    SoapObject response = NetUti1.getWS(WSURL, WSNAMESPACE,
    "getAttendPoint", param);
    if (response.getProperty(0) != nu11) {
    mainList = new ArrayList<HashMap<String, Object>>();
    String[] pointList = response.getProperty(0).toString().sp1it("<>");
    //加載List內容
    for(int i= 0; i< pointList.1ength ; i++){
    String[] pointName = pointList.toString().sp1it(";");
    HashMap<String, Object> map = new HashMap<String, Object>();
    // listIte m 賦值
    map.put("itemTit1e",pointName[0]);
    map.put("itemText",pointName[1]);
    mainList.add(map);} iistItemAdapter.notifyDataSetChanged(); }
    }}
     
    考勤管理界面實現上可分為考勤點列表界面及考勤點編輯界面,其中,考勤 點列表界面支持用戶輸入考勤點名稱,從而進行考勤點的模糊查詢,運行界面圖 如下圖5-18所示:
     
    圖5-18考勤點列表界面
     
    同時,通過長按上圖5-18的“本部校區”考勤點條目,則可進入考勤點編輯 界面,運行界面圖如下圖5-19所示:
     
    圖5-19 考勤點編輯界面
     
    通過考勤點編輯界面,若用戶在使用“獲取” GPS坐標信息時沒有開啟GPS模 塊功能,則界面將提示進行GPS功能設置,運行界面如下圖5-20所示:
     
    圖5-20無GPS信號
     
    該界面中最核心的代碼實現部分就是如何獲取GPS坐標信息,及如何建立坐 標監聽機制,實現當用戶位移超過10米的時候,重新獲取GPS坐標信息并返回到 前臺界面,關鍵代碼如下:
    btnGPS.setOnCiickListener(new OnCiickListener() {
    @Override
    //獲取GPS位置信息
    pubiic void onCiick(View v) {
    //通過系統服務取得im對象
    LocationManager iocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Location iocation = nuii;
    LocationListener iocationListener = nuii;
    if (iocationManager.isProviderEnabied(LocationManager.GPS_PROVIDER)) { Criteria criteria =new Criteria。;//設置Criteria (服務商)的信息 criteria. setAccuracy(Criteria.ACCURACY_FINE);〃 高精度 criteria. setAltitudeRequired(false);// 不要求海拔 criteria. setBearingRequired(false);// 不要求方位 criteria. setCostAllowed(true);// 允許有收費 criteria. setPowerRequirement(Criteria.POWER_HIGH);// 高功耗 〃取得效果最好的criteria
    String provider=iocationManager.getBestProvider(criteria, true);
    //通過GPS位置或Network提供器獲得位置
    iocation = iocationManager.getLastKnownLocation(provider);
    if (iocation != nuii) {
    iatitude = iocation.getLatitude(); iongitude = iocation.getLongitude(); showIndex("0.000");// 前臺展示坐標
    }
    locationListener = new LocationListener() {
    // Provider的狀態在可用、暫時不可用和無服務三個狀態切換時觸發 @Override
    public void onStatusChanged(String provider,int status, Bundle extras) {
    }
    // Provider被enable時觸發此函數,比如GPS被打開
    @Override
    public void onProviderEnabled(String provider) {
    }
    // Provider被disable時觸發此函數,比如GPS被關閉
    @Override
    public void onProviderDisabled(String provider) {
    }
    //當坐標改變時觸發,如果Provider傳進相同的坐標,它就不會被觸發
    @Override
    public void onLocationChanged(Location location) {
    if (location != null) {
    latitude = location.getLatitude(); // 緯度
    longitude = location.getLongitude(); // 經度 showIndex("0.000");// 前臺展示坐標
    }
    }
    };
    // 添加監聽
    locationManager.requestLocationUpdates(provider, 1000, 0, locationListener); } else {
    AlertDialog dialog = new AlertDialog.Builder(AttendancePoint.this).setTitle("GPS 設置”). setMessage("考勤點坐標獲取需要打開設備的GPS功能!"). setPositiveButton("設置",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) {
    Intent myIntent = new Intent();
    myIntent.setAction(
    Settings.ACTION_LOCATION_SOURCE_SETTINGS); myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(myIntent);
    }
    catch(ActivityNotFoundException ex) { myIntent.setAction(Settings.ACTION_SETTINGS); startActivity(myIntent);
    }
    } }).setNeutralButton("取消",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel();
    Toast.makeText(AttendancePoint.this,
     
    "GPS功能未開啟,定位功能將無法使用!", Toast.LENGTH_LONG).show();
    }
    }).create();
    dialog.show();
    }
    }
    });
    }
     
    5.6.2用戶管理
    用戶管理模塊,主要用于提供給管理員來新增、管理員工個人信息、員工密 碼、角色、考勤點,運行界面如下圖5-21所示:
     
     
    5.7系統輔助模塊 高校移動考勤系統輔助模塊設計和實現,主要是出于對系統易用性、人性化 設計和實現的需要,主要包括版本更新、底部友好菜單的實現:
    5.7.1版本更新
    考慮到高校移動考勤系統手機客戶端后續的演進,需對手機客戶端設計可支
    持版本判斷比對自動更新的功能,核心代碼如下:
    //版本更新線程
    public void run() { try {
    String]] param = new String]] { apkName, versionName };
    // Webservice方式調用獲取版本的方法
    SoapObject response = NetUtii.getWS(wsUri, wsNameSpace, "getCurrentVersion", param);
    servInfo = response.getProperty(0).toString(); diaiog.cancei();
    diaiog.dismiss();
    //直接加載在主UI線程中方式 new Thread() { pubiic void run() { handier.post(new Runnabie() { pubiic void run() { if (!servInfo.equaisIgnoreCase("NO")) { showUpdateDiaiog(titie, servInfo, rawIcon);
    }eise{ Toast.makeText(activity, "您當前的安裝包已經是最新版", Toast.LENGTH_SHORT).show();
    }
    }
    });
    }
    }.start(); } catch (Exception e) {
    ... // 錯誤捕獲,代碼省略
    }
    }
    // 版本更新對話窗口 pubiic void showUpdateDiaiog(String titie,String msg) { @SuppressWarnings("unused")
    AiertDiaiog aiert = new AiertDiaiog.Buiider(this.activity).setTitie(
    title).setMessage("有新版本,是否更新? \n"+msg)
    .setPositiveButton ("是",new Dia1ogInterface.OnC1ickListener() {
    pubiic void onCiick(DiaiogInterface diaiog, int which) {
    down1oadTheFi1e(strUr1);
    showWaitDia1og(2,"正在下載...");
    } }).setNegativeButton ("否", new Dia1ogInterface.OnC1ickListener() { pub1ic void onC1ick(Dia1ogInterface dia1og,int which) { dia1og.cance1();
    } }).show();
    }
    自動匹配APK包版本信息的運行界面圖如下5-22所示:
     
     
    圖5-22 請求更新
     
    匹配成功,發現服務端有最新的APK包可以提供下載,則彈出是否下載客戶 端新版的提示,運行界面圖如下5-23所示:
     
    圖5-23 更新安裝包
     
    5.7.2底部菜單
    完整的手機客戶端程序還應包括底部菜單,涉及快捷功能項的訪問,包括離
    線包更新、安裝包更新、使用指引、關于信息、短信分享以及退出,運行界面圖 如下5-24所示:
     
     
    圖5-24底部Menu
     
    5.8后臺Webservice考勤服務端
    高校移動考勤系統的后臺考勤服務端通過Werservice的方式進行部署,接受 前臺手機客戶端的請求,進行數據庫操作,并反饋請求結果,其業務邏輯及后臺 數據庫訪問的代碼架構圖如下圖5-25所示:
     
    圖5-25 后臺考勤服務端代碼框架
     
    除了核心Java類外,后臺考勤服務器端的實現,還包括手機客戶端版本號配 置文件Version.xml,具體如下:
    <xm1>
    <mattendance> <versionCode>1</versionCode> <versionName>1.2</versionName> <content >新增功能如下:
    1.優化GPS定位效率.
    </content> </mattendance>
    </xm1>
    除了客戶端版本號配置文件外,還包括數據庫配置信息db_config.xm1,如下: <xm1>
    <dw> <ur1>jdbc:orac1e:thin:@218.85.157.99:1521:dw1</ur1> <driver>orac1e.jdbc.driver.Orac1eDriver</driver> <username>**</username> <password>**</password>
    </dw>
    </xm1>
    5.9 本章小結
    本章從高校移動考勤系統的系統開發環境搭建入手,首先概要介紹了前臺手 機客戶端、后臺Webservice考勤服務端的代碼框架,然后分功能點依次介紹了員 工登錄模塊(主要包括啟動界面、員工登錄界面和主界面)、員工信息管理模塊(主 要包括信息管理界面和通訊錄界面)、員工移動考勤模塊(主要包括移動考勤界面) 考勤記錄管理模塊(主要包括考勤記錄界面)、系統管理模塊(主要包括考勤管理 界面和用戶管理界面)、系統輔助模塊(主要包括版本更新和底部菜單)等的技術 實現和功能實現。
    第六章 系統測試及結論
    系統測試,是通過一系列的測試方案和流程對軟件進行功能測試和性能測試, 以檢驗軟件的設計和實現是否符合用戶的需求。對高校移動考勤系統來說,功能 測試是通過設計各種功能測試用例來驗證系統員工登錄、員工信息管理、員工移 動考勤、考勤記錄管理、系統管理五大模塊是否存在BUG或達到用戶要求;性能 測試則側重系統各項非功能需求,如準確性、快速響應性、易用性及不可替簽性。
    6.1系統測試
    結合系統功能測試的方法論,從是否關心軟件內部邏輯結構的角度出發,可 以分為黑盒測試、白盒測試;從軟件開發過程的階段測試角度出發,可以分為單 元測試、集成測試、Alpha測試、Beta測試等等。本系統的測試主要采用了單元 測試、黑盒測試和白盒測試。由于篇幅問題,在此就不對全部的測試方法和流程 進行一一闡述,以下重點以員工移動考勤、員工通訊錄兩個模塊為例介紹本系統 所進行的黑盒測試,該方法把軟件看成一個密閉不透明的盒子,其內部特征結構 不作為任何參考依據,主要針對界面和功能,通過輸入數據檢驗是否產生正確的 輸出信息作為測試通過與否的依據。
    1、員工移動考勤模塊測試,具體測試用例見下表6-1所示:
    表6-1 員工移動考勤
    用例編號: TC01 項目名稱: 高校移動考勤系統
    模塊名稱: 員工移動考勤 測試日期: 2013-07-23 測試人員: 林延珊
    測試類型: 功能測試 測試方法: 黑盒測試
    測試內容: 員工到指定地點進行移動考勤是否成功
    測試準備: 1、 林延珊員工的手機號碼己經成功鑒權通過,并與IMSI號綁定;
    2、 通過“考勤管理”界面新增“齊安校區”考勤點,完善相關信息;
    3、 通過“用戶管理”界面設置林延珊員工的默認考勤地點為“齊安校區”。
    測試步驟: 1、 林延珊到達齊安校區門口,打開高校移動考勤系統,進入“移動考勤”界 面,查詢地圖定位情況;
    2、 點擊“簽到”按鈕,查看簽到結果。
    測試結果: 1、 地圖準確定位到“齊安校區”;
    2、 簽到結果正確無誤。
    測試結論: 正常
     
     
    2、員工通訊錄模塊測試,具體測試用例見下表6-2所示:
    表6-2 員工通訊錄
    用例編號: TC02 項目名稱: 高校移動考勤系統
    模塊名稱: 員工通訊錄 測試日期: 2013-07-23 測試人員: 林延珊
    測試類型: 功能測試 測試方法: 黑盒測試
    測試內容: 員工通過員工通信錄進行離線包下載、通訊錄查詢、電話呼出、短信呼出、通 訊錄保存、來電顯示是否成功
    測試步驟: 1、 打開高校移動考勤系統,進入“通訊錄”界面,查看離線包下載及更新情 況;
    2、 在“輸入框”輸入員工中文姓名,點擊“查詢”按鈕,查看查詢目標對象 通訊錄信息展示情況;
    3、 在“輸入框”輸入員工姓名簡拼,點擊“查詢”按鈕,查看查詢目標對象 通訊錄信息展示情況;
    4、 在“輸入框”輸入員工手機號碼,點擊“查詢”按鈕,查看查詢目標對象 通訊錄信息展示情況;
    5、 在查詢出的目標員工通訊錄信息中點擊“電話”按鈕,查看電話呼出情況;
    6、 在查詢出的目標員工通訊錄信息中點擊“短信”按鈕,查看短信呼出情況;
    7、 長按查詢出的目標員工通訊錄信息條,查看通訊錄保存到本機的情況;
    8、 用校內其他已登記員工的手機號碼進行呼入,查看來電顯示情況。
    測試結果: 1、 離線包下載正常并加載成功;
    2、 通過員工姓名中文、簡拼或手機號碼方式可以準確查詢到目標員工通訊錄 信息;
    3、 通訊錄的電話及短信呼出功能正常;
    4、 通訊錄的長按保存通訊錄信息到本機的功能正常;
    5、 通訊錄來電顯示功能正常。
    測試結論: 正常
     
    同時,對于系統非功能測試,以下重點以快速響應性指標為例進行測試過程 的描述:當員工到達考勤地點后點擊“簽到”按鈕后,記錄此刻的系統時間為A; 當手機客戶端GPS模塊返回GPS位置坐標信息并發往考勤服務器完成簽到操作后, 記錄此刻的系統時間為B。B-A的時間差即為本系統考勤的響應指標。系統性能測 試的目標是該響應指標在0-5秒的合理范圍內。通過組織福建生物工程職業技術學 院行政及授課老師在“齊安校區”測試的情況,對于手機CPU為600MHz、RAM 為256MB的硬件環境下(如華為C8650),響應指標為4.5秒左右;對于手機CPU 為1GHz、RAM為512MB的硬件環境下(如摩托羅拉Me811),響應指標為2秒 左右。考慮到目前安卓智能手機的硬件配置均在摩托羅拉Me811相當配置及以上, 得出本系統的快速響應性指標達標。
    6.2測試結論
    結合系統測試的方法論,對高校移動考勤系統完成了功能測試和性能測試, 測試結果正確無誤,符合系統需求分析和設計的要求,滿足了用戶用于日常考勤、 通訊錄使用的需求。
    6.3本章小結
    系統測試是軟件開發過程中的重要環節,是軟件質量的重要保證。本章重點 結合系統測試方法論,對高校移動考勤系統進行了功能測試及性能測試,并得出 本系統基本滿足用戶要求的結論。
    第七章 總結與展望
    本文基于當前高校傳統考勤方式存在的弊端和瓶頸,設計了一個基于GPS位 置服務,以移動智能手機為使用載體的高校移動考勤系統,實現了高校教職工的 “一鍵考勤”,確保了考勤結果及時、準確,有效解決了傳統單一的考勤手段所帶 來的管理成本高、考勤效果差的問題。同時,讓異地任教、出差、培訓、會務等 工作場景有了操作便捷、成本低廉的考勤手段,另外,由于考勤結果與后臺考勤 服務器保持實時同步,讓原有異地考勤信息采集難、報送難的問題得到了很好地 解決。
    高校移動考勤系統,除了核心的考勤模塊外,還附加了員工通訊錄的模塊, 提升了單位員工間溝通聯系的便捷性和及時性,真正脫離了紙質電話簿、本機手 工維護的通訊錄,通過后臺服務器統一維護和確保單位員工通訊錄信息的正確性, 大大節省了用戶花費在日常通訊錄維護上的時間。
    高校移動考勤系統,除了移動考勤、通訊錄等功能模塊的設計和創新外,還 引入了一個技術亮點,為了防止員工利用移動考勤的“無人工干預性”,而出現的 “替人考勤”情況,系統在員工登錄模塊的設計和實現上,除了普遍的“密碼校 驗”夕卜,還添加了 “身份鑒權”的步驟,即通過將員工手機號與手機卡I MS I號綁 定的方式確保所考勤即所人,確保了考勤結果的客觀、有效。
    7.1本文的主要工作
    在高校移動考勤系統的設計和實現過程中,本人主要做了以下工作:
    1、 在對本文的高校移動考勤系統進行詳細需求分析之后,給出了系統的需求 建設方案,并針對系統的運行性能、安全及接口進行了需求分析。
    2、 通過對系統需求的深入分析,實現了總體架構設計及系統模塊的劃分,涉 及的模塊包括:員工登錄模塊、員工信息管理模塊、員工移動考勤模塊、考勤記 錄管理模塊以及系統管理模塊。
    3、 結合系統總體設計實際,描述了系統詳細功能處理流程及設計界面;設計 了系統數據庫模塊,實現了數據關系圖及表結構;規范了系統接口及實現方式。
    4、 依據詳細設計中系統的功能模塊劃分,對員工登錄模塊(主要包括啟動界 面、員工登錄界面和主界面)、員工信息管理模塊(主要包括信息管理界面和通訊 錄界面)、員工移動考勤模塊(主要包括移動考勤界面)、考勤記錄管理模塊(主 要包括考勤記錄界面)、系統管理模塊(主要包括考勤管理界面和用戶管理界面)、 系統輔助模塊(主要包括版本更新和底部菜單)進行界面及關鍵代碼實現。
    5、結合系統測試理論及方法,采用單元測試、黑盒測試和白盒測試對系統進 行了功能測試和性能測試,得出本系統在設計和實現上基本符合用戶要求的結論。
    7.2下一步工作展望
    作為移動互聯網時代考勤手段的創新模式,移動考勤系統的設計和實現,是 一種管理手段的創新。在下一步的工作計劃中,將致力于該系統功能模塊完善以 及實施推廣。其中,系統功能模塊完善方面,設想在目前已引入主流且免費的百 度地圖的基礎上,繼續在百度地圖上完善考勤軌跡、統計的展示功能;系統實施 推廣方面,設想先在福建生物工程職業技術學院300名教職工身上進行試用,后 續將考慮陸續拓展到兄弟院校,如交通職業技術學院、中醫藥大學、福建醫科大 學、福州外語外貿學院等。
    在論文完成之際,我要衷心感謝我的導師尚明生教授對我論文工作的指導和 幫助。從論文的開題答辯、中期報告、論文撰寫及論文答辯的每個階段,都少不 了尚教授的點撥和教導,不論是電話或是郵件,都流露出尚教授誨人不倦、循循 善誘的教師風范,其對待學習、科研上一絲不茍的態度,是我研究生課程之外又 一重大的收獲。
    同時,我還要感謝論文答辯組的老師們對我的論文提出的寶貴意見和建議, 使我的論文水平能夠不斷提升。
    另外,我還要對中國電信福州分公司的陳林曼高工表達誠摯的謝意,她目前 就職于電信的業務研發中心,其在通訊和定位領域的理論和見解對我產生了很大 的幫助。
    最后,向在百忙中抽空對本文進行評審的專家表示崇高的敬意,你們的辛勤 勞作,成就了一批批優秀的畢業生,謝謝。
    參考文獻
    [1]中興通訊股份有限公司.CT/T SN RC1 LCS V1.0.0.中國電信CDMA定位業務設備規范[S]. 北京:中國電信集團公司, 2008年3月
    [2]吳學偉,伊曉東.GPS定位技術與應用[M].北京:科學出版社,2010年12月
    [3]于吉海.全球衛星定位系統簡介[J].地理教育,2009年06期
    [4]黃丁發.GPS衛星導航定位技術與方法[M].北京:科學出版社,2009年6月
    [5]易鳴鏑,顧洪夫,陳廣飛.GPS定位原理淺析及誤差分析[J].中國數據通信,2005年03期
    [6]H. Wellenhof, Lichtenegger, Wasle.全球衛星導航系統(GPS,GLONASS,Galileo 及其他系統)
    [M].北京:測繪出版社,2009年8月
    [7]張傳福.移動互聯網技術及業務[M].北京:電子工業出版社,2012年1月
    [8]R. Ferraro, M. Aktihanoglu. Location-Aware Applicatione[M]. Manning Publications, July 28, 2011
    [9]霍爾澤.Eclipse集成開發工具[M].南京:東南大學出版社,2005年10月
    [10]燕孝飛.完全掌握Eclipse項目開發實戰[M].北京:科學出版社,2009年8月
    [11]李利,邵秀鳳.實用Java語言程序設計一基于Eclipse[M].北京:北京郵電大學出版社, 2009年8月
    [12]郭宏志.Android應用開發詳解[M].北京:電子工業出版社,2010年6月
    [13]S. Conder, L. Darcey. Android移動應用開發從入門到精通[M].北京:人民郵電出版社,2010 年7月
    [14]阿姆斯特朗.Java Web Service教程[M].北京:高等教育出版社,2003年1月
    [15]L. Maciaszek. Requirements Analysis and Systems Design[M]. Addison-Wesley, June 22, 2007
    [16]R. Miles, K. Hamilton. Learning UML 2.0[M]. O'Reilly Media, May 2, 2006
    [17]譚云杰.Thinking in UML(第2版)[M].北京:中國水利水電出版社,2012年3月
    [18]楊繼萍.Visio 2007圖形設計從新手到高手[M].北京:清華大學出版社,2008年11月
    [19]畢特納,思朋斯.迭代軟件開發項目管理[M].北京:清華大學出版社,2010年3月
    [20]I. Sommerville. Software Engineering[M]. Addison Wesley, March 13, 2010
    [21]蔡敏,徐慧慧,黃炳強.UML基礎與Rose建模教程[M].北京:人民郵電出版社,2006年1 月
    [22]E. Hewitt. Java Soa Cookbook[M]. O'Reilly Media, April 2, 2009
    [23]J. Whitten, L. Bentley. Systems Analysis and Design Methods[M]. Hardcover, January 22, 2005
    [24]普里斯.Oracle Database 10g SQL開發指南[M].北京:清華大學出版社,2005年5月
    [25]丁士鋒.Oracle PL/SQL從入門到精通[M].北京:清華大學出版社,2012年6月
    [26]J. Casteel. Oracle 10g: SQL[M]. Joan Course Technology, January 27, 2006
    [27]艾倫,歐文斯.SQLite權威指南(第2版)[M].北京:電子工業出版社,2012年1月
    [28]崔妍.基于GPS的兒童實時定位監護系統的設計與實現[D].哈爾濱:哈爾濱工程大學,
    2012
    [29]B. Eckel. Thinking in Java (4th Edition) [M]. Prentice Hall, February 20, 2006
    [30]余志龍.Google Android SDK開發范例大全(第3版)[M].北京:人民郵電出版社,2011年
    11 月
    [31]王家林.大話企業級Android應用開發實戰[M].北京:電子工業出版社,2011年8月
    [32]斯蒂芬森,普勞,瓊斯.SQL入門經典(第5版)[M].北京:人民郵電出版社,2011年11月
    [33]顧寧,劉家茂,柴曉路.Web Services原理與研發實踐[M].北京:機械工業出版社,2006年 1月
    [34]J. Brittain, I. F. Darwin. Tomcat權威指南(第2 版)[M].北京:中國電力出版社,2009年9月
    [35]J. Ostrander,劉文斌.Android UI基礎教程[M].北京:人民郵電出版社,2012年10月
    [36]吳亞峰,蘇亞光.Android應用案例開發大全[M].北京:人民郵電出版社,2011年9月
    [37]Z. Mednieks, L. Dornin, G.B. Meike, et al. Programming Android[M]. O'Reilly Media, August 5, 2011
    [38]苑潔.軟件學院工程碩士論文過程管理系統的分析與測試[D].北京:北京郵電大學,2010
    [39]佩騰.軟件測試[M].北京:機械工業出版社,2006年4月
    [40]趙斌.軟件測試技術經典教程[M].北京:科學出版社,2011年3月
    【本文地址:http://www.bzhlmm.com//guanlilei/gongshangguanli/xixinguanli/5866.html

    上一篇:國內外個人征信信息管理系統的比較分析

    下一篇:基于BIM的大型復雜工程信息管理研究

    相關標簽: