基于JAVA的畢業(yè)設(shè)計(jì)論文_第1頁(yè)
基于JAVA的畢業(yè)設(shè)計(jì)論文_第2頁(yè)
基于JAVA的畢業(yè)設(shè)計(jì)論文_第3頁(yè)
基于JAVA的畢業(yè)設(shè)計(jì)論文_第4頁(yè)
基于JAVA的畢業(yè)設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于 JAVA 的無(wú)線人員定位管理軟件設(shè)計(jì) 摘 要 近年來(lái),隨著監(jiān)獄在押人員的不斷上升,僅依靠傳統(tǒng)的視頻監(jiān)控或門(mén)禁報(bào)警系統(tǒng)已顯得獨(dú)木難支,不能做到全方位、多功能的監(jiān)控。因此 ,提高看守所安防管理水平,建立綜合高效的信息監(jiān)管平臺(tái)已成必然趨勢(shì)。 本課題研究的主要內(nèi)容是設(shè)計(jì)一個(gè)無(wú)線人員定位管理軟件,此軟件具有對(duì) 看守所在押 人員 的 基本信息 的 增 加 、查詢(xún)、刪除、修改 , 人員路徑再現(xiàn) 以及用戶(hù)帳戶(hù)管理等功能。本軟件以流行的 Java 語(yǔ)言為開(kāi)發(fā)語(yǔ)言,以開(kāi)源的 Eclipse 為開(kāi)發(fā)開(kāi)臺(tái),以免費(fèi)的 MySQL 作為后臺(tái)開(kāi)發(fā)數(shù)據(jù)庫(kù),并利用引路蜂 地圖開(kāi)發(fā)包實(shí)現(xiàn)人員定位功能的一個(gè)跨平臺(tái)的人員管理系統(tǒng)。 本文首先對(duì) Java 程序編程的基礎(chǔ)知識(shí), JDBC 數(shù)據(jù)庫(kù)技術(shù),圖形界面開(kāi)發(fā)技術(shù),引路蜂地圖開(kāi)發(fā)包等軟件開(kāi)發(fā)的相關(guān)技術(shù)做出了簡(jiǎn)單的介紹。在此基礎(chǔ)之上,介紹了本課題的創(chuàng)新點(diǎn),給出了軟件的總體設(shè)計(jì)方案和各功能模塊的實(shí)現(xiàn)。 關(guān)鍵詞: 無(wú)線定位; Java;引路蜂; JDBC; Eclipse;跨平臺(tái) 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 章 軟件開(kāi)發(fā)相關(guān)技術(shù)介紹 .3 2.1 Java 程序編程基礎(chǔ) . 3 2.1.1 Java 的起源及其發(fā)展 . 3 2.1.2 Java 程序運(yùn)行原理 . 3 2.2 Eclipse 開(kāi)發(fā)平臺(tái) . 5 2.3 數(shù)據(jù)庫(kù)技術(shù) . 6 2.2.1 SQL 語(yǔ)言 概述 . 6 2.2.2 JDBC 模型 . 7 2.2.3 JDBC 的工作方式 . 8 2.2.4 MySQL 數(shù)據(jù)庫(kù) . 10 2.4 圖形界面開(kāi)發(fā)技術(shù) . 10 2.4.1 Swing 組件類(lèi)的層次 . 11 2.4.2 Swing 事件處理機(jī)制 . 13 2.4.3 Swing 中的布局管理 . 13 2.4.4 設(shè)置應(yīng)用程序外觀 . 16 2.5 引路蜂電子地圖開(kāi)發(fā)技術(shù) . 17 2.5.1 引路蜂地圖 API 概述 . 17 2.5.2 地圖開(kāi)發(fā)包類(lèi)的定義 . 18 2.5.3 地圖對(duì)象類(lèi)的層次關(guān)系 . 20 2.5.4 地圖圖片讀取類(lèi)層次關(guān)系 . 21 2.5.5 圖形子系統(tǒng) . 22 2.5.6地圖配置 . 24 第 3 章 系統(tǒng)總體設(shè)計(jì) . 25 3.1 系統(tǒng)功能描述 . 25 3.2 軟件總體設(shè)計(jì) . 26 3.2.1 軟件總體結(jié)構(gòu)圖 . 26 3.2.2 系統(tǒng)開(kāi)發(fā)原則 . 26 3.3 系統(tǒng)的通信協(xié)議 . 27 第 4 章 軟件各模塊的實(shí)現(xiàn) . 28 4.1 用戶(hù)登錄的設(shè)計(jì) . 28 4.2 在押人員管理模塊設(shè)計(jì) . 28 4.2.1 查詢(xún)?cè)谘喝藛T信息模塊 . 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 用戶(hù)管理模塊設(shè)計(jì) . 33 4.3.1 增加帳戶(hù)模塊 . 34 4.3.2 刪除帳戶(hù)模塊 . 34 4.3.3 修改帳戶(hù)密碼模塊 . 35 4.4 數(shù)據(jù)庫(kù)中表的設(shè)計(jì) . 35 4.5 本章小結(jié) . 38 第 5 章 項(xiàng)目創(chuàng)新點(diǎn) . 39 5.1 軟件的平臺(tái)無(wú)關(guān)性 . 39 5.2 基于桌面系統(tǒng)的 Java 地圖應(yīng)用 . 39 5.3 采用最新的地圖顯示技術(shù) . 39 第 6 章 結(jié)束語(yǔ) . 39 參考文獻(xiàn) . 41 致 謝 . 42 1 第 1 章 緒論 1.1 課題意義及目的 近年來(lái),雖然監(jiān)控技術(shù)高速發(fā)展,但看守所中在押人員的狡詐意識(shí)也逐漸增強(qiáng),犯罪種類(lèi)有增無(wú)減,常常出現(xiàn)聚眾斗毆、自殘、逃跑等現(xiàn)象,因此,提高看守所安防管理水平,建立綜合高效的信息監(jiān)管平臺(tái)已成必然趨勢(shì) 1。 目前,已有的安防系統(tǒng)大都只能實(shí)現(xiàn)對(duì)定點(diǎn)人群的定位,無(wú)法對(duì)移動(dòng)人群進(jìn)行定位,因此對(duì)于出逃在外的在押人員,監(jiān) 管人員無(wú)法判斷其出逃方向,更無(wú)法獲得其出逃路線,不利于高效地追捕。因此,設(shè)計(jì)一套無(wú)線人員定位管理系統(tǒng),可以解決移動(dòng)人群的追蹤定位問(wèn)題,具有廣泛的社會(huì)需求和廣闊的市場(chǎng)前景。 在信息技術(shù)不斷發(fā)展的今天,利用無(wú)線人員定位管理系統(tǒng),能夠有效地監(jiān)控高危在押人員,防止在押人員的出逃,追查及跟進(jìn)暴力事件的發(fā)生,最大限度的保障監(jiān)管人員和在押人員的人身安全,并促進(jìn)監(jiān)獄安全技術(shù)防范系統(tǒng)向集成化、網(wǎng)絡(luò)化、智能化的進(jìn)一步發(fā)展,具有一定的創(chuàng)新意義及實(shí)用價(jià)值。 1.2 課題主要研究的內(nèi)容 本課題以 Windows XP 為開(kāi)發(fā)平臺(tái),以 Java 為開(kāi)發(fā)語(yǔ)言,以 Eclipse 作為集成開(kāi)發(fā)工具, MySQL 作為后臺(tái)開(kāi)發(fā)數(shù)據(jù)庫(kù)。本文從上位機(jī)軟件出發(fā),利用面向?qū)ο蟆?shù)據(jù)庫(kù)、 Swing、多線程等技術(shù),采用引路蜂的 J2SE 地圖開(kāi)發(fā)包,設(shè)計(jì)并實(shí)現(xiàn)無(wú)線人員定位管理系統(tǒng)軟件。此軟件具有 看守所 在押 人員 的 基本信息閱覽、新增、查詢(xún)、刪除、修改 , 人員路徑再現(xiàn) 以及用戶(hù)帳戶(hù)管理的功能 。通過(guò)這個(gè)軟件查看每個(gè) 在押 人員的基本信息,并進(jìn)行修改, 并且 可以結(jié)合 引路蜂地圖 ,查看 在押 人員的行進(jìn)路線。為了提升系統(tǒng)的安全性,所有用戶(hù)只有在登錄后才可以使用本系統(tǒng)。 同時(shí),為了方便不同的人員對(duì)在押人 員進(jìn)行管理,軟件中設(shè)置了帳戶(hù)管理的功能。 2 本論文的主要研究?jī)?nèi)容如下 : (l)學(xué)習(xí)和掌握 Java 編程語(yǔ)言、 Eclipse 開(kāi)發(fā)平臺(tái)、 JDBC 數(shù)據(jù)庫(kù)技術(shù)、 Swing 應(yīng)用程序開(kāi)發(fā)包和引路蜂地圖開(kāi)發(fā)包的使用。 (2)分析整個(gè)無(wú)線定位管理軟件系統(tǒng)的總體框架及其功能特點(diǎn)。 (3)根據(jù)用戶(hù)需求設(shè)計(jì)出無(wú)線定位管理軟件系統(tǒng),給管理人員提供可視化界面,實(shí)現(xiàn)對(duì) 看守所 在押 人員 的 基本信息 的 閱覽、新增、查詢(xún)、刪除、修改 , 人員路徑再現(xiàn) 等功能 。 (4)對(duì)軟件進(jìn)行現(xiàn)場(chǎng)測(cè)試,以驗(yàn)證設(shè)計(jì)的可行性、準(zhǔn)確性和優(yōu)越性。 3 第 2 章 軟件開(kāi)發(fā)相關(guān)技術(shù)介紹 2.1 Java 程序編程基礎(chǔ) 2.1.1 Java 的起源及其發(fā)展 Java 是 Sun 公司開(kāi)發(fā)出來(lái)的一套編程語(yǔ)言,最早來(lái)源于一個(gè)叫 Green 的項(xiàng)目。這個(gè)項(xiàng)目原來(lái)的目的是為家用電子消費(fèi)產(chǎn)品開(kāi)發(fā)一個(gè)分布式的代碼系統(tǒng),這樣就可以通過(guò)網(wǎng)絡(luò)對(duì)家用電器進(jìn)行控制。開(kāi)始 Sun 公司的工程師準(zhǔn)備采用 C+2,但由于 C+過(guò)于復(fù)雜,安全性差,最后決定基于 C+開(kāi)發(fā)一種新語(yǔ)言( Oak 語(yǔ)言)。 Oak 是一種用于網(wǎng)絡(luò) ,精巧而安全的語(yǔ)言, Sun 公司曾以此投標(biāo)過(guò)一個(gè)交互式電視項(xiàng)目,結(jié)果被 SGI打敗。恰巧此時(shí) Mark Andreessen 開(kāi)發(fā)的 Mosaic 和 Netscape 啟發(fā)了 Oak 的成員, Sun的工程師們用 Java 編制了 HotJava 瀏覽器,觸發(fā)了 Sun 進(jìn)軍 Internet3。 Java 語(yǔ)言發(fā)展到至今經(jīng)歷了一系列的過(guò)程, Java 在 1995 年 5 月 23 日推出了 JDK 1.0 版本,此版本標(biāo)志著 Java 正式進(jìn)軍 Internet 的開(kāi)始。在 1998 年, Sun 公司推出了JDK 1.2 開(kāi)發(fā)包,該版本加入了大量的輕量級(jí)組件,從此以后 Java 正式被命名為 JDK 2。在此之后, Sun 公司也陸續(xù)發(fā)布了一系列的 Java 開(kāi)發(fā)包版本, 目前最新版本的 JDK 為JDK 74。 2.1.2 Java 程序運(yùn)行原理 Java 中有兩類(lèi)應(yīng)用程序,一類(lèi)是有自己獨(dú)立運(yùn)行入口點(diǎn)的 Java 應(yīng)用程序,另一類(lèi)是嵌入在 Web 頁(yè)面中由 Web 瀏覽器來(lái)控制運(yùn)行的 Java 小程序( Applet5)。在運(yùn)行時(shí),它們都需要 Java 運(yùn)行系統(tǒng)的支持,對(duì)于 Java 運(yùn)行程序, Java 運(yùn)行系統(tǒng)一般是指 Java解析器;而對(duì)于 Applet, Java 運(yùn)行系統(tǒng)一般是指運(yùn)行 Applet 的與 Java 相兼容的 Web 瀏覽器,并且其中包含了支持 Applet 運(yùn)行的環(huán)境。 Java 運(yùn)行系統(tǒng)的功能是對(duì)字 節(jié)碼進(jìn)行解析和執(zhí)行,其工作過(guò)程可以分為以下三步。 ( 1)由類(lèi)裝載器完成字節(jié)碼的裝載。在裝載過(guò)程中,程序運(yùn)行時(shí)所需要的所有代 4 碼都被裝載。完成后,節(jié)節(jié)碼中便保留了地址的符號(hào)引用信息,運(yùn)行系統(tǒng)通過(guò)建立的地址符號(hào)引用信息與內(nèi)存之間的對(duì)照來(lái)確定程序的內(nèi)存分配。 ( 2)由字節(jié)碼檢驗(yàn)器對(duì)字節(jié)碼進(jìn)行安全性檢查。這種檢查可以排除字節(jié)碼中可能存在的違反訪問(wèn)權(quán)限,不規(guī)范數(shù)據(jù)類(lèi)型以及非法調(diào)用等問(wèn)題。 ( 3)字節(jié)碼的翻譯和執(zhí)行。 Java 字節(jié)碼的運(yùn)行可能有兩種方式,一種是通過(guò)代碼生成器,先將字節(jié)碼翻譯成適用于本系統(tǒng)的機(jī)器碼,然后再送到 硬件去執(zhí)行,這是一種編譯性工作方式。另一種是通過(guò)解析器將字節(jié)碼翻譯成機(jī)器碼,然后由即時(shí)運(yùn)行部件將機(jī)器碼送到硬件去執(zhí)行,這是一種解析性工作方式。 Java 運(yùn)行系統(tǒng)一般采用第二種工作方式,只有對(duì)那些運(yùn)行速度要求較高,才采用編譯性工作方式,這時(shí)就需要使用特定的代碼生成器來(lái)完成編譯,從而保證 Java 程序代碼的高性能 6。 5 2.2 Eclipse 開(kāi)發(fā)平臺(tái) Eclipse 是一個(gè)開(kāi)放源代碼的,基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái),它通過(guò)插件組件構(gòu)成開(kāi)發(fā)環(huán)境。 Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,其中最著名的插件當(dāng)屬 Java 開(kāi)發(fā) 工具( Java Development Tools, JDT) 7,其界面的主界面如圖 2-1 所示。最初主要用來(lái) Java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)外掛程式使其作為其他計(jì)算機(jī)語(yǔ)言比如 C+和 Python的開(kāi)發(fā)工具。 Eclipse 本身只是一個(gè)框架平臺(tái),但是眾多外掛程式的支持使得 Eclipse擁有其他功能相對(duì)固定的 IDE 軟體很難具有的靈活性。許多軟體開(kāi)發(fā)商以 Eclipse 為框架開(kāi)發(fā)自己的 IDE。 Eclipse 最初由 IBM 公司開(kāi)發(fā), 2001 年 11 月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟體供應(yīng)商聯(lián)盟 Eclipse 基金會(huì)( Eclipse Foundation)管理 8。 圖 2-1 Eclipse 程序主界面 在用最新版本的 Eclipse 開(kāi)發(fā)桌面應(yīng)用程序時(shí),既可以直接編寫(xiě)代碼來(lái)設(shè)計(jì)應(yīng)用程序界面,也可以使用 Eclipse 的 Visual Swing Designer 來(lái)進(jìn)行界面的可視化設(shè)計(jì)。 Visual Swing Designer 是一個(gè) Swing 界面設(shè)計(jì)工具插件 ,代碼的生成和解析不需要依賴(lài)于form 文件,而且生成的代碼可讀性很好,支持代碼跟界面實(shí)時(shí)的切換。它還支持表格和樹(shù)的可視化設(shè)計(jì),程序員在設(shè)計(jì)表格和樹(shù)模型時(shí),不需要編寫(xiě)復(fù) 雜的代碼,直接從 6 采用界面操作便可以生成表格和樹(shù)的數(shù)據(jù)模型代碼。在一般情況下,可以通過(guò) Visual Swing Designer 來(lái)設(shè)計(jì)程序的基本界面,再通過(guò)用戶(hù)定制一些代碼往往能更快地進(jìn)行應(yīng)用程序的快速開(kāi)發(fā)。 Eclipse 的使用大大減少了程序員開(kāi)發(fā)程序的工作量,尤其是在程序界面設(shè)計(jì)方面。同時(shí)擁有對(duì)代碼錯(cuò)誤信息的實(shí)時(shí)提示功能,當(dāng)程序代碼出現(xiàn)錯(cuò)誤時(shí), Eclipse 會(huì)在代碼左邊顯示出錯(cuò)誤提示,點(diǎn)擊它能夠幫助程序員自動(dòng)更正錯(cuò)誤。 2.3 數(shù)據(jù)庫(kù)技術(shù) 程序設(shè)計(jì)中離不開(kāi)數(shù)據(jù)庫(kù)的支持,每個(gè)程序的設(shè)計(jì)都是使用數(shù)據(jù)庫(kù)保存數(shù)據(jù)。 JDBC是 Java程序連接和存取數(shù)據(jù)庫(kù)的應(yīng)用程序接口,是 Java核心 API的一部分。 JDBC使程序員能夠利用當(dāng)前最新的數(shù)據(jù)庫(kù)特征,如同時(shí)連接多個(gè)數(shù)據(jù)庫(kù)等。 JDBC 支持靜態(tài)和動(dòng)態(tài)的 SQL 語(yǔ)句(在運(yùn)行時(shí)組建查詢(xún)和更新語(yǔ)句)。 JDBC 最大的特點(diǎn)是無(wú)論后臺(tái)是何種數(shù)據(jù)庫(kù),對(duì)于 Java 程序員而言,它的工作方式完全相同。 JDBC 為許多不同的數(shù)據(jù)庫(kù)連接模塊的前端提供了統(tǒng)一的接口,這樣就不用為連接不同的數(shù)據(jù)庫(kù)而煩惱了。當(dāng)需要為程序修改數(shù)據(jù)庫(kù)時(shí),程序基本上只要修改在代碼中修改數(shù)據(jù)庫(kù)的驅(qū)動(dòng),URL,用戶(hù)名,密碼,其他的地方基本 上是沒(méi)有發(fā)生變化的。 2.3.1 SQL 語(yǔ)言概述 SQL(Structure Query Language,結(jié)構(gòu)化查詢(xún)語(yǔ)言 ),是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫(kù)語(yǔ)言。SQL 語(yǔ)言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通 9。 20 世紀(jì) 80 年代初,美國(guó)國(guó)家標(biāo)準(zhǔn)局( ANSI)開(kāi)始著手定制 SQL 標(biāo)準(zhǔn),最早的ANSI 標(biāo)準(zhǔn)于 1986 年完成,叫做 SQL-86。標(biāo)準(zhǔn)的出臺(tái)使 SQL 作為標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的地位得到了加強(qiáng)。 SQL 標(biāo)準(zhǔn)目前已幾經(jīng)修改,更趨完善。 正是由于 SQL 語(yǔ)言的標(biāo)準(zhǔn)化,所以大多數(shù)關(guān)系型數(shù)據(jù)庫(kù)都支持 SQL 語(yǔ)言,它已經(jīng)發(fā)展成為多種平臺(tái)進(jìn)行交互操作的底層會(huì)話語(yǔ)言。 7 SQL 語(yǔ)句主要可以劃分為以下 3 個(gè)類(lèi)別。 ( 1) DDL(Data Definition Languages)語(yǔ)句:數(shù)據(jù)定義語(yǔ)言,這些語(yǔ)句定義了不同的數(shù)據(jù)段、數(shù)據(jù)庫(kù)、表列、索引等數(shù)據(jù)庫(kù)對(duì)象的定義。常用的語(yǔ)句關(guān)鍵字主要包括create、 drop 等。 ( 2) DML(Date Manipulation Language)語(yǔ)句:數(shù)據(jù)操縱語(yǔ)句,用于添加、刪除、更新和查詢(xún)數(shù)據(jù)庫(kù)記錄,并檢查數(shù)據(jù)完整性。常用的語(yǔ)句關(guān)鍵字主要包括 insert、 delete、update 和 select 等。 ( 3) DCL( Data Control Language)語(yǔ)句:數(shù)據(jù)控制語(yǔ)句,用于控制不同數(shù)據(jù)段直接的許可和訪問(wèn)級(jí)別的語(yǔ)句。這些語(yǔ)句定義了數(shù)據(jù)庫(kù)、表、字段、用戶(hù)的訪問(wèn)權(quán)限和安全級(jí)別。 2.3.2 JDBC 模型 JDBC 由 編 程 語(yǔ) 言 編 寫(xiě) 的 類(lèi) 及 接 口 組 成,同時(shí)它也為程序開(kāi)發(fā)人員提供了一組用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的 API,并支持 SQL 語(yǔ)言。利用 JDBC 可以將 Java代碼連接到 Oracle, SQL Server, MySQL 等數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的相關(guān)操作 10。 JDBC 為數(shù) 據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)前臺(tái)工具開(kāi)發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開(kāi)發(fā)人員可以用純 Java 語(yǔ)言編寫(xiě)完整的數(shù)據(jù)庫(kù)應(yīng)用程序 用 JDBC 寫(xiě)的程序能夠自動(dòng)地將 SQL 語(yǔ)句傳送給相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)。不但如此,使用 Java 編寫(xiě)的應(yīng)用程序可以在任何支持 Java 的平臺(tái)上運(yùn)行,不必在不同的平臺(tái)上編寫(xiě)不同的應(yīng)用程序 11。 JDBC 由兩層組成,上面一層是 JDBC API,下面一層是 JDBC 驅(qū)動(dòng)程序 API。 JDBC API 負(fù)責(zé)與 JDBC 管理器驅(qū)動(dòng)程序 API 進(jìn)行通信,將各個(gè)不同的 SQL 語(yǔ)句發(fā)送給它。驅(qū)動(dòng) 程序管理器與實(shí)際連接到數(shù)據(jù)庫(kù)的第三方驅(qū)動(dòng)程序進(jìn)行通信,并且返回查詢(xún)的信 8 息,或者執(zhí)行由查詢(xún)規(guī)定的操作 12。它主要由以下四個(gè)部分組成。 (l)Java 程序 Java 程序包括應(yīng)用程序, Applet 和 Servlet 等 ,這些類(lèi)型的程序都可以利用 JDBC方法完成對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和操作。完成的主要任務(wù)有:請(qǐng)求與數(shù)據(jù)庫(kù)建立連接、向數(shù)據(jù)庫(kù)發(fā)送 SQL 請(qǐng)求,為結(jié)果集定義存儲(chǔ)應(yīng)用和數(shù)據(jù)類(lèi)型、查詢(xún)結(jié)果、處理錯(cuò)誤、遞交及關(guān)閉等操作。 ( 2) JDBC 驅(qū)動(dòng)程序管理器 JDBC 驅(qū)動(dòng)管理器能夠動(dòng)態(tài)地管理和維護(hù)數(shù)據(jù)庫(kù)查詢(xún)所需要的所有廠商或第三 方所提供的驅(qū)動(dòng)程序?qū)ο?,?shí)現(xiàn) Java 任務(wù)與特定驅(qū)動(dòng)程序的連接,從而體現(xiàn) JDBC 與驅(qū)動(dòng)無(wú)關(guān)這一特點(diǎn)。它完成的任務(wù)有為:為特定的數(shù)據(jù)庫(kù)選擇驅(qū)動(dòng)程序,處理 JDBC 初始化調(diào)用,為每個(gè)驅(qū)動(dòng)程序提供 JDBC 功能的入口,為 JDBC 調(diào)用執(zhí)行參數(shù)。 (3)驅(qū)動(dòng)程序 驅(qū)動(dòng)程序一般由數(shù)據(jù)庫(kù)廠商或者第三方提供,它由 JDBC 方法調(diào)用,向特定的數(shù)據(jù)庫(kù)發(fā)送 SQL 請(qǐng)求,并為 Java 程序取得結(jié)果。驅(qū)動(dòng)程序可以完成下列任務(wù):建立與數(shù)據(jù)庫(kù)的連接,向數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求等。 (4)數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)是指 Java 程序所需要的數(shù)據(jù)庫(kù),如 MySQL, SQL Server, Oracle。在本課題中,使用了 MySQL 數(shù)據(jù)庫(kù)。 2.3.3 JDBC 的工作方式 JDBC 功能強(qiáng)大非常強(qiáng)大,但使用簡(jiǎn)單。無(wú)論連接何種數(shù)據(jù)庫(kù),只要做好下列步驟即可: ( 1)與數(shù)據(jù)源建立連接 通過(guò) DriverManager 類(lèi)建立與數(shù)據(jù)庫(kù)的連接,這個(gè)連接將作為一個(gè)數(shù)據(jù)操作的起 9 點(diǎn)。 例如,在本程序中,使用以下語(yǔ)句與 MySQL 數(shù)據(jù)庫(kù)建立了連接。 protected static String dbClassName = org.gjt.mm.mysql.Driver;/ 數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)類(lèi) protected static String dbUrl = jdbc:mysql:/localhost:3306/gps;/ 數(shù)據(jù)庫(kù)連接 URL protected static String dbUser = root; / 數(shù)據(jù)庫(kù)用戶(hù)名 protected static String dbPwd = admin; / 數(shù)據(jù)庫(kù)密碼 private static Connection conn = null; / 數(shù)據(jù)庫(kù)連接對(duì)象 Class.forName(dbClassName); / 加載驅(qū)動(dòng)類(lèi) conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);/ 與數(shù)據(jù)庫(kù)建立一個(gè)連接 ( 2)向數(shù)據(jù)庫(kù)發(fā)送 SQL 命令 通過(guò) Statement 或者 PreparedStatement 類(lèi)發(fā)送 SQL 命令。在命令發(fā)送后,調(diào)用類(lèi)中的 excute 方法來(lái)執(zhí)行結(jié)果。例如,下列語(yǔ)句將會(huì)執(zhí)行 sql 語(yǔ)句指定的操作。 Statement stmt=conn. createStatement (sql);/通過(guò) SQL 語(yǔ)句創(chuàng)建 Statement stmt.execte();/執(zhí)行 sql 語(yǔ)句指定的操作 ( 3)處理數(shù)據(jù)源返回的結(jié)果 數(shù)據(jù)庫(kù)處理了 SQL 命令后,將返回處理結(jié)果。對(duì)于查詢(xún)將會(huì)返回一個(gè) ResultSet結(jié)果集,在 Java 程序中遍歷這個(gè)結(jié)果集就可以執(zhí)行想要的操作了。例如,下列語(yǔ)句則會(huì)從數(shù)據(jù)庫(kù)的 tb_operator 表中返回具有指定用戶(hù)名和密碼的查詢(xún)結(jié)果,并存放在ResultSet 中。 String sql = select * from tb_operator where name= + name+ and password= + password + ;/查詢(xún)字符串 10 ResultSet rs = Dao.executeQuery(sql);/ 執(zhí)行查詢(xún) 2.3.4 MySQL 數(shù)據(jù)庫(kù) 近幾年來(lái),開(kāi)源數(shù)據(jù)庫(kù)逐漸流行起來(lái)。由于具有免費(fèi)使用、配置簡(jiǎn)單、穩(wěn)定性能好、性能優(yōu)良等優(yōu)點(diǎn),開(kāi)源數(shù)據(jù)庫(kù)在中低端應(yīng)用中占據(jù)了很大的市場(chǎng)人人份額,而MySQL 正是開(kāi)源數(shù)據(jù)庫(kù)的杰出代表。 MySQL13-14數(shù)據(jù)庫(kù)隸屬于 MySQL AB 公司,總部位于瑞典。 MySQL 幾乎支持所有的操作系統(tǒng),并且支持很大的表,這些特性使得 MySQL 的發(fā)展非常迅猛,目前已經(jīng)廣泛應(yīng)用 在各個(gè)行業(yè)中。 MySQL 數(shù)據(jù)庫(kù)目前分為社區(qū)版( Community Server)和企業(yè)版( Enterprise),它們最重要的區(qū)別在于:社區(qū)版是自由下載而且完全免費(fèi)的,但是官方不提供任何技術(shù)支持,適用于大多數(shù)普通用戶(hù);企業(yè)版是收費(fèi)的,不能在線下載,相應(yīng)地,它提供了更多的功能和更完備的技術(shù)支持,更適合于對(duì)數(shù)據(jù)庫(kù)的功能和可靠性要求比較高的企業(yè)客戶(hù)。在本程序中,使用了 MySQL 數(shù)據(jù)庫(kù)的社區(qū)版來(lái)對(duì)程序中相關(guān)的人員信息進(jìn)行維護(hù)。 2.4 圖形界面開(kāi)發(fā)技術(shù) Swing15是一個(gè)用于開(kāi)發(fā) Java 圖形界面應(yīng)用程序的開(kāi) 發(fā)工具包,它是以抽象窗口工具包( AWT) 16為基礎(chǔ),使跨平臺(tái)應(yīng)用程序可以使用任何的外觀風(fēng)格。 Swing 開(kāi)發(fā)人員通過(guò)使用少量的代碼,就可以利用 Swing 包中豐富、靈活的功能和模塊化組件類(lèi)來(lái)開(kāi)發(fā)令人滿意的用戶(hù)界面。 Swing 是 Sun 公司推出的第二代圖形用戶(hù)接口工具包,通過(guò) Swing 可以開(kāi)發(fā)出功能強(qiáng)大,界面優(yōu)美的客戶(hù)應(yīng)用程序。 Swing 中不但提供了許多功能完善的控件,而且還有良好的擴(kuò)展能力。 Swing 組件實(shí)現(xiàn)不包括任何與平臺(tái)相關(guān)的代碼。 Swing 組件是純 Java 語(yǔ)言編寫(xiě),沒(méi)有本地代碼,是一種輕量級(jí)組件 17。 11 目前利用 Swing 開(kāi)發(fā)的可視化桌面程序已經(jīng)非常成熟,并且很多工具已經(jīng)在業(yè)界產(chǎn)生了巨大影響。例如 IBM Lotus notes 辦公套件, Eclipse 和 NetBeans 開(kāi)發(fā)工具。其中這 Eclipse 和 NetBeans 是用來(lái)開(kāi)發(fā) Java 應(yīng)用程序的,本來(lái)也是使用 Swing 開(kāi)發(fā)出來(lái)的一套工具,在全世界普及。近年來(lái), NetBeans 的發(fā)展,已經(jīng)在程序員中產(chǎn)生了良好的口碑,特別是它的可視化桌面程序設(shè)計(jì)器,拖拽方式設(shè)計(jì)桌面窗口,以及各種各樣良好的輔助設(shè)計(jì)功能,讓之前可視化拖拽設(shè)計(jì)工具 Delphi 的設(shè)計(jì)人員也大大贊賞。特別是 Swing 設(shè)計(jì)的桌面程序,在不同平臺(tái)幾乎不需要做什么修改就可以直接使用,讓目前的軟件廠商找到了非常好的跨平臺(tái)編程工具 18。 2.4.1 Swing 組件類(lèi)的層次 Swing 中的組件的層次結(jié)構(gòu)如圖 2-2 所示, Swing 的組件可以分為兩種類(lèi)型,一種是 JComponent 類(lèi),另一種是 Window 類(lèi)。其中 Window 組件類(lèi)主要包括了一些可以獨(dú)立顯示的組件,而 JComponent 組件類(lèi)主要包括了一些不能獨(dú)立顯示的組件。什么是可以獨(dú)立顯示的組件呢?獨(dú)立顯示的組件是指當(dāng)運(yùn)行一 個(gè)程序時(shí),這個(gè)組件無(wú)須托付在其他組件上就可以顯示,即它可以直接顯示出來(lái),例如 JFrame 類(lèi),它可以獨(dú)立顯示,無(wú)須任何其他的組件。而不可獨(dú)立顯示的組件則必須依靠可獨(dú)立顯示的組件來(lái)顯示,例如文本框組件、按鈕組件、必須依托在 JFrame 等上面才能顯示出來(lái)。 12 圖 2-2 Swing 組件類(lèi)的層次結(jié)構(gòu)圖 以上的示意圖只是從顯示效果上劃分,其實(shí)從其功能上劃分,在 javax.swing 包中Swing 組件共有三種類(lèi)型:頂層組件、中間組件、基本組件。頂層組件又被稱(chēng)為頂層容 器,而中間組件又分為中間容器和特殊中間組件,如圖 2-3 所示。 圖 2-3 Swing 組件從功能上劃分 (1)頂層組件類(lèi):所謂的頂層組件類(lèi)是指可以獨(dú)立顯示的組件。主要有 JFrame,JApplet, JDialog, JWindow 等。 (2)中間容器類(lèi):所謂的中間容器類(lèi)是指那些可以充當(dāng)載體,但也是不可以獨(dú)立顯示的組件。通俗地說(shuō),就是一些基本控件可以放在其中,但是它不能獨(dú)立顯示,必須Component Container JComponent Window JPanel JTable JTree JTextField JButton JTextField JFrame JDialog Swing 組件 頂層組件類(lèi) 中間組件類(lèi) 基本組件類(lèi) 中間容器類(lèi) 特殊中間容器類(lèi) 13 依托在頂層容器上才能顯示。常用的中間容器有 JPanel, JScrollPane, JSplitPane,JToolBar. (3)特殊中間組件類(lèi):在 GUI 上起特殊作用的中間層,如 JInternalFrame。 (4)基本組件類(lèi):基本組件是指那些只能依托在中間窗口上才能被顯示的組件,如JButton, JComboBox,JMenu 等。 2.4.2 Swing 事件處理機(jī)制 圖形用戶(hù)界面程序都需要對(duì)環(huán)境中發(fā)生的各種事件(包括鼠標(biāo)的單擊、值的改變、焦點(diǎn)的獲取或者丟失、鍵盤(pán)輸入等 )進(jìn)行監(jiān)控并根據(jù)事件的類(lèi)型進(jìn)行相應(yīng)的處理。Swing 中采用了委托事件模型,也叫授權(quán)事件模型來(lái)處理系統(tǒng)發(fā)生的各類(lèi)事件 19。 在授權(quán)事件模型中,主要包含 3 個(gè)對(duì)象。 (1)事件:發(fā)生在用戶(hù)界面上的用戶(hù)交互行為所產(chǎn)生的一種效果。 (2)事件源:產(chǎn)生事件的對(duì)象。 (3)事件監(jiān)聽(tīng)器:接收事件并對(duì)其進(jìn)行處理的對(duì)象。 組件作為事件源可以觸發(fā)事件,一個(gè)事件源可以注冊(cè)一個(gè)或多個(gè)事件監(jiān)聽(tīng)器。當(dāng)特定事件發(fā)生時(shí),事件被委托到特定的事件監(jiān)聽(tīng)器進(jìn)行處理。具體來(lái)說(shuō),首先通過(guò)組件的 Add Listener 方法注冊(cè)事件監(jiān)聽(tīng)器,一個(gè)組件可以注冊(cè)多個(gè)事件監(jiān)聽(tīng)器。 監(jiān)聽(tīng)器監(jiān)聽(tīng)特定的事件,如果組件觸發(fā)了相應(yīng)類(lèi)型的事件,此事件被傳送給已經(jīng)注冊(cè)的監(jiān)聽(tīng)器,事件 監(jiān)聽(tīng)器負(fù)責(zé)處理事件。 委托事件模型具有如下優(yōu)點(diǎn): (1)事件對(duì)象只傳給注冊(cè)的監(jiān)聽(tīng)器,不會(huì)被其他組件或上層窗口捕獲和處理。 (2)可以實(shí)現(xiàn)過(guò)濾的功能,只監(jiān)聽(tīng)和處理感興趣的事件。 (3)實(shí)現(xiàn)了將事件源和事件監(jiān)聽(tīng)器分開(kāi)處理的功能。 2.4.3 Swing 中的布局管理 14 Java 中的布局管理管理功能,沒(méi)有 Visual Basic, Visual C+等可視化軟件所帶的表單設(shè)計(jì)器,可以在畫(huà)板上直接將組件按照程序員的意愿進(jìn)行排列。在 Java 中只能通過(guò)編寫(xiě)代碼來(lái)規(guī)范每個(gè)控件在頂層窗口中的位置。不同的代碼代表著不同的代碼 布局方式,不同的布局方式代表著不同的布局格調(diào)。 為了將添加到容器中的 Swing 組件和其他容器進(jìn)行布局, Swing 采用了兩種布局方式:無(wú)布局管理器布局和基于布局管理器的布局。其中無(wú)布局管理器的布局是通過(guò)指定 Swing 組件在窗體上的絕對(duì)位置來(lái)實(shí)現(xiàn)的?;诓季止芾砥鞯牟季?20是 Swing 為了實(shí)現(xiàn)跨平臺(tái)的動(dòng)態(tài)布局效果而提出的布局方式。在這種方式下,需要調(diào)用容器類(lèi)( JFrame, JDialog 或者 JPanel 等)的 setLayout 方法設(shè)置布局管理器,常用的布局管理器有 FlowLayout, BorderLayout, GridLayout 等多種方式。不同的布局管理器使用不同的算法和策略來(lái)決定組件在窗口內(nèi)的布局。設(shè)置好布局管理器后,窗口內(nèi)的所有組件的布局就由布局管理器來(lái)負(fù)責(zé),包括組件的排列順序,組件的大小,位置,當(dāng)窗口移動(dòng)或調(diào)整組件大小后該如何變化等。 無(wú)布局管理器的布局 Swing 中提供了 setLocation(),setSize(),setBounds()等布局方法,但 Swing 中存在一個(gè)默認(rèn)的布局管理器,因此這些方法都會(huì)失效。如果需要設(shè)置組件的大小或位置,則應(yīng)取消布局管理器,方法為調(diào)用容器的 setLayout() 方法,并將布局管理器設(shè)置為 null。 采用無(wú)布局管理對(duì)組件進(jìn)行布局時(shí),相對(duì)于基于布局管理器的布局方式在對(duì)組件的大小和位置的控制上較為靈活,但這種布局方法會(huì)導(dǎo)致平臺(tái)相關(guān),在不同的平臺(tái)上可能產(chǎn)生不同的顯示效果。如果想要使應(yīng)用程序在不同的平臺(tái)上運(yùn)行,則需要采用基于布局管理器的布局方式。 FlowLayout 容器采用 FlowLayout 布局其組件的放置規(guī)律是從左到右,從上到下進(jìn)行設(shè)置,如 15 果容器足夠?qū)挘谝粋€(gè)組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個(gè)組件的右邊,如果當(dāng)前行已經(jīng)放置不下該組件,剛放到 下一行的最左邊。當(dāng)容器的大小發(fā)生變化時(shí),用 FlowLayout 管理的組件會(huì)發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化。 BorderLayout BorderLayout 布局管理器把容器分為五個(gè)區(qū)域: North, South, East, West, Center。每個(gè)區(qū)域只能放置一個(gè)組件。如果使用了 BorderLayout 布局,那么當(dāng)容器的大小發(fā)生變化時(shí),其變化規(guī)律為:組件的相對(duì)位置不變,大小發(fā)生變化。例如容器變高了,則North、 South 區(qū)域不變, West、 Center, East 區(qū)域變高。 如果窗口變寬了,則 West 和East 不變, North、 Center 和 South 區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域沒(méi)有組件,則用 Center 去補(bǔ)充。 GridLayout GridLayout 將組件按網(wǎng)格型排列,每個(gè)成員盡可能地占據(jù)網(wǎng)格的空間,每個(gè)網(wǎng)格也同樣盡可能地占據(jù)空間,從而各個(gè)成員按一定的大小比例放置。如果你改變大小, GridLayout 將相應(yīng)地改變每個(gè)網(wǎng)格的大小,以使各個(gè)網(wǎng)格盡可能地大,占據(jù) Container容器全部的空間。 GridLayout 基本布局策略是把容器的空間劃分成若干行 乘以若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小區(qū)域中,所有的區(qū)域大小一樣。組件按從左到右,從上到下的方法加入。 使用構(gòu)造函數(shù) GridLayout(int rows, int cols)可以創(chuàng)建 具有指定行數(shù)和列數(shù)的網(wǎng)格布局。 構(gòu)造函數(shù)里的行數(shù)和列數(shù)能夠有一個(gè)為零,但是不能都為零。當(dāng)容器里增加控件時(shí)候,容器內(nèi)將向 0 的那個(gè)方向增長(zhǎng)。例如,如果是如下語(yǔ)句: GridLayout layout= new GridLayout( 0, 1);在增加控件時(shí),會(huì)保持一個(gè)列的情況下,不斷把行數(shù)增長(zhǎng)。 面板及容器的嵌套 16 由于任何一 種布局管理器的能力都很有限,所以在設(shè)計(jì)復(fù)雜布局時(shí),通常采用容器嵌套的方式,即把組件添加到一個(gè)中間容器中,再把中間容器作為組件添加到另外一個(gè)容器中,從而實(shí)現(xiàn)復(fù)雜的布局。為實(shí)現(xiàn)這個(gè)功能,經(jīng)常使用 JPanel 類(lèi),該類(lèi)是JCompoent 類(lèi)的子類(lèi)。 JPanel 類(lèi)是一個(gè)通用的容器,既可以把它放入其他容器中,也可以把它放入其他容器和組件,因此這種窗口經(jīng)常在構(gòu)造復(fù)雜布局中作為中間容器,但它不能單獨(dú)顯示,需要放到 JFrame 等頂層容器中。 使用面板容器作為中間容器構(gòu)建圖形用戶(hù)界面的一般思想是:先將組件添加到面板上,然后將面 板作為一個(gè)組件再添加到頂層容器中。如果要作用面板作為中間容器,首先需要?jiǎng)?chuàng)建面板對(duì)象, JPanel 的構(gòu)造方法如下: Public JPanel(LayoutManager layout):創(chuàng)建一個(gè)面板對(duì)象,使用指定的布局管理器對(duì)旬( layout)設(shè)置面板的布局。 Public JPanel();使用默認(rèn)的布局管理器創(chuàng)建一個(gè)面板對(duì)象,面板的默認(rèn)布局管理器是 FlowLayout。也可以在創(chuàng)建面板對(duì)象后重新設(shè)置它的布局,方法是使用面板對(duì)象的setLayout()方法。 2.4.4 設(shè)置應(yīng)用程序外觀 Java 程序是跨 平臺(tái)的,為了使 Java 圖形界面應(yīng)用程序在不同系統(tǒng)下顯示的外觀完全一致, Java 應(yīng)用程序可以指定界面顯示外觀( Look and Feel)。圖形界面程序外觀包括 Java 外觀( Metal 風(fēng)格外觀), Windows 外觀, CDE/Motif, Mac OS 外觀等。 在程序中指定一種外觀很方便,只要調(diào)用 UIManager 類(lèi)的 setFeelAndLook()方法即可,該方法的參數(shù)是 LookAndFeel 類(lèi)的實(shí)例或類(lèi)名。例如:如果用當(dāng)前平臺(tái)的外觀則可使用: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); UIManager 類(lèi)的 getSystemLookAndFeelClassName()返回當(dāng)前系統(tǒng)使用的外觀類(lèi) 17 名。將該段代碼放入應(yīng)用程序 main()方法的開(kāi)頭就可以設(shè)置應(yīng)用程序的外觀。 如果要指定跨平臺(tái)的外面,即 Java 外觀,可以使用下面的代碼: UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();設(shè)置應(yīng)用程序外觀,還可以在 setLookAndFeel()方法的參數(shù)中指定外觀類(lèi)的名字,例如 ( 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 平臺(tái) UIManager.setLookAndFeel(“javax.swing.plaf.mac.MacLookAndFeel”); 2.5 引路蜂電子地圖開(kāi)發(fā)技術(shù) 2.5.1 引路蜂地圖 API 概述 目前流行的電子地圖應(yīng)用中,主要基于 Google 地圖、百度地圖、高德地圖等進(jìn)行開(kāi)發(fā)的。如果是基于 Google Earth 的應(yīng)用程序,可以使用 KML 語(yǔ)言 21來(lái)進(jìn)行開(kāi)發(fā)。如果是用來(lái)進(jìn)行網(wǎng)站 開(kāi)發(fā),一般采用 Google Map API21來(lái)進(jìn)行開(kāi)發(fā)。 Google Map API 是一種通過(guò) JavaScript21 將 Google 地圖嵌入到您的網(wǎng)頁(yè)的 API。該 API 提供了大量實(shí)用工具用以處理地圖,并通過(guò)各種服務(wù)向地圖添加內(nèi)容,從而在網(wǎng)站上創(chuàng)建功能全面的地圖應(yīng)用程序。百度地圖和高德地圖提供的 API 提供的都是基于瀏覽器的網(wǎng)頁(yè)地圖,采用 JavaScript 語(yǔ)言進(jìn)行開(kāi)發(fā)。對(duì)于標(biāo)準(zhǔn)的 Java 語(yǔ)言它們沒(méi)有提供相應(yīng)的 API。 18 引路蜂地圖開(kāi)發(fā)包 24提供了幾乎對(duì)所有軟件平臺(tái)(桌面和移動(dòng)平臺(tái)) 的支持,采用統(tǒng)一的接口使用包括 Google 地圖, Bing 地圖在內(nèi)的多達(dá) 20 多種地圖類(lèi)型,并在同一地圖中支持矢量地圖,離線地圖的顯示。 圖 2-4 顯示了引路蜂地圖開(kāi)發(fā)包所支持的開(kāi)發(fā)平臺(tái),軟件包以三個(gè)不同的開(kāi)發(fā)包提供對(duì)各個(gè)平臺(tái)的支持。 圖 2-4 引路蜂地圖開(kāi)發(fā)包支持平臺(tái) 2.5.2 地圖開(kāi)發(fā)包類(lèi)的定義 圖 2-5 為引路蜂地圖開(kāi)發(fā)包中關(guān)鍵的幾個(gè)類(lèi)的定義及其關(guān)系圖 19 圖 2-5 開(kāi)發(fā)包關(guān)鍵類(lèi)及其關(guān)系圖 AbstractGraphicsFactory,DigitalMapService,MapTileAbstractReader 分別用于對(duì)不同平臺(tái)用戶(hù)界面,不同地圖服務(wù),不同地圖圖片的支持。引路蜂地圖開(kāi)發(fā)包在對(duì)地圖圖片和地圖服務(wù)進(jìn)行了抽象,其中地圖圖片主要用于顯示地圖圖片,地圖圖片可以來(lái)源于三個(gè)方面: (1)在線地圖:可以連接包括 Google 地圖, Bing 地圖等二十多種地圖,并支持自定義地圖。在本程序中,僅使用了在線地圖。 (2)離線地圖:可以讀取本地地圖包 (3)矢量地圖:可以讀取 MapInfo 格式的矢量地圖。 而地圖服務(wù)是指地址查詢(xún),路徑查詢(xún),本地查詢(xún)等。引路蜂地圖開(kāi)發(fā)包支持谷歌地圖服務(wù),在中國(guó)也支持 MapABC, Bing 地圖。而且地圖服務(wù)也是可以擴(kuò)展的。地圖圖片和地圖服務(wù)兩個(gè)部分相對(duì)獨(dú)立,如我們可以在顯示 Bing 地圖的同時(shí)使用谷歌地圖的服務(wù),也可以在顯示谷歌地圖的時(shí)候使用 Bing 地圖服務(wù)。 引路蜂地圖開(kāi)發(fā)包是跨平臺(tái)的,因?yàn)樗鼘?duì)不同平臺(tái)的地圖開(kāi)發(fā)包進(jìn)行了抽象,在 20 Gis.Drawing 包中定義了 IImage, IGraphics,IFont, AbstractGraphicsFactory 抽象類(lèi)和抽象接口。這樣對(duì)于不同的平臺(tái),只要實(shí)現(xiàn)相應(yīng)的接口,就可以使用同一個(gè)開(kāi)發(fā)包。 引路蜂地圖開(kāi)發(fā)包主要以 Java 和 C#兩種語(yǔ)言提供,盡管 Java 和 C#是兩種不同的語(yǔ)言,但開(kāi)發(fā)包提供的兩種語(yǔ)言的開(kāi)發(fā)接口卻非常類(lèi)似。 下表列出了引路蜂地圖開(kāi)發(fā)包所定義的類(lèi)包。 2.5.3 地圖對(duì)象類(lèi)的層次關(guān)系 圖 2-6 地圖對(duì)象類(lèi)的層次關(guān)系圖 圖 2-6 顯示了各個(gè)地圖對(duì)象類(lèi)及其關(guān)系。 MapLayer 定義了通用的地圖操作,如設(shè)置地圖的中心點(diǎn),放大,縮小,移動(dòng),以及坐標(biāo)變換(從屏幕坐標(biāo)到地圖坐標(biāo)或從地圖坐標(biāo)到屏幕坐標(biāo)),它是所有地圖類(lèi)的基類(lèi)。 MapLayerContainer 是一個(gè)集合類(lèi),它 21 定義了一組 MapLayer 的集合及它們的上下層次關(guān)系,并且使這些 MapLayer一些移動(dòng),放大,縮小等。 DigitalMap 定義了地圖服務(wù),如地址查詢(xún),路徑查詢(xún),它包含了對(duì)不同地圖服務(wù)的支持。 RasterMap 定義了對(duì)在線地圖,離線地圖的支持,內(nèi)部支持多線程獲取圖片,并提供回調(diào)函數(shù)用于了解圖片的下載進(jìn)度等。 VectorMap 為 RasterMap的一個(gè)子類(lèi),主要是提供類(lèi)似 MapInfo 的適量地圖的支持。矢量地圖通過(guò)讀取地圖矢量數(shù)據(jù)并將其柵格化成圖像顯示。 2.5.4 地圖圖片讀取類(lèi)層次關(guān)系 圖 2-7 地圖圖片讀取類(lèi)層次關(guān)系 不管是在線地圖,離線地圖還是矢量地圖,對(duì)于 RasterMap 來(lái)說(shuō)都是一張張 256 256 的圖像,在線地圖是從服務(wù)器上下載圖片,離線地圖是從本地圖片包中讀取,而矢量地圖是將矢量數(shù)據(jù)柵格化處理。如圖 2-7 所示, RasterMap 類(lèi)有一個(gè)MapTileDownloadManager 實(shí)例,這個(gè)對(duì)象用于管理所用地圖圖片的下載,讀取線程。這些線程都是 MapTileAbstractReader 的子類(lèi), MapTileDownloader 用于在線下載地圖圖片,而 VectorMapRender 用于柵格化矢量地圖數(shù)據(jù)。大部分商用的地圖服務(wù)器都采用了類(lèi)似的地圖分片方法,將地圖分為 1-17 級(jí),每張圖片都是大小為 256 個(gè)像素的正 22 方形圖片。圖 2-8 顯示了從一級(jí)到三級(jí)的地圖分級(jí)方法 。 圖 2-8 地圖分級(jí)圖 2.5.5 圖形子系統(tǒng) 如前文所述,引路蜂地圖開(kāi)發(fā)包中 Gis.Drawing 類(lèi)定義了幾個(gè)抽象類(lèi)或接口,對(duì)不同平臺(tái)的圖形系統(tǒng)進(jìn)行了抽象。通過(guò)抽象處理,引路蜂地圖開(kāi)發(fā)包就直接調(diào)用平臺(tái)相關(guān)的圖形類(lèi)方法。 Gis.Drawing 定義了地圖開(kāi)發(fā)包中所需要的最小功能集,如果在開(kāi)發(fā)過(guò)程中不需要矢量圖,則可以將與矢量圖形相關(guān)的方法設(shè)置為空。 在 Gis.Drawing 包中抽象類(lèi) AbstractGraphicsFactory,接口 IGraphics, IFont, IImage。 抽象類(lèi) AbstractGraphicsFactory 是抽象圖形類(lèi)工廠,主要用于創(chuàng)建新的圖像對(duì)象。以 Java 為例,它定義的方法如下表 2-1 所示。 23 表 2-1AbstractGraphicsFactory 類(lèi)中定義的方法 接口 IGraphics 類(lèi)中定義了一些用于圖形繪制的方法。它定義的方法如表 3-2 所示。 表 2-2 IGraphics 接口中定義的方法 接口 IFont 中定義了字體,如果在應(yīng)用中不使用矢量圖,可以不實(shí)現(xiàn)該類(lèi)。它定義的方 法如表 2-3 所示。 表 2-3 IFont 接口中定義的方法 接口 IImage 中,定義了獲取圖片大小等一系列的方法。它定義的方法如表 2-4 所示。 24 表 2-4 IFont 中定義的方法 2.5.6 地圖配置 地圖配置主要是通過(guò)類(lèi) MapConfiguration 和 SearchOption 來(lái)設(shè)置。這里介紹最常用的幾個(gè)配置。 工作線程數(shù) 引路蜂地圖開(kāi)發(fā)包允許用戶(hù)配置同時(shí)工作的最大線程數(shù),這些工作線程主要用于從地圖服務(wù)器上下載圖片,默認(rèn)情況下工作線程數(shù)量為 4 。這是通過(guò)MapConfiguration.WORKER_THREAD_NUMBER 來(lái)配置的。例如,下面的程序?qū)⒐ぷ骶€程數(shù)量設(shè)置為 16。 MapConfiguration.setParameter(MapConfiguration.WORKER_THREAD_NUMBER,16); 使用緩存 引路蜂地圖開(kāi)發(fā)包默認(rèn)是使用緩存來(lái)提高地圖的顯示效率的,但是緩存的使用會(huì)占用一定的內(nèi)存空間,大小可以通過(guò)程序進(jìn)行配置,默認(rèn)大小為 256K。如果設(shè)置的內(nèi)存比較小,最好將緩存進(jìn)行關(guān)閉。對(duì)程序來(lái)說(shuō),內(nèi)存是足夠的,因此,在程序中使用了緩存。緩存的大小是通過(guò) MapConfiguration.MAP_CACHE_SIZE_IN_BYTES 來(lái)配置的,開(kāi)啟關(guān)閉緩存是通過(guò) MapConfiguration.IS_CACHE_ON 來(lái)設(shè)置的。 25 第 3 章 系統(tǒng)總體設(shè)計(jì) 3.1 系統(tǒng)功能描述 本小組所要研究的對(duì)象是電子防脫逃裝置,由電子腕帶(在押人員佩戴)、手持機(jī)(監(jiān)管人員佩戴)和專(zhuān)用管理軟件(本軟件)三部分組成。手持機(jī)(監(jiān)管人員佩戴)和電子腕帶(在押人員佩戴)分別安置有 GPS25模塊,手持機(jī)通過(guò)無(wú)線傳感網(wǎng)絡(luò)獲取兩點(diǎn) GPS 位置坐標(biāo),進(jìn)而進(jìn)行距離計(jì)算,從而確定電子腕帶同手持移動(dòng)控制終端的距離,如距離超出警 戒范圍則進(jìn)行報(bào)警等操作。專(zhuān)用上位機(jī)監(jiān)管軟件可同手持機(jī)進(jìn)行通訊,能夠更新在押人員的基本信息和獲得人員路徑信息。 基于上述工作機(jī)理,對(duì)研究?jī)?nèi)容進(jìn)行分解,包含以下三個(gè)部分: 1、電子腕帶設(shè)計(jì) 電子腕帶主要實(shí)現(xiàn)功能有如下幾點(diǎn): GPS 位置信息獲取、位置信息的無(wú)線傳輸、報(bào)警功能、防撬功能以及電量檢測(cè)與充電等功能。 2、手持機(jī)設(shè)計(jì) 手持機(jī)主要實(shí)現(xiàn)功能有如下幾點(diǎn): GPS 位置信息獲取、無(wú)線組網(wǎng)獲取電子腕帶位置信息、實(shí)時(shí)時(shí)鐘、電量檢測(cè)與充電、人機(jī)界面、人員信息存儲(chǔ)、事件記錄、與專(zhuān)用管理軟件通信等功能。 3、無(wú)線人員定位管理軟件 本軟件是 Java 為開(kāi)發(fā)語(yǔ)言,以 Eclipse 為開(kāi)發(fā)平臺(tái),采用 MySQL 作為開(kāi)發(fā)數(shù)據(jù)庫(kù),再結(jié)合引路蜂地圖開(kāi)發(fā)包來(lái)完成的。它是一個(gè)集成了看守所在押人員的基本信息閱覽、新增、查詢(xún)、刪除、修改以及人員路徑再現(xiàn)的綜合性系統(tǒng)。可以通過(guò)這個(gè)軟件查看每個(gè)在押人員的基本信息,并進(jìn)行修改等,并且可以引路蜂地圖開(kāi)發(fā)包,查看在押人員的行進(jìn)路線。為了提升系統(tǒng)的安全性,所有用戶(hù)只有在登錄后才可以使用本系統(tǒng)。 本軟件包含的主要功能有: 26 新增:出現(xiàn)“新增在押人員基本信息”窗口,手動(dòng)錄入相關(guān)信息。 刪除:刪除表格中指定行的記錄,同 時(shí) MySQL 中相應(yīng)的記錄也被刪除。 查詢(xún):按給定的條件查詢(xún)出符合條件的在押人員基本信息,并顯示在表格中。 修改:出現(xiàn)“在押人員基本信息修改”窗口,修改其中的各信息。 帳戶(hù)管理:包括增加帳戶(hù),修改密碼和刪除帳戶(hù)等功能。 人員定位:打開(kāi) txt 或 csv 文件,在地圖上顯示某一在押人員的路徑。 導(dǎo)出:導(dǎo)出在押人員的基本信息,以 txt 文件的形式保存到其他位置。 關(guān)于:顯示軟件的基本信息。 3.2 軟件總體設(shè)計(jì) 3.2.1 軟件總體結(jié)構(gòu)圖 無(wú)線人員定位管理軟件的總體結(jié)構(gòu)圖如圖 3-1 所示。 圖 3-1 軟件總體結(jié)構(gòu)圖 3.2.2 系統(tǒng)開(kāi)發(fā)原則 在系統(tǒng)的開(kāi)發(fā)中始終堅(jiān)持“結(jié)構(gòu)化、標(biāo)準(zhǔn)化、模塊化”的設(shè)計(jì)原則,做到界面清晰、接口標(biāo)準(zhǔn)、技術(shù)先進(jìn)、安全穩(wěn)定和有效集成。有關(guān)應(yīng)用軟件開(kāi)發(fā)將依據(jù)以下原則:無(wú)線人員定位管理軟件 用戶(hù)登錄 在押人員管理 用戶(hù)帳戶(hù)管理 查詢(xún)?cè)谘喝藛T信息 新 增 在 押 人 員 信 息 修改 在 押 人 員 信 息 顯示在押人員路徑 管理員登錄 操作員 登錄 增加用戶(hù)帳戶(hù) 刪除用戶(hù)帳戶(hù) 修改用戶(hù)密碼 導(dǎo) 出在押人員信息 刪除在押人員信息 27 ( 1)現(xiàn)代化的管理模式原則 在系統(tǒng)設(shè)計(jì)時(shí),既要看到當(dāng)前現(xiàn)狀,又要想到長(zhǎng)遠(yuǎn),對(duì)系統(tǒng)進(jìn)行合理的、全面的功能設(shè)計(jì),盡量考慮系統(tǒng)的今后發(fā)展,為系統(tǒng)的擴(kuò)充留有充分的接口,盡量延長(zhǎng)系統(tǒng)的生命周期。 (2) 應(yīng)用當(dāng)前最先進(jìn)、最成熟的開(kāi)發(fā)平臺(tái)技術(shù)。 采用名牌產(chǎn)品:采用 Java 編程語(yǔ)言, MySQL 數(shù)據(jù)庫(kù)管理 系統(tǒng)和 Window XP 操作系統(tǒng),提高系統(tǒng)的安全性與穩(wěn)定性。 ( 3)集成性原則 本系統(tǒng)涉及到不同種類(lèi)的數(shù)據(jù),與其他應(yīng)用軟件的接口。為了保證系統(tǒng)能夠協(xié)同性工作,保證系統(tǒng)數(shù)據(jù)能夠暢通無(wú)阻,必須堅(jiān)持系統(tǒng)集成性原則,采用國(guó)際標(biāo)準(zhǔn),提供標(biāo)準(zhǔn)的系統(tǒng)內(nèi)、外接口。 ( 4)可管理、易維護(hù)原則 選擇合理的軟件體系結(jié)構(gòu)和網(wǎng)絡(luò)結(jié)構(gòu),提供功能強(qiáng)大而靈活的軟件系統(tǒng)管理工具,使系統(tǒng)易于管理、易于維護(hù)、易于今后的擴(kuò)充和升級(jí)。 ( 4)操作簡(jiǎn)便、界面友好原則 用戶(hù)對(duì)應(yīng)用軟件的認(rèn)識(shí)和使用是從界面開(kāi)始的。因此應(yīng)用軟件界面設(shè)計(jì)好壞,直接關(guān)系到軟件使 用的方便性、友好性和易操作性。一個(gè)好的用戶(hù)界面設(shè)計(jì)能幫助使用者更好的理解自己所作的工作,能減少工作疲勞,提供工作效率。 3.3 系統(tǒng)的通信協(xié)議 本軟件通過(guò) USB 數(shù)據(jù)線與手持機(jī)進(jìn)行連接,用戶(hù)路徑信息保存在 csv 文件或 txt文件中。當(dāng)管理員想要了解相應(yīng)的在押人員的實(shí)時(shí)路徑信息時(shí),可以通過(guò)打開(kāi)相應(yīng)的在押人員的路徑文件就可以在軟件上實(shí)現(xiàn)人員的路徑顯示。 28 第 4 章 軟件各模塊的實(shí)現(xiàn) 4.1 用戶(hù)登錄的設(shè)計(jì) 用戶(hù)登錄模塊分為兩種情況,管理員登錄和操作員登錄。在程序第一次運(yùn)行的時(shí)候,只有一個(gè)默認(rèn)的管理員,沒(méi)有操作員。如果想要 增加新的操作員,首先必須以管理員登錄,然后在登錄后增加相應(yīng)的操作員。軟件中所有的帳戶(hù)信息都是保存在MySQL 數(shù)據(jù)庫(kù)的。設(shè)計(jì)界面如圖 4-1 所示。 圖 4-1 用戶(hù)登錄模塊界面設(shè)計(jì) 用戶(hù)登錄模塊的具體設(shè)計(jì)流程圖如圖 4-2 所示。 返回 是 圖 4-2 登錄模塊流程圖 4.2 在押人員管理模塊設(shè)計(jì) 用戶(hù)登錄窗口 用戶(hù)名和密碼是否正確 彈出登錄錯(cuò)誤信息 進(jìn)入程序主界面 29 在押人員管理模塊是本軟件的核心部分,它由在押人員信息查詢(xún),新增在押人員信息,修改在押人員信息,在押人員中路徑顯示,在押人員信息導(dǎo)出共五個(gè)子模塊組成。它實(shí)現(xiàn)了對(duì)看守所在押人員的基本信息增加、查詢(xún)、刪除、修改、導(dǎo)出以及人員路徑再現(xiàn)的綜合性系統(tǒng)。可以通過(guò)這個(gè)軟件查看每個(gè)在押人員的基本信息,并進(jìn)行修改等,并且可以引路蜂地圖開(kāi)發(fā)包,查看在押人員的行進(jìn)路線。下面對(duì)在押人員管理的各個(gè)子模塊作一個(gè)詳細(xì)的介紹。 4.2.1 查詢(xún)?cè)谘喝藛T信息模塊 查詢(xún)?cè)谘喝藛T信息 界面如圖 4-3 所示。 圖 4-3 查詢(xún)?cè)谘喝藛T信息界面 本軟件開(kāi)發(fā)時(shí)采用了多文檔界面,在用戶(hù)登錄系統(tǒng)后可以顯示程序的主界面。程序在默認(rèn)情況下所有的子窗口是關(guān)閉的。當(dāng)用戶(hù)按下基本操作菜單下的人員信息查詢(xún)或者工具欄的人員信息查詢(xún)按鈕,就顯示如上界面。在查詢(xún)界面的左邊是查詢(xún)類(lèi)型,查詢(xún)條件以及相關(guān)人員的頭像。當(dāng)用戶(hù)選擇查詢(xún)類(lèi)型,并在其下的文本框中輸入相應(yīng)的查詢(xún)內(nèi)容,并按下查詢(xún)按鈕就可以在查詢(xún)界面的右邊的表格中顯示相關(guān)人員的信息。相關(guān)人員的信息在數(shù)據(jù)庫(kù)中是按照其在數(shù)據(jù)庫(kù)中原來(lái)的順序列出的。當(dāng)用戶(hù)在查詢(xún)結(jié) 30 果的相應(yīng)行單 擊時(shí),就會(huì)在界面的左上角顯示相應(yīng)人員的頭像。 4.2.2 新增在押人員信息模塊 新增在押人員信息的界面如圖 4-4 所示。 圖 4-4 新增在押人員基本信息界面 用戶(hù)可以在新增在押人員基本信息界面中輸入相關(guān)的信息,對(duì)于某些要格式要求的信息,當(dāng)用戶(hù)輸入的信息有誤時(shí),有出現(xiàn)相關(guān)的提示信息。在這里主要用到了 JLabel,JButton, JTextFiled, JFormattedTextField, JComboBox 等。當(dāng)用戶(hù)按下添加按鈕時(shí),如果出現(xiàn)添加成功對(duì)話框,表明已經(jīng)成功地向數(shù)據(jù)庫(kù)中添加一條記錄,否則表明往數(shù)據(jù)庫(kù) 添加記錄失敗。當(dāng)用戶(hù)認(rèn)為輸入的信息有許多錯(cuò)誤時(shí),可以通過(guò)重置按鈕來(lái)使各個(gè)組件恢復(fù)到初始狀態(tài)。 4.2.3 修改在押人員基本信息模塊 在押人員基本信息修改界面如圖 4-5 所示。當(dāng)用戶(hù)在查詢(xún)結(jié)果的表格中選中某一條記錄并按下表格下方的修改按鈕,就會(huì)出現(xiàn)如上圖所示的界面,在修改界面中,會(huì)出現(xiàn)未修改前的在押人員基本信息。當(dāng)修改完成后,只要按下修改按鈕,若修改成功,就會(huì)出現(xiàn)修改成功的對(duì)話框。 31 圖 4-5 修改在押人員信息模塊 4.2.4 刪除在押人員信息模塊 刪除在押人員信息界面如圖 4-6 所示。在押人員信息刪除是基于在押 人員信息查詢(xún)模塊的。當(dāng)用戶(hù)在查詢(xún)結(jié)果的表格中選中某一條記錄并按下表格下方的刪除按鈕,會(huì)出現(xiàn)如下所示的刪除提示對(duì)話框,當(dāng)用戶(hù)點(diǎn)擊是按鈕時(shí),就會(huì)將相關(guān)人員的一條記錄刪除。 32 圖 4-6 刪除在押人員信息界面 4.2.5 導(dǎo)出在押人員信息模塊 導(dǎo)出在押人員信息的文件的截圖如圖 4-7 所示。人員信息導(dǎo)出也是基于在押人員信息查詢(xún)模塊的。要想導(dǎo)出相關(guān)的數(shù)據(jù),首先必須按照相關(guān)的條件作一次查詢(xún),然后才能導(dǎo)出查詢(xún)結(jié)果的數(shù)據(jù)。導(dǎo)出的數(shù)據(jù)默認(rèn)是以 txt 格式保存的。 圖 4-7 導(dǎo)出在押人員信息圖 4.2.6 顯示在押人員路徑模塊 在 押人員信息顯示模塊是本程序中最為核心的模塊,其界面如圖 4-8 所示。 33 圖 4-8 在押人員路徑顯示界面 它除了具備常用的地圖操作,如放大,縮小,移動(dòng)外,還能在地圖上顯示在押人員的路徑。同時(shí),地圖也可以通過(guò)按下清除按鈕來(lái)清除已經(jīng)顯示的地圖的路徑。如果用戶(hù)想在地圖上進(jìn)行在押人員的路徑顯示,必須以管理員的身份登錄,否則會(huì)出現(xiàn)圖4-9 所示界面。 圖 4-9 非管理員操作界面 4.3 用戶(hù)管理模塊設(shè)計(jì) 34 用戶(hù)管理模塊主要分為增加帳戶(hù)子模塊,刪除帳戶(hù)子模塊和修改帳戶(hù)密碼子模塊。 4.3.1 增加帳戶(hù)模塊 增加用戶(hù)帳戶(hù)只有管 理員有這個(gè)功能,若用戶(hù)以非管理員身份(操作員)登錄,會(huì)出現(xiàn)圖 4-10 所示對(duì)話框。 圖 4-10 警告對(duì)話框 如果用戶(hù)以管理員身份登錄,將會(huì)出現(xiàn)圖 4-11 所示的新增帳戶(hù)對(duì)話框。 圖 4-11 增加帳戶(hù)對(duì)話框 4.3.2 刪除帳戶(hù)模塊 刪除帳戶(hù)模塊可以從數(shù)據(jù)庫(kù)中刪除一些已經(jīng)存在的用戶(hù)帳戶(hù)(包括管理員和操作員)。管理員有權(quán)限刪除數(shù)據(jù)庫(kù)中的所有帳戶(hù)信息,但操作員只能刪除數(shù)據(jù)庫(kù)中的其他操作員,不能刪除帳戶(hù)中的管理員,刪除帳戶(hù)模塊的界面如圖 4-12 如示。圖中帳戶(hù)是以管理員身份登錄的,所示在表格中列出了所有的帳戶(hù)信息, 選中相應(yīng)的記錄,點(diǎn)擊刪除就可以從數(shù)據(jù)庫(kù)中徹底刪除相應(yīng)的帳戶(hù)信息。 35 圖 4-12 刪除帳戶(hù)對(duì)話框 4.3.3 修改帳戶(hù)密碼模塊 修改帳戶(hù)密碼模塊的界面如圖 4-13 所示,用戶(hù)只能修改當(dāng)前登錄用戶(hù)自身的密碼,不能修改別的用戶(hù)的密碼。用戶(hù)只需要在密碼文本框中和密碼確認(rèn)文本框中兩次輸入相同的密碼,并按下修改按鈕,就可以修改當(dāng)前用戶(hù)的密碼了。同時(shí)在修改密碼的過(guò)程中,也是不能夠修改當(dāng)前用戶(hù)的權(quán)限。 圖 4-13 修改密碼對(duì)話框 4.4 數(shù)據(jù)庫(kù)中表的設(shè)計(jì) 在程序中,后臺(tái)數(shù)據(jù)庫(kù)使用了 MySQL 數(shù)據(jù)庫(kù),通過(guò)命令行在程序中創(chuàng)建 名為 gps的數(shù)據(jù)庫(kù)。在 gps 數(shù)據(jù)庫(kù)中創(chuàng)建了用戶(hù)信息表和在押人員信息表。 36 ( 1)用戶(hù)信息表:該表記錄了所有用戶(hù)的信息。所有用戶(hù)分為兩類(lèi):普通用戶(hù)和管理員,兩種用戶(hù)具有不同的權(quán)限。普通用戶(hù)具有的權(quán)利管理員都具有。管理員可以對(duì)所有用戶(hù)進(jìn)行管理,包括增加、刪除某個(gè)用戶(hù),修改或查詢(xún)某個(gè)用戶(hù)的信息。普通用戶(hù)可以對(duì)自己的密碼進(jìn)行修改,但是不能修改或察看別的用戶(hù)的信息,用戶(hù)信息表tb_operator 的表的結(jié)構(gòu)如表 5-1 所示。 表 4-1 用戶(hù)信息表 字段 類(lèi)型 說(shuō)明 id INT(11) id 號(hào),自動(dòng)增加 name VARCHAR(12) 姓名 sex VARCHAR(2) 性別 admin VARCHAR(12) 用戶(hù)等級(jí) 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 在押人員信息表 字段 類(lèi)型 說(shuō)明 idtb_man_basicinfo INT(10) id 號(hào),自動(dòng)增加 manpic LONGBLOB 用戶(hù)頭像 bianhao VARCHAR(15) 編號(hào) xinming VARCHAR(45) 姓名 jianyuhao VARCHAR(45) 監(jiān)獄號(hào) age INT(5) 年齡 birthdate DATETIME 出生日期 sex VARCHAR(8) 性別 edubackground VARCHAR(15) 教育背景 jiguan VARCHAR(15) 籍貫 anyou VARCHAR(45) 案由 youwubinshi VARCHAR(15) 有無(wú)病史 marriage VARCHAR(15) 婚姻情況 xinqi VARCHAR(45) 刑期 qinshu VARCHAR(15) 親屬 lianxifangshi VARCHAR(45 聯(lián)系方式 創(chuàng)建該表的數(shù)據(jù)庫(kù)腳本為 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è)計(jì)的具體實(shí)現(xiàn)。在設(shè)計(jì)過(guò)程中,將系統(tǒng)整個(gè)模塊化,然后根據(jù)模塊的劃分逐個(gè)設(shè)計(jì)。先給出每個(gè)模塊的設(shè)計(jì)的實(shí)際效果圖,然后根據(jù)需要重要介紹部分模塊的實(shí)現(xiàn)過(guò)程。在最后,對(duì)系統(tǒng)中使用的數(shù)據(jù)庫(kù)做了簡(jiǎn)要的介紹。 39 第 5 章 項(xiàng)目創(chuàng)新點(diǎn) 5.1 軟件的平臺(tái)無(wú)關(guān)性 本程 序是采用純 Java 語(yǔ)言編寫(xiě),因此用它編寫(xiě)的程序具有平臺(tái)無(wú)關(guān)性。程序員不需要修改代碼就可以在不同的平臺(tái)上運(yùn)行。目前,該程序可以既可以在流行的 Windows的各個(gè)版本的操作系統(tǒng)運(yùn)行,也可以在 Linux 等操作系統(tǒng)上運(yùn)行,并且程序的運(yùn)行界面會(huì)隨著本地的操作系統(tǒng)的風(fēng)格的改變而改變。 5.2 基于桌

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論