小區(qū)車(chē)輛管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  小區(qū)車(chē)輛管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  專(zhuān)業(yè):</b></p><p>  學(xué)生: 指導(dǎo)老師:</p><p><b>  摘 要</b></p><p>  小區(qū)車(chē)輛管理系統(tǒng)是一個(gè)通過(guò)人機(jī)交互系統(tǒng),將小區(qū)車(chē)輛、駕駛員和出車(chē)情況進(jìn)行存儲(chǔ),并同時(shí)對(duì)小

2、區(qū)車(chē)輛進(jìn)行全面管理的系統(tǒng)。它主要實(shí)現(xiàn)了車(chē)輛信息管理、駕駛員信息管理、出車(chē)信息管理等功能。它的目的是加強(qiáng)對(duì)小區(qū)車(chē)輛的管理,使其智能化,意義是降低人力成本。</p><p>  小區(qū)車(chē)輛管理系統(tǒng)基于B/S結(jié)構(gòu)和J2EE平臺(tái),采用兩層架構(gòu)構(gòu)建。表示層:負(fù)責(zé)完成用戶體驗(yàn),主要實(shí)現(xiàn)用戶數(shù)據(jù)的采集和處理結(jié)果數(shù)據(jù)到客戶端的渲染;選用基于MVC模式構(gòu)建的表示層開(kāi)源框架Struts2構(gòu)建。視圖采用JSP實(shí)現(xiàn),配合html、CSS和

3、Javascript以建立良好的用戶體驗(yàn)環(huán)境。持久層負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互,主要實(shí)現(xiàn)實(shí)體數(shù)據(jù)的增、刪、改、查等操作,采用開(kāi)源的持久層框架Hibernate實(shí)現(xiàn)。系統(tǒng)同時(shí)采用SQLServer數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。</p><p>  本文主要完成和車(chē)輛管理,駕駛員管理的設(shè)計(jì)實(shí)現(xiàn),汽車(chē)信息管理功能,簡(jiǎn)要介紹了系統(tǒng)的背景,技術(shù)背景,需求分析,系統(tǒng)架構(gòu)設(shè)計(jì),及相關(guān)功能的實(shí)現(xiàn)方法,最后對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)進(jìn)行了介紹。</p&g

4、t;<p>  關(guān)鍵詞: 車(chē)輛管理 B/S J2EE Struts2</p><p>  The design and implementation of</p><p>  district vehicle management system</p><p>  Major: Software Engineering</p>&l

5、t;p>  Student: Li Yuqing Supervisor: Zhao Chun</p><p><b>  Abstract</b></p><p>  District vehicle management system is an interactive system through the cell vehicle, the driv

6、er and the bus case for storage, and also for the overall management of the district vehicle systems. It is the main achievement of the vehicle information management, driver information management, information managemen

7、t, and other functions of the bus. Its purpose is to strengthen the management of district vehicles to intelligent, meaning lower labor costs.</p><p>  District vehicle management system based on B / S struc

8、ture and the J2EE platform to build a two-tier architecture. Presentation Layer: is responsible for completing the user experience, the main results of the data collection and processing of user data to render the client

9、; the use of open-source framework for building the presentation layer-based build Struts2 MVC pattern. View using JSP to achieve, with html, CSS and Javascript to create a good user experience environment. Persistence l

10、ayer </p><p>  Thesis completed vehicle management, design and implementation of the bus driver management and information management functions, briefly describes the system background, technical background,

11、 needs analysis, the overall system architecture design, and implementation-related functions, and finally to database design was introduced.</p><p>  Key words: vehicle management B/S J2EE Struts2</p

12、><p><b>  目 錄</b></p><p><b>  1導(dǎo)論1</b></p><p><b>  1.1系統(tǒng)背景1</b></p><p><b>  1.2技術(shù)背景1</b></p><p><b> 

13、 1.3研究?jī)?nèi)容3</b></p><p><b>  2系統(tǒng)整體設(shè)計(jì)4</b></p><p>  2.1系統(tǒng)需求分析4</p><p>  2.2系統(tǒng)整體架構(gòu)設(shè)計(jì)5</p><p>  2.3系統(tǒng)功能設(shè)計(jì)7</p><p>  3系統(tǒng)核心功能實(shí)現(xiàn)8</p>

14、<p>  3.1系統(tǒng)界面設(shè)計(jì)8</p><p>  3.2中文亂碼處理10</p><p>  3.3駕駛員信息管理12</p><p>  3.4車(chē)輛信息管理15</p><p>  3.5出車(chē)信息管理16</p><p>  4數(shù)據(jù)庫(kù)的分析與設(shè)計(jì)19</p><p>

15、;  4.1數(shù)據(jù)庫(kù)的概念和特點(diǎn)19</p><p>  4.2數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)22</p><p><b>  4.3表結(jié)構(gòu)22</b></p><p>  4.4數(shù)據(jù)庫(kù)的連接原理23</p><p><b>  5系統(tǒng)測(cè)試25</b></p><p>  5.

16、1系統(tǒng)測(cè)試目的與意義25</p><p>  5.2測(cè)試結(jié)果25</p><p><b>  6總結(jié)27</b></p><p><b>  參考文獻(xiàn)28</b></p><p><b>  致謝29</b></p><p><b>

17、  1導(dǎo)論</b></p><p><b>  1.1系統(tǒng)背景</b></p><p>  伴隨著我國(guó)經(jīng)濟(jì)的快速增長(zhǎng),人們的生活水平逐年提高,當(dāng)然人們對(duì)生活的品質(zhì)是逐漸有了更高的要求。經(jīng)濟(jì)的增長(zhǎng),道路的發(fā)展,汽車(chē)就成為了人們必不可少的交通工具。不管是上班,還是去游玩,還是什么,人們都離不開(kāi)交通工具,所以汽車(chē)是必不可少的。但是汽車(chē)多了,也帶來(lái)了危險(xiǎn)的信號(hào),很

