![基于JAVA的無線人員定位管理軟件設(shè)計論文正稿_第1頁](http://file4.renrendoc.com/view/3c5625b12c471468f5a0f79665d43ebe/3c5625b12c471468f5a0f79665d43ebe1.gif)
![基于JAVA的無線人員定位管理軟件設(shè)計論文正稿_第2頁](http://file4.renrendoc.com/view/3c5625b12c471468f5a0f79665d43ebe/3c5625b12c471468f5a0f79665d43ebe2.gif)
![基于JAVA的無線人員定位管理軟件設(shè)計論文正稿_第3頁](http://file4.renrendoc.com/view/3c5625b12c471468f5a0f79665d43ebe/3c5625b12c471468f5a0f79665d43ebe3.gif)
![基于JAVA的無線人員定位管理軟件設(shè)計論文正稿_第4頁](http://file4.renrendoc.com/view/3c5625b12c471468f5a0f79665d43ebe/3c5625b12c471468f5a0f79665d43ebe4.gif)
![基于JAVA的無線人員定位管理軟件設(shè)計論文正稿_第5頁](http://file4.renrendoc.com/view/3c5625b12c471468f5a0f79665d43ebe/3c5625b12c471468f5a0f79665d43ebe5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
WORD格式整理版./WORD格式整理版畢業(yè)論文基于JAVA的無線人員定位管理軟件設(shè)計摘要近年來,隨著監(jiān)獄在押人員的不斷上升,僅依靠傳統(tǒng)的視頻監(jiān)控或門禁報警系統(tǒng)已顯得獨木難支,不能做到全方位、多功能的監(jiān)控。因此,提高看守所安防管理水平,建立綜合高效的信息監(jiān)管平臺已成必然趨勢。本課題研究的主要內(nèi)容是設(shè)計一個無線人員定位管理軟件,此軟件具有對看守所在押人員的基本信息的增加、查詢、刪除、修改,人員路徑再現(xiàn)以及用戶帳戶管理等功能。本軟件以流行的Java語言為開發(fā)語言,以開源的Eclipse為開發(fā)開臺,以免費的MySQL作為后臺開發(fā)數(shù)據(jù)庫,并利用引路蜂地圖開發(fā)包實現(xiàn)人員定位功能的一個跨平臺的人員管理系統(tǒng)。本文首先對Java程序編程的基礎(chǔ)知識,JDBC數(shù)據(jù)庫技術(shù),圖形界面開發(fā)技術(shù),引路蜂地圖開發(fā)包等軟件開發(fā)的相關(guān)技術(shù)做出了簡單的介紹。在此基礎(chǔ)之上,介紹了本課題的創(chuàng)新點,給出了軟件的總體設(shè)計方案和各功能模塊的實現(xiàn)。關(guān)鍵詞:無線定位;Java;引路蜂;JDBC;Eclipse;跨平臺AbstractInrecentyears,withthenumberofprisonersontherise,wecannotonlyrelayonthetraditionalvideosurveillanceoraccesscontrolalarmsystemfortheycannotdotheall-round,multi-functionmonitoring.Therefore,ithasbecomeaninevitabletrendtoestablishacomprehensiveandefficientmonitoringplatformtoimprovethedetentioncentersecuritymanagementlevel.Themaincontentofthisresearchprojectistodesignawirelesspositioningmanagementsoftware.Thesoftwarehasthefunctionofadd,query,delete,modifyandexportthebasicinformationheldindetentioncenter.What’smore,italsohasuseraccountmanagementfunction.Thecross-platformpersonnelmanagementsystemisasoftwarethatusesJavaasadeveloplanguage,theopensourceEclipseasIntegratedDevelopmentEnvironment,thefreeMySQLasdevelopmentdatabase,andtheGuidebeeMapDevelopmentKitforpositioning.FirstImake??abriefintroductiontoJavaprogramming,theJDBCdatabasetechnology,GraphicalUserInterfaceprograming,andGuidebeeMapdevelopmenttechnology.Onthisbasis,Igivetheoveralldesignofthesoftwareandthedesignofeachfunctionalmodule.Keywords:wirelesspositing;Java;GuidebeeMap;JDBC;Eclipse;cross-platform目錄摘要Abstract第1章緒論 11.1課題意義及目的 11.2課題主要研究的內(nèi)容 1第2章軟件開發(fā)相關(guān)技術(shù)介紹 32.1Java程序編程基礎(chǔ) 32.1.1Java的起源及其發(fā)展 32.1.2Java程序運行原理 32.2Eclipse開發(fā)平臺 52.3數(shù)據(jù)庫技術(shù) 62.2.1SQL語言概述 62.2.2JDBC模型 72.2.3JDBC的工作方式 82.2.4MySQL數(shù)據(jù)庫 102.4圖形界面開發(fā)技術(shù) 102.4.1Swing組件類的層次 112.4.2Swing事件處理機制 132.4.3Swing中的布局管理 132.4.4設(shè)置應(yīng)用程序外觀 162.5引路蜂電子地圖開發(fā)技術(shù) 172.5.1引路蜂地圖API概述 172.5.2地圖開發(fā)包類的定義 182.5.3地圖對象類的層次關(guān)系 202.5.4地圖圖片讀取類層次關(guān)系 212.5.5圖形子系統(tǒng) 222.5.6地圖配置 24第3章系統(tǒng)總體設(shè)計 253.1系統(tǒng)功能描述 253.2軟件總體設(shè)計 263.2.1軟件總體結(jié)構(gòu)圖 26系統(tǒng)開發(fā)原則 263.3系統(tǒng)的通信協(xié)議 27第4章軟件各模塊的實現(xiàn) 284.1用戶登錄的設(shè)計 284.2在押人員管理模塊設(shè)計 28查詢在押人員信息模塊 29新增在押人員信息模塊 30修改在押人員基本信息模塊 30刪除在押人員信息模塊 31導出在押人員信息模塊 32顯示在押人員路徑模塊 324.3用戶管理模塊設(shè)計 33增加帳戶模塊 34刪除帳戶模塊 34修改帳戶密碼模塊 354.4數(shù)據(jù)庫中表的設(shè)計 354.5本章小結(jié) 38第5章項目創(chuàng)新點 395.1軟件的平臺無關(guān)性 395.2基于桌面系統(tǒng)的Java地圖應(yīng)用 395.3采用最新的地圖顯示技術(shù) 39第6章結(jié)束語 40參考文獻 41致謝 42.第1章緒論1.1課題意義及目的近年來,雖然監(jiān)控技術(shù)高速發(fā)展,但看守所中在押人員的狡詐意識也逐漸增強,犯罪種類有增無減,常常出現(xiàn)聚眾斗毆、自殘、逃跑等現(xiàn)象,因此,提高看守所安防管理水平,建立綜合高效的信息監(jiān)管平臺已成必然趨勢[1]。目前,已有的安防系統(tǒng)大都只能實現(xiàn)對定點人群的定位,無法對移動人群進行定位,因此對于出逃在外的在押人員,監(jiān)管人員無法判斷其出逃方向,更無法獲得其出逃路線,不利于高效地追捕。因此,設(shè)計一套無線人員定位管理系統(tǒng),可以解決移動人群的追蹤定位問題,具有廣泛的社會需求和廣闊的市場前景。在信息技術(shù)不斷發(fā)展的今天,利用無線人員定位管理系統(tǒng),能夠有效地監(jiān)控高危在押人員,防止在押人員的出逃,追查及跟進暴力事件的發(fā)生,最大限度的保障監(jiān)管人員和在押人員的人身安全,并促進監(jiān)獄安全技術(shù)防范系統(tǒng)向集成化、網(wǎng)絡(luò)化、智能化的進一步發(fā)展,具有一定的創(chuàng)新意義及實用價值。1.2課題主要研究的內(nèi)容本課題以WindowsXP為開發(fā)平臺,以Java為開發(fā)語言,以Eclipse作為集成開發(fā)工具,MySQL作為后臺開發(fā)數(shù)據(jù)庫。本文從上位機軟件出發(fā),利用面向?qū)ο?、?shù)據(jù)庫、Swing、多線程等技術(shù),采用引路蜂的J2SE地圖開發(fā)包,設(shè)計并實現(xiàn)無線人員定位管理系統(tǒng)軟件。此軟件具有看守所在押人員的基本信息閱覽、新增、查詢、刪除、修改,人員路徑再現(xiàn)以及用戶帳戶管理的功能。通過這個軟件查看每個在押人員的基本信息,并進行修改,并且可以結(jié)合引路蜂地圖,查看在押人員的行進路線。為了提升系統(tǒng)的安全性,所有用戶只有在登錄后才可以使用本系統(tǒng)。同時,為了方便不同的人員對在押人員進行管理,軟件中設(shè)置了帳戶管理的功能。本論文的主要研究內(nèi)容如下:<l>學習和掌握Java編程語言、Eclipse開發(fā)平臺、JDBC數(shù)據(jù)庫技術(shù)、Swing應(yīng)用程序開發(fā)包和引路蜂地圖開發(fā)包的使用。<2>分析整個無線定位管理軟件系統(tǒng)的總體框架及其功能特點。<3>根據(jù)用戶需求設(shè)計出無線定位管理軟件系統(tǒng),給管理人員提供可視化界面,實現(xiàn)對看守所在押人員的基本信息的閱覽、新增、查詢、刪除、修改,人員路徑再現(xiàn)等功能。<4>對軟件進行現(xiàn)場測試,以驗證設(shè)計的可行性、準確性和優(yōu)越性。第2章軟件開發(fā)相關(guān)技術(shù)介紹2.1Java程序編程基礎(chǔ)2.1.1Java的起源及其發(fā)展Java是Sun公司開發(fā)出來的一套編程語言,最早來源于一個叫Green的項目。這個項目原來的目的是為家用電子消費產(chǎn)品開發(fā)一個分布式的代碼系統(tǒng),這樣就可以通過網(wǎng)絡(luò)對家用電器進行控制。開始Sun公司的工程師準備采用C++[2],但由于C++過于復雜,安全性差,最后決定基于C++開發(fā)一種新語言〔Oak語言。Oak是一種用于網(wǎng)絡(luò),精巧而安全的語言,Sun公司曾以此投標過一個交互式電視項目,結(jié)果被SGI打敗。恰巧此時MarkAndreessen開發(fā)的Mosaic和Netscape啟發(fā)了Oak的成員,Sun的工程師們用Java編制了HotJava瀏覽器,觸發(fā)了Sun進軍Internet[3]。Java語言發(fā)展到至今經(jīng)歷了一系列的過程,Java在1995年5月23日推出了JDK1.0版本,此版本標志著Java正式進軍Internet的開始。在1998年,Sun公司推出了JDK1.2開發(fā)包,該版本加入了大量的輕量級組件,從此以后Java正式被命名為JDK2。在此之后,Sun公司也陸續(xù)發(fā)布了一系列的Java開發(fā)包版本,目前最新版本的JDK為JDK7[4]。2.1.2Java程序運行原理Java中有兩類應(yīng)用程序,一類是有自己獨立運行入口點的Java應(yīng)用程序,另一類是嵌入在Web頁面中由Web瀏覽器來控制運行的Java小程序〔Applet[5]。在運行時,它們都需要Java運行系統(tǒng)的支持,對于Java運行程序,Java運行系統(tǒng)一般是指Java解析器;而對于Applet,Java運行系統(tǒng)一般是指運行Applet的與Java相兼容的Web瀏覽器,并且其中包含了支持Applet運行的環(huán)境。Java運行系統(tǒng)的功能是對字節(jié)碼進行解析和執(zhí)行,其工作過程可以分為以下三步。〔1由類裝載器完成字節(jié)碼的裝載。在裝載過程中,程序運行時所需要的所有代碼都被裝載。完成后,節(jié)節(jié)碼中便保留了地址的符號引用信息,運行系統(tǒng)通過建立的地址符號引用信息與內(nèi)存之間的對照來確定程序的內(nèi)存分配?!?由字節(jié)碼檢驗器對字節(jié)碼進行安全性檢查。這種檢查可以排除字節(jié)碼中可能存在的違反訪問權(quán)限,不規(guī)范數(shù)據(jù)類型以及非法調(diào)用等問題。〔3字節(jié)碼的翻譯和執(zhí)行。Java字節(jié)碼的運行可能有兩種方式,一種是通過代碼生成器,先將字節(jié)碼翻譯成適用于本系統(tǒng)的機器碼,然后再送到硬件去執(zhí)行,這是一種編譯性工作方式。另一種是通過解析器將字節(jié)碼翻譯成機器碼,然后由即時運行部件將機器碼送到硬件去執(zhí)行,這是一種解析性工作方式。Java運行系統(tǒng)一般采用第二種工作方式,只有對那些運行速度要求較高,才采用編譯性工作方式,這時就需要使用特定的代碼生成器來完成編譯,從而保證Java程序代碼的高性能[6]。2.2Eclipse開發(fā)平臺Eclipse是一個開放源代碼的,基于Java的可擴展開發(fā)平臺,它通過插件組件構(gòu)成開發(fā)環(huán)境。Eclipse附帶了一個標準的插件集,其中最著名的插件當屬Java開發(fā)工具〔JavaDevelopmentTools,JDT[7],其界面的主界面如圖2-1所示。最初主要用來Java語言開發(fā),但是目前亦有人通過外掛程式使其作為其他計算機語言比如C++和Python的開發(fā)工具。Eclipse本身只是一個框架平臺,但是眾多外掛程式的支持使得Eclipse擁有其他功能相對固定的IDE軟體很難具有的靈活性。許多軟體開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse最初由IBM公司開發(fā),20XX11月貢獻給開源社區(qū),現(xiàn)在它由非營利軟體供應(yīng)商聯(lián)盟Eclipse基金會〔EclipseFoundation管理[8]。圖2-1Eclipse程序主界面在用最新版本的Eclipse開發(fā)桌面應(yīng)用程序時,既可以直接編寫代碼來設(shè)計應(yīng)用程序界面,也可以使用Eclipse的VisualSwingDesigner來進行界面的可視化設(shè)計。VisualSwingDesigner是一個Swing界面設(shè)計工具插件,代碼的生成和解析不需要依賴于form文件,而且生成的代碼可讀性很好,支持代碼跟界面實時的切換。它還支持表格和樹的可視化設(shè)計,程序員在設(shè)計表格和樹模型時,不需要編寫復雜的代碼,直接從采用界面操作便可以生成表格和樹的數(shù)據(jù)模型代碼。在一般情況下,可以通過VisualSwingDesigner來設(shè)計程序的基本界面,再通過用戶定制一些代碼往往能更快地進行應(yīng)用程序的快速開發(fā)。Eclipse的使用大大減少了程序員開發(fā)程序的工作量,尤其是在程序界面設(shè)計方面。同時擁有對代碼錯誤信息的實時提示功能,當程序代碼出現(xiàn)錯誤時,Eclipse會在代碼左邊顯示出錯誤提示,點擊它能夠幫助程序員自動更正錯誤。2.3數(shù)據(jù)庫技術(shù)程序設(shè)計中離不開數(shù)據(jù)庫的支持,每個程序的設(shè)計都是使用數(shù)據(jù)庫保存數(shù)據(jù)。JDBC是Java程序連接和存取數(shù)據(jù)庫的應(yīng)用程序接口,是Java核心API的一部分。JDBC使程序員能夠利用當前最新的數(shù)據(jù)庫特征,如同時連接多個數(shù)據(jù)庫等。JDBC支持靜態(tài)和動態(tài)的SQL語句〔在運行時組建查詢和更新語句。JDBC最大的特點是無論后臺是何種數(shù)據(jù)庫,對于Java程序員而言,它的工作方式完全相同。JDBC為許多不同的數(shù)據(jù)庫連接模塊的前端提供了統(tǒng)一的接口,這樣就不用為連接不同的數(shù)據(jù)庫而煩惱了。當需要為程序修改數(shù)據(jù)庫時,程序基本上只要修改在代碼中修改數(shù)據(jù)庫的驅(qū)動,URL,用戶名,密碼,其他的地方基本上是沒有發(fā)生變化的。2.3.1SQL語言概述SQL<StructureQueryLanguage,結(jié)構(gòu)化查詢語言>,是一個功能強大的數(shù)據(jù)庫語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通[9]。20世紀80年代初,美國國家標準局〔ANSI開始著手定制SQL標準,最早的ANSI標準于1986年完成,叫做SQL-86。標準的出臺使SQL作為標準關(guān)系數(shù)據(jù)庫語言的地位得到了加強。SQL標準目前已幾經(jīng)修改,更趨完善。正是由于SQL語言的標準化,所以大多數(shù)關(guān)系型數(shù)據(jù)庫都支持SQL語言,它已經(jīng)發(fā)展成為多種平臺進行交互操作的底層會話語言。SQL語句主要可以劃分為以下3個類別?!?DDL<DataDefinitionLanguages>語句:數(shù)據(jù)定義語言,這些語句定義了不同的數(shù)據(jù)段、數(shù)據(jù)庫、表列、索引等數(shù)據(jù)庫對象的定義。常用的語句關(guān)鍵字主要包括create、drop等。〔2DML<DateManipulationLanguage>語句:數(shù)據(jù)操縱語句,用于添加、刪除、更新和查詢數(shù)據(jù)庫記錄,并檢查數(shù)據(jù)完整性。常用的語句關(guān)鍵字主要包括insert、delete、update和select等?!?DCL〔DataControlLanguage語句:數(shù)據(jù)控制語句,用于控制不同數(shù)據(jù)段直接的許可和訪問級別的語句。這些語句定義了數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別。2.3.2JDBC模型JDBC由編程語言編寫的類及接口組成,同時它也為程序開發(fā)人員提供了一組用于實現(xiàn)對數(shù)據(jù)庫訪問的API,并支持SQL語言。利用JDBC可以將Java代碼連接到Oracle,SQLServer,MySQL等數(shù)據(jù)庫,從而實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的相關(guān)操作[10]。JDBC為數(shù)據(jù)庫應(yīng)用開發(fā)人員和數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標準的應(yīng)用程序設(shè)計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序用JDBC寫的程序能夠自動地將SQL語句傳送給相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)。不但如此,使用Java編寫的應(yīng)用程序可以在任何支持Java的平臺上運行,不必在不同的平臺上編寫不同的應(yīng)用程序[11]。JDBC由兩層組成,上面一層是JDBCAPI,下面一層是JDBC驅(qū)動程序API。JDBCAPI負責與JDBC管理器驅(qū)動程序API進行通信,將各個不同的SQL語句發(fā)送給它。驅(qū)動程序管理器與實際連接到數(shù)據(jù)庫的第三方驅(qū)動程序進行通信,并且返回查詢的信息,或者執(zhí)行由查詢規(guī)定的操作[12]。它主要由以下四個部分組成。<l>Java程序Java程序包括應(yīng)用程序,Applet和Servlet等,這些類型的程序都可以利用JDBC方法完成對數(shù)據(jù)庫的訪問和操作。完成的主要任務(wù)有:請求與數(shù)據(jù)庫建立連接、向數(shù)據(jù)庫發(fā)送SQL請求,為結(jié)果集定義存儲應(yīng)用和數(shù)據(jù)類型、查詢結(jié)果、處理錯誤、遞交及關(guān)閉等操作?!?JDBC驅(qū)動程序管理器JDBC驅(qū)動管理器能夠動態(tài)地管理和維護數(shù)據(jù)庫查詢所需要的所有廠商或第三方所提供的驅(qū)動程序?qū)ο?實現(xiàn)Java任務(wù)與特定驅(qū)動程序的連接,從而體現(xiàn)JDBC與驅(qū)動無關(guān)這一特點。它完成的任務(wù)有為:為特定的數(shù)據(jù)庫選擇驅(qū)動程序,處理JDBC初始化調(diào)用,為每個驅(qū)動程序提供JDBC功能的入口,為JDBC調(diào)用執(zhí)行參數(shù)。<3>驅(qū)動程序驅(qū)動程序一般由數(shù)據(jù)庫廠商或者第三方提供,它由JDBC方法調(diào)用,向特定的數(shù)據(jù)庫發(fā)送SQL請求,并為Java程序取得結(jié)果。驅(qū)動程序可以完成下列任務(wù):建立與數(shù)據(jù)庫的連接,向數(shù)據(jù)庫發(fā)送請求等。<4>數(shù)據(jù)庫數(shù)據(jù)庫是指Java程序所需要的數(shù)據(jù)庫,如MySQL,SQLServer,Oracle。在本課題中,使用了MySQL數(shù)據(jù)庫。2.3.3JDBC的工作方式JDBC功能強大非常強大,但使用簡單。無論連接何種數(shù)據(jù)庫,只要做好下列步驟即可:〔1與數(shù)據(jù)源建立連接通過DriverManager類建立與數(shù)據(jù)庫的連接,這個連接將作為一個數(shù)據(jù)操作的起點。例如,在本程序中,使用以下語句與MySQL數(shù)據(jù)庫建立了連接。protectedstaticStringdbClassName="org.gjt.mm.mysql.Driver";//數(shù)據(jù)庫連接驅(qū)動類protectedstaticStringdbUrl="jdbc:mysql://localhost:3306/gps";//數(shù)據(jù)庫連接URLprotectedstaticStringdbUser="root";//數(shù)據(jù)庫用戶名protectedstaticStringdbPwd="admin";//數(shù)據(jù)庫密碼privatestaticConnectionconn=null;//數(shù)據(jù)庫連接對象Class.forName<dbClassName>;//加載驅(qū)動類 conn=DriverManager.getConnection<dbUrl,dbUser,dbPwd>;//與數(shù)據(jù)庫建立一個連接〔2向數(shù)據(jù)庫發(fā)送SQL命令通過Statement或者PreparedStatement類發(fā)送SQL命令。在命令發(fā)送后,調(diào)用類中的excute方法來執(zhí)行結(jié)果。例如,下列語句將會執(zhí)行sql語句指定的操作。Statementstmt=conn.createStatement<sql>;//通過SQL語句創(chuàng)建Statementstmt.execte<>;//執(zhí)行sql語句指定的操作〔3處理數(shù)據(jù)源返回的結(jié)果數(shù)據(jù)庫處理了SQL命令后,將返回處理結(jié)果。對于查詢將會返回一個ResultSet結(jié)果集,在Java程序中遍歷這個結(jié)果集就可以執(zhí)行想要的操作了。例如,下列語句則會從數(shù)據(jù)庫的tb_operator表中返回具有指定用戶名和密碼的查詢結(jié)果,并存放在ResultSet中。Stringsql="select*fromtb_operatorwherename='"+name+"'andpassword='"+password+"'";//查詢字符串ResultSetrs=Dao.executeQuery<sql>;//執(zhí)行查詢2.3.4MySQL數(shù)據(jù)庫近幾年來,開源數(shù)據(jù)庫逐漸流行起來。由于具有免費使用、配置簡單、穩(wěn)定性能好、性能優(yōu)良等優(yōu)點,開源數(shù)據(jù)庫在中低端應(yīng)用中占據(jù)了很大的市場人人份額,而MySQL正是開源數(shù)據(jù)庫的杰出代表。MySQL[13-14]數(shù)據(jù)庫隸屬于MySQLAB公司,總部位于瑞典。MySQL幾乎支持所有的操作系統(tǒng),并且支持很大的表,這些特性使得MySQL的發(fā)展非常迅猛,目前已經(jīng)廣泛應(yīng)用在各個行業(yè)中。MySQL數(shù)據(jù)庫目前分為社區(qū)版〔CommunityServer和企業(yè)版〔Enterprise,它們最重要的區(qū)別在于:社區(qū)版是自由下載而且完全免費的,但是官方不提供任何技術(shù)支持,適用于大多數(shù)普通用戶;企業(yè)版是收費的,不能在線下載,相應(yīng)地,它提供了更多的功能和更完備的技術(shù)支持,更適合于對數(shù)據(jù)庫的功能和可靠性要求比較高的企業(yè)客戶。在本程序中,使用了MySQL數(shù)據(jù)庫的社區(qū)版來對程序中相關(guān)的人員信息進行維護。2.4圖形界面開發(fā)技術(shù)Swing[15]是一個用于開發(fā)Java圖形界面應(yīng)用程序的開發(fā)工具包,它是以抽象窗口工具包〔AWT[16]為基礎(chǔ),使跨平臺應(yīng)用程序可以使用任何的外觀風格。Swing開發(fā)人員通過使用少量的代碼,就可以利用Swing包中豐富、靈活的功能和模塊化組件類來開發(fā)令人滿意的用戶界面。Swing是Sun公司推出的第二代圖形用戶接口工具包,通過Swing可以開發(fā)出功能強大,界面優(yōu)美的客戶應(yīng)用程序。Swing中不但提供了許多功能完善的控件,而且還有良好的擴展能力。Swing組件實現(xiàn)不包括任何與平臺相關(guān)的代碼。Swing組件是純Java語言編寫,沒有本地代碼,是一種輕量級組件[17]。目前利用Swing開發(fā)的可視化桌面程序已經(jīng)非常成熟,并且很多工具已經(jīng)在業(yè)界產(chǎn)生了巨大影響。例如IBMLotusnotes辦公套件,Eclipse和NetBeans開發(fā)工具。其中這Eclipse和NetBeans是用來開發(fā)Java應(yīng)用程序的,本來也是使用Swing開發(fā)出來的一套工具,在全世界普及。近年來,NetBeans的發(fā)展,已經(jīng)在程序員中產(chǎn)生了良好的口碑,特別是它的可視化桌面程序設(shè)計器,拖拽方式設(shè)計桌面窗口,以及各種各樣良好的輔助設(shè)計功能,讓之前可視化拖拽設(shè)計工具Delphi的設(shè)計人員也大大贊賞。特別是Swing設(shè)計的桌面程序,在不同平臺幾乎不需要做什么修改就可以直接使用,讓目前的軟件廠商找到了非常好的跨平臺編程工具[18]。2.4.1Swing組件類的層次Swing中的組件的層次結(jié)構(gòu)如圖2-2所示,Swing的組件可以分為兩種類型,一種是JComponent類,另一種是Window類。其中Window組件類主要包括了一些可以獨立顯示的組件,而JComponent組件類主要包括了一些不能獨立顯示的組件。什么是可以獨立顯示的組件呢?獨立顯示的組件是指當運行一個程序時,這個組件無須托付在其他組件上就可以顯示,即它可以直接顯示出來,例如JFrame類,它可以獨立顯示,無須任何其他的組件。而不可獨立顯示的組件則必須依靠可獨立顯示的組件來顯示,例如文本框組件、按鈕組件、必須依托在JFrame等上面才能顯示出來。ComponentContainerComponentContainerJComponentWindowJPanelJTableJTreeJTextFieldJButtonJTextFieldJFrameJDialog圖2-2Swing組件類的層次結(jié)構(gòu)圖以上的示意圖只是從顯示效果上劃分,其實從其功能上劃分,在javax.swing包中Swing組件共有三種類型:頂層組件、中間組件、基本組件。頂層組件又被稱為頂層容器,而中間組件又分為中間容器和特殊中間組件,如圖2-3所示。Swing組件頂層組件類Swing組件頂層組件類中間組件類基本組件類中間容器類特殊中間容器類圖2-3Swing組件從功能上劃分<1>頂層組件類:所謂的頂層組件類是指可以獨立顯示的組件。主要有JFrame,JApplet,JDialog,JWindow等。<2>中間容器類:所謂的中間容器類是指那些可以充當載體,但也是不可以獨立顯示的組件。通俗地說,就是一些基本控件可以放在其中,但是它不能獨立顯示,必須依托在頂層容器上才能顯示。常用的中間容器有JPanel,JScrollPane,JSplitPane,JToolBar.<3>特殊中間組件類:在GUI上起特殊作用的中間層,如JInternalFrame。<4>基本組件類:基本組件是指那些只能依托在中間窗口上才能被顯示的組件,如JButton,JComboBox,JMenu等。2.4.2Swing事件處理機制圖形用戶界面程序都需要對環(huán)境中發(fā)生的各種事件〔包括鼠標的單擊、值的改變、焦點的獲取或者丟失、鍵盤輸入等進行監(jiān)控并根據(jù)事件的類型進行相應(yīng)的處理。Swing中采用了委托事件模型,也叫授權(quán)事件模型來處理系統(tǒng)發(fā)生的各類事件[19]。在授權(quán)事件模型中,主要包含3個對象。<1>事件:發(fā)生在用戶界面上的用戶交互行為所產(chǎn)生的一種效果。<2>事件源:產(chǎn)生事件的對象。<3>事件監(jiān)聽器:接收事件并對其進行處理的對象。組件作為事件源可以觸發(fā)事件,一個事件源可以注冊一個或多個事件監(jiān)聽器。當特定事件發(fā)生時,事件被委托到特定的事件監(jiān)聽器進行處理。具體來說,首先通過組件的Add×××Listener方法注冊事件監(jiān)聽器,一個組件可以注冊多個事件監(jiān)聽器。監(jiān)聽器監(jiān)聽特定的事件,如果組件觸發(fā)了相應(yīng)類型的事件,此事件被傳送給已經(jīng)注冊的監(jiān)聽器,事件監(jiān)聽器負責處理事件。委托事件模型具有如下優(yōu)點:<1>事件對象只傳給注冊的監(jiān)聽器,不會被其他組件或上層窗口捕獲和處理。<2>可以實現(xiàn)過濾的功能,只監(jiān)聽和處理感興趣的事件。<3>實現(xiàn)了將事件源和事件監(jiān)聽器分開處理的功能。2.4.3Swing中的布局管理Java中的布局管理管理功能,沒有VisualBasic,VisualC++等可視化軟件所帶的表單設(shè)計器,可以在畫板上直接將組件按照程序員的意愿進行排列。在Java中只能通過編寫代碼來規(guī)范每個控件在頂層窗口中的位置。不同的代碼代表著不同的代碼布局方式,不同的布局方式代表著不同的布局格調(diào)。為了將添加到容器中的Swing組件和其他容器進行布局,Swing采用了兩種布局方式:無布局管理器布局和基于布局管理器的布局。其中無布局管理器的布局是通過指定Swing組件在窗體上的絕對位置來實現(xiàn)的。基于布局管理器的布局[20]是Swing為了實現(xiàn)跨平臺的動態(tài)布局效果而提出的布局方式。在這種方式下,需要調(diào)用容器類〔JFrame,JDialog或者JPanel等的setLayout方法設(shè)置布局管理器,常用的布局管理器有FlowLayout,BorderLayout,GridLayout等多種方式。不同的布局管理器使用不同的算法和策略來決定組件在窗口內(nèi)的布局。設(shè)置好布局管理器后,窗口內(nèi)的所有組件的布局就由布局管理器來負責,包括組件的排列順序,組件的大小,位置,當窗口移動或調(diào)整組件大小后該如何變化等。無布局管理器的布局Swing中提供了setLocation<>,setSize<>,setBounds<>等布局方法,但Swing中存在一個默認的布局管理器,因此這些方法都會失效。如果需要設(shè)置組件的大小或位置,則應(yīng)取消布局管理器,方法為調(diào)用容器的setLayout〔方法,并將布局管理器設(shè)置為null。采用無布局管理對組件進行布局時,相對于基于布局管理器的布局方式在對組件的大小和位置的控制上較為靈活,但這種布局方法會導致平臺相關(guān),在不同的平臺上可能產(chǎn)生不同的顯示效果。如果想要使應(yīng)用程序在不同的平臺上運行,則需要采用基于布局管理器的布局方式。FlowLayout容器采用FlowLayout布局其組件的放置規(guī)律是從左到右,從上到下進行設(shè)置,如果容器足夠?qū)?第一個組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個組件的右邊,如果當前行已經(jīng)放置不下該組件,剛放到下一行的最左邊。當容器的大小發(fā)生變化時,用FlowLayout管理的組件會發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對位置會發(fā)生變化。BorderLayoutBorderLayout布局管理器把容器分為五個區(qū)域:North,South,East,West,Center。每個區(qū)域只能放置一個組件。如果使用了BorderLayout布局,那么當容器的大小發(fā)生變化時,其變化規(guī)律為:組件的相對位置不變,大小發(fā)生變化。例如容器變高了,則North、South區(qū)域不變,West、Center,East區(qū)域變高。如果窗口變寬了,則West和East不變,North、Center和South區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域沒有組件,則用Center去補充。GridLayoutGridLayout將組件按網(wǎng)格型排列,每個成員盡可能地占據(jù)網(wǎng)格的空間,每個網(wǎng)格也同樣盡可能地占據(jù)空間,從而各個成員按一定的大小比例放置。如果你改變大小,GridLayout將相應(yīng)地改變每個網(wǎng)格的大小,以使各個網(wǎng)格盡可能地大,占據(jù)Container容器全部的空間。GridLayout基本布局策略是把容器的空間劃分成若干行乘以若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來的小區(qū)域中,所有的區(qū)域大小一樣。組件按從左到右,從上到下的方法加入。使用構(gòu)造函數(shù)GridLayout<introws,intcols>可以創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。構(gòu)造函數(shù)里的行數(shù)和列數(shù)能夠有一個為零,但是不能都為零。當容器里增加控件時候,容器內(nèi)將向0的那個方向增長。例如,如果是如下語句:GridLayoutlayout=newGridLayout〔0,1;在增加控件時,會保持一個列的情況下,不斷把行數(shù)增長。面板及容器的嵌套由于任何一種布局管理器的能力都很有限,所以在設(shè)計復雜布局時,通常采用容器嵌套的方式,即把組件添加到一個中間容器中,再把中間容器作為組件添加到另外一個容器中,從而實現(xiàn)復雜的布局。為實現(xiàn)這個功能,經(jīng)常使用JPanel類,該類是JCompoent類的子類。JPanel類是一個通用的容器,既可以把它放入其他容器中,也可以把它放入其他容器和組件,因此這種窗口經(jīng)常在構(gòu)造復雜布局中作為中間容器,但它不能單獨顯示,需要放到JFrame等頂層容器中。使用面板容器作為中間容器構(gòu)建圖形用戶界面的一般思想是:先將組件添加到面板上,然后將面板作為一個組件再添加到頂層容器中。如果要作用面板作為中間容器,首先需要創(chuàng)建面板對象,JPanel的構(gòu)造方法如下:PublicJPanel<LayoutManagerlayout>:創(chuàng)建一個面板對象,使用指定的布局管理器對旬〔layout設(shè)置面板的布局。PublicJPanel<>;使用默認的布局管理器創(chuàng)建一個面板對象,面板的默認布局管理器是FlowLayout。也可以在創(chuàng)建面板對象后重新設(shè)置它的布局,方法是使用面板對象的setLayout〔方法。2.4.4設(shè)置應(yīng)用程序外觀Java程序是跨平臺的,為了使Java圖形界面應(yīng)用程序在不同系統(tǒng)下顯示的外觀完全一致,Java應(yīng)用程序可以指定界面顯示外觀〔LookandFeel。圖形界面程序外觀包括Java外觀〔Metal風格外觀,Windows外觀,CDE/Motif,MacOS外觀等。在程序中指定一種外觀很方便,只要調(diào)用UIManager類的setFeelAndLook〔方法即可,該方法的參數(shù)是LookAndFeel類的實例或類名。例如:如果用當前平臺的外觀則可使用:UIManager.setLookAndFeel<UIManager.getSystemLookAndFeelClassName<>>;UIManager類的getSystemLookAndFeelClassName<>返回當前系統(tǒng)使用的外觀類名。將該段代碼放入應(yīng)用程序main<>方法的開頭就可以設(shè)置應(yīng)用程序的外觀。如果要指定跨平臺的外面,即Java外觀,可以使用下面的代碼:UIManager.setLookAndFeel<UIManager.getCrossPlatformLookAndFeelClassName<>;設(shè)置應(yīng)用程序外觀,還可以在setLookAndFeel〔方法的參數(shù)中指定外觀類的名字,例如〔1使用Java外觀UIManager.setLookAndFeel<"">;〔2使用Windows外觀UIManager.setLookAndFeel<"ws.WindowsLookAndFeel">;〔3使用CDE/Motif外觀UIManager.setLookAndFeel<"">;〔4使用MacOS外觀,但只能用在MacOS平臺UIManager.setLookAndFeel<"">;2.5引路蜂電子地圖開發(fā)技術(shù)2.5.1引路蜂地圖API概述目前流行的電子地圖應(yīng)用中,主要基于Google地圖、百度地圖、高德地圖等進行開發(fā)的。如果是基于GoogleEarth的應(yīng)用程序,可以使用KML語言[21]來進行開發(fā)。如果是用來進行網(wǎng)站開發(fā),一般采用GoogleMapAPI[21]來進行開發(fā)。GoogleMapAPI是一種通過JavaScript[21]將Google地圖嵌入到您的網(wǎng)頁的API。該API提供了大量實用工具用以處理地圖,并通過各種服務(wù)向地圖添加內(nèi)容,從而在網(wǎng)站上創(chuàng)建功能全面的地圖應(yīng)用程序。百度地圖和高德地圖提供的API提供的都是基于瀏覽器的網(wǎng)頁地圖,采用JavaScript語言進行開發(fā)。對于標準的Java語言它們沒有提供相應(yīng)的API。引路蜂地圖開發(fā)包[24]提供了幾乎對所有軟件平臺〔桌面和移動平臺的支持,采用統(tǒng)一的接口使用包括Google地圖,Bing地圖在內(nèi)的多達20多種地圖類型,并在同一地圖中支持矢量地圖,離線地圖的顯示。圖2-4顯示了引路蜂地圖開發(fā)包所支持的開發(fā)平臺,軟件包以三個不同的開發(fā)包提供對各個平臺的支持。圖2-4引路蜂地圖開發(fā)包支持平臺2.5.2地圖開發(fā)包類的定義圖2-5為引路蜂地圖開發(fā)包中關(guān)鍵的幾個類的定義及其關(guān)系圖圖2-5開發(fā)包關(guān)鍵類及其關(guān)系圖AbstractGraphicsFactory,DigitalMapService,MapTileAbstractReader分別用于對不同平臺用戶界面,不同地圖服務(wù),不同地圖圖片的支持。引路蜂地圖開發(fā)包在對地圖圖片和地圖服務(wù)進行了抽象,其中地圖圖片主要用于顯示地圖圖片,地圖圖片可以來源于三個方面:<1>在線地圖:可以連接包括Google地圖,Bing地圖等二十多種地圖,并支持自定義地圖。在本程序中,僅使用了在線地圖。<2>離線地圖:可以讀取本地地圖包<3>矢量地圖:可以讀取MapInfo格式的矢量地圖。而地圖服務(wù)是指地址查詢,路徑查詢,本地查詢等。引路蜂地圖開發(fā)包支持谷歌地圖服務(wù),在中國也支持MapABC,Bing地圖。而且地圖服務(wù)也是可以擴展的。地圖圖片和地圖服務(wù)兩個部分相對獨立,如我們可以在顯示Bing地圖的同時使用谷歌地圖的服務(wù),也可以在顯示谷歌地圖的時候使用Bing地圖服務(wù)。引路蜂地圖開發(fā)包是跨平臺的,因為它對不同平臺的地圖開發(fā)包進行了抽象,在Gis.Drawing包中定義了IImage,IGraphics,IFont,AbstractGraphicsFactory抽象類和抽象接口。這樣對于不同的平臺,只要實現(xiàn)相應(yīng)的接口,就可以使用同一個開發(fā)包。引路蜂地圖開發(fā)包主要以Java和C#兩種語言提供,盡管Java和C#是兩種不同的語言,但開發(fā)包提供的兩種語言的開發(fā)接口卻非常類似。下表列出了引路蜂地圖開發(fā)包所定義的類包。2.5.3地圖對象類的層次關(guān)系圖2-6地圖對象類的層次關(guān)系圖圖2-6顯示了各個地圖對象類及其關(guān)系。MapLayer定義了通用的地圖操作,如設(shè)置地圖的中心點,放大,縮小,移動,以及坐標變換〔從屏幕坐標到地圖坐標或從地圖坐標到屏幕坐標,它是所有地圖類的基類。MapLayerContainer是一個集合類,它定義了一組MapLayer的集合及它們的上下層次關(guān)系,并且使這些MapLayer一些移動,放大,縮小等。DigitalMap定義了地圖服務(wù),如地址查詢,路徑查詢,它包含了對不同地圖服務(wù)的支持。RasterMap定義了對在線地圖,離線地圖的支持,內(nèi)部支持多線程獲取圖片,并提供回調(diào)函數(shù)用于了解圖片的下載進度等。VectorMap為RasterMap的一個子類,主要是提供類似MapInfo的適量地圖的支持。矢量地圖通過讀取地圖矢量數(shù)據(jù)并將其柵格化成圖像顯示。2.5.4地圖圖片讀取類層次關(guān)系圖2-7地圖圖片讀取類層次關(guān)系不管是在線地圖,離線地圖還是矢量地圖,對于RasterMap來說都是一張張256×256的圖像,在線地圖是從服務(wù)器上下載圖片,離線地圖是從本地圖片包中讀取,而矢量地圖是將矢量數(shù)據(jù)柵格化處理。如圖2-7所示,RasterMap類有一個MapTileDownloadManager實例,這個對象用于管理所用地圖圖片的下載,讀取線程。這些線程都是MapTileAbstractReader的子類,MapTileDownloader用于在線下載地圖圖片,而VectorMapRender用于柵格化矢量地圖數(shù)據(jù)。大部分商用的地圖服務(wù)器都采用了類似的地圖分片方法,將地圖分為1-17級,每張圖片都是大小為256個像素的正方形圖片。圖2-8顯示了從一級到三級的地圖分級方法。圖2-8地圖分級圖2.5.5圖形子系統(tǒng)如前文所述,引路蜂地圖開發(fā)包中Gis.Drawing類定義了幾個抽象類或接口,對不同平臺的圖形系統(tǒng)進行了抽象。通過抽象處理,引路蜂地圖開發(fā)包就直接調(diào)用平臺相關(guān)的圖形類方法。Gis.Drawing定義了地圖開發(fā)包中所需要的最小功能集,如果在開發(fā)過程中不需要矢量圖,則可以將與矢量圖形相關(guān)的方法設(shè)置為空。在Gis.Drawing包中抽象類AbstractGraphicsFactory,接口IGraphics,IFont,IImage。抽象類AbstractGraphicsFactory是抽象圖形類工廠,主要用于創(chuàng)建新的圖像對象。以Java為例,它定義的方法如下表2-1所示。表2-1AbstractGraphicsFactory類中定義的方法接口IGraphics類中定義了一些用于圖形繪制的方法。它定義的方法如表3-2所示。表2-2IGraphics接口中定義的方法接口IFont中定義了字體,如果在應(yīng)用中不使用矢量圖,可以不實現(xiàn)該類。它定義的方法如表2-3所示。表2-3IFont接口中定義的方法接口IImage中,定義了獲取圖片大小等一系列的方法。它定義的方法如表2-4所示。表2-4IFont中定義的方法2.5.6地圖配置地圖配置主要是通過類MapConfiguration和SearchOption來設(shè)置。這里介紹最常用的幾個配置。工作線程數(shù)引路蜂地圖開發(fā)包允許用戶配置同時工作的最大線程數(shù),這些工作線程主要用于從地圖服務(wù)器上下載圖片,默認情況下工作線程數(shù)量為4。這是通過MapConfiguration.WORKER_THREAD_NUMBER來配置的。例如,下面的程序?qū)⒐ぷ骶€程數(shù)量設(shè)置為16。MapConfiguration.setParameter<MapConfiguration.WORKER_THREAD_NUMBER,16>;使用緩存引路蜂地圖開發(fā)包默認是使用緩存來提高地圖的顯示效率的,但是緩存的使用會占用一定的內(nèi)存空間,大小可以通過程序進行配置,默認大小為256K。如果設(shè)置的內(nèi)存比較小,最好將緩存進行關(guān)閉。對程序來說,內(nèi)存是足夠的,因此,在程序中使用了緩存。緩存的大小是通過MapConfiguration.MAP_CACHE_SIZE_IN_BYTES來配置的,開啟關(guān)閉緩存是通過MapConfiguration.IS_CACHE_ON來設(shè)置的。第3章系統(tǒng)總體設(shè)計3.1系統(tǒng)功能描述本小組所要研究的對象是電子防脫逃裝置,由電子腕帶〔在押人員佩戴、手持機〔監(jiān)管人員佩戴和專用管理軟件〔本軟件三部分組成。手持機〔監(jiān)管人員佩戴和電子腕帶〔在押人員佩戴分別安置有GPS[25]模塊,手持機通過無線傳感網(wǎng)絡(luò)獲取兩點GPS位置坐標,進而進行距離計算,從而確定電子腕帶同手持移動控制終端的距離,如距離超出警戒范圍則進行報警等操作。專用上位機監(jiān)管軟件可同手持機進行通訊,能夠更新在押人員的基本信息和獲得人員路徑信息。基于上述工作機理,對研究內(nèi)容進行分解,包含以下三個部分:1、電子腕帶設(shè)計電子腕帶主要實現(xiàn)功能有如下幾點:GPS位置信息獲取、位置信息的無線傳輸、報警功能、防撬功能以及電量檢測與充電等功能。2、手持機設(shè)計手持機主要實現(xiàn)功能有如下幾點:GPS位置信息獲取、無線組網(wǎng)獲取電子腕帶位置信息、實時時鐘、電量檢測與充電、人機界面、人員信息存儲、事件記錄、與專用管理軟件通信等功能。3、無線人員定位管理軟件本軟件是Java為開發(fā)語言,以Eclipse為開發(fā)平臺,采用MySQL作為開發(fā)數(shù)據(jù)庫,再結(jié)合引路蜂地圖開發(fā)包來完成的。它是一個集成了看守所在押人員的基本信息閱覽、新增、查詢、刪除、修改以及人員路徑再現(xiàn)的綜合性系統(tǒng)。可以通過這個軟件查看每個在押人員的基本信息,并進行修改等,并且可以引路蜂地圖開發(fā)包,查看在押人員的行進路線。為了提升系統(tǒng)的安全性,所有用戶只有在登錄后才可以使用本系統(tǒng)。本軟件包含的主要功能有:新增:出現(xiàn)"新增在押人員基本信息"窗口,手動錄入相關(guān)信息。刪除:刪除表格中指定行的記錄,同時MySQL中相應(yīng)的記錄也被刪除。查詢:按給定的條件查詢出符合條件的在押人員基本信息,并顯示在表格中。修改:出現(xiàn)"在押人員基本信息修改"窗口,修改其中的各信息。帳戶管理:包括增加帳戶,修改密碼和刪除帳戶等功能。人員定位:打開txt或csv文件,在地圖上顯示某一在押人員的路徑。導出:導出在押人員的基本信息,以txt文件的形式保存到其他位置。關(guān)于:顯示軟件的基本信息。3.2軟件總體設(shè)計3.2.1軟件總體結(jié)構(gòu)圖無線人員定位管理軟件的總體結(jié)構(gòu)圖如圖3-1所示。無線人員定位管理軟件無線人員定位管理軟件用戶登錄在押人員管理用戶帳戶管理查詢在押人員信息新增在押人員信息修改在押人員信息顯示在押人員路徑管理員登錄操作員登錄增加用戶帳戶刪除用戶帳戶修改用戶密碼導出在押人員信息刪除在押人員信息圖3-1軟件總體結(jié)構(gòu)圖3.2.2系統(tǒng)開發(fā)原則在系統(tǒng)的開發(fā)中始終堅持"結(jié)構(gòu)化、標準化、模塊化"的設(shè)計原則,做到界面清晰、接口標準、技術(shù)先進、安全穩(wěn)定和有效集成。有關(guān)應(yīng)用軟件開發(fā)將依據(jù)以下原則:〔1現(xiàn)代化的管理模式原則在系統(tǒng)設(shè)計時,既要看到當前現(xiàn)狀,又要想到長遠,對系統(tǒng)進行合理的、全面的功能設(shè)計,盡量考慮系統(tǒng)的今后發(fā)展,為系統(tǒng)的擴充留有充分的接口,盡量延長系統(tǒng)的生命周期。<2>應(yīng)用當前最先進、最成熟的開發(fā)平臺技術(shù)。采用名牌產(chǎn)品:采用Java編程語言,MySQL數(shù)據(jù)庫管理系統(tǒng)和WindowXP操作系統(tǒng),提高系統(tǒng)的安全性與穩(wěn)定性?!?集成性原則本系統(tǒng)涉及到不同種類的數(shù)據(jù),與其他應(yīng)用軟件的接口。為了保證系統(tǒng)能夠協(xié)同性工作,保證系統(tǒng)數(shù)據(jù)能夠暢通無阻,必須堅持系統(tǒng)集成性原則,采用國際標準,提供標準的系統(tǒng)內(nèi)、外接口?!?可管理、易維護原則選擇合理的軟件體系結(jié)構(gòu)和網(wǎng)絡(luò)結(jié)構(gòu),提供功能強大而靈活的軟件系統(tǒng)管理工具,使系統(tǒng)易于管理、易于維護、易于今后的擴充和升級?!?操作簡便、界面友好原則用戶對應(yīng)用軟件的認識和使用是從界面開始的。因此應(yīng)用軟件界面設(shè)計好壞,直接關(guān)系到軟件使用的方便性、友好性和易操作性。一個好的用戶界面設(shè)計能幫助使用者更好的理解自己所作的工作,能減少工作疲勞,提供工作效率。3.3系統(tǒng)的通信協(xié)議本軟件通過USB數(shù)據(jù)線與手持機進行連接,用戶路徑信息保存在csv文件或txt文件中。當管理員想要了解相應(yīng)的在押人員的實時路徑信息時,可以通過打開相應(yīng)的在押人員的路徑文件就可以在軟件上實現(xiàn)人員的路徑顯示。第4章軟件各模塊的實現(xiàn)4.1用戶登錄的設(shè)計用戶登錄模塊分為兩種情況,管理員登錄和操作員登錄。在程序第一次運行的時候,只有一個默認的管理員,沒有操作員。如果想要增加新的操作員,首先必須以管理員登錄,然后在登錄后增加相應(yīng)的操作員。軟件中所有的帳戶信息都是保存在MySQL數(shù)據(jù)庫的。設(shè)計界面如圖4-1所示。圖4-1用戶登錄模塊界面設(shè)計用戶登錄模塊的具體設(shè)計流程圖如圖4-2所示。用戶登錄窗口用戶名和密碼是否正確用戶登錄窗口用戶名和密碼是否正確彈出登錄錯誤信息進入程序主界面是圖4-2登錄模塊流程圖4.2在押人員管理模塊設(shè)計在押人員管理模塊是本軟件的核心部分,它由在押人員信息查詢,新增在押人員信息,修改在押人員信息,在押人員中路徑顯示,在押人員信息導出共五個子模塊組成。它實現(xiàn)了對看守所在押人員的基本信息增加、查詢、刪除、修改、導出以及人員路徑再現(xiàn)的綜合性系統(tǒng)??梢酝ㄟ^這個軟件查看每個在押人員的基本信息,并進行修改等,并且可以引路蜂地圖開發(fā)包,查看在押人員的行進路線。下面對在押人員管理的各個子模塊作一個詳細的介紹。4.2.1查詢在押人員信息模塊查詢在押人員信息界面如圖4-3所示。圖4-3查詢在押人員信息界面本軟件開發(fā)時采用了多文檔界面,在用戶登錄系統(tǒng)后可以顯示程序的主界面。程序在默認情況下所有的子窗口是關(guān)閉的。當用戶按下基本操作菜單下的人員信息查詢或者工具欄的人員信息查詢按鈕,就顯示如上界面。在查詢界面的左邊是查詢類型,查詢條件以及相關(guān)人員的頭像。當用戶選擇查詢類型,并在其下的文本框中輸入相應(yīng)的查詢內(nèi)容,并按下查詢按鈕就可以在查詢界面的右邊的表格中顯示相關(guān)人員的信息。相關(guān)人員的信息在數(shù)據(jù)庫中是按照其在數(shù)據(jù)庫中原來的順序列出的。當用戶在查詢結(jié)果的相應(yīng)行單擊時,就會在界面的左上角顯示相應(yīng)人員的頭像。4.2.2新增在押人員信息模塊新增在押人員信息的界面如圖4-4所示。圖4-4新增在押人員基本信息界面用戶可以在新增在押人員基本信息界面中輸入相關(guān)的信息,對于某些要格式要求的信息,當用戶輸入的信息有誤時,有出現(xiàn)相關(guān)的提示信息。在這里主要用到了JLabel,JButton,JTextFiled,JFormattedTextField,JComboBox等。當用戶按下添加按鈕時,如果出現(xiàn)添加成功對話框,表明已經(jīng)成功地向數(shù)據(jù)庫中添加一條記錄,否則表明往數(shù)據(jù)庫添加記錄失敗。當用戶認為輸入的信息有許多錯誤時,可以通過重置按鈕來使各個組件恢復到初始狀態(tài)。4.2.3修改在押人員基本信息模塊在押人員基本信息修改界面如圖4-5所示。當用戶在查詢結(jié)果的表格中選中某一條記錄并按下表格下方的修改按鈕,就會出現(xiàn)如上圖所示的界面,在修改界面中,會出現(xiàn)未修改前的在押人員基本信息。當修改完成后,只要按下修改按鈕,若修改成功,就會出現(xiàn)修改成功的對話框。圖4-5修改在押人員信息模塊4.2.4刪除在押人員信息模塊刪除在押人員信息界面如圖4-6所示。在押人員信息刪除是基于在押人員信息查詢模塊的。當用戶在查詢結(jié)果的表格中選中某一條記錄并按下表格下方的刪除按鈕,會出現(xiàn)如下所示的刪除提示對話框,當用戶點擊是按鈕時,就會將相關(guān)人員的一條記錄刪除。圖4-6刪除在押人員信息界面4.2.5導出在押人員信息模塊導出在押人員信息的文件的截圖如圖4-7所示。人員信息導出也是基于在押人員信息查詢模塊的。要想導出相關(guān)的數(shù)據(jù),首先必須按照相關(guān)的條件作一次查詢,然后才能導出查詢結(jié)果的數(shù)據(jù)。導出的數(shù)據(jù)默認是以txt格式保存的。圖4-7導出在押人員信息圖4.2.6顯示在押人員路徑模塊在押人員信息顯示模塊是本程序中最為核心的模塊,其界面如圖4-8所示。圖4-8在押人員路徑顯示界面它除了具備常用的地圖操作,如放大,縮小,移動外,還能在地圖上顯示在押人員的路徑。同時,地圖也可以通過按下清除按鈕來清除已經(jīng)顯示的地圖的路徑。如果用戶想在地圖上進行在押人員的路徑顯示,必須以管理員的身份登錄,否則會出現(xiàn)圖4-9所示界面。圖4-9非管理員操作界面4.3用戶管理模塊設(shè)計用戶管理模塊主要分為增加帳戶子模塊,刪除帳戶子模塊和修改帳戶密碼子模塊。4.3.1增加帳戶模塊增加用戶帳戶只有管理員有這個功能,若用戶以非管理員身份〔操作員登錄,會出現(xiàn)圖4-10所示對話框。圖4-10警告對話框如果用戶以管理員身份登錄,將會出現(xiàn)圖4-11所示的新增帳戶對話框。圖4-11增加帳戶對話框4.3.2刪除帳戶模塊刪除帳戶模塊可以從數(shù)據(jù)庫中刪除一些已經(jīng)存在的用戶帳戶〔包括管理員和操作員。管理員有權(quán)限刪除數(shù)據(jù)庫中的所有帳戶信息,但操作員只能刪除數(shù)據(jù)庫中的其他操作員,不能刪除帳戶中的管理員,刪除帳戶模塊的界面如圖4-12如示。圖中帳戶是以管理員身份登錄的,所示在表格中列出了所有的帳戶信息,選中相應(yīng)的記錄,點擊刪除就可以從數(shù)據(jù)庫中徹底刪除相應(yīng)的帳戶信息。圖4-12刪除帳戶對話框4.3.3修改帳戶密碼模塊修改帳戶密碼模塊的界面如圖4-13所示,用戶只能修改當前登錄用戶自身的密碼,不能修改別的用戶的密碼。用戶只需要在密碼文本框中和密碼確認文本框中兩次輸入相同的密碼,并按下修改按鈕,就可以修改當前用戶的密碼了。同時在修改密碼的過程中,也是不能夠修改當前用戶的權(quán)限。圖4-13修改密碼對話框4.4數(shù)據(jù)庫中表的設(shè)計在程序中,后臺數(shù)據(jù)庫使用了MySQL數(shù)據(jù)庫,通過命令行在程序中創(chuàng)建名為gps的數(shù)據(jù)庫。在gps數(shù)據(jù)庫中創(chuàng)建了用戶信息表和在押人員信息表?!?用戶信息表:該表記錄了所有用戶的信息。所有用戶分為兩類:普通用戶和管理員,兩種用戶具有不同的權(quán)限。普通用戶具有的權(quán)利管理員都具有。管理員可以對所有用戶進行管理,包括增加、刪除某個用戶,修改或查詢某個用戶的信息。普通用戶可以對自己的密碼進行修改,但是不能修改或察看別的用戶的信息,用戶信息表tb_operator的表的結(jié)構(gòu)如表5-1所示。表4-1用戶信息表字段類型說明idINT<11>id號,自動增加nameVARCHAR<12>姓名sexVARCHAR<2>性別adminVARCHAR<12>用戶等級passwordVARCHAR<12>密碼其創(chuàng)建的代碼如下所示。CREATETABLE`gps`.`tb_operator`<`id`INT<11>NOTNULLAUTO_INCREMENT,`name`VARCHAR<12>NOTNULLDEFAULT'',`sex`VARCHAR<2>NOTNULLDEFAULT'',`admin`TINYINT<1>NOTNULLDEFAULT1,`password`VARCHAR<12>NOTNULLDEFAULT'',PRIMARYKEY<`id`>>;〔1在押人員信息表:該表記錄了所有在押人員的信息,表的結(jié)構(gòu)如表5-2所示。表5-2在押人員信息表字段類型說明idtb_man_basicinfoINT<10>id號,自動增加manpicLONGBLOB用戶頭像bianhaoVARCHAR<15>編號xinmingVARCHAR<45>姓名jianyuhaoVARCHAR<45>監(jiān)獄號ageINT<5>年齡birthdateDATETIME出生日期sexVARCHAR<8>性別edubackgroundVARCHAR<15>教育背景jiguanVARCHAR<15籍貫anyouVARCHAR<45案由youwubinshiVARCHAR<15>有無病史marriageVARCHAR<15>婚姻情況xinqiVARCHAR<45>刑期qinshuVARCHAR<15>親屬lianxifangshiVARCHAR<45聯(lián)系方式創(chuàng)建該表的數(shù)據(jù)庫腳本為CREATETABLE`gps`.`tb_man_basicinfo`<`idtb_man_basicinfo`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,`manpic`LONGBLOB,`bianhao`VARCHAR<15>NOTNULL,`xinming`VARCHAR<45>NOTNULL,`jianyuhao`VARCHAR<45>,`age`INT<5>UNSIGNED,`birthdate`DATETIME,`sex`VARCHAR<8>,`edubackground`VARCHAR<15>,`jiguan`VARCHAR<15>,`anyou`VARCHAR<45>,`youwubinshi`VARCHAR<15>,`marriage`VARCHAR<15>,`xinqi`VARCHAR<45>,`qinshu`VARCHAR<15>,`lianxifangshi`VARCHAR<45>,PRIMARYKEY<`idtb_man_basicinfo`>>;4.5本章小結(jié)本章給出了系統(tǒng)的軟件設(shè)計的具體實現(xiàn)。在設(shè)計過程中,將系統(tǒng)整個模塊化,然后根據(jù)模塊的劃分逐個設(shè)計。先給出每個模塊的設(shè)計的實際效果圖,然后根據(jù)需要重要介紹部分模塊的實現(xiàn)過程。在最后,對系統(tǒng)中使用的數(shù)據(jù)庫做了簡要的介紹。第5章項目創(chuàng)新點5.1軟件的平臺無關(guān)性本程序是采用純Java語言編寫,因此用它編寫的程序具有平臺無關(guān)性。程序員不需要修改代碼就可以在不同的平臺上運行。目前,該程序可以既可以在流行的Windows的各個版本的操作系統(tǒng)運行,也可以在Linux等操作系統(tǒng)上運行,并且程序的運行界面會隨著本地的操作系統(tǒng)的風格的改變而改變。5.2基于桌面系統(tǒng)的Java地圖應(yīng)用目前流行的地圖應(yīng)用有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字化營銷在零售行業(yè)中的應(yīng)用
- 2025年全球及中國虛擬購物平臺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球長焊頸法蘭行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球碳纖維管狀編織物行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球集成存儲解決方案行業(yè)調(diào)研及趨勢分析報告
- 思想道德修養(yǎng)與法律基礎(chǔ)
- 羅湖區(qū)政府投資項目代建合同范本
- 水電專業(yè)承包合同
- 政府采購項目的采購合同
- 大型高炮廣告牌制作合同
- 成品移動公廁施工方案
- 2025-2030年中國干混砂漿行業(yè)運行狀況及發(fā)展趨勢預測報告
- 2025年度部隊食堂食材采購與質(zhì)量追溯服務(wù)合同3篇
- 2025江蘇鹽城市交通投資建設(shè)控股集團限公司招聘19人高頻重點提升(共500題)附帶答案詳解
- 新人教版一年級下冊數(shù)學教案集體備課
- 2024托管班二人合伙的協(xié)議書
- 任務(wù)型閱讀 -2024年浙江中考英語試題專項復習(解析版)
- 《國有企業(yè)采購操作規(guī)范》【2023修訂版】
- 土法吊裝施工方案
- BLM戰(zhàn)略規(guī)劃培訓與實戰(zhàn)
- GB/T 16475-2023變形鋁及鋁合金產(chǎn)品狀態(tài)代號
評論
0/150
提交評論