日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于JAVA SSM框架的酒店客房管理系统设计

發(fā)布時間:2023/12/14 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于JAVA SSM框架的酒店客房管理系统设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎掃一掃互相交流學習哦!

酒店客房管理系統(tǒng)

摘 要

隨著信息需求的增長,傳統(tǒng)的信息交流方式早已不能滿足企業(yè)對傳遞和處理大量信息的需要,因而亟需把網(wǎng)絡技術滲透到日常生活中。在當代快速發(fā)展的社會里,無處不見酒店,酒店客房管理系統(tǒng)的開發(fā)勢在必行。隨著計算機的普及和計算機科學技術的飛速發(fā)展,人們開始越來越多地利用計算機解決實際問題。酒店面對大量的預定,入住以及人員管理和歷史記錄的查詢等問題,采用原始方式處理既浪費時間、又浪費人力和物力,并且數(shù)據(jù)的準確性低,所以酒店管理系統(tǒng)的出現(xiàn)起到了很重要的作用。因此,總結前人的經(jīng)驗,開發(fā)交互性好,易于操作的酒店管理系統(tǒng)進行自動化處理變得十分重要。

此系統(tǒng)實現(xiàn)了用戶對客房的預定、用戶自身信息的查詢、管理員對預定的處理、管理員對入住的接收,管理員對信息的查詢,管理員對歷史記錄的查詢,以及管理員對人員的管理等功能,實現(xiàn)了易安裝性、易維護性和易操作性,并且系統(tǒng)運行穩(wěn)定、安全。酒店管理系統(tǒng)的應用對酒店起到了重要的作用。此系統(tǒng)是對酒店前臺的業(yè)務進行管理,對某些環(huán)節(jié)進行了優(yōu)化,提高了工作效率,使酒店管理者能夠及時了解收費狀況等許多必要的信息,提高酒店的工作效率和競爭力。

本畢業(yè)設計的內容是設計并且實現(xiàn)一個基于web技術的酒店客房管理系統(tǒng),該系統(tǒng)主要以J2EE作為開發(fā)基礎,主要使用了Struts2+Spring+Hibernate等多種框架的結合使用,用MyEclipse作為開發(fā)工具,以MySQL作為數(shù)據(jù)庫,以Macromedia公司的Dreamweaver作為界面美化工具,使用Java語言開發(fā),頁面采取JSP動態(tài)頁面開發(fā)技術。該系統(tǒng)界面簡單、操作方便,易于維護。

關鍵詞 酒店客房管理系統(tǒng);SSH框架;MySQL數(shù)據(jù)庫;Java語言;JSP

Hotel Management System

Abstract

With the growth in demand for information,the traditional way of information exchange can not meet the enterprise need to transmit and process a lot of information,hence the need to put the network technology into daily life.In today's busy society, information has become more and more popular. With the popularity of computer and rapid development of computer science and technology, more and more people are using computers to solve practical problems. The application of hotel management plays a very important role. In the face of a large number of reservations and occupancy, as well as personnel management, and historical records query, human processing can absolutely waste time, along with human and material resources, where the accuracy of the data is low. Therefore, developing a friendly interface, easy operation of the hotel management system for automated processing becomes very important, which is the purpose and significance of this system development.

This system enables customers to book hotel rooms, ask for information, leave message for system. It also enables the administrator to treat reservations, receive the check-in, look for information and historic records, and manage staff, which also includes the functions like staff attendance. It realizes the goal of easy installation, easy maintenance and easy to operate, and the system is stable and safe.

The contents of this graduation project is to design and implement a web based technology sharing network,this system mainly uses J2EE as the basis of development,the main use of the combined use of Struts2+Spring+Hibernate and other frameworks,MyEclipse as a development tool,MySQL as the database,using Macromedia's Dreamweaver as the interface landscaping tools,the use of Java language development,page take the development technology of JSP dynamic pages.The system has a simple interface,easy operation,easy maintenance.

Key words Hotel Management System;SSH frame;MySQL Database;Java language;JSP

?

目 錄

摘 要... i

Abstract ii

1? 緒論... 1

1.1? 課題研究的背景及意義... 1

1.2? 課題研究現(xiàn)狀... 2

2? 系統(tǒng)的開發(fā)環(huán)境及技術簡介... 3

2.1? 系統(tǒng)開發(fā)環(huán)境... 3

2.1.1? MyEclipse. 3

2.1.2? 數(shù)據(jù)庫簡介... 3

2.1.3 ?Tomcat 3

2.2? 系統(tǒng)開發(fā)的思想和技術... 4

2.2.1? Java簡介... 4

2.2.2? JSP技術與MVC模式以及系統(tǒng)的基本框架... 5

2.2.3? SSH框架... 5

2.3? 本章小結... 8

3? 系統(tǒng)概要設計... 9

3.1? 總體功能模塊... 10

3.2? 系統(tǒng)管理員的功能模塊... 10

3.3? 用戶功能模塊... 11

3.4? 系統(tǒng)業(yè)務描述... 11

3.5? 程序流程圖... 12

3.6? 本章小結... 12

4? 系統(tǒng)詳細設計... 13

4.1? 系統(tǒng)和數(shù)據(jù)庫的配置... 13

4.2? 概念模型設計... 13

4.3? 數(shù)據(jù)庫的邏輯模型... 13

4.4? 數(shù)據(jù)庫表結構... 15

4.5? 平臺數(shù)據(jù)表的設計... 16

4.6? 本章小結... 19

5? 系統(tǒng)功能實現(xiàn)... 20

5.1? 系統(tǒng)的類圖... 20

5.1.1? 客房分類Fenlei類圖... 20

5.1.2? 開房信息Kaifang類圖... 20

5.1.3? 客房信息Kefang類圖... 21

5.1.4? 用戶User類圖... 21

5.1.5? 預定Yuding類圖... 21

5.2? 程序的時序圖... 22

5.2.1? 房間分類模塊時序圖... 22

5.2.2? 開房信息模塊時序圖... 23

5.2.3? 客房信息模塊時序圖... 24

5.2.4? 用戶模塊時序圖... 24

5.2.5? 預定模塊時序圖... 25

5.3? 系統(tǒng)功能實現(xiàn)的主要框架... 26

5.3.1? SSH框架... 26

5.3.2? Hibernate配置文件... 26

5.3.3? Struts配置文件... 26

5.3.4? Spring配置文件... 27

5.4? 系統(tǒng)功能實現(xiàn)的主要模塊... 28

5.4.1? 系統(tǒng)登錄頁面... 28

5.4.2? 普通用戶注冊頁面... 29

5.4.3? 系統(tǒng)管理員登錄頁面... 30

5.4.4? 普通用戶登錄頁面... 30

5.4.5? 客房信息管理頁面... 30

5.4.6? 用戶管理頁面... 32

5.4.7? 客房分類管理頁面... 32

5.4.8? 開房管理頁面... 32

5.4.9? 普通用戶客房預定頁面... 33

5.5? 本章小結... 33

6? 系統(tǒng)測試... 34

6.1? 軟件測試的目的... 34

6.2? 軟件測試的任務... 35

6.3? 測試環(huán)境... 35

6.4? 測試環(huán)境的配置... 35

6.4.1? 創(chuàng)建安裝項目... 35

6.4.2? 添加項目輸出... 36

6.4.3? 運行項目... 37

6.5? 本章小結... 37

結 論... 38

參考文獻... 39

致 謝... 40

外文原文... 41

中文翻譯... 48

?

?

1? 緒論

1.1? 課題研究的背景及意義

如今酒店管理系統(tǒng)已經(jīng)成為一個酒店不可缺少的部分,它的功能對于企業(yè)的用戶和管理者來說都是至關重要的,因此,酒店管理系統(tǒng)應該能夠為用戶提供方便的服務,充足的信息和快捷的查詢手段,以往人們一直使用傳統(tǒng)的人工方式管理,這種管理方式存在著許多缺點,諸如效率低,保密性差等,而且時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。隨著科學技術的不斷提高,計算機科學不斷發(fā)展,其強大的功能已經(jīng)被人們深刻認識,它已經(jīng)進入了人類社會的各個領域并發(fā)揮著越來越重要的作用。

基于SSH的酒店管理系統(tǒng)實現(xiàn)了信息及人員的全過程追蹤和動態(tài)管理,從而做到簡化預定客房過程,優(yōu)化入住客房速度,改變以往排隊多、等候時間長、秩序混亂的局面。同時酒店管理系統(tǒng)的實施也強化了酒店內部管理,降低了員工的工作強度和時間,人為因素造成的漏現(xiàn)象可以解決,也加速了處理速度,減少用戶流程。酒店管理系統(tǒng)為管理者提供了收費狀況和歷史記錄等許多有用的信息,也由于許多因素的影響:如提供的信息是否充足,數(shù)據(jù)的處理是否快捷等,使得繁瑣的管理在酒店運營中的地位越發(fā)重要,越來越多的人都在關心酒店管理的重要性問題。本系統(tǒng)作為一個管理信息平臺,在一定程度上便是適應這樣的發(fā)展的需求。

在信息高速發(fā)展的今天,使用快速有效的工具和設備是所有行業(yè)保持領先優(yōu)勢的必須手段,為了更好的對酒店業(yè)務進行管理和協(xié)調,所以使用酒店管理系統(tǒng)是對酒店和賓館有很多益處的,為了使系統(tǒng)能夠很好的適應業(yè)務變化系統(tǒng)具有了良好的業(yè)務擴展和業(yè)務定制能力,解決了用戶需求經(jīng)常變化軟件系統(tǒng)長期難以定型的問題,我對此進行了一些相關調查并開發(fā)實現(xiàn)了一個適用于中小型酒店和賓館的管理系統(tǒng)。

信息化的今天,酒店管理系統(tǒng)的應用,使高效率的酒店管理模式成為可能。通過本酒店客房管理系統(tǒng),酒店的相關工作人員可以提高自身的工作效率,并且通過歷史記錄和收費紀錄能夠做好金錢的查詢和協(xié)調工作;通過本酒店客房管理系統(tǒng),酒店的決策者可以直接管理和運營相關的業(yè)務,有效地發(fā)現(xiàn)和挖掘前景,及時與自己的上級、下屬、同行業(yè)單位進行的溝通與交流,同心協(xié)作,積極為酒店事業(yè)的發(fā)展與決策貢獻力量。使酒店管理適應時代的發(fā)展要求,大大提高了在大量服務機構中的核心竟爭力。

使用酒店管理系統(tǒng)的意義:

1.減少工作量,增加回頭率。

很多使用電子鎖的賓館,如果沒有使用酒店客房管理系統(tǒng),全部手寫記賬,那么老板每天都需要花大量時間進行對賬查賬,每次前臺交接班也需要花費大量時間進行對賬交賬,如果使用了酒店客房管理系統(tǒng),那么所有賬目一目了然,每天總賬,交接班賬目,收支賬目,甚至每月的詳細賬目和總賬都清清楚楚。大大節(jié)約了時間,解放了老板,提高了效率。

如果有酒店客房管理系統(tǒng),但是沒有和門鎖軟件進行連接,那么每次客人入住和離店都需要使用兩個軟件同時進行操作,增加了客人等待時間,降低了服務質量,不利于在客人心中留下好印象,也就不能增加客人回頭率。兩個軟件進行操作,誤操作概率大大增加,一不小心就在門鎖軟件上制一個房間的房卡,在管理軟件上收銀入賬到另一房間上。

2.增加財務安全,減少管理漏洞。

由于酒店客房管理系統(tǒng)和門鎖軟件用接口進行了連接,在實際使用中,不使用門鎖軟件,只使用酒店客房管理系統(tǒng)進行入住登記,收銀,制卡,客房商品入賬,前臺商品入賬,電話費自動入賬,賠償入賬,退房,結賬,客房和前臺商品的進銷存管理,會員卡管理,協(xié)議單位管理,預訂房管理,遠程賬目管理等等。在酒店客房管理系統(tǒng)中,實行的是先進行收銀入賬,再進行房卡制作的工作流程,并且如果不進行收銀入賬,就不能進行房卡制作,所有在軟件上的賬目和操作記錄都不能人工刪除,這樣的管理流程,做到了避免前臺人員私自截留房費的可能,大大增加了老板的財務安全,減少了財務管理漏洞。在使用了酒店客房管理系統(tǒng)后,門鎖軟件的進入密碼由老板保存,前臺人員不再使用門鎖軟件。