18、多的交通事故出現(xiàn),還有重要一點(diǎn)就是對(duì)汽車(chē)的管理。那要怎么管理汽車(chē)呢?科技發(fā)展得很快,我們很有必要開(kāi)發(fā)一套汽車(chē)智能管理系統(tǒng),這樣可以大大的節(jié)省人力成本,使公司,小區(qū),商場(chǎng)等車(chē)輛實(shí)現(xiàn)智能化。</p><p>  隨著人們對(duì)生活有了更高的要求,出門(mén)有一部自己的車(chē),太普遍了。導(dǎo)致了車(chē)輛的數(shù)目增加很快,同時(shí)問(wèn)題在這樣的背景下也逐漸增加,比如車(chē)輛的車(chē)型問(wèn)題,車(chē)輛的使用年限問(wèn)題還有使用車(chē)輛產(chǎn)生的費(fèi)用:過(guò)路費(fèi),停車(chē)費(fèi),租位費(fèi)等等

19、,這些數(shù)據(jù)加在一起是非常非常多的,處理這些數(shù)據(jù)真實(shí)靠人力的話是很費(fèi)時(shí)間,也就會(huì)增加企業(yè)的財(cái)力。所以為了解決這個(gè)問(wèn)題,我們得開(kāi)發(fā)一套智能管控系統(tǒng),來(lái)不單單處理這些數(shù)據(jù),還可以對(duì)這些車(chē)輛管理。因此,在這樣的環(huán)境下,開(kāi)發(fā)一套這樣的系統(tǒng)是可行的,也是很有必要的。</p><p><b>  1.2技術(shù)背景</b></p><p><b>  1. Java語(yǔ)言<

20、;/b></p><p>  本系統(tǒng)采用Java語(yǔ)言編寫(xiě),Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即JavaSE, JavaEE, JavaME)的總稱(chēng)。</p><p>  Java具有以下特點(diǎn),如表1所示:</p><p>  表1:Ja

21、va語(yǔ)言特點(diǎn)</p><p><b>  2. MVC模式</b></p><p>  MVC模式是表示層開(kāi)發(fā)最常用的設(shè)計(jì)模式,使用該設(shè)計(jì)模式是為了減少業(yè)務(wù)邏輯和視圖之間的耦合,這樣的設(shè)計(jì)模式可以提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性。</p><p>  MVC模型組成的模型,視圖和控制器。在這個(gè)模型中??刂破鞯淖饔檬墙邮芸蛻舳税l(fā)送的請(qǐng)求,那么請(qǐng)求到適

22、當(dāng)?shù)哪P偷臉I(yè)務(wù)流程(控制器相當(dāng)于一個(gè)中轉(zhuǎn)站),然后將處理結(jié)果返回給客戶端,在客戶端通過(guò)MVC模式中的視圖可以看到。模型的主要作用是對(duì)控制器轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求進(jìn)行一個(gè)邏輯處理,也就是客戶端的請(qǐng)求,這是由JavaBean來(lái)實(shí)現(xiàn)的,當(dāng)然這也是要保證它的可移植性,所以它不該依賴(lài)Servlet API。當(dāng)模型處理好了后將結(jié)果由控制器發(fā)送給視圖,最終再展示給客戶端使用。</p><p><b>  JSP</b&

23、gt;</p><p>  JSP技術(shù)是用Java編程編寫(xiě)類(lèi)XML的tags和scriptlets,所以自然也就會(huì)想到在JSP中是可以含有用Java語(yǔ)言編寫(xiě)的一些代碼,它也是可以處理動(dòng)態(tài)網(wǎng)頁(yè)的一個(gè)邏輯處理。JSP的優(yōu)點(diǎn)是:它可以顯示邏輯和網(wǎng)頁(yè)的網(wǎng)頁(yè)進(jìn)行分離的設(shè)計(jì),這樣的一個(gè)好處是它可以使Web程序的開(kāi)發(fā)變得非常簡(jiǎn)便。</p><p>  在有一個(gè)來(lái)自JSP頁(yè)面的請(qǐng)求服務(wù)器的時(shí)候,服務(wù)器先是

24、執(zhí)行網(wǎng)頁(yè)中的程序段,最后將執(zhí)行的結(jié)果和網(wǎng)頁(yè)本省的代碼一起返回給用戶端。對(duì)Java代碼片段在JSP頁(yè)面中使用是非常有用的,比如寫(xiě)一段可以操作數(shù)據(jù)庫(kù)的Java代碼或者重新轉(zhuǎn)向其他頁(yè)面等等這些功能都是可以通過(guò)在JSP頁(yè)面中編寫(xiě)Java代碼來(lái)實(shí)現(xiàn),這樣也就是建立了動(dòng)態(tài)網(wǎng)頁(yè)的效果。所以,我們就可以看出JSP是由HTML代碼和寫(xiě)在網(wǎng)頁(yè)里面的Java代碼構(gòu)成。</p><p>  JSP有以下幾點(diǎn)特點(diǎn),如表2所示:</p

25、><p><b>  表2:JSP特點(diǎn)</b></p><p>  4. JavaScript</p><p>  JavaScript是一種直接編譯方式式的腳本語(yǔ)言。同時(shí)也是常用作Web開(kāi)發(fā),給HTML網(wǎng)頁(yè)增加動(dòng)態(tài)功能,增加用戶體驗(yàn)效果。JavaScript是面向?qū)ο蟮?,是在?duì)對(duì)象的程序設(shè)計(jì),并且用更加直觀、可重復(fù)使用和模塊化的方法來(lái)對(duì)程序進(jìn)行開(kāi)

