已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于 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;跨平臺 Abstract In recent years, with the number of prisoners on the rise, we can not only relay on the traditional video surveillance or access control alarm system for they cannot do the all-round, multi-function monitoring. Therefore, it has become an inevitable trend to establish a comprehensive and efficient monitoring platform to improve the detention center security management level. The main content of this research project is to design a wireless positioning management software. The software has the function of add, query, delete, modify and export the basic information held in detention center. Whats more, it also has user account management function. The cross-platform personnel management system is a software that uses Java as a develop language, the open source Eclipse as Integrated Development Environment, the free MySQL as development database, and the Guidebee Map Development Kit for positioning . First I make a brief introduction to Java programming, the JDBC database technology, Graphical User Interface programing, and Guidebee Map development technology. On this basis, I give the overall design of the software and the design of each functional module. Key words: wireless positing; Java; Guidebee Map; JDBC; Eclipse; cross-platform 目 錄 摘 要 Abstract 第 1 章 緒論 .1 1.1 課題意義及目的 . 1 1.2 課題主要研究的內(nèi)容 . 1 第 2 章 軟件開發(fā)相關(guān)技術(shù)介紹 .3 2.1 Java 程序編程基礎(chǔ) . 3 2.1.1 Java 的起源及其發(fā)展 . 3 2.1.2 Java 程序運行原理 . 3 2.2 Eclipse 開發(fā)平臺 . 5 2.3 數(shù)據(jù)庫技術(shù) . 6 2.2.1 SQL 語言 概述 . 6 2.2.2 JDBC 模型 . 7 2.2.3 JDBC 的工作方式 . 8 2.2.4 MySQL 數(shù)據(jù)庫 . 10 2.4 圖形界面開發(fā)技術(shù) . 10 2.4.1 Swing 組件類的層次 . 11 2.4.2 Swing 事件處理機制 . 13 2.4.3 Swing 中的布局管理 . 13 2.4.4 設(shè)置應(yīng)用程序外觀 . 16 2.5 引路蜂電子地圖開發(fā)技術(shù) . 17 2.5.1 引路蜂地圖 API 概述 . 17 2.5.2 地圖開發(fā)包類的定義 . 18 2.5.3 地圖對象類的層次關(guān)系 . 20 2.5.4 地圖圖片讀取類層次關(guān)系 . 21 2.5.5 圖形子系統(tǒng) . 22 2.5.6地圖配置 . 24 第 3 章 系統(tǒng)總體設(shè)計 . 25 3.1 系統(tǒng)功能描述 . 25 3.2 軟件總體設(shè)計 . 26 3.2.1 軟件總體結(jié)構(gòu)圖 . 26 3.2.2 系統(tǒng)開發(fā)原則 . 26 3.3 系統(tǒng)的通信協(xié)議 . 27 第 4 章 軟件各模塊的實現(xiàn) . 28 4.1 用戶登錄的設(shè)計 . 28 4.2 在押人員管理模塊設(shè)計 . 28 4.2.1 查詢在押人員信息模塊 . 29 4.2.2 新增在押 人員信息模塊 . 30 4.3.3 修改在押人員基本信息模塊 . 30 4.3.4 刪除在押人員信息模塊 . 31 4.3.5 導(dǎo)出在押人員信息模塊 . 32 4.2.6 顯示在押人員路徑模塊 . 32 4.3 用戶管理模塊設(shè)計 . 33 4.3.1 增加帳戶模塊 . 34 4.3.2 刪除帳戶模塊 . 34 4.3.3 修改帳戶密碼模塊 . 35 4.4 數(shù)據(jù)庫中表的設(shè)計 . 35 4.5 本章小結(jié) . 38 第 5 章 項目創(chuàng)新點 . 39 5.1 軟件的平臺無關(guān)性 . 39 5.2 基于桌面系統(tǒng)的 Java 地圖應(yīng)用 . 39 5.3 采用最新的地圖顯示技術(shù) . 39 第 6 章 結(jié)束語 . 39 參考文獻 . 41 致 謝 . 42 1 第 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)容 本課題以 Windows XP 為開發(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è)置了帳戶管理的功能。 2 本論文的主要研究內(nèi)容如下 : (l)學(xué)習(xí)和掌握 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)越性。 3 第 2 章 軟件開發(fā)相關(guān)技術(shù)介紹 2.1 Java 程序編程基礎(chǔ) 2.1.1 Java 的起源及其發(fā)展 Java 是 Sun 公司開發(fā)出來的一套編程語言,最早來源于一個叫 Green 的項目。這個項目原來的目的是為家用電子消費產(chǎn)品開發(fā)一個分布式的代碼系統(tǒng),這樣就可以通過網(wǎng)絡(luò)對家用電器進行控制。開始 Sun 公司的工程師準備采用 C+2,但由于 C+過于復(fù)雜,安全性差,最后決定基于 C+開發(fā)一種新語言( Oak 語言)。 Oak 是一種用于網(wǎng)絡(luò) ,精巧而安全的語言, Sun 公司曾以此投標(biāo)過一個交互式電視項目,結(jié)果被 SGI打敗。恰巧此時 Mark Andreessen 開發(fā)的 Mosaic 和 Netscape 啟發(fā)了 Oak 的成員, Sun的工程師們用 Java 編制了 HotJava 瀏覽器,觸發(fā)了 Sun 進軍 Internet3。 Java 語言發(fā)展到至今經(jīng)歷了一系列的過程, Java 在 1995 年 5 月 23 日推出了 JDK 1.0 版本,此版本標(biāo)志著 Java 正式進軍 Internet 的開始。在 1998 年, Sun 公司推出了JDK 1.2 開發(fā)包,該版本加入了大量的輕量級組件,從此以后 Java 正式被命名為 JDK 2。在此之后, Sun 公司也陸續(xù)發(fā)布了一系列的 Java 開發(fā)包版本, 目前最新版本的 JDK 為JDK 74。 2.1.2 Java 程序運行原理 Java 中有兩類應(yīng)用程序,一類是有自己獨立運行入口點的 Java 應(yīng)用程序,另一類是嵌入在 Web 頁面中由 Web 瀏覽器來控制運行的 Java 小程序( Applet5)。在運行時,它們都需要 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é)碼的裝載。在裝載過程中,程序運行時所需要的所有代 4 碼都被裝載。完成后,節(jié)節(jié)碼中便保留了地址的符號引用信息,運行系統(tǒng)通過建立的地址符號引用信息與內(nèi)存之間的對照來確定程序的內(nèi)存分配。 ( 2)由字節(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。 5 2.2 Eclipse 開發(fā)平臺 Eclipse 是一個開放源代碼的,基于 Java 的可擴展開發(fā)平臺,它通過插件組件構(gòu)成開發(fā)環(huán)境。 Eclipse 附帶了一個標(biāo)準的插件集,其中最著名的插件當(dāng)屬 Java 開發(fā) 工具( Java Development Tools, JDT) 7,其界面的主界面如圖 2-1 所示。最初主要用來 Java語言開發(fā),但是目前亦有人通過外掛程式使其作為其他計算機語言比如 C+和 Python的開發(fā)工具。 Eclipse 本身只是一個框架平臺,但是眾多外掛程式的支持使得 Eclipse擁有其他功能相對固定的 IDE 軟體很難具有的靈活性。許多軟體開發(fā)商以 Eclipse 為框架開發(fā)自己的 IDE。 Eclipse 最初由 IBM 公司開發(fā), 2001 年 11 月貢獻給開源社區(qū),現(xiàn)在它由非營利軟體供應(yīng)商聯(lián)盟 Eclipse 基金會( Eclipse Foundation)管理 8。 圖 2-1 Eclipse 程序主界面 在用最新版本的 Eclipse 開發(fā)桌面應(yīng)用程序時,既可以直接編寫代碼來設(shè)計應(yīng)用程序界面,也可以使用 Eclipse 的 Visual Swing Designer 來進行界面的可視化設(shè)計。 Visual Swing Designer 是一個 Swing 界面設(shè)計工具插件 ,代碼的生成和解析不需要依賴于form 文件,而且生成的代碼可讀性很好,支持代碼跟界面實時的切換。它還支持表格和樹的可視化設(shè)計,程序員在設(shè)計表格和樹模型時,不需要編寫復(fù) 雜的代碼,直接從 6 采用界面操作便可以生成表格和樹的數(shù)據(jù)模型代碼。在一般情況下,可以通過 Visual Swing Designer 來設(shè)計程序的基本界面,再通過用戶定制一些代碼往往能更快地進行應(yīng)用程序的快速開發(fā)。 Eclipse 的使用大大減少了程序員開發(fā)程序的工作量,尤其是在程序界面設(shè)計方面。同時擁有對代碼錯誤信息的實時提示功能,當(dāng)程序代碼出現(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使程序員能夠利用當(dāng)前最新的數(shù)據(jù)庫特征,如同時連接多個數(shù)據(jù)庫等。 JDBC 支持靜態(tài)和動態(tài)的 SQL 語句(在運行時組建查詢和更新語句)。 JDBC 最大的特點是無論后臺是何種數(shù)據(jù)庫,對于 Java 程序員而言,它的工作方式完全相同。 JDBC 為許多不同的數(shù)據(jù)庫連接模塊的前端提供了統(tǒng)一的接口,這樣就不用為連接不同的數(shù)據(jù)庫而煩惱了。當(dāng)需要為程序修改數(shù)據(jù)庫時,程序基本上只要修改在代碼中修改數(shù)據(jù)庫的驅(qū)動,URL,用戶名,密碼,其他的地方基本 上是沒有發(fā)生變化的。 2.3.1 SQL 語言概述 SQL(Structure Query Language,結(jié)構(gòu)化查詢語言 ),是一個功能強大的數(shù)據(jù)庫語言。SQL 語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通 9。 20 世紀 80 年代初,美國國家標(biāo)準局( ANSI)開始著手定制 SQL 標(biāo)準,最早的ANSI 標(biāo)準于 1986 年完成,叫做 SQL-86。標(biāo)準的出臺使 SQL 作為標(biāo)準關(guān)系數(shù)據(jù)庫語言的地位得到了加強。 SQL 標(biāo)準目前已幾經(jīng)修改,更趨完善。 正是由于 SQL 語言的標(biāo)準化,所以大多數(shù)關(guān)系型數(shù)據(jù)庫都支持 SQL 語言,它已經(jīng)發(fā)展成為多種平臺進行交互操作的底層會話語言。 7 SQL 語句主要可以劃分為以下 3 個類別。 ( 1) DDL(Data Definition Languages)語句:數(shù)據(jù)定義語言,這些語句定義了不同的數(shù)據(jù)段、數(shù)據(jù)庫、表列、索引等數(shù)據(jù)庫對象的定義。常用的語句關(guān)鍵字主要包括create、 drop 等。 ( 2) DML(Date Manipulation Language)語句:數(shù)據(jù)操縱語句,用于添加、刪除、更新和查詢數(shù)據(jù)庫記錄,并檢查數(shù)據(jù)完整性。常用的語句關(guān)鍵字主要包括 insert、 delete、update 和 select 等。 ( 3) DCL( Data Control Language)語句:數(shù)據(jù)控制語句,用于控制不同數(shù)據(jù)段直接的許可和訪問級別的語句。這些語句定義了數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別。 2.3.2 JDBC 模型 JDBC 由 編 程 語 言 編 寫 的 類 及 接 口 組 成,同時它也為程序開發(fā)人員提供了一組用于實現(xiàn)對數(shù)據(jù)庫訪問的 API,并支持 SQL 語言。利用 JDBC 可以將 Java代碼連接到 Oracle, SQL Server, MySQL 等數(shù)據(jù)庫,從而實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的相關(guān)操作 10。 JDBC 為數(shù) 據(jù)庫應(yīng)用開發(fā)人員和數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標(biāo)準的應(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 由兩層組成,上面一層是 JDBC API,下面一層是 JDBC 驅(qū)動程序 API。 JDBC API 負責(zé)與 JDBC 管理器驅(qū)動程序 API 進行通信,將各個不同的 SQL 語句發(fā)送給它。驅(qū)動 程序管理器與實際連接到數(shù)據(jù)庫的第三方驅(qū)動程序進行通信,并且返回查詢的信 8 息,或者執(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)閉等操作。 ( 2) JDBC 驅(qū)動程序管理器 JDBC 驅(qū)動管理器能夠動態(tài)地管理和維護數(shù)據(jù)庫查詢所需要的所有廠商或第三 方所提供的驅(qū)動程序?qū)ο螅瑢崿F(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, SQL Server, Oracle。在本課題中,使用了 MySQL 數(shù)據(jù)庫。 2.3.3 JDBC 的工作方式 JDBC 功能強大非常強大,但使用簡單。無論連接何種數(shù)據(jù)庫,只要做好下列步驟即可: ( 1)與數(shù)據(jù)源建立連接 通過 DriverManager 類建立與數(shù)據(jù)庫的連接,這個連接將作為一個數(shù)據(jù)操作的起 9 點。 例如,在本程序中,使用以下語句與 MySQL 數(shù)據(jù)庫建立了連接。 protected static String dbClassName = org.gjt.mm.mysql.Driver;/ 數(shù)據(jù)庫連接驅(qū)動類 protected static String dbUrl = jdbc:mysql:/localhost:3306/gps;/ 數(shù)據(jù)庫連接 URL protected static String dbUser = root; / 數(shù)據(jù)庫用戶名 protected static String dbPwd = admin; / 數(shù)據(jù)庫密碼 private static Connection conn = 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 語句指定的操作。 Statement stmt=conn. createStatement (sql);/通過 SQL 語句創(chuàng)建 Statement stmt.execte();/執(zhí)行 sql 語句指定的操作 ( 3)處理數(shù)據(jù)源返回的結(jié)果 數(shù)據(jù)庫處理了 SQL 命令后,將返回處理結(jié)果。對于查詢將會返回一個 ResultSet結(jié)果集,在 Java 程序中遍歷這個結(jié)果集就可以執(zhí)行想要的操作了。例如,下列語句則會從數(shù)據(jù)庫的 tb_operator 表中返回具有指定用戶名和密碼的查詢結(jié)果,并存放在ResultSet 中。 String sql = select * from tb_operator where name= + name+ and password= + password + ;/查詢字符串 10 ResultSet rs = Dao.executeQuery(sql);/ 執(zhí)行查詢 2.3.4 MySQL 數(shù)據(jù)庫 近幾年來,開源數(shù)據(jù)庫逐漸流行起來。由于具有免費使用、配置簡單、穩(wěn)定性能好、性能優(yōu)良等優(yōu)點,開源數(shù)據(jù)庫在中低端應(yīng)用中占據(jù)了很大的市場人人份額,而MySQL 正是開源數(shù)據(jù)庫的杰出代表。 MySQL13-14數(shù)據(jù)庫隸屬于 MySQL AB 公司,總部位于瑞典。 MySQL 幾乎支持所有的操作系統(tǒng),并且支持很大的表,這些特性使得 MySQL 的發(fā)展非常迅猛,目前已經(jīng)廣泛應(yīng)用 在各個行業(yè)中。 MySQL 數(shù)據(jù)庫目前分為社區(qū)版( Community Server)和企業(yè)版( Enterprise),它們最重要的區(qū)別在于:社區(qū)版是自由下載而且完全免費的,但是官方不提供任何技術(shù)支持,適用于大多數(shù)普通用戶;企業(yè)版是收費的,不能在線下載,相應(yīng)地,它提供了更多的功能和更完備的技術(shù)支持,更適合于對數(shù)據(jù)庫的功能和可靠性要求比較高的企業(yè)客戶。在本程序中,使用了 MySQL 數(shù)據(jù)庫的社區(qū)版來對程序中相關(guān)的人員信息進行維護。 2.4 圖形界面開發(fā)技術(shù) Swing15是一個用于開發(fā) Java 圖形界面應(yīng)用程序的開 發(fā)工具包,它是以抽象窗口工具包( AWT) 16為基礎(chǔ),使跨平臺應(yīng)用程序可以使用任何的外觀風(fēng)格。 Swing 開發(fā)人員通過使用少量的代碼,就可以利用 Swing 包中豐富、靈活的功能和模塊化組件類來開發(fā)令人滿意的用戶界面。 Swing 是 Sun 公司推出的第二代圖形用戶接口工具包,通過 Swing 可以開發(fā)出功能強大,界面優(yōu)美的客戶應(yīng)用程序。 Swing 中不但提供了許多功能完善的控件,而且還有良好的擴展能力。 Swing 組件實現(xiàn)不包括任何與平臺相關(guān)的代碼。 Swing 組件是純 Java 語言編寫,沒有本地代碼,是一種輕量級組件 17。 11 目前利用 Swing 開發(fā)的可視化桌面程序已經(jīng)非常成熟,并且很多工具已經(jīng)在業(yè)界產(chǎn)生了巨大影響。例如 IBM Lotus notes 辦公套件, 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.1 Swing 組件類的層次 Swing 中的組件的層次結(jié)構(gòu)如圖 2-2 所示, Swing 的組件可以分為兩種類型,一種是 JComponent 類,另一種是 Window 類。其中 Window 組件類主要包括了一些可以獨立顯示的組件,而 JComponent 組件類主要包括了一些不能獨立顯示的組件。什么是可以獨立顯示的組件呢?獨立顯示的組件是指當(dāng)運行一 個程序時,這個組件無須托付在其他組件上就可以顯示,即它可以直接顯示出來,例如 JFrame 類,它可以獨立顯示,無須任何其他的組件。而不可獨立顯示的組件則必須依靠可獨立顯示的組件來顯示,例如文本框組件、按鈕組件、必須依托在 JFrame 等上面才能顯示出來。 12 圖 2-2 Swing 組件類的層次結(jié)構(gòu)圖 以上的示意圖只是從顯示效果上劃分,其實從其功能上劃分,在 javax.swing 包中Swing 組件共有三種類型:頂層組件、中間組件、基本組件。頂層組件又被稱為頂層容 器,而中間組件又分為中間容器和特殊中間組件,如圖 2-3 所示。 圖 2-3 Swing 組件從功能上劃分 (1)頂層組件類:所謂的頂層組件類是指可以獨立顯示的組件。主要有 JFrame,JApplet, JDialog, JWindow 等。 (2)中間容器類:所謂的中間容器類是指那些可以充當(dāng)載體,但也是不可以獨立顯示的組件。通俗地說,就是一些基本控件可以放在其中,但是它不能獨立顯示,必須Component Container JComponent Window JPanel JTable JTree JTextField JButton JTextField JFrame JDialog Swing 組件 頂層組件類 中間組件類 基本組件類 中間容器類 特殊中間容器類 13 依托在頂層容器上才能顯示。常用的中間容器有 JPanel, JScrollPane, JSplitPane,JToolBar. (3)特殊中間組件類:在 GUI 上起特殊作用的中間層,如 JInternalFrame。 (4)基本組件類:基本組件是指那些只能依托在中間窗口上才能被顯示的組件,如JButton, JComboBox,JMenu 等。 2.4.2 Swing 事件處理機制 圖形用戶界面程序都需要對環(huán)境中發(fā)生的各種事件(包括鼠標(biāo)的單擊、值的改變、焦點的獲取或者丟失、鍵盤輸入等 )進行監(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)聽器。當(dāng)特定事件發(fā)生時,事件被委托到特定的事件監(jiān)聽器進行處理。具體來說,首先通過組件的 Add Listener 方法注冊事件監(jiān)聽器,一個組件可以注冊多個事件監(jiān)聽器。 監(jiān)聽器監(jiān)聽特定的事件,如果組件觸發(fā)了相應(yīng)類型的事件,此事件被傳送給已經(jīng)注冊的監(jiān)聽器,事件 監(jiān)聽器負責(zé)處理事件。 委托事件模型具有如下優(yōu)點: (1)事件對象只傳給注冊的監(jiān)聽器,不會被其他組件或上層窗口捕獲和處理。 (2)可以實現(xiàn)過濾的功能,只監(jiān)聽和處理感興趣的事件。 (3)實現(xiàn)了將事件源和事件監(jiān)聽器分開處理的功能。 2.4.3 Swing 中的布局管理 14 Java 中的布局管理管理功能,沒有 Visual Basic, Visual C+等可視化軟件所帶的表單設(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)的所有組件的布局就由布局管理器來負責(zé),包括組件的排列順序,組件的大小,位置,當(dāng)窗口移動或調(diào)整組件大小后該如何變化等。 無布局管理器的布局 Swing 中提供了 setLocation(),setSize(),setBounds()等布局方法,但 Swing 中存在一個默認的布局管理器,因此這些方法都會失效。如果需要設(shè)置組件的大小或位置,則應(yīng)取消布局管理器,方法為調(diào)用容器的 setLayout() 方法,并將布局管理器設(shè)置為 null。 采用無布局管理對組件進行布局時,相對于基于布局管理器的布局方式在對組件的大小和位置的控制上較為靈活,但這種布局方法會導(dǎo)致平臺相關(guān),在不同的平臺上可能產(chǎn)生不同的顯示效果。如果想要使應(yīng)用程序在不同的平臺上運行,則需要采用基于布局管理器的布局方式。 FlowLayout 容器采用 FlowLayout 布局其組件的放置規(guī)律是從左到右,從上到下進行設(shè)置,如 15 果容器足夠?qū)?,第一個組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個組件的右邊,如果當(dāng)前行已經(jīng)放置不下該組件,剛放到 下一行的最左邊。當(dāng)容器的大小發(fā)生變化時,用 FlowLayout 管理的組件會發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對位置會發(fā)生變化。 BorderLayout BorderLayout 布局管理器把容器分為五個區(qū)域: North, South, East, West, Center。每個區(qū)域只能放置一個組件。如果使用了 BorderLayout 布局,那么當(dāng)容器的大小發(fā)生變化時,其變化規(guī)律為:組件的相對位置不變,大小發(fā)生變化。例如容器變高了,則North、 South 區(qū)域不變, West、 Center, East 區(qū)域變高。 如果窗口變寬了,則 West 和East 不變, North、 Center 和 South 區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域沒有組件,則用 Center 去補充。 GridLayout GridLayout 將組件按網(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(int rows, int cols)可以創(chuàng)建 具有指定行數(shù)和列數(shù)的網(wǎng)格布局。 構(gòu)造函數(shù)里的行數(shù)和列數(shù)能夠有一個為零,但是不能都為零。當(dāng)容器里增加控件時候,容器內(nèi)將向 0 的那個方向增長。例如,如果是如下語句: GridLayout layout= new GridLayout( 0, 1);在增加控件時,會保持一個列的情況下,不斷把行數(shù)增長。 面板及容器的嵌套 16 由于任何一 種布局管理器的能力都很有限,所以在設(shè)計復(fù)雜布局時,通常采用容器嵌套的方式,即把組件添加到一個中間容器中,再把中間容器作為組件添加到另外一個容器中,從而實現(xiàn)復(fù)雜的布局。為實現(xiàn)這個功能,經(jīng)常使用 JPanel 類,該類是JCompoent 類的子類。 JPanel 類是一個通用的容器,既可以把它放入其他容器中,也可以把它放入其他容器和組件,因此這種窗口經(jīng)常在構(gòu)造復(fù)雜布局中作為中間容器,但它不能單獨顯示,需要放到 JFrame 等頂層容器中。 使用面板容器作為中間容器構(gòu)建圖形用戶界面的一般思想是:先將組件添加到面板上,然后將面 板作為一個組件再添加到頂層容器中。如果要作用面板作為中間容器,首先需要創(chuàng)建面板對象, JPanel 的構(gòu)造方法如下: Public JPanel(LayoutManager layout):創(chuàng)建一個面板對象,使用指定的布局管理器對旬( layout)設(shè)置面板的布局。 Public JPanel();使用默認的布局管理器創(chuàng)建一個面板對象,面板的默認布局管理器是 FlowLayout。也可以在創(chuàng)建面板對象后重新設(shè)置它的布局,方法是使用面板對象的setLayout()方法。 2.4.4 設(shè)置應(yīng)用程序外觀 Java 程序是跨 平臺的,為了使 Java 圖形界面應(yīng)用程序在不同系統(tǒng)下顯示的外觀完全一致, Java 應(yīng)用程序可以指定界面顯示外觀( Look and Feel)。圖形界面程序外觀包括 Java 外觀( Metal 風(fēng)格外觀), Windows 外觀, CDE/Motif, Mac OS 外觀等。 在程序中指定一種外觀很方便,只要調(diào)用 UIManager 類的 setFeelAndLook()方法即可,該方法的參數(shù)是 LookAndFeel 類的實例或類名。例如:如果用當(dāng)前平臺的外觀則可使用: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); UIManager 類的 getSystemLookAndFeelClassName()返回當(dāng)前系統(tǒng)使用的外觀類 17 名。將該段代碼放入應(yīng)用程序 main()方法的開頭就可以設(shè)置應(yīng)用程序的外觀。 如果要指定跨平臺的外面,即 Java 外觀,可以使用下面的代碼: UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();設(shè)置應(yīng)用程序外觀,還可以在 setLookAndFeel()方法的參數(shù)中指定外觀類的名字,例如 ( 1)使用 Java 外觀 UIManager.setLookAndFeel(“javax.swing.plaf.metal.MetalLookAndFeel”); ( 2)使用 Windows 外觀 UIManager.setLookAndFeel(“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”); ( 3)使用 CDE/Motif 外觀 UIManager.setLookAndFeel(“com.sun.java.swing.plaf.motif.MotifLookAndFeel”); ( 4)使用 Mac OS 外觀,但只能用在 Mac OS 平臺 UIManager.setLookAndFeel(“javax.swing.plaf.mac.MacLookAndFeel”); 2.5 引路蜂電子地圖開發(fā)技術(shù) 2.5.1 引路蜂地圖 API 概述 目前流行的電子地圖應(yīng)用中,主要基于 Google 地圖、百度地圖、高德地圖等進行開發(fā)的。如果是基于 Google Earth 的應(yīng)用程序,可以使用 KML 語言 21來進行開發(fā)。如果是用來進行網(wǎng)站 開發(fā),一般采用 Google Map API21來進行開發(fā)。 Google Map API 是一種通過 JavaScript21 將 Google 地圖嵌入到您的網(wǎng)頁的 API。該 API 提供了大量實用工具用以處理地圖,并通過各種服務(wù)向地圖添加內(nèi)容,從而在網(wǎng)站上創(chuàng)建功能全面的地圖應(yīng)用程序。百度地圖和高德地圖提供的 API 提供的都是基于瀏覽器的網(wǎng)頁地圖,采用 JavaScript 語言進行開發(fā)。對于標(biāo)準的 Java 語言它們沒有提供相應(yīng)的 API。 18 引路蜂地圖開發(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)系圖 19 圖 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ā)包進行了抽象,在 20 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è)置地圖的中心點,放大,縮小,移動,以及坐標(biāo)變換(從屏幕坐標(biāo)到地圖坐標(biāo)或從地圖坐標(biāo)到屏幕坐標(biāo)),它是所有地圖類的基類。 MapLayerContainer 是一個集合類,它 21 定義了一組 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 個像素的正 22 方形圖片。圖 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 所示。 23 表 2-1AbstractGraphicsFactory 類中定義的方法 接口 IGraphics 類中定義了一些用于圖形繪制的方法。它定義的方法如表 3-2 所示。 表 2-2 IGraphics 接口中定義的方法 接口 IFont 中定義了字體,如果在應(yīng)用中不使用矢量圖,可以不實現(xiàn)該類。它定義的方 法如表 2-3 所示。 表 2-3 IFont 接口中定義的方法 接口 IImage 中,定義了獲取圖片大小等一系列的方法。它定義的方法如表 2-4 所示。 24 表 2-4 IFont 中定義的方法 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è)置的。 25 第 3 章 系統(tǒng)總體設(shè)計 3.1 系統(tǒng)功能描述 本小組所要研究的對象是電子防脫逃裝置,由電子腕帶(在押人員佩戴)、手持機(監(jiān)管人員佩戴)和專用管理軟件(本軟件)三部分組成。手持機(監(jiān)管人員佩戴)和電子腕帶(在押人員佩戴)分別安置有 GPS25模塊,手持機通過無線傳感網(wǎng)絡(luò)獲取兩點 GPS 位置坐標(biāo),進而進行距離計算,從而確定電子腕帶同手持移動控制終端的距離,如距離超出警 戒范圍則進行報警等操作。專用上位機監(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)。 本軟件包含的主要功能有: 26 新增:出現(xiàn)“新增在押人員基本信息”窗口,手動錄入相關(guān)信息。 刪除:刪除表格中指定行的記錄,同 時 MySQL 中相應(yīng)的記錄也被刪除。 查詢:按給定的條件查詢出符合條件的在押人員基本信息,并顯示在表格中。 修改:出現(xiàn)“在押人員基本信息修改”窗口,修改其中的各信息。 帳戶管理:包括增加帳戶,修改密碼和刪除帳戶等功能。 人員定位:打開 txt 或 csv 文件,在地圖上顯示某一在押人員的路徑。 導(dǎo)出:導(dǎo)出在押人員的基本信息,以 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)化、標(biāo)準化、模塊化”的設(shè)計原則,做到界面清晰、接口標(biāo)準、技術(shù)先進、安全穩(wěn)定和有效集成。有關(guān)應(yīng)用軟件開發(fā)將依據(jù)以下原則:無線人員定位管理軟件 用戶登錄 在押人員管理 用戶帳戶管理 查詢在押人員信息 新 增 在 押 人 員 信 息 修改 在 押 人 員 信 息 顯示在押人員路徑 管理員登錄 操作員 登錄 增加用戶帳戶 刪除用戶帳戶 修改用戶密碼 導(dǎo) 出在押人員信息 刪除在押人員信息 27 ( 1)現(xiàn)代化的管理模式原則 在系統(tǒng)設(shè)計時,既要看到當(dāng)前現(xiàn)狀,又要想到長遠,對系統(tǒng)進行合理的、全面的功能設(shè)計,盡量考慮系統(tǒng)的今后發(fā)展,為系統(tǒng)的擴充留有充分的接口,盡量延長系統(tǒng)的生命周期。 (2) 應(yīng)用當(dāng)前最先進、最成熟的開發(fā)平臺技術(shù)。 采用名牌產(chǎn)品:采用 Java 編程語言, MySQL 數(shù)據(jù)庫管理 系統(tǒng)和 Window XP 操作系統(tǒng),提高系統(tǒng)的安全性與穩(wěn)定性。 ( 3)集成性原則 本系統(tǒng)涉及到不同種類的數(shù)據(jù),與其他應(yīng)用軟件的接口。為了保證系統(tǒng)能夠協(xié)同性工作,保證系統(tǒng)數(shù)據(jù)能夠暢通無阻,必須堅持系統(tǒng)集成性原則,采用國際標(biāo)準,提供標(biāo)準的系統(tǒng)內(nèi)、外接口。 ( 4)可管理、易維護原則 選擇合理的軟件體系結(jié)構(gòu)和網(wǎng)絡(luò)結(jié)構(gòu),提供功能強大而靈活的軟件系統(tǒng)管理工具,使系統(tǒng)易于管理、易于維護、易于今后的擴充和升級。 ( 4)操作簡便、界面友好原則 用戶對應(yīng)用軟件的認識和使用是從界面開始的。因此應(yīng)用軟件界面設(shè)計好壞,直接關(guān)系到軟件使 用的方便性、友好性和易操作性。一個好的用戶界面設(shè)計能幫助使用者更好的理解自己所作的工作,能減少工作疲勞,提供工作效率。 3.3 系統(tǒng)的通信協(xié)議 本軟件通過 USB 數(shù)據(jù)線與手持機進行連接,用戶路徑信息保存在 csv 文件或 txt文件中。當(dāng)管理員想要了解相應(yīng)的在押人員的實時路徑信息時,可以通過打開相應(yīng)的在押人員的路徑文件就可以在軟件上實現(xiàn)人員的路徑顯示。 28 第 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è)計 用戶登錄窗口 用戶名和密碼是否正確 彈出登錄錯誤信息 進入程序主界面 29 在押人員管理模塊是本軟件的核心部分,它由在押人員信息查詢,新增在押人員信息,修改在押人員信息,在押人員中路徑顯示,在押人員信息導(dǎo)出共五個子模塊組成。它實現(xiàn)了對看守所在押人員的基本信息增加、查詢、刪除、修改、導(dǎo)出以及人員路徑再現(xiàn)的綜合性系統(tǒng)。可以通過這個軟件查看每個在押人員的基本信息,并進行修改等,并且可以引路蜂地圖開發(fā)包,查看在押人員的行進路線。下面對在押人員管理的各個子模塊作一個詳細的介紹。 4.2.1 查詢在押人員信息模塊 查詢在押人員信息 界面如圖 4-3 所示。 圖 4-3 查詢在押人員信息界面 本軟件開發(fā)時采用了多文檔界面,在用戶登錄系統(tǒng)后可以顯示程序的主界面。程序在默認情況下所有的子窗口是關(guān)閉的。當(dāng)用戶按下基本操作菜單下的人員信息查詢或者工具欄的人員信息查詢按鈕,就顯示如上界面。在查詢界面的左邊是查詢類型,查詢條件以及相關(guān)人員的頭像。當(dāng)用戶選擇查詢類型,并在其下的文本框中輸入相應(yīng)的查詢內(nèi)容,并按下查詢按鈕就可以在查詢界面的右邊的表格中顯示相關(guān)人員的信息。相關(guān)人員的信息在數(shù)據(jù)庫中是按照其在數(shù)據(jù)庫中原來的順序列出的。當(dāng)用戶在查詢結(jié) 30 果的相應(yīng)行單 擊時,就會在界面的左上角顯示相應(yīng)人員的頭像。 4.2.2 新增在押人員信息模塊 新增在押人員信息的界面如圖 4-4 所示。 圖 4-4 新增在押人員基本信息界面 用戶可以在新增在押人員基本信息界面中輸入相關(guān)的信息,對于某些要格式要求的信息,當(dāng)用戶輸入的信息有誤時,有出現(xiàn)相關(guān)的提示信息。在這里主要用到了 JLabel,JButton, JTextFiled, JFormattedTextField, JComboBox 等。當(dāng)用戶按下添加按鈕時,如果出現(xiàn)添加成功對話框,表明已經(jīng)成功地向數(shù)據(jù)庫中添加一條記錄,否則表明往數(shù)據(jù)庫 添加記錄失敗。當(dāng)用戶認為輸入的信息有許多錯誤時,可以通過重置按鈕來使各個組件恢復(fù)到初始狀態(tài)。 4.2.3 修改在押人員基本信息模塊 在押人員基本信息修改界面如圖 4-5 所示。當(dāng)用戶在查詢結(jié)果的表格中選中某一條記錄并按下表格下方的修改按鈕,就會出現(xiàn)如上圖所示的界面,在修改界面中,會出現(xiàn)未修改前的在押人員基本信息。當(dāng)修改完成后,只要按下修改按鈕,若修改成功,就會出現(xiàn)修改成功的對話框。 31 圖 4-5 修改在押人員信息模塊 4.2.4 刪除在押人員信息模塊 刪除在押人員信息界面如圖 4-6 所示。在押人員信息刪除是基于在押 人員信息查詢模塊的。當(dāng)用戶在查詢結(jié)果的表格中選中某一條記錄并按下表格下方的刪除按鈕,會出現(xiàn)如下所示的刪除提示對話框,當(dāng)用戶點擊是按鈕時,就會將相關(guān)人員的一條記錄刪除。 32 圖 4-6 刪除在押人員信息界面 4.2.5 導(dǎo)出在押人員信息模塊 導(dǎo)出在押人員信息的文件的截圖如圖 4-7 所示。人員信息導(dǎo)出也是基于在押人員信息查詢模塊的。要想導(dǎo)出相關(guān)的數(shù)據(jù),首先必須按照相關(guān)的條件作一次查詢,然后才能導(dǎo)出查詢結(jié)果的數(shù)據(jù)。導(dǎo)出的數(shù)據(jù)默認是以 txt 格式保存的。 圖 4-7 導(dǎo)出在押人員信息圖 4.2.6 顯示在押人員路徑模塊 在 押人員信息顯示模塊是本程序中最為核心的模塊,其界面如圖 4-8 所示。 33 圖 4-8 在押人員路徑顯示界面 它除了具備常用的地圖操作,如放大,縮小,移動外,還能在地圖上顯示在押人員的路徑。同時,地圖也可以通過按下清除按鈕來清除已經(jīng)顯示的地圖的路徑。如果用戶想在地圖上進行在押人員的路徑顯示,必須以管理員的身份登錄,否則會出現(xiàn)圖4-9 所示界面。 圖 4-9 非管理員操作界面 4.3 用戶管理模塊設(shè)計 34 用戶管理模塊主要分為增加帳戶子模塊,刪除帳戶子模塊和修改帳戶密碼子模塊。 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)的帳戶信息。 35 圖 4-12 刪除帳戶對話框 4.3.3 修改帳戶密碼模塊 修改帳戶密碼模塊的界面如圖 4-13 所示,用戶只能修改當(dāng)前登錄用戶自身的密碼,不能修改別的用戶的密碼。用戶只需要在密碼文本框中和密碼確認文本框中兩次輸入相同的密碼,并按下修改按鈕,就可以修改當(dāng)前用戶的密碼了。同時在修改密碼的過程中,也是不能夠修改當(dāng)前用戶的權(quán)限。 圖 4-13 修改密碼對話框 4.4 數(shù)據(jù)庫中表的設(shè)計 在程序中,后臺數(shù)據(jù)庫使用了 MySQL 數(shù)據(jù)庫,通過命令行在程序中創(chuàng)建 名為 gps的數(shù)據(jù)庫。在 gps 數(shù)據(jù)庫中創(chuàng)建了用戶信息表和在押人員信息表。 36 ( 1)用戶信息表:該表記錄了所有用戶的信息。所有用戶分為兩類:普通用戶和管理員,兩種用戶具有不同的權(quán)限。普通用戶具有的權(quán)利管理員都具有。管理員可以對所有用戶進行管理,包括增加、刪除某個用戶,修改或查詢某個用戶的信息。普通用戶可以對自己的密碼進行修改,但是不能修改或察看別的用戶的信息,用戶信息表tb_operator 的表的結(jié)構(gòu)如表 5-1 所示。 表 4-1 用戶信息表 字段 類型 說明 id INT(11) id 號,自動增加 name VARCHAR(12) 姓名 sex VARCHAR(2) 性別 admin VARCHAR(12) 用戶等級 password VARCHAR(12) 密碼 其創(chuàng)建的代碼如下所示。 CREATE TABLE gps.tb_operator ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(12) NOT NULL DEFAULT , sex VARCHAR(2) NOT NULL DEFAULT , admin TINYINT(1) NOT NULL DEFAULT 1, password VARCHAR(12) NOT NULL DEFAULT , PRIMARY KEY (id) ); ( 1)在押人員信息表:該表記錄了所有在押人員的信息,表的結(jié)構(gòu)如表 5-2 所示。 37 表 5-2 在押人員信息表 字段 類型 說明 idtb_man_basicinfo INT(10) id 號,自動增加 manpic LONGBLOB 用戶頭像 bianhao VARCHAR(15) 編號 xinming VARCHAR(45) 姓名 jianyuhao VARCHAR(45) 監(jiān)獄號 age INT(5) 年齡 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 聯(lián)系方式 創(chuàng)建該表的數(shù)據(jù)庫腳本為 CREATE TABLE gps.tb_man_basicinfo ( idtb_man_basicinfo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, manpic LONGBLOB, bianhao VARCHAR(15) NOT NULL, xinming VARCHAR(45) NOT NULL, jianyuhao VARCHAR(45), age INT(5) UNSIGNED, birthdate DATETIME, sex VARCHAR(8), 38 edubackground VARCHAR(15), jiguan VARCHAR(15), anyou VARCHAR(45), youwubinshi VARCHAR(15), marriage VARCHAR(15), xinqi VARCHAR(45), qinshu VARCHAR(15), lianxifangshi VARCHAR(45), PRIMARY KEY (idtb_man_basicinfo) ); 4.5 本章小結(jié) 本章給出了系統(tǒng)的軟件設(shè)計的具體實現(xiàn)。在設(shè)計過程中,將系統(tǒng)整個模塊化,然后根據(jù)模塊的劃分逐個設(shè)計。先給出每個模塊的設(shè)計的實際效果圖,然后根據(jù)需要重要介紹部分模塊的實現(xiàn)過程。在最后,對系統(tǒng)中使用的數(shù)據(jù)庫做了簡要的介紹。 39 第 5 章 項目創(chuàng)新點 5.1 軟件的平臺無關(guān)性 本程 序是采用純 Java 語言編寫,因此用它編寫的程序具有平臺無關(guān)性。程序員不需要修改代碼就可以在不同的平臺上運行。目前,該程序可以既可以在流行的 Windows的各個版本的操作系統(tǒng)運行,也可以在 Linux 等操作系統(tǒng)上運行,并且程序的運行界面會隨著本地的操作系統(tǒng)的風(fēng)格的改變而改變。 5.2 基于桌
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國有企業(yè)員工持股計劃合同模板2篇
- 二零二五年度高新技術(shù)產(chǎn)業(yè)園區(qū)建設(shè)貸款擔(dān)保合同3篇
- 二零二五年度布草行業(yè)供應(yīng)鏈金融解決方案合同3篇
- 2025年度教育機構(gòu)場地租賃合同終止及教學(xué)資源共享協(xié)議4篇
- 2024版區(qū)域公司運營合作合同版B版
- 貨幣金融學(xué):第1章 貨幣與貨幣制度
- 2025年度企業(yè)年會場地借用及服務(wù)保障合同范本3篇
- 個人機械租賃協(xié)議書(2024版)
- 2024資金擔(dān)保協(xié)議范本
- 專業(yè)木工班組2024年施工分包合同
- 《新生兒預(yù)防接種》課件
- 小學(xué)五年級上冊數(shù)學(xué)寒假作業(yè)每日一練
- 2025年1月八省聯(lián)考高考綜合改革適應(yīng)性測試-高三化學(xué)(陜西、山西、寧夏、青海卷) 含解析
- DB1303T382-2024 創(chuàng)傷性休克患者護理指南
- 2024年03月內(nèi)蒙古中國銀行內(nèi)蒙古分行春季校園招考筆試歷年參考題庫附帶答案詳解
- 鏈家、貝殼專業(yè)租房協(xié)議、房屋租賃合同、房屋出租協(xié)議
- 2024-2025學(xué)年華東師大新版八年級上冊數(shù)學(xué)期末復(fù)習(xí)試卷(含詳解)
- 《道路車輛 48V供電電壓的電氣及電子部件 電性能要求和試驗方法》文本以及編制說明
- 2024年新高考I卷數(shù)學(xué)高考試卷(原卷+答案)
- 十八項醫(yī)療核心制度考試題與答案
- 大學(xué)生職業(yè)規(guī)劃大賽生涯發(fā)展報告
評論
0/150
提交評論