1.2? 課題研究現(xiàn)狀

國外的酒店管理系統(tǒng)最早是于70年代初發(fā)展起來的,到了80年代,國外的酒店管理系統(tǒng),如EECO(Electronic Engineering CO)、HIS(Hotel Information System)、CLS、Lodgistix等,整個模式已基本定型,技術較成熟,功能也較齊全。現(xiàn)在,國外酒店正向個性化方向發(fā)展,酒店按其經(jīng)營方式可分為商務型酒店、長住型酒店、度假型酒店等等;按其經(jīng)營形式可分為獨立經(jīng)營酒店、集團經(jīng)營酒店等。而且產(chǎn)生了一大批國際級的連鎖酒店,如希爾頓(Hilton Hotels Corp)、謝拉頓(Sheraton Corp)、假日(Holiday Corp)、凱悅(Hyatt Hotel Corp)等集團公司的連鎖酒店。

國內的酒店計算機管理系統(tǒng)最早是在80年代初開始的,從事該方面工作的有清華大學自動化系的金國芬教授、西安交大和浙江省計算機技術研究所。到了80年代中后期,隨著國外酒店計算機系統(tǒng)和先進管理技術的大規(guī)模引進,進一步促進了我國酒店管理技術的發(fā)展。國內酒店管理系統(tǒng)正是在充分吸收國外管理系統(tǒng)的精華,結合國內實際的情況下逐步發(fā)展成熟,到90年代初期形成了幾個較成熟的軟件系統(tǒng),同時產(chǎn)生了許多專職從事酒店計算機管理系統(tǒng)的公司。其中比較有影響的有杭州西歐Foxhis飯店管理系統(tǒng)、北京中軟好泰CSHIS管理系統(tǒng)、北京華儀飯店管理系統(tǒng)和廣州萬迅千里馬飯店管理系統(tǒng)。

到了21世紀,隨著計算機在飯店中的普及應用,以及計算機技術的不斷發(fā)展,酒店計算機系統(tǒng)的發(fā)展到了一個新的時期,新的系統(tǒng)平臺、新的軟件功能、新的系統(tǒng)特點及發(fā)展方向不斷涌現(xiàn)。

?

?

2? 系統(tǒng)的開發(fā)環(huán)境及技術簡介

2.1? 系統(tǒng)開發(fā)環(huán)境

2.1.1 ?MyEclipse

在開發(fā)本平臺中所用到的開發(fā)工具就是知名的Java項目開發(fā)工具MyEclipse。MyEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench,簡稱MyEclipse)是對Eclipse IDE的一種擴展,利用MyEclipse,我們可以進行數(shù)據(jù)庫和J2EE項目的開發(fā)、發(fā)布,以及在應用程序服務器的整合中極大地提高系統(tǒng)的工作效率。MyEclipse是一個功能非常豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。

在結構上,MyEclipse的特征可以被分為7類:J2EE模型,WEB開發(fā)工具,EJB開發(fā)工具,應用程序服務器的連接器,J2EE項目部署服務,數(shù)據(jù)庫服務,MyEclipse整合幫助。

對于以上每一種功能上的類別,在Eclipse中都有相應的功能部件,并通過一系列的插件來實現(xiàn)它們。MyEclipse結構上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進行單獨的擴展和升級。

簡單而言,MyEclipse是Eclipse的插件,也是一款功能強大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。

2.1.2? 數(shù)據(jù)庫簡介

數(shù)據(jù)庫使用的是MySQL開源數(shù)據(jù)庫。

MySQL的特性:使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性 。支持AIX、FreeBSD、HP-UX、Mac OS、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng) 。為多種編程語言提供API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多線程充分利用CPU資源。優(yōu)化的SQL查詢算法,有效地提高查詢速度。既能夠作為一個單獨的應用程序應用在客戶端服務器網(wǎng)絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。

MySQL的應用:與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體成本。

2.1.3? Tomcat

Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。

Tomcat是一個輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache服務器,可利用它響應對HTML頁面的訪問請求。實際上Tomcat部分是Apache服務器的擴展,但它是獨立運行的,所以當你運行tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。

當配置正確時,Apache為HTML頁面服務,而Tomcat實際上運行JSP頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。

2.2? 系統(tǒng)開發(fā)的思想和技術

2.2.1? Java簡介

Java是由Sun Microsystems公司于1995年5月推出的Java程序設計語言和Java平臺的總稱,是一種簡單的、面向對象的、分布式的、解釋型的、健壯安全的、結構中立的、可移植的、性能優(yōu)異、多線程的動態(tài)語言,很多軟件就是用這個開發(fā)出來的。Java分為三個體系:JavaSE標準版,JavaEE企業(yè)版,JavaME微型版。

Java的誕生是對傳統(tǒng)計算機模式的挑戰(zhàn),對計算機軟件開發(fā)和軟件產(chǎn)業(yè)都產(chǎn)生了深遠的影響,基于構建開發(fā)方法的崛起,引出了CORBA國際標準軟件體系結構和多層應用體系框架。在此基礎上形成了Java平臺和.NET平臺兩大派系,推動了整個IT業(yè)的發(fā)展。對軟件產(chǎn)業(yè)和工業(yè)企業(yè)都產(chǎn)生了深遠的影響,軟件從以開發(fā)為中心轉到了以服務為中心。中間提供商,構件提供商,服務器軟件以及咨詢服務商出現(xiàn)。企業(yè)必須重塑自我,B2B的電子商務將帶動整個新經(jīng)濟市場,使企業(yè)獲得新的價值,新的增長,新的商機,新的管理。對軟件開發(fā)帶來了新的革命,重視使用第三方構件集成,利用平臺的基礎設施服務,實現(xiàn)開發(fā)各個階段的重要技術,重視開發(fā)團隊的組織和文化理念,協(xié)作,創(chuàng)作,責任,誠信是人才的基本素質。總之,目前以看到了Java對信息時代的重要性,未來還會不斷發(fā)展,Java在應用方面將會有更廣闊的前景。

Java語言的特點:

語言簡單:Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,并提供了自動的廢料收集,使得程序員不必為內存管理而擔憂;

面向對象:Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制;

分布式語言:它提供了用于網(wǎng)絡應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發(fā)分布式應用的重要手段;

語言是可移植的:Java系統(tǒng)本身也具有很強的可移植性,Java編譯器是用Java實現(xiàn)的,Java的運行環(huán)境是用ANSI C實現(xiàn)的;

語言是多線程的:在Java語言中,線程是一種特殊的對象Thread類已經(jīng)實現(xiàn)了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼;

異常處理機制:為了使Java程式更穩(wěn)定、更安全,Java引入了異常處理機制。能夠在程序中產(chǎn)生異常情況的地方,執(zhí)行相對應的處理,不至于因突發(fā)或意外的錯誤造成執(zhí)行中斷或是死機。

Java編程是面向對象的,使用它編程,可以幫助我們了解需求,定制功能更為強大的軟件更好地為客戶服務。并且擁有語言動態(tài),語言可移植語言可拓展、通用性強和易于擴充等優(yōu)勢。

Java主要針對企業(yè)級用戶,適合一些企業(yè)級的開發(fā),可以開發(fā)優(yōu)秀的企業(yè)級平臺的的程序、高效靈活的文件操作程序、高效靈活的數(shù)據(jù)庫操作程序。總之,Web應用、移動設備、嵌入式設備、Linux客戶端管理工具等應用方面,Java有不可比擬的功能。

2.2.2? JSP技術與MVC模式以及系統(tǒng)的基本框架

本系統(tǒng)采用JSP技術,基于MVC模式開發(fā),使用SSH框架(Struts2、Spring、Hibernate)來加快系統(tǒng)的開發(fā)速度。所謂的MVC模式是"Model-View-Controller"的縮寫,中文翻譯為"模式-視圖-控制器"。程序就是用Struts2和Hibernate這兩個框架來實現(xiàn)模型層和控制器這兩層,JSP實現(xiàn)視圖這一層。一般來說程序就是在數(shù)據(jù)庫和頁面之間起橋梁作用的,JSP頁面請求先到Action,再到DAO,再回到Action,回到JSP頁面,Action主要處理來自頁面的請求,DAO主要是和數(shù)據(jù)庫的交互,Struts2主要用在Action,處理來自頁面的請求,處理完請求后跳轉回頁面。Hibernate主要用在DAO,包括對數(shù)據(jù)庫的增、刪、改、查的操作,Spring控制程序的流程。

2.2.3? SSH框架

SSH框架是J2EE應用中Struts2+Spring+Hibernate三大免費開源框架的結合使用, 它可以看成工具,也是中間件。它是用來提高我們的開發(fā)效率,提高我們軟件產(chǎn)品的可維護性、可擴展性乃至敏捷性的。它們里面有很多優(yōu)秀的設計理念及模式應用。比如,Struts屬于MVC框架,關鍵是要了解MVC的概念及大致原理;而Hibernate屬于ORM系統(tǒng),屬于持久層的解決方案,同樣需要對ORM的概念及原理有一個總體的了解。而Spring屬于應用程序框架,其核心是IOC容器以及AOP,Spring中還集成了很多實用的東西,比如對JDBC的封裝、自己的MVC、對動態(tài)語言的簡捷訪問等。如圖2.1所示。

?

圖2.1 SSH框架

它由以下3個框架構成:

1.Struts2框架

Struts2是Apache組織的一個開放源碼項目。Struts2是一個比較好的MVC框架,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術是Servlet,JSP和Custom tag library。其基本構成如圖2.2所示。

?

Web服務器

Struts.config xml

ActionServlet

控制器

JSP

視圖

Servlet/JSP容器

Action

Action

?

JavaBean

EJB

模型

?

?
??

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

圖2.2 Struts框架工作流程

2.Spring框架

Spring的核心是個輕量級(Lightweight)的容器(Container),它是實現(xiàn)IOC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的實現(xiàn)方式,提供對持久層(Persistence)、事務(Transaction)的支持,提供MVC Web框架的實現(xiàn),并對一些常用的企業(yè)服務API(Application Interface)提供一致的模型封裝,是一個全方位的應用程序框架(Application framework),除此之外,對于現(xiàn)存的各種框架(Struts、JSF、Hibernate等),Spring也提供了與它們相整合的方案。

Spring框架由以下7個部分組成,如圖2.3所示。

?

圖2.3 Spring框架構成

?

3.Hibernate框架

Hibernate是一個開放源碼的ORM持久層框架。作為優(yōu)秀的持久層框架實現(xiàn),Hibernate框架提供了強大、高性能的對象到關系型數(shù)據(jù)庫的持久化服務,開發(fā)人員可以使用面向對象的設計進行持久層開發(fā)。簡單的說,Hibernate只是一個將持久化類與數(shù)據(jù)庫表相映射的工具,每個持久化類實例均對應于數(shù)據(jù)庫表中的一個數(shù)據(jù)行而已。用戶只需直接使用面向對象的方法操作此持久化類實例,即可完成對數(shù)據(jù)庫表數(shù)據(jù)的插入、刪除、修改、讀取等操作,如圖2.4所示。

?

圖2.4 Hibernate框架

?????? SSH框架的特點:典型的J2EE三層結構,分為表現(xiàn)層、中間層(業(yè)務邏輯層)和數(shù)據(jù)服務層。三層體系將業(yè)務規(guī)則、數(shù)據(jù)訪問及合法性校驗等工作放在中間層處理。客戶端不直接與數(shù)據(jù)庫交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫交互。表現(xiàn)層是傳統(tǒng)的JSP技術,自1999年問世以來,經(jīng)過多年的發(fā)展,其廣泛的應用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術打下了堅實的基礎。中間層采用的是流行的Spring+Hibernate,為了將控制層與業(yè)務邏輯層分離,又細分為以下幾種。Web層,就是MVC模式里面的Controller,負責控制業(yè)務邏輯層與表現(xiàn)層的交互,調用業(yè)務邏輯層,并將業(yè)務數(shù)據(jù)返回給表現(xiàn)層作組織表現(xiàn),該系統(tǒng)的MVC框架采用Struts。Service層(就是業(yè)務邏輯層),負責實現(xiàn)業(yè)務邏輯。業(yè)務邏輯層以DAO層為基礎,通過對DAO組件的正面模式包裝,完成系統(tǒng)所要求的業(yè)務邏輯。DAO層,負責與持久化對象的交互。該層封裝了數(shù)據(jù)的增、刪、查、改的操作。PO,持久化對象。通過實體關系映射工具將關系型數(shù)據(jù)庫的數(shù)據(jù)映射成對象,很方便地實現(xiàn)以面向對象方式操作數(shù)據(jù)庫,該系統(tǒng)采用Hibernate作為ORM框架。Spring的作用貫穿了整個中間層,將Web層、Service層、DAO層及PO無縫整合,其數(shù)據(jù)服務層用來存放數(shù)據(jù)。