26、發(fā)。JavaScript可以使網(wǎng)頁(yè)和用戶之間形成一種動(dòng)態(tài)的、交互性的關(guān)系,也可以使網(wǎng)頁(yè)包含更多的元素。在這個(gè)系統(tǒng)中大量使用JavaScript技術(shù),場(chǎng)所為例,驗(yàn)證,用戶輸入的數(shù)據(jù)是重復(fù)的,無(wú)論是為空等。</p><p><b>  Struts2簡(jiǎn)介</b></p><p>  該項(xiàng)目基于Struts2的項(xiàng)目的創(chuàng)始人,改進(jìn)和提高Java Server Pages、Se

27、rvlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。在使用MVC模型時(shí),Struts可以減少開(kāi)發(fā)Web程序的時(shí)間</p><p>  在MVC模式,適應(yīng)時(shí)代發(fā)展的使用,而且還使用Struts2,在這種情況下,我們可以減少開(kāi)發(fā)Web應(yīng)用程序的時(shí)間。它通過(guò)選用Java Servlet/JSP,從而來(lái)完成了基于Java EE Web應(yīng)用的MVC設(shè)計(jì)模式的應(yīng)用框架〔Web Framework〕。所以也就看得出來(lái)Struts2在MV

28、C設(shè)計(jì)模式中的重要性,它是非常有用的。</p><p>  Struts2的優(yōu)勢(shì)在于:基于MVC框架,明確的框架,開(kāi)發(fā)人員可以把握好研發(fā)過(guò)程;開(kāi)發(fā)人員能夠使用OGNL來(lái)對(duì)參數(shù)進(jìn)行傳遞;Struts2的攔截器也是非常厲害的;Struts2容易測(cè)試;還有一個(gè)優(yōu)點(diǎn)就是很方便擴(kuò)展插件;全局結(jié)果與聲明式異常。</p><p>  6. Hibernate簡(jiǎn)介</p><p>

29、  Hibernate它可以對(duì)JDBC進(jìn)行一個(gè)十分輕量級(jí)的封裝,同時(shí)它還是一個(gè)關(guān)于對(duì)象關(guān)系映射的基本框架。面向?qū)ο蟮木幊趟枷胱孞ava程序員可以操縱數(shù)據(jù)庫(kù)。只要有JDBC出現(xiàn)的地方Hibernate都是可以使用的,所以這樣我們就可以推測(cè)出:它既可以在客戶端用,也可以放在Web應(yīng)用中用。其主要功能是比較靈活的,這是一個(gè)非常有意思的是,它可以使用EJB的J2EE代替CMP,從而實(shí)現(xiàn)數(shù)據(jù)的持久化是一舉兩得。其中Session接口、Sessio

30、nFactory接口、Transaction接口、Query接口和Configuration接口這些都是Hibernate中很重要的。這些接口使用的范圍都是比較廣的。他們有兩個(gè)作用:一是可以對(duì)持久化的對(duì)象進(jìn)行存取的操作,二是可以控制事務(wù)。</p><p><b>  1.3研究?jī)?nèi)容</b></p><p>  論文研究并實(shí)現(xiàn)了一個(gè)小區(qū)設(shè)計(jì)的車(chē)輛管理系統(tǒng)的整體結(jié)構(gòu),完成

31、了管理員用戶所擁有的車(chē)輛信息管理、駕駛員信息管理、出車(chē)信息管理等功能的設(shè)計(jì)與實(shí)現(xiàn)。</p><p>  車(chē)輛信息管理:該模塊中展示的是對(duì)車(chē)輛信息的增加、刪除、修改和查詢的操作。</p><p>  司機(jī)信息管理:該模塊是增加,刪除,修改和查詢操作的信息。</p><p>  出車(chē)信息管理:在該模塊中定義了對(duì)出車(chē)情況的管理,其功能包括出車(chē)情況的添加、查詢、修改、刪除等

32、操作。</p><p><b>  2系統(tǒng)整體設(shè)計(jì)</b></p><p><b>  2.1系統(tǒng)需求分析</b></p><p><b>  系統(tǒng)目標(biāo)</b></p><p>  系統(tǒng)將實(shí)現(xiàn)下列目標(biāo):</p><p> ?。?)系統(tǒng)界面友好,容易上手操

33、作,同時(shí)會(huì)給出提醒方便管理者操作。</p><p> ?。?)管理員用戶具有系統(tǒng)管理、車(chē)輛信息管理、駕駛員信息管理、出車(chē)記錄管理功能。</p><p> ?。?)安全性好,可以防止操作者惡意操作本系統(tǒng)。</p><p><b>  2.功能需求</b></p><p>  管理員是系統(tǒng)的核心用戶,涉及到三大功能模塊如圖1

34、所示:</p><p><b>  圖1:管理員用例圖</b></p><p><b>  3.數(shù)據(jù)需求</b></p><p>  對(duì)每一個(gè)輸入的數(shù)據(jù)都要有是正確的,并且在頁(yè)面上每一個(gè)輸入框不能為空,對(duì)表中的每一個(gè)數(shù)據(jù)之間他們的聯(lián)系都要保證是正確的。</p><p><b>  4.界面

35、需求</b></p><p>  一個(gè)好的用戶界面能夠讓用戶更清楚的看到自己可以干什么,提高工作效率。在頁(yè)面中創(chuàng)建一個(gè)動(dòng)態(tài)的網(wǎng)頁(yè)是非常方便。用戶界面的相互作用和交換之間的信息系統(tǒng)和用戶的媒體。</p><p><b> ?。?)輸出設(shè)計(jì)</b></p><p>  輸出是輸入原始信息通過(guò)計(jì)算機(jī)處理信息,有效地形成了一個(gè)高質(zhì)量的,所以

36、有一定的格式,以提供給管理人員查看。主要的功能和目標(biāo)輸出的設(shè)計(jì)。這是由于輸出表直接與用戶聯(lián)系,該項(xiàng)目的出發(fā)點(diǎn)是希望輸出的樣式是方便給用戶查看的,有效的返回相應(yīng)的數(shù)據(jù)信息。</p><p><b> ?。?)輸入設(shè)計(jì)</b></p><p>  當(dāng)管理人員在面對(duì)大量的數(shù)據(jù)時(shí),雖然有一個(gè)友好的界面供管理人員使用,但是難免管理人員輸入錯(cuò)誤,只要輸入錯(cuò)誤了,系統(tǒng)處理后的結(jié)果顯

