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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  小區(qū)車輛管理系統(tǒng)的設計與實現(xiàn)</p><p><b>  專業(yè):</b></p><p>  學生: 指導老師:</p><p><b>  摘 要</b></p><p>  小區(qū)車輛管理系統(tǒng)是一個通過人機交互系統(tǒng),將小區(qū)車輛、駕駛員和出車情況進行存儲,并同時對小

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

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

4、t;<p>  關鍵詞: 車輛管理 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導論1</b></p><p><b>  1.1系統(tǒng)背景1</b></p><p><b>  1.2技術背景1</b></p><p><b> 

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

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

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

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

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

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

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

20、;/b></p><p>  本系統(tǒng)采用Java語言編寫,Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。是由Sun Microsystems公司于1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。</p><p>  Java具有以下特點,如表1所示:</p><p>  表1:Ja

21、va語言特點</p><p><b>  2. MVC模式</b></p><p>  MVC模式是表示層開發(fā)最常用的設計模式,使用該設計模式是為了減少業(yè)務邏輯和視圖之間的耦合,這樣的設計模式可以提高系統(tǒng)的可擴展性和可維護性。</p><p>  MVC模型組成的模型,視圖和控制器。在這個模型中。控制器的作用是接受客戶端發(fā)送的請求,那么請求到適

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

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

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

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

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

27、rvlet、標簽庫以及面向對象的技術水準。在使用MVC模型時,Struts可以減少開發(fā)Web程序的時間</p><p>  在MVC模式,適應時代發(fā)展的使用,而且還使用Struts2,在這種情況下,我們可以減少開發(fā)Web應用程序的時間。它通過選用Java Servlet/JSP,從而來完成了基于Java EE Web應用的MVC設計模式的應用框架〔Web Framework〕。所以也就看得出來Struts2在MV

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

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

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

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

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

33、作,同時會給出提醒方便管理者操作。</p><p> ?。?)管理員用戶具有系統(tǒng)管理、車輛信息管理、駕駛員信息管理、出車記錄管理功能。</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>  對每一個輸入的數(shù)據(jù)都要有是正確的,并且在頁面上每一個輸入框不能為空,對表中的每一個數(shù)據(jù)之間他們的聯(lián)系都要保證是正確的。</p><p><b>  4.界面

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

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

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

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

39、;  系統(tǒng)采用B/S結構構建;這種方式已經(jīng)被許多用戶所習慣。</p><p> ?。?)采用面向對象的開發(fā)與設計理念</p><p>  為了保證系統(tǒng)有一個很好的框架支持,同時研發(fā)的產(chǎn)品速度快和有較好的穩(wěn)定性,將采用面向對象的設計理念。</p><p><b>  使用模塊化的設計</b></p><p>  模塊化應該

40、把整個體系分為幾個小的模塊,方便代碼的重載。</p><p> ?。?)系統(tǒng)界面簡單方便</p><p>  本系統(tǒng)的界面設計比較簡單,頁面美觀很好,界面的簡單模塊可以方便使用者操作本系統(tǒng)。</p><p><b> ?。?)速度優(yōu)先原則</b></p><p>  因為這個工具是速度最重要的評價標準,所以在設計過程中,

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

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

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

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

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

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

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

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

49、t;<p><b>  圖8:出車信息頁面</b></p><p><b>  3.2中文亂碼處理</b></p><p>  在程序中經(jīng)常會遇到中文亂碼的情況,如果手動的在servlet和jsp頁面進行設置,相當麻煩。因此,寫了一個過濾器作為對中文亂碼的處理。</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>  //*表示工程下所有的頁面都會有此過濾器的處理</p><p>  <url-pattern>/*</url-pattern></p><p>  </filter-mapping></p><p>  對應的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類來處

56、理字符轉換:</p><p>  public static String toUni(String gbStr){</p><p>  String uniStr = ""; /*把字符串轉換成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、把字符串轉換成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>  駕駛員信息管理是對駕駛員信息的增加、刪除、修改和查詢等操作。在系統(tǒng)中都有一一實現(xiàn)的

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

66、心代碼</b></p><p><b>  模型層:</b></p><p>  public class sijiDAO{ </p><p>  public TSiji findById(java.lang.Integer id) //這個方法用于找到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>  //通過ID找到這個駕駛員</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>  ……………………..//此處省略了對駕駛員信息操作的其他方法</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);//通過ID找到這個駕駛員</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>  }//操作成功轉到succeed頁面,在struct.xml文件中有配置</p><p>  struts.xml中的相關配置代碼:</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è)務邏輯與視圖之間,用于接受頁面請求然后交給相應的邏輯處

82、理方法進行處理</p><p>  相關配置文件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車輛信息管理</b&

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

86、息頁面,輸入相關車輛信息可以添加。</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>  相關配置文件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è)務

95、邏輯與視圖之間,用于接受頁面請求然后交給相應的邏輯處理方法進行處理</p><p>  相關配置文件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:車輛信息添加</p><p><b>  3.5出車信息管理</b></p><p>  出車信息管理包括出車信息的增加、刪除、修改、查詢,在系統(tǒng)中都有一一實現(xiàn)的。由于出車信息的添加、刪除、修改、查詢在實現(xiàn)上都相差不大,所以本節(jié)

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

100、lt;/p><p>  在表格下方有“添加出車信息”的按鈕。</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>  //找到出車的信息放在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>  相關配置文件:</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>  相關配置文件:</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>  //成功后轉向chucheMana.jsp這個頁面</p><p><b>  </action></b></p><p><b

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

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

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

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

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

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

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

125、所示。</p><p>  表4:車輛信息表(t_che)</p><p>  司機信息表主要記錄了司機基本信息,表結構如表5所示。</p><p>  表5:司機信息表(t_siji)</p><p>  出車信息表是出車這個實體的一些屬性,如表6所示。</p><p>  表6:出車信息表(t_chuche)<

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

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

128、余少許配置文件如 Hibernate .properties。屬性的XML映射,可以提供數(shù)據(jù)持久化服務的應用。Hibernate具有非常大的靈活性,而且整體結構非常致密,提供應用JDBC連接,和管理自己的事務。</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論