?????? SSH的工作流程:初始化COM庫,引入ADO庫定義文件,用Connection對象連接數(shù)據(jù)庫;利用建立好的連接,通過Connection,Command對象執(zhí)行SQL命令或利用Recordset對象取得結果記錄集進行查詢處理,使用完畢后關閉連接釋放對象。ADO編程模型被設計成你只需集中完成兩項簡單的任務,即可完成對數(shù)據(jù)的絕大部分的操作:初始化COM庫,引入ADO庫定義文件;用Connection對象連接數(shù)據(jù)庫;利用建立好的連接,通過Connection、Command對象執(zhí)行命令;利用Recordset對象取得結果記錄集進行查詢、處理;使用完畢后關閉連接釋放對象。

2.3? 本章小結

本章開始介紹了系統(tǒng)開發(fā)所涉及到的開發(fā)工具,框架和數(shù)據(jù)庫,并詳細介紹了相關信息,并根據(jù)這些深入研究,為程序實現(xiàn)奠定了基礎;對開發(fā)這套管理系統(tǒng)的技術相關框架及主要開發(fā)工具進行了概要的介紹,通過需求分析后,考慮到客戶的各種具體要求,制定了系統(tǒng)的基本功能,確定了系統(tǒng)的用戶,及不同用戶的使用權限。方便管理員對相關環(huán)境的搭建及維護。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

3? 系統(tǒng)概要設計

概要設計的主要任務是把系統(tǒng)擴展用例圖轉換為軟件結構和數(shù)據(jù)結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結構設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結構特性、以及數(shù)據(jù)庫的設計。顯然,概要設計建立的是目標系統(tǒng)的邏輯模型,與計算機無關。

酒店客房管理系統(tǒng)的開發(fā)采用的是B/S的體系結構,B/S(Browser/Server)結構即瀏覽器和服務器結構。它是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過瀏覽器來實現(xiàn),極少部分事務邏輯在前端實現(xiàn),但是主要事務邏輯在服務器端實現(xiàn),形成所謂三層結構。相對于C/S結構屬于“胖”客戶端,需要在使用者電腦上安裝相應的操作軟件來說,B/S結構是屬于一種“瘦”客戶端,大多數(shù)或主要的業(yè)務邏輯都存在服務器端,因此,B/S結構的系統(tǒng)不需要安裝客戶端軟件,它運行在客戶端的瀏覽器之上,系統(tǒng)升級或維護時只需更新服務器端軟件即可,這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本。B/S結構系統(tǒng)的產(chǎn)生為系統(tǒng)面對無限未知用戶提供了可能。當然,與C/S結構相比,B/S結構也存在著系統(tǒng)運行速度較慢,訪問系統(tǒng)的用戶不可控的弱點。

以目前的技術看,它是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權限,服務器數(shù)據(jù)庫也很安全。特別是在Java這樣的跨平臺語言出現(xiàn)之后,B/S架構管理軟件更是方便、快捷、高效。

目前,軟件系統(tǒng)的改進和升級越來越頻繁,B/S架構的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對一個稍微大一點的單位來說,系統(tǒng)管理人員如果需要在幾百甚至上千部電腦之間來回奔跑,效率和工作量是可想而知的,但B/S架構的軟件只需要管理服務器就行了,所有的客戶端只是瀏覽器,根本不需要做任何的維護。無論用戶的規(guī)模有多大,有多少分支機構都不會增加任何維護升級的工作量,所有的操作只需要針對服務器進行;如果是異地,只需要把服務器連接專網(wǎng)即可,實現(xiàn)遠程維護、升級和共享。所以客戶機越來越“瘦”,而服務器越來越“胖”是將來信息化發(fā)展的主流方向。今后,軟件升級和維護會越來越容易,而使用起來會越來越簡單,這對用戶人力、物力、時間、費用的節(jié)省是顯而易見的,驚人的。因此,維護和升級革命的方式是“瘦”客戶機,“胖”服務器。

成本降低,選擇更多。現(xiàn)在的趨勢是凡使用B/S架構的應用管理軟件,只需安裝在Linux服務器上即可,而且安全性高。所以服務器操作系統(tǒng)的選擇是很多的,不管選用那種操作系統(tǒng)都可以讓大部分人使用windows作為桌面操作系統(tǒng)電腦不受影響,這就使的最流行免費的Linux操作系統(tǒng)快速發(fā)展起來,Linux除了操作系統(tǒng)是免費的以外,連數(shù)據(jù)庫也是免費的,這種選擇非常盛行。

?

?

?

?

3.1? 總體功能模塊

本系統(tǒng)分系統(tǒng)管理員和用戶2個用戶角色。

總功能圖如圖3.1所示。

???????? ?

圖3.1 系統(tǒng)功能需求分析

3.2? 系統(tǒng)管理員的功能模塊

系統(tǒng)管理員的主要功能有用戶管理、客房分類管理、客房信息管理、開房管理、退房管理、開房記錄查詢、預訂記錄查詢。系統(tǒng)管理員的功能圖如圖3.2所示。

?

圖3.2 系統(tǒng)管理員的功能圖

?

?

?

?

3.3? 用戶功能模塊

用戶主要功能有注冊登錄功能、客房預訂、預訂記錄查詢。

用戶的功能圖如圖3.3所示。

?

圖3.3 用戶的功能圖

3.4? 系統(tǒng)業(yè)務描述

本系統(tǒng)分系統(tǒng)管理員和普通用戶2個用戶角色。系統(tǒng)管理員的主要功能有用戶管理、客房分類管理、客房信息管理、開房管理、退房管理、開房記錄查詢、預訂記錄查詢;用戶主要功能有注冊登錄功能、客房預訂、預訂記錄查詢。

用例圖如圖3.4所示。

?

圖3.4 系統(tǒng)用例圖

?

?

?

?

?

?

3.5? 程序流程圖

用戶注冊流程圖如圖3.5所示。

?

圖3.5 用戶注冊流程圖

?

用戶登錄流程圖如圖3.6所示。

?

圖3.6 用戶登錄流程圖

3.6? 本章小結

考慮到客戶的各種具體要求,制定了系統(tǒng)的基本功能,確定了系統(tǒng)的用戶,及不同用戶的使用權限。為以后的系統(tǒng)開發(fā)奠定了堅實的基礎和理論依據(jù)。

?

?

?

?

4? 系統(tǒng)詳細設計

4.1? 系統(tǒng)和數(shù)據(jù)庫的配置

系統(tǒng)按通用的B/S(瀏覽器、服務器)模式進行設計。

數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結構設計的好壞將直接對應用系統(tǒng)的效率,以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結構設計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。

4.2? 概念模型設計

概念模型設計的典型方法是用E-R圖方法,即用實體-聯(lián)系模型表示。E-R方法是用E-R圖來描述顯示世界,E-R圖包含三個基本成分:實體、聯(lián)系、屬性。它直觀易懂,能夠比較準確地反映現(xiàn)實世界的信息聯(lián)系,從概念上表示一個數(shù)據(jù)庫的信息組織情況。

本系統(tǒng)E-R圖如圖4.1所示。

?

圖4.1 系統(tǒng)E-R圖

4.3? 數(shù)據(jù)庫的邏輯模型

房間分類表(主鍵、添加時間、房間狀態(tài)、房間價格、房間類型)如圖4.2所示。

?

主鍵

添加時間

房間價格

房間類型

房間狀態(tài)

房間分類

?

?

圖4.2 房間分類邏輯圖

?

開房信息表(主鍵、備注、身份證號、結賬狀態(tài)、客戶姓名、入住時間、入住天數(shù)、退房時間、消費金額、押金、關聯(lián)客房的ID)如圖4.3所示。

?

主鍵

備注

押金

關聯(lián)客房的ID

開房信息

?

?

圖4.3 開房信息邏輯圖

客房信息表(主鍵、房間信息狀態(tài)、房間號、房間狀態(tài)、房間描述、關聯(lián)分類的ID)如圖4.4所示。

?

主鍵

房間信息狀態(tài)

房間描述

關聯(lián)分類的ID

客房信息

?

?

圖4.4 客房信息邏輯圖

?

?

用戶表(主鍵、添加時間、聯(lián)系方式、密碼、1表示管理員、真實姓名、用戶狀態(tài)、用戶名、性別)如圖4.5所示。

?

主鍵

添加時間

用戶名

性別

用戶

?

?

圖4.5 用戶邏輯圖

?

預定表(主鍵、備注、添加時間、聯(lián)系方式、真實姓名、性別、預定客戶身份證號碼、預定狀態(tài)、預定入住時間、關聯(lián)kefang的ID、關聯(lián)user的ID)如圖4.6所示。

?

主鍵

備注

關聯(lián)kefang的ID

關聯(lián)user的ID

預定

?

?

圖4.6 預定邏輯圖

4.4? 數(shù)據(jù)庫表結構

?????? 房間分類表用來保存系統(tǒng)所有客房類型的基本信息。

房間分類表如表4.1所示:

表4.1 房間分類表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

createtime

datetime

yes

添加時間

deletestatus

int(11)

no

0

房間狀態(tài)

jiage

double

yes

房間價格

leixing

varchar(255)

yes

房間類型

?

?????? 開房信息表用來保存系統(tǒng)所有已入住客房的客戶的基本信息及該客戶的入住時間、入住天數(shù)退房時間和消費金額,還有押金。

?????? 開房信息表如表4.2所示:

表4.2 開房信息表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

beizhu

varchar(255)

yes

備注

idcard

varchar(255)

yes

身份證號

jiezhangstatus

varchar(255)

yes

結賬狀態(tài)

kehuname

varchar(255)

yes

客戶姓名

ruzhutime

datetime

yes

入住時間

tianshu

int(11)

yes

入住天數(shù)

tuifangtime

datetime

yes

退房時間

xiaofei

double

yes

消費金額

yajin

double

yes

押金

kefangid

int(11)

yes

關聯(lián)客房的ID

?

客房信息表用來保存系統(tǒng)所有空房和已入住的客房的基本信息。

?????? 客房信息表如表4.3所示:

表4.3 客房信息表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

deletestatus

int(11)

no

0

房間信息狀態(tài)

fangjianhao

varchar(255)

yes

房間號

fangjianstatus

varchar(255)

yes

房間狀態(tài)

miaoshu

varchar(255)

yes

房間描述

fenleiid

int(11)

yes

關聯(lián)分類的ID

?

?????? 用戶表用來保存系統(tǒng)管理員添加的,或者普通用戶注冊的普通用戶的基本信息,以及系統(tǒng)管理員添加的管理員的基本信息。

?????? 用戶表如表4.4所示:

表4.4 用戶表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

createtime

datetime

yes

添加時間

lianxifangshi

varchar(255)

yes

聯(lián)系方式

password

varchar(255)

yes

密碼

role

int(11)

no

0

1表示管理員

truename

varchar(255)

yes

真實姓名

userlock

int(11)

no

0

用戶狀態(tài)

username

varchar(255)

yes

用戶名

xingbie

varchar(255)

yes

性別

?

?????? 預定表如表4.5所示:

表4.5 預定表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

beizhu

varchar(255)

yes

備注

createtime

datetime

yes

添加時間

lianxifangshi

varchar(255)

yes

聯(lián)系方式

truename

varchar(255)

yes

真實姓名

xingbie

varchar(255)

yes

性別

yudingidcard

varchar(255)

yes

預定客戶身份證號碼

yudingstatus

int(11)

no

0

預定狀態(tài)

yudingtime

varchar(255)

yes

預定入住時間

kefangid

int(11)

yes

關聯(lián)kefang的ID

userid

int(11)

yes

關聯(lián)user的ID

?

4.5? 平臺數(shù)據(jù)表的設計