37、示給管理人員也是會(huì)錯(cuò)的。所以有效的輸入是很重要的。</p><p>  輸入設(shè)計(jì)的原則有如下幾點(diǎn):</p><p>  輸入應(yīng)保持在最小的處理要求。輸入的輸入可以用字段值,并通過(guò)下拉的方式輸入。輸入量少,故障率少,減少了數(shù)據(jù)準(zhǔn)備時(shí)間。</p><p>  輸入的準(zhǔn)備和過(guò)程必須簡(jiǎn)單,這樣可以減少錯(cuò)誤。</p><p>  盡可能早對(duì)輸入數(shù)據(jù)進(jìn)行

38、校驗(yàn)(盡可能靠近原數(shù)據(jù)產(chǎn)生點(diǎn)),以便使錯(cuò)誤即時(shí)獲得改正。</p><p>  2.2系統(tǒng)整體架構(gòu)設(shè)計(jì)</p><p><b>  1.系統(tǒng)設(shè)計(jì)思想</b></p><p>  系統(tǒng)的設(shè)計(jì)思想遵循以下幾點(diǎn):</p><p><b>  采用B/S模式開(kāi)發(fā)</b></p><p>

39、;  系統(tǒng)采用B/S結(jié)構(gòu)構(gòu)建;這種方式已經(jīng)被許多用戶所習(xí)慣。</p><p> ?。?)采用面向?qū)ο蟮拈_(kāi)發(fā)與設(shè)計(jì)理念</p><p>  為了保證系統(tǒng)有一個(gè)很好的框架支持,同時(shí)研發(fā)的產(chǎn)品速度快和有較好的穩(wěn)定性,將采用面向?qū)ο蟮脑O(shè)計(jì)理念。</p><p><b>  使用模塊化的設(shè)計(jì)</b></p><p>  模塊化應(yīng)該

40、把整個(gè)體系分為幾個(gè)小的模塊,方便代碼的重載。</p><p>  (4)系統(tǒng)界面簡(jiǎn)單方便</p><p>  本系統(tǒng)的界面設(shè)計(jì)比較簡(jiǎn)單,頁(yè)面美觀很好,界面的簡(jiǎn)單模塊可以方便使用者操作本系統(tǒng)。</p><p><b> ?。?)速度優(yōu)先原則</b></p><p>  因?yàn)檫@個(gè)工具是速度最重要的評(píng)價(jià)標(biāo)準(zhǔn),所以在設(shè)計(jì)過(guò)程中,

41、具體的過(guò)程盡可能少占用資源,速度。</p><p>  (6)設(shè)計(jì)要突出重點(diǎn),體貼用戶</p><p>  滿足設(shè)計(jì)要求,使系統(tǒng)更適應(yīng)用戶的需求。</p><p><b>  2.系統(tǒng)架構(gòu)</b></p><p>  車(chē)輛管理系統(tǒng)擬基于B/S結(jié)構(gòu)和J2EE平臺(tái),采用兩層架構(gòu)構(gòu)建。兩層架構(gòu)包括:表示層和持久層。</

42、p><p>  B/S結(jié)構(gòu)圖如圖2所示:</p><p>  圖2:B/S結(jié)構(gòu)示意圖</p><p>  B/S結(jié)構(gòu)也就是說(shuō)瀏覽器和服務(wù)器結(jié)構(gòu)。由上圖可以看出,在B/S結(jié)構(gòu)中瀏覽器就是用戶的使用界面,但是當(dāng)出現(xiàn)比較繁瑣的處理的時(shí)候,可以讓一部分邏輯處理在這里(前端)完成,不過(guò)主要的邏輯處理還是得在服務(wù)器端進(jìn)行實(shí)現(xiàn)。</p><p>  B/S的優(yōu)

43、點(diǎn)是:無(wú)需安裝客戶端,客戶端只需要瀏覽器;同時(shí)在更新的時(shí)候,系統(tǒng)不需要對(duì)客戶端進(jìn)行升級(jí),只需要對(duì)服務(wù)器升級(jí)就可以了。</p><p>  兩層架構(gòu)如圖3所示:</p><p>  圖3:系統(tǒng)架構(gòu)示意圖</p><p>  表示層:負(fù)責(zé)完成用戶體驗(yàn),主要實(shí)現(xiàn)用戶數(shù)據(jù)的采集和處理結(jié)果數(shù)據(jù)到客戶端的渲染;本層擬采用基于MVC模式構(gòu)建的表示層開(kāi)源框架Struts2構(gòu)建。&l

44、t;/p><p>  持久層:負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互,主要實(shí)現(xiàn)實(shí)體數(shù)據(jù)的增、刪、改、查等操作,同時(shí)納入DAO框架來(lái)隔離持久化細(xì)節(jié)的變化對(duì)其它部分的影響。</p><p>  使用SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)作為車(chē)輛管理系統(tǒng)的數(shù)據(jù)保存。</p><p><b>  2.3系統(tǒng)功能設(shè)計(jì)</b></p><p>  總的功能模塊框

45、圖如圖4所示:</p><p><b>  圖4:功能框圖</b></p><p>  車(chē)輛信息管理:該模塊中展示的是對(duì)車(chē)輛信息的增加、刪除、修改和查詢的操作。</p><p>  駕駛員信息管理:該模塊中展示的是對(duì)駕駛員信息的增加、刪除、修改和查詢的操作。</p><p>  出車(chē)信息管理:在該模塊中定義了對(duì)出車(chē)情況的

46、管理,其功能包括出車(chē)情況的添加、查詢、修改、刪除等操作。</p><p><b>  3系統(tǒng)核心功能實(shí)現(xiàn)</b></p><p><b>  3.1系統(tǒng)界面設(shè)計(jì)</b></p><p>  頁(yè)面設(shè)計(jì)的原則:在整個(gè)系統(tǒng)中,所有的頁(yè)面都遵循一個(gè)設(shè)計(jì)原則,那就是界面簡(jiǎn)單易操作。使操作員看到該系統(tǒng)的時(shí)候就知道自己可以做什么和知道自

47、己該怎么去操作。這樣可以方便操作員的同時(shí)也可以節(jié)省人力成本,財(cái)力成本。使公司的利益最大化。這也是這樣設(shè)計(jì)的一個(gè)重要因素。</p><p>  如圖5所示,在頁(yè)面的左側(cè)是管理員的四個(gè)可以操作的功能,點(diǎn)擊進(jìn)入相關(guān)管理頁(yè)面可以變成一個(gè)子菜單,并突出高亮的顯示方式展現(xiàn)各管理模塊對(duì)應(yīng)的子菜單。主頁(yè)運(yùn)行效果如圖5所示:</p><p><b>  圖5:管理員主頁(yè)面</b><

48、;/p><p>  車(chē)輛信息管理頁(yè)面效果如圖6所示:</p><p><b>  圖6:車(chē)輛信息頁(yè)面</b></p><p>  司機(jī)信息管理界面效果如圖7所示:</p><p><b>  圖7:司機(jī)頁(yè)面</b></p><p>  出車(chē)信息管理界面如圖8所示:</p&g

49、t;<p><b>  圖8:出車(chē)信息頁(yè)面</b></p><p><b>  3.2中文亂碼處理</b></p><p>  在程序中經(jīng)常會(huì)遇到中文亂碼的情況,如果手動(dòng)的在servlet和jsp頁(yè)面進(jìn)行設(shè)置,相當(dāng)麻煩。因此,寫(xiě)了一個(gè)過(guò)濾器作為對(duì)中文亂碼的處理。</p><p>  在web.xml中配置:&

50、lt;/p><p><b>  <filter></b></p><p>  <filter-name>SetCharacterEncodingFilter</filter-name></p><p>  <filter-class>myweb.util.filter.SetCharacterEnco

51、dingFilter</filter-class></p><p>  <init-param></p><p>  <param-name>encoding</param-name></p><p>  <param-value>gb2312</param-value></p>

52、<p>  </init-param></p><p><b>  </filter></b></p><p>  <filter-mapping></p><p>  <filter-name>SetCharacterEncodingFilter</filter-name>

53、</p><p>  //*表示工程下所有的頁(yè)面都會(huì)有此過(guò)濾器的處理</p><p>  <url-pattern>/*</url-pattern></p><p>  </filter-mapping></p><p>  對(duì)應(yīng)的SetCharacterEncodingFilter.java文件中的重要代

54、碼,在初始化init()方法中定義:</p><p>  public void init(FilterConfig filterConfig) throws ServletException {</p><p>  this.filterConfig = filterConfig;</p><p>  this.encoding = filterConfig.ge

55、tInitParameter("encoding");</p><p>  String value = filterConfig.getInitParameter("ignore");</p><p><b>  }</b></p><p>  在工具包util包中同樣定義了DataFormate類(lèi)來(lái)處

56、理字符轉(zhuǎn)換:</p><p>  public static String toUni(String gbStr){</p><p>  String uniStr = ""; /*把字符串轉(zhuǎn)換成uincode編碼*/</p><p>  if(gbStr == null){</p><p>  gbStr = "

57、;";</p><p><b>  }</b></p><p><b>  try{</b></p><p>  byte[] tempByte = gbStr.getBytes("UTF-8");</p><p>  uniStr = new String(tempB

58、yte,"ISO8859_1");</p><p>  }catch(Exception ex){</p><p><b>  }</b></p><p>  return uniStr;</p><p><b>  }</b></p><p>  /*

59、把字符串轉(zhuǎn)換成Utf8編碼*/</p><p>  public static String toUtf8String(String s) {</p><p>  StringBuffer sb = new StringBuffer();</p><p>  for (int i = 0; i < s.length(); i++) {</p>&

60、lt;p>  char c = s.charAt(i);</p><p>  if (c >= 0 && c <= 255) {</p><p>  sb.append(c);</p><p><b>  }else {</b></p><p><b>  byte[] b;&

61、lt;/b></p><p><b>  try {</b></p><p>  b = Character.toString(c).getBytes("utf-8");</p><p>  }catch (Exception ex) {</p><p>  System.out.println

62、(ex);</p><p>  b = new byte[0];</p><p><b>  }</b></p><p>  for (int j = 0; j < b.length; j++) {</p><p>  int k = b[j];</p><p>  if (k < 0

63、) {</p><p><b>  k += 256;</b></p><p><b>  }</b></p><p>  sb.append("%" + Integer.toHexString(k).</p><p>  toUpperCase()); </p>

64、<p><b>  } }</b></p><p>  return sb.toString(); </p><p><b>  }</b></p><p>  3.3駕駛員信息管理</p><p>  駕駛員信息管理是對(duì)駕駛員信息的增加、刪除、修改和查詢等操作。在系統(tǒng)中都有一一實(shí)現(xiàn)的

65、。由于駕駛員的增加、刪除、修改、查詢?cè)趯?shí)現(xiàn)上都相差不大,所以本小節(jié)著重介紹駕駛員信息修改的實(shí)現(xiàn)。</p><p><b>  1.功能描述</b></p><p>  先是點(diǎn)擊司機(jī)信息模塊,然后在界面右邊可以看到司機(jī)的一些信息,當(dāng)要修改司機(jī)信息的時(shí)候。點(diǎn)擊“修改”,然后就會(huì)進(jìn)入“修改”司機(jī)信息頁(yè)面。</p><p><b>  2.核