根據(jù)平臺的需求分析和功能模塊的劃分,所涉及的實體有房間分類、開房信息、客房信息、用戶、預定。因此系統(tǒng)的定義數(shù)據(jù)庫主要包含5張表:房間分類表t_fenlei,開房信息表t_kaifang,客房信息表t_kefang,用戶表t_user,預定表t_yuding。

房間分類表t_fenlei如圖4.7所示。

?

圖4.7 房間分類表

建表的SQL語句為:

CREATE TABLE ‘t_fenlei’ (

‘id’ int(11) NOT NULL auto_increment COMMENT ‘主鍵’,

? ‘createtime’ datetime default NULL COMMENT ‘添加時間’,

? ‘deletestatus’ int(11) NOT NULL default ‘0’ COMMENT ‘房間狀態(tài) 0表示正常狀態(tài) 1表示刪除狀態(tài)’,

? ‘jiage’ double default NULL COMMENT ‘房間價格’,

??‘leixing’ varchar(255) default NULL COMMENT ‘房間類型’,

? PRIMARY KEY? (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

開房信息表t_kaifang如圖4.8所示。

?

圖4.8 開房信息表

建表語句為:

CREATE TABLE ‘t_kaifang’ (

? ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主鍵’,

? ‘beizhu’ varchar(255) default NULL COMMENT ‘備注’,

? ‘idcard’ varchar(255) default NULL COMMENT ‘身份證號’,

? ‘jiezhangstatus’ varchar(255) default NULL COMMENT ‘結賬狀態(tài) 已結賬 未結賬’,

? ‘kehuname’ varchar(255) default NULL COMMENT ‘客戶姓名’,

? ‘ruzhutime’ datetime default NULL COMMENT ‘入住時間’,

? ‘tianshu’ int(11) NOT NULL default ‘0’ COMMENT ‘入住天數(shù)’,

? ‘tuifangtime’ datetime default NULL COMMENT ‘退房時間’,

? ‘xiaofei’ double default NULL COMMENT ‘消費金額’,

? ‘yajin’ double default NULL COMMENT ‘押金’,

? ‘kefangid’ int(11) default NULL COMMENT ‘關聯(lián)客房的id,外鍵’,

? PRIMARY KEY (‘id’),

? KEY ‘FKE682DF1CAFDBF4E2’ (‘kefangid’),

? CONSTRAINT ‘FKE682DF1CAFDBF4E2’ FOREIGN KEY (‘kefangid’) REFERENCES ‘t_kefang’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

?

?

?

?

客房信息表t_kefang如圖4.9所示。

?

圖4.9 客房信息表

建表語句為:

CREATE TABLE ‘t_kefang’ (

? ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主鍵’,

? ‘deletestatus’ int(11) NOT NULL default ‘0’ COMMENT ‘房間信息狀態(tài) 0表示未刪除 1表示刪除’,

? ‘fangjianhao’ varchar(255) default NULL COMMENT ‘房間號’,

? ‘fangjianstatus’ varchar(255) default NULL COMMENT ‘房間狀態(tài) 空房 開房 預訂’,

? ‘miaoshu’ varchar(255) default NULL COMMENT ‘房間描述’,

? ‘fenleiid’ int(11) default NULL COMMENT ‘關聯(lián)分類的id,外鍵’,

? PRIMARY KEY? (‘id’),

? KEY ‘FK3932E659AE2F5C48’ (‘fenleiid’),

? CONSTRAINT ‘FK3932E659AE2F5C48’ FOREIGN KEY (‘fenleiid’) REFERENCES ‘t_fenlei’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

用戶表t_user如圖4.10所示。

?

圖4.10 用戶表

建表語句為:

CREATE TABLE ‘t_user’ (

? ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主鍵’,

? ‘createtime’ datetime default NULL COMMENT ‘添加時間’,

? ‘lianxifangshi’ varchar(255) default NULL COMMENT ‘聯(lián)系方式’,

? ‘password’ varchar(255) default NULL COMMENT ‘密碼’,

? ‘role’ int(11) NOT NULL default ‘0’ COMMENT ‘1表示管理員’,

? ‘truename’ varchar(255) default NULL COMMENT ‘真實姓名’,

? ‘userlock’ int(11) NOT NULL default ‘0’ COMMENT ‘用戶狀態(tài) 0表示正常 1表示刪除’,

? ‘username’ varchar(255) default NULL COMMENT ‘用戶名’,

? ‘xingbie’ varchar(255) default NULL COMMENT ‘性別 男 女’,

? PRIMARY KEY (‘id’)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf-8;

預定表t_yuding如圖4.11所示。

?

圖4.11 預定表

建表語句為:

CREATE TABLE ‘t_yuding’ (

? ‘id’ int(11) NOT NULL auto_increment COMMENT ‘主鍵’,

? ‘beizhu’ varchar(255) default NULL COMMENT ‘備注’,

? ‘createtime’ datetime default NULL COMMENT ‘添加時間’,

? ‘lianxifangshi’ varchar(255) default NULL COMMENT ‘聯(lián)系方式’,

? ‘truename’ varchar(255) default NULL COMMENT ‘真實姓名’,

? ‘xingbie’ varchar(255) default NULL COMMENT ‘性別’,

? ‘yudingidcard’ varchar(255) default NULL COMMENT ‘預定客戶身份證號碼’,

? ‘yudingstatus’ int(11) NOT NULL default ‘0’ COMMENT ‘預定狀態(tài) 0表示預定 1表示取消預定’,

? ‘yudingtime’ varchar(255) default NULL COMMENT ‘預定入住時間’,

? ‘kefangid’ int(11) default NULL COMMENT ‘關聯(lián)kefang的id,外鍵’,

? ‘userid’ int(11) default NULL COMMENT ‘關聯(lián)user的id,外鍵’,

? PRIMARY KEY (‘id’),

? KEY ‘FK51F76C65AFDBF4E2’ (‘kefangid’),

? KEY ‘FK51F76C657614FDC’ (‘userid’),

? CONSTRAINT ‘FK51F76C657614FDC’ FOREIGN KEY (‘userid’) REFERENCES ‘t_user’ (‘id’),

? CONSTRAINT ‘FK51F76C65AFDBF4E2’ FOREIGN KEY (‘kefangid’) REFERENCES ‘t_kefang’ (‘id’)

) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

4.6? 本章小結

本章詳細介紹了本系統(tǒng)使用的體系結構,使系統(tǒng)的體系架構清晰明了。詳細劃分了用戶操作框架,細分了系統(tǒng)的各個功能模塊,并且對每個功能模塊的功能細分到底層,用來與后臺數(shù)據(jù)庫進行連接,為下面的系統(tǒng)實現(xiàn)打下了堅實基礎。

5? 系統(tǒng)功能實現(xiàn)

5.1? 系統(tǒng)的類圖

類圖(Class Diagram)是顯示了模型的靜態(tài)結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等。類圖不顯示暫時性信息。

類圖由許多(靜態(tài))說明性的模型元素(例如類、包和它們之間的關系,這些元素和它們的內容互相連接)組成。類圖可以組織在(并且屬于)包中,僅顯示特定包中的相關內容。

類圖是最常用的UML圖,顯示出類、接口以及它們之間的靜態(tài)結構和關系;它用于描述系統(tǒng)的結構化設計。

類圖最基本的元素是類或者接口。

同其他的圖一樣,類圖也可以包含注解和限制。

類圖中也可以包含包和子系統(tǒng),這兩者用來將元素的分組。有時候也可以將類的實例放到類圖中。

5.1.1? 客房分類Fenlei類圖

客房分類類圖如圖5.1所示。

???? ?

圖5.1 Fenlei類圖

5.1.2? 開房信息Kaifang類圖

開房信息類圖如圖5.2所示。

?

圖5.2 Kaifang類圖

?

?

?

5.1.3? 客房信息Kefang類圖

客房信息類圖如圖5.3所示。

?

圖5.3 Kefang類圖

5.1.4? 用戶User類圖

用戶類圖如圖5.4所示。

?

圖5.4 User類圖

5.1.5? 預定Yuding類圖

預定類圖如圖5.5所示。

?

圖5.5 Yuding類圖

?

?

?

?

?

5.2? 程序的時序圖

時序圖(Sequence Diagram),亦稱為序列圖或循序圖,是一種UML行為圖。它通過描述對象之間發(fā)送消息的時間順序顯示多個對象之間的動態(tài)協(xié)作。它可以表示用例的行為順序,當執(zhí)行一個用例行為時,時序圖中的每條消息對應了一個類操作或狀態(tài)機中引起轉換的觸發(fā)事件。

時序圖描述對象是如何交互的,并且將重點放在消息序列上。也就是說,描述消息是如何在對象間發(fā)送和接收的。時序圖有兩個坐標軸:縱坐標軸顯示時間,橫坐標軸顯示對象。每一個對象的表示方法是:矩形框中寫有對象或類名,且名字下面有下劃線;同時有一條縱向的虛線表示對象在序列中的執(zhí)行情況(即發(fā)送和接收的消息對象的活動),這條虛線稱為對象的生命線。對象間的通信用對象的生命線之間的水平的消息線來表示,消息線的箭頭說明消息的類型,如同步,異步或簡單。瀏覽時序圖的方法是,從上到下查看對象間交換的消息,分析那些隨著時間的流逝而發(fā)生的消息交換。

時序圖中的消息可以是信號,操作調用或類似于C++中的RPC(Remote Procedure Call,遠程過程調用)或Java中的RMI(Remote Method Invocation,遠程方法調用)。當對象接收到一個消息時,該對象中的一項活動就會啟動,我們把這一過程稱做激活(Activation)。激活會顯示控制焦點,表明對象在某一個時間點開始執(zhí)行。一個被激活的對象或者是執(zhí)行它自身的代碼,或者是等待另一個對象的返回(該被激活的對象已經(jīng)向另一個對象發(fā)送了消息)。在圖形上,激活被繪制為對象生命線上的一個瘦高矩形。

消息可以用消息名及參數(shù)來標識。消息還可帶有條件表達式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個分支是相互排斥的,即在某一時刻僅可發(fā)送分支中的一個消息。消息也可以有順序號,但是在時序圖中,消息的順序號很少使用,因為時序圖已經(jīng)將消息的順序顯式地表示出來了。

5.2.1? 房間分類模塊時序圖

房間分類模塊時序圖如圖5.6所示:

?

圖5.6 房間分類模塊時序圖

??? 從房間分類模塊時序圖中可以看出,系統(tǒng)管理員通過JSP頁面發(fā)送請求,JSP頁面獲得響應,調用manageAction方法,再調用fenleiDao,通過連接后臺數(shù)據(jù)庫處理數(shù)據(jù),再回到DAO,回到Action,JSP頁面獲得響應,并提示相關信息。如系統(tǒng)管理員請求添加客房分類信息,則響應Action調用插入方法,通過DAO插入數(shù)據(jù)庫中相關數(shù)據(jù),數(shù)據(jù)庫存儲數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請求更新客房分類信息,則響應Action調用更新方法,通過DAO更新數(shù)據(jù)庫記錄,數(shù)據(jù)庫更新數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請求查看客房分類信息,則響應Action調用查詢方法,通過DAO查詢數(shù)據(jù)庫中的相關記錄,之后返回DAO,在返回Action,頁面跳轉至系統(tǒng)管理員要查看的相關信息;如系統(tǒng)管理員請求刪除客房分類信息,則響應Action調用刪除方法,通過DAO刪除數(shù)據(jù)庫中相關信息,之后返回DAO,返回Action,頁面向系統(tǒng)管理員提示刪除成功的信息。

5.2.2? 開房信息模塊時序圖

開房信息模塊時序圖如圖5.7所示:

?

圖5.7 開房信息模塊時序圖

?

??? 從開房信息模塊時序圖中可以看出,系統(tǒng)管理員通過JSP頁面發(fā)送請求,JSP頁面獲得響應,調用manageAction方法,再調用kaifangDao,通過連接后臺數(shù)據(jù)庫處理數(shù)據(jù),再回到DAO,回到Action,JSP頁面獲得響應,并提示相關信息。如系統(tǒng)管理員請求添加開房信息,則響應Action調用插入方法,通過DAO插入數(shù)據(jù)庫中相關數(shù)據(jù),數(shù)據(jù)庫存儲數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請求更新開房信息,則響應Action調用更新方法,通過DAO更新數(shù)據(jù)庫記錄,數(shù)據(jù)庫更新數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請求查看開房信息,則響應Action調用查詢方法,通過DAO查詢數(shù)據(jù)庫中的相關記錄,之后返回DAO,在返回Action,頁面跳轉至系統(tǒng)管理員要查看的相關信息;如系統(tǒng)管理員請求刪除開房信息,則響應Action調用刪除方法,通過DAO刪除數(shù)據(jù)庫中相關信息,之后返回DAO,返回Action,頁面向系統(tǒng)管理員提示刪除成功的信息。

5.2.3? 客房信息模塊時序圖

客房信息模塊時序圖如圖5.8所示:

?

圖5.8 客房信息模塊時序圖

?

??? 從客房信息模塊時序圖中可以看出,系統(tǒng)管理員通過JSP頁面發(fā)送請求,JSP頁面獲得響應,調用manageAction方法,再調用kefangDao,通過連接后臺數(shù)據(jù)庫處理數(shù)據(jù),再回到DAO,回到Action,JSP頁面獲得響應,并提示相關信息。如系統(tǒng)管理員請求添加客房信息,則響應Action調用插入方法,通過DAO插入數(shù)據(jù)庫中相關數(shù)據(jù),數(shù)據(jù)庫存儲數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請求更新客房信息,則響應Action調用更新方法,通過DAO更新數(shù)據(jù)庫記錄,數(shù)據(jù)庫更新數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請求查看客房信息,則響應Action調用查詢方法,通過DAO查詢數(shù)據(jù)庫中的相關記錄,之后返回DAO,在返回Action,頁面跳轉至系統(tǒng)管理員要查看的相關信息;如系統(tǒng)管理員請求刪除客房信息,則響應Action調用刪除方法,通過DAO刪除數(shù)據(jù)庫中相關信息,之后返回DAO,返回Action,頁面向系統(tǒng)管理員提示刪除成功的信息。

5.2.4? 用戶模塊時序圖

??? 系統(tǒng)管理員通過JSP頁面發(fā)送請求,JSP頁面獲得響應,調用manageAction方法,再調用userDao,通過連接后臺數(shù)據(jù)庫處理數(shù)據(jù),再回到DAO,回到Action,JSP頁面獲得響應,并提示相關信息。如系統(tǒng)管理員請求添加用戶信息,則響應Action調用插入方法,通過DAO插入數(shù)據(jù)庫中相關數(shù)據(jù),數(shù)據(jù)庫存儲數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請求更新用戶信息,則響應Action調用更新方法,通過DAO更新數(shù)據(jù)庫記錄,數(shù)據(jù)庫更新數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請求查看用戶的具體信息,則響應Action調用查詢方法,通過DAO查詢數(shù)據(jù)庫中的相關記錄,之后返回DAO,在返回Action,頁面跳轉至系統(tǒng)管理員要查看的用戶相關信息;如系統(tǒng)管理員請求刪除用戶信息,則響應Action調用刪除方法,通過DAO刪除數(shù)據(jù)庫中相關信息,之后返回DAO,返回Action,頁面向系統(tǒng)管理員提示刪除成功的信息。

用戶模塊時序圖如圖5.9所示。

?

圖5.9 用戶模塊時序圖

5.2.5? 預定模塊時序圖

預定模塊時序圖如圖5.10所示:

?

圖5.10 預定模塊時序圖

?

??? 從預定模塊時序圖中可以看出,系統(tǒng)管理員通過JSP頁面發(fā)送請求,JSP頁面獲得響應,調用manageAction方法,再調用yudingDao,通過連接后臺數(shù)據(jù)庫處理數(shù)據(jù),再回到DAO,回到Action,JSP頁面獲得響應,并提示相關信息。如系統(tǒng)管理員請求添加預定信息,則響應Action調用插入方法,通過DAO插入數(shù)據(jù)庫中相關數(shù)據(jù),數(shù)據(jù)庫存儲數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請求更新預定信息,則響應Action調用更新方法,通過DAO更新數(shù)據(jù)庫記錄,數(shù)據(jù)庫更新數(shù)據(jù)后返回DAO,再返回Action,頁面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請求查看預定信息,則響應Action調用查詢方法,通過DAO查詢數(shù)據(jù)庫中的相關記錄,之后返回DAO,在返回Action,頁面跳轉至系統(tǒng)管理員要查看的相關信息;如系統(tǒng)管理員請求刪除預定信息,則響應Action調用刪除方法,通過DAO刪除數(shù)據(jù)庫中相關信息,之后返回DAO,返回Action,頁面向系統(tǒng)管理員提示刪除成功的信息。

5.3? 系統(tǒng)功能實現(xiàn)的主要框架

5.3.1? SSH框架

SSH框架就是Struts2,Spring,Hibernate的簡稱,運用3個框架的集成協(xié)作使用,可以有效的提高代碼編寫的效率,從而有效的降低程序開發(fā)的周期。

5.3.2 ?Hibernate配置文件

org.hibernate.connection.ProxoolConnectionProvider

在Hibernate的配置文件中:

<property name="proxool.xml">proxool.xml</property>

首先加載了連接池的一個配置,就是加載了數(shù)據(jù)庫的連接信息,

<property name="show_sql">true</property>

<property name="format_sql">true</property>

表示控制臺打印SQL語句,并格式化SQL語句

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

表示當前數(shù)據(jù)庫的語言是MySQL

?????? <mapping class="jiudian.model.User"/>

?????? <mapping class="jiudian.model.Fenlei"/>

?????? <mapping class="jiudian.model.Kefang"/>

都表示當前數(shù)據(jù)庫建立起來的表和類之間的映射關系,比如<mapping class="model.User"/>表示User類和t_user表之間的建立起來的對應關系,其他也都類似。

5.3.3? Struts配置文件

?????? ?<action name="index" method="index" class="indexAction" >

??????????? <result? name="success">index.jsp</result>

??????? </action>

????????????? <action name="method" class="manageAction">

???????????????????? <result type="dispatcher">${url}</result>

???????????????????? <result name="redirect" type="redirect">${url}</result>

????????????? </action>

????????????? <action name="indexmethod" class="indexAction">

???????????????????? <result type="dispatcher">${url}</result>

???????????????????? <result name="redirect" type="redirect">${url}</result>

????????????? </action>

這是struts的配置文件,該文件的作用主要是起到來自JSP的請求的跳轉分配的作用.該struts配置文件是總的配置文件。

5.3.4? Spring配置文件

?????? <bean id="userDao" class="jiudian.dao.impl.UserDaoImpl" >

????????????? <property name="sessionFactory"><ref bean="sessionFactory" /></property>

?????? </bean>

?????? <bean id="fenleiDao" class="jiudian.dao.impl.FenleiDaoImpl" >

????????????? <property name="sessionFactory"><ref bean="sessionFactory" /></property>

?????? </bean>

?????? <bean id="kefangDao" class="jiudian.dao.impl.KefangDaoImpl" >

????????????? <property name="sessionFactory"><ref bean="sessionFactory" /></property>

?????? </bean>

????????????? <bean id="kaifangDao" class="jiudian.dao.impl.KaifangDaoImpl" >

????????????? <property name="sessionFactory"><ref bean="sessionFactory" /></property>

?????? </bean>

?????? <bean id="yudingDao" class="jiudian.dao.impl.YudingDaoImpl" >

????????????? <property name="sessionFactory"><ref bean="sessionFactory" /></property>

?????? </bean>

本段代碼是把DAO實例化的代碼,通過spring的IOC模式

?????? <bean id="manageAction" class="jiudian.action.ManageAction" scope="prototype">

????????????? <property name="userDao"><ref bean="userDao" /></property>

????????????? <property name="fenleiDao"><ref bean="fenleiDao" /></property>

????????????? <property name="kefangDao"><ref bean="kefangDao" /></property>

????????????? <property name="kaifangDao"><ref bean="kaifangDao" /></property>

????????????? <property name="yudingDao"><ref bean="yudingDao" /></property>

?????? </bean>

本段代碼是把ManageAction實例化的代碼,原理也是spring的IOC模式。

Spring在本項目中主要用到了IOC的功能,就是把對象實例化。

5.4? 系統(tǒng)功能實現(xiàn)的主要模塊

5.4.1? 系統(tǒng)登錄頁面

系統(tǒng)登錄頁面如圖5.11所示。

?

??????????????????????????? 圖5.11 系統(tǒng)登陸頁面圖

登錄代碼:

//登錄請求

?????? HttpServletRequest request = ServletActionContext.getRequest();

?????? String username = request.getParameter("username");

?????? String password = request.getParameter("password");

?????? String role = request.getParameter("role");

?????? User user = userDao.selectBean(" where username = '" + username

???????????????????? + "' and password= '" + password + "' and role= "+role+" and userlock=0 ");

?????? if (user != null) {

????????????? HttpSession session = request.getSession();

????????????? session.setAttribute("user", user);

????????????? this.setUrl("index.jsp");

????????????? return "redirect";

?????? } else {

????????????? HttpServletResponse response = ServletActionContext.getResponse();

????????????? response.setCharacterEncoding("utf-8");

????????????? response.setContentType("text/html; charset=utf-8");

????????????? response

??????????????????????????? .getWriter()

??????????????????????????? .print("<script language=javascript>alert('用戶名或者密碼錯誤,或者是用戶不存在');window.location.href='login.jsp';</script>");

?????? }

?????? return null;

本段代碼是程序的登陸代碼,首先從獲取從頁面輸入的用戶名和密碼以及用戶角色,然后調用userDao.selectBean方法,從數(shù)據(jù)庫里取出該條記錄進行判斷,如果該條記錄存在,則說明用戶登陸成功,同時把用戶信息存在session里面方便調用,如果記錄為空,則跳轉到登陸頁面,同時提醒用戶錯誤信息。

5.4.2? 普通用戶注冊頁面

普通用戶注冊頁面如圖5.12所示。

?

??????????????????????????? 圖5.12 普通用戶注冊頁面圖

代碼如下:

//用戶注冊操作

User bean = userDao.selectBean(" where username='"+username+"' and userlock=0 ");

if(bean==null){

?????? bean = new User();

?????? bean.setUsername(username);

?????? bean.setCreatetime(new Date());

?????? bean.setLianxifangshi(lianxifangshi);

?????? bean.setPassword(password);

?????? bean.setRole(0);

?????? bean.setTruename(truename);

?????? bean.setXingbie(xingbie);

?????? userDao.insertBean(bean);

?????? response

????????????? .getWriter()

????????????? .print("<script language=javascript>alert(‘恭喜,用戶注冊成功!返回登錄界面!’);window.location.href='login.jsp';</script>");

}else{

?????? response

????????????? .getWriter()

????????????? .print("<script language=javascript>alert('操作失敗,該用戶名已經(jīng)存在,請再次注冊');window.location.href='login.jsp';</script>");

本段代碼是程序的注冊代碼,首先從頁面中獲取注冊的信息,同時新建一個User對象,把從頁面獲取的信息都寫在User對象里面。同時在插入到數(shù)據(jù)庫之前先調用userDao.selectBean(" where username='"+username+"' and userlock=0 ");方法,驗證下該用戶名在數(shù)據(jù)庫中是否存在,如果不存在,則調用userDao.insertBean(bean);方法,把該條記錄寫入數(shù)據(jù)庫;如果該條記錄存在,則返回到注冊頁面,同時提醒用戶該用戶名已經(jīng)存在,請重新注冊。

5.4.3? 系統(tǒng)管理員登錄頁面

系統(tǒng)管理員登錄頁面如圖5.13所示:

?

圖5.13 系統(tǒng)管理員登錄頁面圖

該頁面是系統(tǒng)管理員角色登錄后的頁面效果。系統(tǒng)管理員的主要功能有用戶管理、客房分類管理、客房信息管理、開房管理、退房管理、開房記錄查詢、預訂記錄查詢。

5.4.4? 普通用戶登錄頁面

普通用戶登錄頁面如圖5.14所示:

?

圖5.14 普通用戶登錄頁面圖

該頁面是普通用戶登錄后的效果,用戶主要功能有注冊登錄功能、客房預訂、預訂記錄查詢。

5.4.5? 客房信息管理頁面

客房信息管理頁面如圖5.15所示。

?

圖5.15 客房信息管理頁面圖

代碼如下:

//客房信息管理列表

?????? request.setAttribute("leixinglist", fenleiDao.selectBeanList(0, 9999, " where deletestatus=0 "));

?????? if (fangjianhao != null && !"".equals(fangjianhao)) {

????????????? sb.append(" fangjianhao like '%" + fangjianhao + "%'");

????????????? sb.append(" and ");

????????????? request.setAttribute("fangjianhao", fangjianhao);

?????? }

?????? if (leixing != null && !"".equals(leixing)) {

????????????? sb.append("fenlei.leixing like '%" + leixing + "%'");

????????????? sb.append(" and ");

????????????? request.setAttribute("leixing", leixing);

?????? }

?????? if (request.getParameter("pagenum") != null) {

????????????? currentpage = Integer.parseInt(request.getParameter("pagenum"));

?????? }

?????? int total = kefangDao.selectBeanCount(where.replaceAll(" order by id desc ", ""));

?????? request.setAttribute("list", kefangDao.selectBeanList((currentpage - 1)

?????? request.setAttribute("pagerinfo", Pager.getPagerNormal(total, pagesize,

????????????? currentpage, "method!kefanglist", "共有" + total + "條記錄"));

?????? request.setAttribute("url", "method!kefanglist");

?????? request.setAttribute("url2", "method!kefang");

?????? request.setAttribute("title", "客房信息管理");

?????? this.setUrl("kefang/kefanglist.jsp");

實現(xiàn)客房信息管理,首先通過String fangjianhao = request.getParameter("fangjianhao");和String leixing = request.getParameter("leixing");這2句代碼從頁面獲取查詢的選項,然后通過if (fangjianhao != nul&& !"".equals(fangjianhao))和if (leixing != null && !"".equals(leixing))這2句條件語句分別判斷下這個值是否為空,當不為空時則通過StringBuffer來疊加組裝查詢的SQL語句,最后當SQL語句組裝好了之后,通過kefangDao.selectBeanList方法來調用數(shù)據(jù)庫的查詢方法來查到符合條件的記錄,再通過request.setAttribute方法把查詢到的記錄傳到顯示的頁面。同時通過this.setUrl("kefang/kefanglist.jsp");方法指定傳回到具體指定的是哪個JSP頁面。通過這樣實現(xiàn)對數(shù)據(jù)查詢功能的實現(xiàn),同時在該頁面定義了對客房信息的增加,修改,刪除等操作。

?

?

?

?

?

?

?

5.4.6? 用戶管理頁面

用戶管理頁面如圖5.16所示。

?

圖5.16 用戶管理頁面圖

用戶管理頁面是系統(tǒng)管理員角色登錄系統(tǒng)后,點擊用戶管理看到的界面。在用戶管理模塊下,系統(tǒng)管理員可以實現(xiàn)添加新用戶、按照用戶名查詢用戶的具體信息,以及對用戶的查看、修改和刪除操作。

5.4.7? 客房分類管理頁面

客房分類管理頁面如圖5.17所示。

?

圖5.17 客房分類管理頁面圖

客房分類管理界面是系統(tǒng)管理員角色登錄系統(tǒng)后,點擊客房分類管理看到的界面。在客房分類管理模塊,系統(tǒng)管理員可以實現(xiàn)添加新客房分類、根據(jù)房間類型快速查詢房間類型下所有房間的具體信息,也可以對具體的房間進行查看、修改和刪除的操作。

5.4.8? 開房管理頁面

開房管理頁面圖是系統(tǒng)管理員角色登錄系統(tǒng)后,點擊開房管理看到的界面。在開房管理模塊,系統(tǒng)管理員可以通過輸入房間編號,或輸入房間狀態(tài)(空房或已入住),也可以根據(jù)房間類型快速查詢客房的具體信息,也可以對客房進行是否入住的查詢,若房間是空房,則可以查看客房的具體信息,可以進行開房操作;若房間已入住,則可以查看客房是何時被入住的信息。

?

?

開房管理頁面如圖5.18所示。

?

圖5.18 開房管理頁面圖

5.4.9? 普通用戶客房預定頁面

普通用戶客房預定頁面如圖5.19所示。

?

圖5.19 普通用戶客房預定頁面圖

普通用戶客房預定頁面是普通用戶角色登錄系統(tǒng)后,點擊客房預定看到的界面。在普通用戶客房預定模塊,普通用戶可以通過輸入房間編號,或者根據(jù)房間類型快速查詢客房的信息,也可以對房間狀態(tài)是“空房”的客房進行查看和預定操作。

5.5? 本章小結

本章對整個管理系統(tǒng)進行全面的開發(fā)和編碼,根據(jù)之前的準備對各個模塊進行了編碼,實現(xiàn)了各模塊的功能,并建立了數(shù)據(jù)庫的數(shù)據(jù)表,對數(shù)據(jù)庫進行連接。

?

?

?

?

?

?

?

?

6? 系統(tǒng)測試

軟件測試是軟件質量管理中最直接實際的行動。軟件測試是有組織性、步驟性和計劃性的。軟件測試的種類可以根據(jù)測試形態(tài)、測試技術及測試模式來進行劃分。

就測試模式而言,測試方法可分為兩種:白盒測試和黑盒測試。這兩種方法的測試方向是不同的,白盒測試以測試的深度為主,而黑盒測試是以測試的廣度為主。

白盒測試:又稱結構測試,透明盒測試、邏輯驅動測試或基于代碼的測試。白盒測試是一種測試用例設計方法,盒子指的是被測試的軟件,嚴格來說白盒測試有兩大方面:數(shù)據(jù)流程和控制流程。數(shù)據(jù)流程就是測試資料進出系統(tǒng)的程序所經(jīng)過的流程,控制流程就是測試程序在執(zhí)行過程中每個階段的流程。

控制流程面有以下四點:

1.語句覆蓋:每一個程序句述都被執(zhí)行到;

2.分支覆蓋:每一個程序的進出點都至少被執(zhí)行過一次;

3.條件覆蓋:分支覆蓋再加上所有判斷情況都至少被執(zhí)行過一次;

4.條件組合覆蓋:不同的組合的判斷情況都至少被執(zhí)行過一次。

黑盒測試:又稱為功能測試或數(shù)據(jù)驅動測試,測試人員并不需要對軟件的結構有深層的了解,測試重點在于軟件的功能。為了控制黑盒測試的執(zhí)行,測試人員必須按照測試用例逐一進行,所以測試用例設計的好壞會直接影響到測試結果。

所謂的測試用例就是將軟件測試的行為活動,做一個科學化的組織歸納。而設計軟件測試用例的目的,是為了能將軟件測試的行為轉換為可管理的模式。基于時間因素的考慮,軟件測試行為必須能夠加以量化,才能進一步讓管理階層掌握所需要的測試時程,而測試用例就是將測試行為具體量化的方法之一。

簡單來說,測試用例就是設計一個情況,軟件程序在這種情況下,必須能夠正常運行,并且達到程序所設計的執(zhí)行結果。如果程序在這種情況下不能正常運行且重復發(fā)生,那就表示軟件程序有缺陷存在。

6.1? 軟件測試的目的

軟件測試的目的,第一是確認軟件的質量,其一方面是確認軟件做了所期望的事情,另一方面是確認軟件以正確的方式來做了這個事件。

第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的反饋信息,為風險評估所準備的信息。

第三軟件測試不僅是在測試軟件產(chǎn)品的本身,而且還包括軟件開發(fā)的過程。如果一個軟件產(chǎn)品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質量的。

軟件質量是由幾個方面來衡量的:一、在正確的時間用正確的的方法把一個工作做正確。二、符合一些應用標準的要求,比如不同國家的用戶不同的操作習慣和要求,項目工程中的可維護性、可測試性等要求。三、質量本身就是軟件達到了最開始所設定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質量。四、質量也代表著它符合客戶的需要。作為軟件測試這個行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產(chǎn)品,客戶會怎么去使用這個產(chǎn)品,使用過程中會遇到什么樣的問題。

6.2 ?軟件測試的任務

1.尋找Bug;

2.避免軟件開發(fā)過程中的缺陷;

3.衡量軟件的品質;

4.關注用戶的需求。

總的目標是:確保軟件的質量。

6.3? 測試環(huán)境

Apache提供的Web服務器Tomcat 6.0使得用戶可以在Windows 2000以上操作系統(tǒng)下發(fā)布自己設計的動態(tài)網(wǎng)頁。因此對論壇的調試工作主要是利用Tomcat 6.0的強大功能在本機下完成的。為了在本機下瀏覽Web頁面,首先在創(chuàng)建該系統(tǒng)的站點上(該系統(tǒng)使用的是Web的默認站點)將IP地址設定為127.0.0.1,它的缺省域名值為localhost。然后向IE瀏覽器輸入本地動態(tài)網(wǎng)頁的URL,Web服務器在收到瀏覽器傳送的URL之后找到網(wǎng)頁文件,并在服務器端執(zhí)行該文件后將此文件以HTML文件的形式返回該瀏覽器。

6.4? 測試環(huán)境的配置

6.4.1? 創(chuàng)建安裝項目

要對一個應用程序進行打包部署,首先需要把Tomcat服務器集成到MyEclipse開發(fā)工具:

點擊window→preferences,彈出對話框,如圖6.1所示。

?

??????????????????????????? 圖6.1 部署Tomcat圖

?

在文本框里輸入Tomcat,選擇Tomcat選項,選擇Tomcat 6.x,并選擇Tomcat文件的路徑,點擊Enable,使這個設置為有效的。如圖6.2所示。

?

??????????????????????????? 圖6.2 添加Tomcat服務器

最后點擊確認完成Tomcat服務器的添加。

6.4.2? 添加項目輸出

選擇部署按鈕,彈出如下對話框,如圖6.3所示。

?

??????????????????????????? 圖6.3 添加部署項目圖

?

?

在Project里選擇需要部署的項目之后點擊add按鈕,彈出如下對話框,如圖6.4所示。

?

??????????????????????????? 圖6.4 完成Tomcat部署

Server選擇Tomcat 6.x,最后點擊Finish完成部署。

6.4.3? 運行項目

首先點擊Server窗口,如圖6.5所示。

?

??????????????????????????? 圖6.5 啟動Tomcat服務圖

右鍵點擊Tomcat 6.x,點擊Run Server,則開始運行Tomcat服務器,當控制臺不再有新的信息輸出時說明部署成功。

6.5? 本章小結

本章主要對管理系統(tǒng)進行各個模塊的測試,對酒店客房管理系統(tǒng)的設計與實現(xiàn)的測試主要使用黑盒測試法和白盒測試法。第一階段主要使用白盒測試法,測試的主要內容有:是否能正常登錄;是否能正常操作;是否能正常查看各種信息、修改信息、查詢和刪除信息;第二階段主要使用黑盒測試法,測試的主要內容是:是否實現(xiàn)了酒店客房管理系統(tǒng)的各項功能等。

結 論

本次畢業(yè)設計的系統(tǒng)開發(fā)結束了,系統(tǒng)已經(jīng)基本成型,功能也都已實現(xiàn),此系統(tǒng)實現(xiàn)了對酒店管理系統(tǒng)的用戶管理模塊,管理員管理模塊,可以為一些中小酒店和賓館使用。

系統(tǒng)開發(fā)的過程是采用瀑布型的開發(fā)模型,這種開發(fā)方式的好處是在軟件需求上的溝通確認。因為我已經(jīng)先確定了軟件的各個功能,所以使用這個模型有利于系統(tǒng)的更快更好的實現(xiàn)。

當然系統(tǒng)中也存在很多不足之處,可以在以后版本中進行補充和改進。在這里我做了一些系統(tǒng)的改進思考:

1.靈活性能分析

一方面在各個模塊中可以增加自動統(tǒng)計功能,記錄各個模塊的訪問次數(shù),以了解經(jīng)常使用的功能模塊,從而在系統(tǒng)中設置相應的快捷鍵,方便工作人員操作,增加系統(tǒng)的可用性,另一方面也增加了統(tǒng)計分析的靈活性。

做法如下:可在數(shù)據(jù)庫中再增加一個數(shù)據(jù)表,用來保存訪問每個系統(tǒng)頁面的數(shù)量,可定期進行數(shù)據(jù)統(tǒng)計并保存在數(shù)據(jù)庫中。考慮進一步完善操作管理模塊以增加程序的靈活性可擴展性和可維護性。

2.功能設計

定義操作用戶可進行操作定義和操作項目設置一個操作,可有多個操作項目操作執(zhí)行,系統(tǒng)自動根據(jù)操作項目序號依次執(zhí)行操作項目,然后將結果保存到操作字段。這個功能的特點是將業(yè)務操作簡化為一系列操作,系統(tǒng)管理員只需簡單定義即可,建立一個新的業(yè)務操作邏輯避免將錯誤業(yè)務操作寫入程序,增加了靈活性并簡化了維護和擴展。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

參考文獻

  • 李平. 基于JSP的動態(tài)網(wǎng)頁開發(fā)技術[J]. 微計算機信息, 2009,(21)
  • 錢娟. JAVA網(wǎng)絡編程的探討[J]. 煤炭技術, 2012,(11)
  • 董紅杰. 基于JSP的酒店管理系統(tǒng)的設計與實現(xiàn)[D]. 云南大學, 2009
  • 張敏. 酒店客房信息管理系統(tǒng)[D]. 山東大學, 2010
  • Che-Chern Lin,Shen-Chien Chen. An easy-to-implement fuzzy expert package with applications using existing Java classes[J]. Expert Systems with Application, 2012,39(1)
  • Basanta-Val P,Garcia-Valls M,Estevez-Ayres I. A Dual Programming Model for Distributed Real-Time Java[J]. IEEE transactions on industrial informatics, 2011,7(4)
  • Chih-Chieh Yang,Chung-Kai Chen,Yu-Hao Chang,Kai-Hsin Chung,Jenq-Kuen Lee. Software architecture design for streaming Java RMI[J]. Science of Computer Programming, 2008,70(2/3)
  • 文斌. 軟件工程與軟件文檔寫作[M]. 清華大學出版社, 2005
  • 王愛平. 軟件測試[M]. 清華大學出版社, 2008
  • [10] 張紅強. Oracle數(shù)據(jù)庫實例教程[M]. 天津大學出版社, 2009

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    致 謝

    本次設計歷時三個月。在本次畢業(yè)設計中,能夠基本順利的完成任務,是與閆志中老師和王亞娟老師的耐心指導分不開的。無論是王老師在畢業(yè)設計過程中,還是閆老師在論文完成中都給予了我極大的幫助。同時,閆老師和王老師認真負責的工作態(tài)度,嚴謹?shù)闹螌W精神和深厚的理論水平都使我受益匪淺。他們勤奮嚴謹?shù)慕虒W態(tài)度也給我留下了極為深刻的印象。我從兩位老師身上學到了很多東西。在理論上還是在實踐中,我能力都得到不少的提高,這對于我以后的工作和學習都有一種巨大的幫助,在此,特向閆志中老師和王亞娟老師表示由衷的感謝。

    通過本次畢業(yè)設計我鍛煉了自己的自學、研究能力,也從中學到不少在企業(yè)在課堂上學不到的東西.通過實踐我也深刻的體會到軟件開發(fā)的艱辛及問題解決后的喜悅心情,培養(yǎng)我的獨立思考問題的能力,同時也增強了我的理論聯(lián)系實際的能力,這為自己以后的工作奠定了良好的基礎。

    通過這次畢業(yè)設計的整個開發(fā)過程,我對系統(tǒng)開發(fā)過程從需求分析到具體功能實現(xiàn),再到最終測試和維護的理解有了很大的進步,讓我對系統(tǒng)開發(fā)有了更深層次的認識。現(xiàn)在我的動手能力和獨立解決問題的能力也得到了很大的鍛煉和提高,這是這次畢業(yè)設計最好的收獲。

    最后,在整個系統(tǒng)開發(fā)過程中,我身邊的同學和朋友給了我很多的建議,讓我很快的確定了系統(tǒng)的業(yè)務邏輯。在此我衷心地向他們表示感謝。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    外文原文

    Hotel Reservation System Based on the JavaServer Faces Technology

    This paper describes implementation of a web-based hotel reservation system which enables users tobook hotel rooms by means of a web browser. The systemis based on JavaServer Faces technology in thepresentation layer, Spring Framework in the service layerand iBatis library for the data access layer.

    I. INTRODUCTION

    The Hotel Reservation System is a specific type of softwarethat supports, often by means of a web browser, wholeinfrastructure of the hotel for which the system has beendeployed. Its key features are listed below:To search and to book hotel rooms.Tonotify of every event related to a user by sending the email on a given address during the registration process.

    To support definition process of each component of the hotel. The components of the hotel are: rooms,promotions, packages, discounts and se rvices.To complete the reservation process by notifying the system about the fact that the guest came to the hotel and received keys to the booked room.

    II. JAVASERVER FACES

    The user graphical interface is a crucial part of every computer programme with regard to its responsibility for interaction with the users. This part of application should be flexible,which means susceptible to any needed changes and without any doubts, user – friendly. Regrettably, process of developing such user interface in the main requires usually a profusion of developer's work and time, making the whole development process involved and onerous.The most apting technology to this field is JavaServer Faces (JSF). This holistic, component-based solution for longstanding problems facing software developers has a specific goal: to make web development faster and easier by masking a lot of complexities hidden behind this kind of programming.JSF technology is a server-side user interface framework for Java technology-based web applications. The main components of JSF technology are as follows:

    Two JavaServer Pages custom tags library for expressing UI components within a JSP page and for wiring components to server-side objects.The user interface created with JSF technology (represented by myUI on the Fig. 1) runs on the server and renders back to the client (in this case the browser).Because web-based applications, must often appease multiple clients (such as desktop browsers, cell phones, and PDAs),JSF has a powerful architecture for displaying components in different ways. As for the browsers, for which JSF is mostly used, the default rendering technology is HTML 4.0, though the others like WML or SVG are also possible.One of the greatest advantages of JSF technology is that it offers a clean separation between behavior and presentation layers.

    III. SPRING FRAMEWORK

    Spring is a lightweight, inversion of control container, created to address the complexity of enterprise application development.Spring makes possible to use plain JavaBeans to achieve things that were previously only possible with EJBs [10,11].Any Java application can benefit from Spring in terms of simplicity, test-ability, and loose coupling. The Spring Framework contains a lot of features, which are well-organized in seven modules.

    When taken as a whole, these modules give everything that is needed to develop enterprise applications, although there is no must to build the application fully on the Spring framework. One can pick and choose only those modules that suit best to the application and ignore the rest. This strategy was chosen for the Hotel Reservation System Since one of the core value propositions of the framework is that of enabling choice by not forcing one to apply any particular architecture, technology or methodology, Spring also provides convenient mechanisms for integration with number of third -party frameworks (also with JSF and iBatis).

    IV. APACHE IBATIS DATAMAPPER

    Apache iBatis JDBC – based Data Mapper provides simple and flexible way to transport data between relational database and Java, .Net or Ruby application. Contrary to popular Hibernate library, iBatis does not directly tie classes to tables or fields to columns, but instead, it couples objects with results of stored procedures or SQL statements using simple XML descriptor letting the developer to reach only for required data. The iBatis framework can map nearly any database to any object model and is very tolerant of legacy designs, or even bad designs.Simplicity is the main advantage of the iBatis over other frameworks.

    The Hotel Reservation System was primarily built upon JSF technology for the user interface along with auxiliary libraries –Spring and iBatis. The application architecture is presented in Fig. 3.The composition of the system is modular. Each layer is separated with and appropriate interface layer. Such solution makes the architecture not only more error -resistant but also more flexible for changes. The presentation layer consists of the graphical user interface written in the JSF technology andunderlying backing beans objects. It communicates with the Service layer through the service interfaces.Service layer is the central business part of the system where, on the basis of the user input data, proper decisions are made. It also translates input data into explicit form understood for the Data access layer, with which communication takes place by means of Data access interface layer.The Data access layer cooperates with Data Mapper layer and is responsible for data exchange with database.The Data Mapper layer talks via JDBC to database to ask required data. This is a layer where iBatis Data Mapper plays the main role.

    V. JSF - SPRING INTEGRATION

    In a nutshell, JSF – Spring integration makes Spring managed beans visible as variables to JSF, just as if the Spring beans are configured as JSF managed beans.Before diving into the integration specifics of JavaServer Faces,the general integration step for any web framework must be set forth.All that need to be done, is to declare ContextLoaderListener in the standard JEE servlet web.xml deployment descriptor. This listener initializes the Spring's WebApplicationContext that contains all of the business beans in the application. (Fig. 4).The second step in the integration between Spring and JSF is specific just for JSF. The key class used in this process isDelegatingVariableResolver. To configure this variable the faces-context.xml file must be edited. After opening <faces -config> tag <application> tag must be added and within it the <variable-resolver> pointing to the Spring's DelegatingVariable Resolver must be put. The example faces -config.xml file is presented in. The DelegatingVariableResolver delegates value lookups to the default resolver of the underlying JSF implementation, and then going to the Spring's business context WebApplicationContext. This allows to easily inject dependencies into one's JSF-managed beans.

    Example of faces-config.xml file from Hotel RVI. JSF AND GETMETHOD.The JSF only recommended method for sending input data from an online form to an application server is the POST method,though sometimes there is a strong need for use the GET method instead. In the Hotel Reservati on System the GET method is used during the registration process for bringing about user account activation.The common way to implement the GET method is to create a special filter which can manipulate the header or contents (or both) of a request or response.To put GET method into operation, in case of JavaServer Faces,the following algorithm must be fulfilled in the body of thefilter:

    1. Get parameters from the request.

    2. Create appropriate backing bean object accordingly to the view that will be used further.

    3. Store the backing bean object in the current session.

    4. Set changed JSF context as current.

    5. Create view and store it in the JSF context.

    6. Execute backing beans methods.

    The Hotel Reservation System was also based on the Spring library, hence some changes to the raw algorithm were necessary.The foremost method for any filter is doFilter() where the proper filtration happens .

    public void doFilter(ServletRequest request,

    ServletResponse response,

    FilterChain chain)throws IOException,

    ServletException {

    FacesContext facesContext =

    getFacesContext(request, response);

    if (facesContext != null){

    request.getRequestDispatcher(

    facesContext.getViewRoot().getViewId()).

    forward(request, response);

    }else{

    chain.doFilter(request, response);

    }

    }

    The doFilter method from GET filter implementation As it may be seen on Fig. 6, an additional function implementing the presented algorithm was used to keep the source code clear and easy-to-read.Create appropriate backing bean object.Almost all backing beans from Hotel Reservation System have at least one property of Spring managed -bean origin. Because of that, it is necessary to set this property after backing bean object creation.

    WebApplicationContext wac =WebApplicationContextUtils.

    getRequiredWebApplicationContext

    (servletContext);

    RegisterService registerService =

    (RegisterService)

    wac.getBean("registerService");

    ConfirmBean confirmBean = new ConfirmBean();

    confirmBean.

    setRegisterService(registerService);

    Creating backing bean object and setting spring –origin property.Getting Spring managed -bean object requires operating on Spring's WebApplicationContext object that is initialised during the server start-up.Set changed JSFes context as current.When storing backing bean object in the session the whole Faces context becomes changed, therefore it must be set as current in order all modifications take place .

    FacesContextFactory contextFactory =(FacesContextFactory)

    FactoryFinder.getFactory(

    FactoryFinder.FACES_CONTEXT_FACTORY);

    LifecycleFactory lifecycleFactory =(LifecycleFactory)FactoryFinder.

    getFactory(FactoryFinder.

    LIFECYCLE_FACTORY);

    Lifecycle lifecycle =lifecycleFactory.

    getLifecycle(LifecycleFactory.

    DEFAULT_LIFECYCLE);

    facesContext = contextFactory.

    getFacesContext (servletContext, req,res, lifecycle);

    ProtectedFacesContext.

    setFacesContextAsCurrentInstance

    (facesContext);

    Setting JSF context as current Before the actual setting context into current, it is indispensable to grab Lifecycle object. Lifecycle manages the processing of the entire lifecycle of a particular JSF request. It is responsible for executing all of the phases that have been defined by the JSF specification, in the specified order, unless otherwise directed by activities that occurred during the execution of each phase. An instance of Lifecycle is created by calling the getLifecycle() method of LifecycleFactory, for a specified lifecycle identifier. Because this instance is shared across multiple simultaneous requests, it must be implemented in a thread -safe manner. Using the current Lifecycle object along with ServletContext,HttpServletReqest and HttpServletResponse objects the FacesContext can be updated and becomes up to date.

    Create view and store it in the JSF context.After making Faces context actual, the new view is supposed to be created and added to this context, nevertheless it is n ot possible to do it with usage of 'new' operator, instead it has to be done in an indirect manner.

    UIViewRoot view = facesContext.

    getApplication().

    getViewHandler().

    createView(facesContext,

    "/confirm/register.jsp" );

    facesContext.setViewRoot(view);

    Creating new view and stroing it in Faces context The createView() method of ViewHandler object constructs and return a new UIViewRoot instance initialized with information from the argument FacesContext and viewId . The viewed parameter is always String variable representing (relative to /WEB-INF/ directory) path where the definition file is located.As shown in Fig. 9 the definition of the view is placed in ordinary JSP file and is located in subdirectory of a WEB-INF directory.Executing backing beans methods The last step is the actual execution of methods of the underlying, proper to created view backing bean object. This example of the filter for the GET method was based upon one used in the Hotel Reservation System, which works as a registration confirmation tool, so in the end, the method of responsibility for the hotel management confirmation would be and should be ?????invoked:confirmBean.confirmRegistration(userId);

    VII. CONCLUSIONS

    The Hotel Reservation System is developed application designed accordingly to the modern programming trends with usage of technologies like JavaServer Faces, Spring Framework and iBatis Data Mapper. Its modular architecture makes the application more error-resistant and flexible for any changes therefore easy to add new functionality. The common problem of sending input data through the GET method has also been solved.System is easy to install and use and the three –module composition puts work-division pattern into operation.This research was supported by the Technical University of Lodz Grant K-25/1/2007/Dz.St.

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    中文翻譯

    基于JavaServer Faces技術的酒店預訂系統(tǒng)

    本文介紹了基于網(wǎng)絡的酒店預訂系統(tǒng)如何利用JavaServer Faces技術和Spring框架訪問系統(tǒng)通過Web瀏覽器為用戶預定酒店客房。

    一.引言

    酒店預訂系統(tǒng)是一個支持特定類型功能的軟件,往往通過Web瀏覽器作為承載手段。其主要特點為尋找并發(fā)送一個在登記過程中給定的地址的電子郵件來預訂酒店相應的房間。

    為了支持各酒店的組件定義的過程。酒店的組成部分是:房間,促銷,包裝,折扣,完成的通知等有關的事實,客人來到酒店,并收到鑰匙,以及房間預訂系統(tǒng)預訂的過程。

    二.JavaServer Faces

    圖形用戶界面是每一個計算機程序的關鍵部分,其承載與用戶的交互的責任。這應該是靈活的應用程序的一部分,這意味著容易因用戶需求產(chǎn)生更改,但是無疑的可以增加用戶友的好性。令人遺憾的是,發(fā)展中的主要過程需要好的用戶界面,通常造成的是開發(fā)人員的工作和時間泛濫,并且使整個開發(fā)過程涉及JavaServer Faces(JSF)這一領域的技術。這種整體的,基于構件的,軟件開發(fā)人員所面臨的長期問題的解決有一個具體的目標:使網(wǎng)站發(fā)展速度和復雜性掩蓋了很多種類的技術。JSF技術更容易隱藏的是一個服務器的端用戶對基于Java技術的Web應用程序界面框架。 JSF的技術的主要組成部分如下:

    以UI組件為代表的并且管理他們,處理事件,執(zhí)行服務器交互和數(shù)據(jù)轉換,定義頁面導航,支持國際和普及,并為所有這些功能提供擴可展性的技術支持。

    兩個JavaServer Pages定制標記庫在JSP頁面表示UI組件和布線組件的服務器端的用戶界面與JSF技術在服務器上運行,并返回客戶端(在這種情況下瀏覽器)由于基于Web的應用程序。如桌面瀏覽器,手機和PDA(多個客戶端),JSF的已經(jīng)以不同的方式展示了強大的組件體系結構。至于瀏覽器,因為它主要用于JSF,默認的渲染技術是HTML 4.0,盡管像其他的WML或SVG也有可能。JSF技術的最大優(yōu)勢之一是,它提供了一個干凈的分離行為層和表示層和表示層的架構。

    三.Spring框架

    Spring是一個輕量級,控制反轉容器,它的創(chuàng)建解決了企業(yè)應用發(fā)展.Spring的復雜性使得可以使用普通的JavaBeans實現(xiàn)的東西,以前只可能與EJB的相關聯(lián)。任何Java應用程序能夠受益于Spring,簡單來說,測試能力和松散的耦合。

    當作為一個整體,這些模塊提供的一切需要發(fā)展的企業(yè)來進行應用,雖然不一定要有充分的構建Spring框架的應用程序。人們可以從中挑選適合的模塊,只有那些最好的應用,而忽略其他方面。這一戰(zhàn)略是為酒店預訂系統(tǒng)選擇了自構框架的核心價值主張之一,并且是社會的選擇方向,沒有強迫任何一個適用于特定的架構,技術或方法,Spring還提供了與第三個數(shù)字一體化的便利機制 - 框架(也與JSF和iBatis)。

    四.iBATIS DataMapper的APACHE

    iBatis的JDBC在apache - 數(shù)據(jù)庫和Java基于數(shù)據(jù)映射器提供了簡單和靈活的運輸方式之間的關系,.Net或Ruby應用程序的數(shù)據(jù)。與流行的Hibernate庫,iBatis的并沒有直接配合,以表或列或字段,而是,它的存儲過程或使用簡單的XML描述符開始的開發(fā),以達到對所需數(shù)據(jù)的應用。產(chǎn)生只有SQL語句的結果對象。 iBatis的框架幾乎任何數(shù)據(jù)庫可以映射到任何對象模型,是非常傳統(tǒng)的設計,甚至壞designs.Simplicity寬容,是與其他框架相比iBatis的主要優(yōu)點。

    酒店預訂系統(tǒng),主要是建立基于JSF技術的同時輔助庫,Spring與iBATIS的用戶界面。應用程序體系結構,該系統(tǒng)的組成模塊。每一層和適當?shù)姆指襞c界面層。這種解決方案不僅能降低更多的錯誤發(fā)生可能性,也能產(chǎn)生更靈活的變化。表示層組成的圖形用戶在JSF支持bean對象技術編寫的界面。它傳達的是在那里,對用戶輸入數(shù)據(jù)的基礎上,適當?shù)臎Q定是系統(tǒng)的核心業(yè)務的一部分,通過服務層。這也意味著為數(shù)據(jù)訪問層明確了解的形式,而溝通需要通過數(shù)據(jù)訪問接口是指數(shù)據(jù)訪問層與數(shù)據(jù)輸入數(shù)據(jù)映射層進行合作,并與數(shù)據(jù)庫上進行數(shù)據(jù)交換的數(shù)據(jù)映射層負責通過JDBC數(shù)據(jù)庫談判要求所需的數(shù)據(jù)。這是一個在iBatis的數(shù)據(jù)映射層起著主要作用。

    五.JSF的Spring集成

    概括地說,JSF的spring的整合使Spring管理類在JSF變量可見,就像spring為JSF管理beans到JavaServer Faces,任何Web框架綜合集成一體化的具體步驟,必須配置forth.All需要做的事,是標準的J2EE servlet的ContextLoaderListener的web.xml部署文件。這個監(jiān)聽器初始化Spring的WebApplicationContext的,它包含所有在應用程序的業(yè)務類。在spring和JSF之間的整合只是第二個步驟是具體為JSF。課堂上使用的關鍵在這個過程中。要配置這個變量在faces - context.xml文件必須被編輯。開幕后<faces -config>標簽<應用程式必須加上標簽,并在它的<variable-resolver>指向Spring的DelegatingVariable分解必須付諸表決。這個例子的faces - config.xml文件。代表們的值查找到相關的JSF實現(xiàn)的默認解析器,然后到Spring的業(yè)務范圍內的WebApplicationContext。這使得很容易注入一的JSF管理的bean依賴關系。

    示例的faces-config.xml文件從酒店冗余接點JSF只建議應用的一個利用表格獲取輸入數(shù)據(jù)到應用服務器的方法是POST方法,雖然有時也有一種強烈的需要使用GET方法,但卻不常用。在關于酒店系統(tǒng)使用GET方法是在有關用戶帳戶帶來共同的方式來實施登記過程中使用GET方法是創(chuàng)建一個特殊的過濾器,可以操縱頭或內容(或兩者)的請求或付諸實施的GET方法在JavaServer Faces的,下面的算法的情況下,必須在過濾器下應用:

    1.從請求參數(shù)。

    2.建立適當?shù)闹С謆ean的相應的對象認為將繼續(xù)使用。

    3.存儲在本屆會議上支持bean的對象。

    4.設置更改為當前JSF上下文。

    5.創(chuàng)建視圖和存儲它在JSF上下文。

    6.支持bean的方法執(zhí)行。

    六.具體配置文件

    酒店預訂系統(tǒng)也基于Spring庫,因此一些原始算法變化后成為了在適當過濾情況下的最適當方法。在doFilter方法的GET由于從上圖可以看到過濾器的執(zhí)行情況。額外的函數(shù)執(zhí)行該算法被用于保持源代碼的清晰和易于創(chuàng)造適當類從酒店預訂系統(tǒng)的所有支持的類都應該至少有一個spring的財產(chǎn)托管bean。由于這個原因,有必要支持的bean對象后,設置創(chuàng)建此屬性。

    支持創(chuàng)建對象和設置spring托管bean的對象需要在Spring的WebApplicationContext的對象,它是在啟動up.Set改為current.支持存儲在會話Bean對象JSFes整個服務器初始化經(jīng)營范圍面臨環(huán)境變得改變,因此它必須設置,以便與目前發(fā)生的所有修改。

    JSF的設置作為當前的實際環(huán)境中之前將目前的情況下,它是不可或缺的攫取生命周期的對象。生命周期管理的特定JSF請求的整個生命周期處理。它負責執(zhí)行的已經(jīng)由JSF規(guī)范中定義的階段,在指定的順序,所有負責任的,除非另有活動,在每個階段的執(zhí)行導演發(fā)生。生命周期的一個實例是創(chuàng)建調用getLifecycle()的LifecycleFactory方法,為一個指定的生命周期標識符。因為這種情況是在多個并發(fā)請求共享的,它必須是在一個線程安全的方式實現(xiàn)。利用當前的生命周期隨著ServletContext的對象,HttpServletReqest和HttpServletResponse對象的FacesContext中可以更新,成為最新的。

    創(chuàng)建意見,并在JSF決策方面面臨的實際context.After儲存,新的看法應該是創(chuàng)建并添加到這個方面,但它是被可以做到“新”的運營商使用它,它反而要以間接方式進行。

    創(chuàng)建新的觀點和廣泛的在工作面范圍內的CreateView的()的方法,它構造的ViewHandler對象并返回一個新的UI ViewRoot實例資料和論據(jù)FacesContext中的viewId初始化。該效果參數(shù)始終是String變量代表(相對的/ WEB INF /目錄)路徑定義文件如圖所示located。視圖的定義是放置在普通的JSP文件,并在一個WEB INF文件目錄測試支持bean方法的最后一步是位于子目錄中的底層,以創(chuàng)造適當?shù)闹С謆ean的方法的實際執(zhí)行對象的看法。這對于GET方法過濾的例子是基于在酒店預訂系統(tǒng),它作為一個工程的注冊確認工具之一,所以最后,該方法負責確認應被調用(userId的)。

    七.結論

    酒店預訂系統(tǒng),開發(fā)相應的設計與JavaServer Faces的一樣,Spring框架和iBatis數(shù)據(jù)映射技術的使用現(xiàn)代編程應用的趨勢。它的模塊化結構使應用程序更多的錯誤性和靈活的任何變化,因此容易地添加新的功能。派遣通過GET方法還solved.System輸入數(shù)據(jù)常見的問題是易于安裝和使用,這三個模塊組成放入operation.這個研究工作分工格局是由羅茲大學授予的K - 25/1/2007/Dz.St技術支持的。

    總結

    以上是生活随笔為你收集整理的基于JAVA SSM框架的酒店客房管理系统设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。