66、心代碼</b></p><p><b>  模型層:</b></p><p>  public class sijiDAO{ </p><p>  public TSiji findById(java.lang.Integer id) //這個(gè)方法用于找到siji_id</p><p><b&

67、gt;  {</b></p><p>  log.debug("getting TSiji instance with id: " + id);</p><p><b>  try</b></p><p><b>  {</b></p><p>  TSiji ins

68、tance = (TSiji) getHibernateTemplate().get(</p><p>  "com.model.TSiji", id);</p><p>  return instance;</p><p>  } catch (RuntimeException re)</p><p><b>

69、  {</b></p><p>  log.error("get failed", re);</p><p><b>  throw re;</b></p><p><b>  }</b></p><p><b>  }</b></p>

70、;<p>  //通過(guò)ID找到這個(gè)駕駛員</p><p>  public void attachDirty(TSiji instance)</p><p><b>  {</b></p><p>  log.debug("attaching dirty TSiji instance");</p>

71、<p><b>  try</b></p><p><b>  {</b></p><p>  getHibernateTemplate().saveOrUpdate(instance);</p><p>  log.debug("attach successful");</p>

72、<p>  } catch (RuntimeException re)</p><p><b>  {</b></p><p>  log.error("attach failed", re);</p><p><b>  throw re;</b></p><p>

73、;<b>  }</b></p><p><b>  }</b></p><p>  ……………………..//此處省略了對(duì)駕駛員信息操作的其他方法</p><p><b>  }</b></p><p>  //把DAO注入給Action</p><p>

74、;  <bean id="sijiAction" class="com.action.sijiAction" scope="prototype"></p><p>  <property name="sijiDAO"></p><p>  <ref bean="TSiji

75、DAO" /></p><p>  </property></p><p><b>  </bean></b></p><p><b>  控制層:</b></p><p>  sijiEdit.action中的代碼:</p><p>

76、;  public String sijiEdit()</p><p><b>  {</b></p><p>  TSiji siji=sijiDAO.findById(id);//通過(guò)ID找到這個(gè)駕駛員</p><p>  siji.setName(name);</p><p>  siji.setSex(sex);

77、</p><p>  siji.setAge(age);</p><p>  siji.setTel(tel);</p><p>  siji.setAddress(address);</p><p>  siji.setCard(card);</p><p>  siji.setDel("no")

78、;</p><p>  sijiDAO.attachDirty(siji);</p><p>  this.setMessage("操作成功");</p><p>  this.setPath("sijiMana.action");</p><p>  return "succeed"

79、;;</p><p>  }//操作成功轉(zhuǎn)到succeed頁(yè)面,在struct.xml文件中有配置</p><p>  struts.xml中的相關(guān)配置代碼:</p><p>  struts.xml:</p><p>  <action name="sijiEditPre" class="sijiActi

80、on" method="sijiEditPre"></p><p>  <result name="success">/admin/siji/sijiEditPre.jsp</result></p><p><b>  </action></b></p><

81、p>  <action name="sijiEdit" class="sijiAction" method="sijiEdit"></p><p><b>  </action></b></p><p>  //控制器,處在業(yè)務(wù)邏輯與視圖之間,用于接受頁(yè)面請(qǐng)求然后交給相應(yīng)的邏輯處

82、理方法進(jìn)行處理</p><p>  相關(guān)配置文件applicationContext.xml:</p><p>  //把SessionFactory注入給DAO</p><p>  <bean id="TSijiDAO" class="com.dao.TSijiDAO"></p><p>

83、;  <property name="sessionFactory"></p><p>  <ref bean="sessionFactory" /></p><p>  </property></p><p><b>  </bean></b></p

84、><p>  //把數(shù)據(jù)源注入給session工廠,并且把hibernate加入到Spring中</p><p><b>  3.程序效果</b></p><p>  程序效果如圖9所示。</p><p>  圖9:駕駛員信息修改</p><p><b>  3.4車(chē)輛信息管理</b&

85、gt;</p><p>  車(chē)輛信息管理包括車(chē)輛的增加、刪除、修改、查詢,在本項(xiàng)目中都有一一實(shí)現(xiàn)的。由于車(chē)輛的添加、刪除、修改、查詢?cè)趯?shí)現(xiàn)上都相差不大,所以本節(jié)著重介紹車(chē)輛信息添加的實(shí)現(xiàn)。</p><p><b>  1.功能描述</b></p><p>  先點(diǎn)擊車(chē)輛檔案管理,頁(yè)面跳轉(zhuǎn)到車(chē)輛檔案管理界面,瀏覽車(chē)輛的相關(guān)信息然后打開(kāi)“添加車(chē)輛信

86、息頁(yè)面,輸入相關(guān)車(chē)輛信息可以添加。</p><p><b>  2.核心代碼</b></p><p><b>  模型層:</b></p><p>  public class cheDAO{</p><p>  public void save(TChe transientInstance)<

87、;/p><p><b>  {</b></p><p>  log.debug("saving TChe instance");</p><p><b>  try</b></p><p><b>  {</b></p><p>  ge

88、tHibernateTemplate().save(transientInstance);</p><p>  log.debug("save successful");</p><p>  } catch (RuntimeException re)</p><p><b>  {</b></p><p&

89、gt;  log.error("save failed", re);</p><p><b>  throw re;</b></p><p>  }}//DAO中的方法,用在邏輯處理</p><p>  相關(guān)配置文件applicationContext.xml:</p><p>  //把DAO注入給

90、Session工廠</p><p>  <bean id="TCheDAO" class="com.dao.TCheDAO"></p><p>  <property name="sessionFactory"></p><p>  <ref bean="sessi

91、onFactory" /></p><p>  </property></p><p><b>  </bean></b></p><p><b>  控制層:</b></p><p>  public String cheAdd(){</p>

92、<p>  TChe che=new TChe();</p><p>  che.setChepai(chepai);</p><p>  che.setChexing(chexing);</p><p>  che.setChuchangriqi(chuchangriqi);</p><p>  che.setZaizhongli

93、ang(zaizhongliang);</p><p>  che.setSiji_id(siji_id);</p><p>  che.setDel("no");</p><p>  cheDAO.save(che);//調(diào)用com.dao.TCheDAO里的save()方法</p><p>  this.setMess

94、age("操作成功");</p><p>  this.setPath("cheMana.action");</p><p>  return "succeed";//返回邏輯視圖</p><p><b>  }</b></p><p>  //控制器,處在業(yè)務(wù)

95、邏輯與視圖之間,用于接受頁(yè)面請(qǐng)求然后交給相應(yīng)的邏輯處理方法進(jìn)行處理</p><p>  相關(guān)配置文件struts.xml:</p><p>  //配置Action</p><p>  <action name="cheAdd" class="cheAction" method="cheAdd">

96、; </action></p><p>  //將DAO注入給Action</p><p>  <bean id="cheAction" class="com.action.cheAction" scope="prototype"></p><p>  <property na

97、me="cheDAO"></p><p>  <ref bean="TCheDAO" /></p><p>  </property></p><p><b>  </bean></b></p><p><b>  3.程序效果&

98、lt;/b></p><p>  如圖10所示的程序顯示。</p><p>  圖10:車(chē)輛信息添加</p><p><b>  3.5出車(chē)信息管理</b></p><p>  出車(chē)信息管理包括出車(chē)信息的增加、刪除、修改、查詢,在系統(tǒng)中都有一一實(shí)現(xiàn)的。由于出車(chē)信息的添加、刪除、修改、查詢?cè)趯?shí)現(xiàn)上都相差不大,所以本節(jié)

99、著重介紹出車(chē)信息查詢功能的實(shí)現(xiàn)。</p><p><b>  1.功能描述</b></p><p>  先是點(diǎn)擊出車(chē)信息管理,頁(yè)面跳轉(zhuǎn)到出車(chē)信息管理界面,管理人員可以瀏覽所有的出車(chē)信息。</p><p>  當(dāng)管理人員點(diǎn)擊“出車(chē)記錄管理”,在界面的右邊就會(huì)出現(xiàn)出車(chē)信息,包括序號(hào)、車(chē)輛信息、車(chē)輛車(chē)主、開(kāi)出時(shí)間、回來(lái)時(shí)間、出車(chē)事由,“操作”按鈕,&

100、lt;/p><p>  在表格下方有“添加出車(chē)信息”的按鈕。</p><p><b>  2.核心代碼</b></p><p><b>  模型層:</b></p><p>  public List findAll()</p><p><b>  {</b>

101、;</p><p>  log.debug("finding all TChuche instances");</p><p><b>  try</b></p><p><b>  {</b></p><p>  String queryString = "from

102、TChuche";</p><p>  return getHibernateTemplate().find(queryString);</p><p>  //找到出車(chē)的信息放在Template()里.</p><p>  } catch (RuntimeException re)</p><p><b>  {<

103、/b></p><p>  log.error("find all failed", re);</p><p><b>  throw re;</b></p><p><b>  }</b></p><p><b>  }</b></p>

104、<p><b>  相關(guān)配置文件:</b></p><p>  <hibernate-mapping></p><p>  <class name="com.model.TChuche" table="t_chuche" </p><p>  schema="dbo

105、" catalog="db_che"></p><p>  <id name="id" type="java.lang.Integer"></p><p>  <column name="id" /></p><p>  <generator

106、 class="increment" /></p><p><b>  </id></b></p><p>  <property name="che_id" type="java.lang.Integer"></p><p>  <column n

107、ame="che_id" /></p><p>  </property></p><p>  <property name="kaichushijian" type="java.lang.String"></p><p>  <column name="kai

108、chushijian" length="50" /></p><p>  </property></p><p>  <property name="huilaishijian" type="java.lang.String"></p><p>  <colum

109、n name="huilaishijian" length="50" /></p><p>  </property></p><p>  <property name="shiyou" type="java.lang.String"></p><p>  

110、<column name="shiyou" length="50" /></p><p>  </property></p><p>  <property name="del" type="java.lang.String"></p><p>  &

111、lt;column name="del" length="50" /></p><p>  </property></p><p><b>  </class></b></p><p>  </hibernate-mapping></p><p

112、><b>  控制層:</b></p><p>  public String chucheMana()</p><p><b>  {</b></p><p>  //獲取數(shù)據(jù)并存在chucheList集合中</p><p>  List chucheList=chucheDAO.getHi

113、bernateTemplate()</p><p>  .find("from TChuche where del='no'");</p><p>  for(int i=0;i<chucheList.size();i++)</p><p><b>  {</b></p><p>

114、;  TChuche chuche=(TChuche)chucheList.get(i);</p><p>  chuche.setChe(cheDAO.findById(chuche.getChe_id()));</p><p><b>  }</b></p><p>  Map request=(Map)ServletActionConte

115、xt.getContext().get("request");</p><p>  request.put("chucheList", chucheList);</p><p>  return ActionSupport.SUCCESS;//返回邏輯視圖</p><p><b>  }</b></

116、p><p><b>  相關(guān)配置文件:</b></p><p>  struts.xml:</p><p>  <action name="chucheMana" class="chucheAction" method="chucheMana"></p><

117、p>  <result name="success">/admin/chuche/chucheMana.jsp</result></p><p>  //成功后轉(zhuǎn)向chucheMana.jsp這個(gè)頁(yè)面</p><p><b>  </action></b></p><p><b

118、>  3.程序效果</b></p><p>  程序效果展示如圖11所示:</p><p>  圖11:出車(chē)信息顯示</p><p>  4數(shù)據(jù)庫(kù)的分析與設(shè)計(jì)</p><p>  4.1數(shù)據(jù)庫(kù)的概念和特點(diǎn)</p><p>  對(duì)數(shù)據(jù)庫(kù)相關(guān)的表述如表3所示:</p><p>  

119、表3:數(shù)據(jù)庫(kù)設(shè)計(jì)要點(diǎn)</p><p>  根據(jù)以上表格列出的需求分析,并結(jié)合系統(tǒng)概念模型的特點(diǎn)和建立方法,畫(huà)出了如下實(shí)體間的E-R模型圖。</p><p>  1.車(chē)輛信息實(shí)體E-R圖</p><p>  圖12:車(chē)輛信息實(shí)體E-R圖</p><p>  司機(jī)信息實(shí)體E-R圖:</p><p>  圖13:司機(jī)信息實(shí)體

120、E-R圖</p><p>  3.出廠信息實(shí)體E-R圖:</p><p>  圖14:出車(chē)信息實(shí)體E-R圖</p><p><b>  4.全局E-R圖:</b></p><p>  圖15:全局E-R圖</p><p>  4.2數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>&l

121、t;b>  圖16:關(guān)系模式圖</b></p><p>  車(chē)輛(chepai,chexing,chuchangriqi,zaizhongliang);</p><p>  主鍵:che_id;外鍵:siji_id;</p><p>  司機(jī)(name,sex,age,tel,address,card);</p><p> 

122、 主鍵:siji_id;</p><p>  出車(chē)(shiyou,kaichushijian,huilaishijian);</p><p>  主鍵:chuche_id;外鍵:siji_id;</p><p>  司機(jī)和車(chē)輛是1:n的關(guān)系,司機(jī)的主鍵作為了車(chē)輛的外鍵;</p><p>  車(chē)輛和出車(chē)是1:n的關(guān)系,車(chē)輛的主鍵作為了出車(chē)的外鍵

123、。 </p><p>  出車(chē)信息里面包括:部分車(chē)輛信息和司機(jī)信息,由于司機(jī)和車(chē)輛是1:n的關(guān)系,車(chē)輛和出車(chē)是1:n的關(guān)系,所以可以通過(guò)車(chē)輛找到司機(jī)的信息。</p><p><b>  4.3表結(jié)構(gòu)</b></p><p>  數(shù)據(jù)庫(kù)概念模型是非常獨(dú)立的,所以不管是在那種數(shù)據(jù)庫(kù)系統(tǒng)中,都是要根據(jù)數(shù)據(jù)庫(kù)的特征來(lái)進(jìn)行轉(zhuǎn)換。也就是轉(zhuǎn)換為計(jì)算機(jī)系統(tǒng)可以

124、處理的關(guān)系模型,所以我們一般使用E-R模型圖來(lái)表示這些關(guān)系,它有以下原則:對(duì)系統(tǒng)中的每一個(gè)實(shí)體都要轉(zhuǎn)換為一個(gè)關(guān)系,同時(shí)定義的主鍵不能為空,實(shí)體與實(shí)體之間都關(guān)系是:1:n,1:1,n:n,其中n:n的聯(lián)系是用外鍵來(lái)將他們聯(lián)系在一起的。</p><p>  根據(jù)E-R模型圖,列出以下邏輯數(shù)據(jù)結(jié)構(gòu)表,下面是各數(shù)據(jù)表的詳細(xì)說(shuō)明。</p><p>  車(chē)輛信息表主要是記錄了車(chē)輛基本信息,表結(jié)構(gòu)如表4

125、所示。</p><p>  表4:車(chē)輛信息表(t_che)</p><p>  司機(jī)信息表主要記錄了司機(jī)基本信息,表結(jié)構(gòu)如表5所示。</p><p>  表5:司機(jī)信息表(t_siji)</p><p>  出車(chē)信息表是出車(chē)這個(gè)實(shí)體的一些屬性,如表6所示。</p><p>  表6:出車(chē)信息表(t_chuche)<

126、;/p><p>  4.4數(shù)據(jù)庫(kù)的連接原理</p><p>  本系統(tǒng)的數(shù)據(jù)庫(kù)是使用Hibernate來(lái)進(jìn)行存取的。 它可以對(duì) JDBC 進(jìn)行了輕量級(jí)的對(duì)象封裝,可以讓開(kāi)發(fā)人員很方便的使用對(duì)象編程思想來(lái)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行操作。Hibernate既提供了Java類(lèi)到數(shù)據(jù)表他們之間的映射。Hibernate提供了恢復(fù)和數(shù)據(jù)查詢。在Hibernate和JDBC、SQL的比較中,我們不難發(fā)現(xiàn)Hiber

127、nate可以大大減少手動(dòng)操作,從而減輕使用者的工作量。Hibernate有一個(gè)很大的優(yōu)勢(shì)便是,它能夠和多種Web服務(wù)器或應(yīng)用服務(wù)器集成。</p><p>  其實(shí)Hibernate是一個(gè)中間件,它是為數(shù)據(jù)庫(kù)服務(wù)的。如圖17所示:</p><p>  圖17:Hibernate架構(gòu)圖</p><p>  圖17顯示了 Hibernate 的工作原理,它是使用數(shù)據(jù)庫(kù)和其

128、余少許配置文件如 Hibernate .properties。屬性的XML映射,可以提供數(shù)據(jù)持久化服務(wù)的應(yīng)用。Hibernate具有非常大的靈活性,而且整體結(jié)構(gòu)非常致密,提供應(yīng)用JDBC連接,和管理自己的事務(wù)。</p><p>  Hibernate數(shù)據(jù)源的配置:</p><p>  <bean id="sessionFactory"</p><

129、;p>  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></p><p>  <property name="dataSource"></p><p>  <ref bean="dataSource" />&

130、lt;/p><p>  </property></p><p>  <property name="hibernateProperties"></p><p><b>  <props></b></p><p>  <prop key="hibernat

131、e.dialect"></p><p>  org.hibernate.dialect.SQLServerDialect</p><p><b>  </prop></b></p><p>  <prop key="hibernate.show_sql">true</prop&g

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論