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

歡迎訪問 生活随笔!

生活随笔

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

windows

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

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

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

酒店客房管理系統

摘 要

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

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

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

關鍵詞 酒店客房管理系統;SSH框架;MySQL數據庫;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? 課題研究現狀... 2

2? 系統的開發環境及技術簡介... 3

2.1? 系統開發環境... 3

2.1.1? MyEclipse. 3

2.1.2? 數據庫簡介... 3

2.1.3 ?Tomcat 3

2.2? 系統開發的思想和技術... 4

2.2.1? Java簡介... 4

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

2.2.3? SSH框架... 5

2.3? 本章小結... 8

3? 系統概要設計... 9

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

3.2? 系統管理員的功能模塊... 10

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

3.4? 系統業務描述... 11

3.5? 程序流程圖... 12

3.6? 本章小結... 12

4? 系統詳細設計... 13

4.1? 系統和數據庫的配置... 13

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

4.3? 數據庫的邏輯模型... 13

4.4? 數據庫表結構... 15

4.5? 平臺數據表的設計... 16

4.6? 本章小結... 19

5? 系統功能實現... 20

5.1? 系統的類圖... 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? 系統功能實現的主要框架... 26

5.3.1? SSH框架... 26

5.3.2? Hibernate配置文件... 26

5.3.3? Struts配置文件... 26

5.3.4? Spring配置文件... 27

5.4? 系統功能實現的主要模塊... 28

5.4.1? 系統登錄頁面... 28

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

5.4.3? 系統管理員登錄頁面... 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? 系統測試... 34

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

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

6.3? 測試環境... 35

6.4? 測試環境的配置... 35

6.4.1? 創建安裝項目... 35

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

6.4.3? 運行項目... 37

6.5? 本章小結... 37

結 論... 38

參考文獻... 39

致 謝... 40

外文原文... 41

中文翻譯... 48

?

?

1? 緒論

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

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

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

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

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

使用酒店管理系統的意義:

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

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

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

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

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

1.2? 課題研究現狀

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

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

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

?

?

2? 系統的開發環境及技術簡介

2.1? 系統開發環境

2.1.1 ?MyEclipse

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

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

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

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

2.1.2? 數據庫簡介

數據庫使用的是MySQL開源數據庫。

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

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

2.1.3? Tomcat

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

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

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

2.2? 系統開發的思想和技術

2.2.1? Java簡介

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

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

Java語言的特點:

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

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

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

語言是可移植的:Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的;

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

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

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

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

2.2.2? JSP技術與MVC模式以及系統的基本框架

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

2.2.3? SSH框架

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

?

圖2.1 SSH框架

它由以下3個框架構成:

1.Struts2框架

Struts2是Apache組織的一個開放源碼項目。Struts2是一個比較好的MVC框架,提供了對開發MVC系統的底層支持,它采用的主要技術是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),它是實現IOC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的實現方式,提供對持久層(Persistence)、事務(Transaction)的支持,提供MVC Web框架的實現,并對一些常用的企業服務API(Application Interface)提供一致的模型封裝,是一個全方位的應用程序框架(Application framework),除此之外,對于現存的各種框架(Struts、JSF、Hibernate等),Spring也提供了與它們相整合的方案。

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

?

圖2.3 Spring框架構成

?

3.Hibernate框架

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

?

圖2.4 Hibernate框架

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

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

2.3? 本章小結

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

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

3? 系統概要設計

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

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

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

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

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

?

?

?

?

3.1? 總體功能模塊

本系統分系統管理員和用戶2個用戶角色。

總功能圖如圖3.1所示。

???????? ?

圖3.1 系統功能需求分析

3.2? 系統管理員的功能模塊

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

?

圖3.2 系統管理員的功能圖

?

?

?

?

3.3? 用戶功能模塊

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

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

?

圖3.3 用戶的功能圖

3.4? 系統業務描述

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

用例圖如圖3.4所示。

?

圖3.4 系統用例圖

?

?

?

?

?

?

3.5? 程序流程圖

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

?

圖3.5 用戶注冊流程圖

?

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

?

圖3.6 用戶登錄流程圖

3.6? 本章小結

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

?

?

?

?

4? 系統詳細設計

4.1? 系統和數據庫的配置

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

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

4.2? 概念模型設計

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

本系統E-R圖如圖4.1所示。

?

圖4.1 系統E-R圖

4.3? 數據庫的邏輯模型

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

?

主鍵

添加時間

房間價格

房間類型

房間狀態

房間分類

?

?

圖4.2 房間分類邏輯圖

?

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

?

主鍵

備注

押金

關聯客房的ID

開房信息

?

?

圖4.3 開房信息邏輯圖

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

?

主鍵

房間信息狀態

房間描述

關聯分類的ID

客房信息

?

?

圖4.4 客房信息邏輯圖

?

?

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

?

主鍵

添加時間

用戶名

性別

用戶

?

?

圖4.5 用戶邏輯圖

?

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

?

主鍵

備注

關聯kefang的ID

關聯user的ID

預定

?

?

圖4.6 預定邏輯圖

4.4? 數據庫表結構

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

房間分類表如表4.1所示:

表4.1 房間分類表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

createtime

datetime

yes

添加時間

deletestatus

int(11)

no

0

房間狀態

jiage

double

yes

房間價格

leixing

varchar(255)

yes

房間類型

?

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

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

表4.2 開房信息表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

beizhu

varchar(255)

yes

備注

idcard

varchar(255)

yes

身份證號

jiezhangstatus

varchar(255)

yes

結賬狀態

kehuname

varchar(255)

yes

客戶姓名

ruzhutime

datetime

yes

入住時間

tianshu

int(11)

yes

入住天數

tuifangtime

datetime

yes

退房時間

xiaofei

double

yes

消費金額

yajin

double

yes

押金

kefangid

int(11)

yes

關聯客房的ID

?

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

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

表4.3 客房信息表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

deletestatus

int(11)

no

0

房間信息狀態

fangjianhao

varchar(255)

yes

房間號

fangjianstatus

varchar(255)

yes

房間狀態

miaoshu

varchar(255)

yes

房間描述

fenleiid

int(11)

yes

關聯分類的ID

?

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

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

表4.4 用戶表

名稱

類型

默認值

備注

id

int(11)

no

auto_increment

主鍵

createtime

datetime

yes

添加時間

lianxifangshi

varchar(255)

yes

聯系方式

password

varchar(255)

yes

密碼

role

int(11)

no

0

1表示管理員

truename

varchar(255)

yes

真實姓名

userlock

int(11)

no

0

用戶狀態

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

聯系方式

truename

varchar(255)

yes

真實姓名

xingbie

varchar(255)

yes

性別

yudingidcard

varchar(255)

yes

預定客戶身份證號碼

yudingstatus

int(11)

no

0

預定狀態

yudingtime

varchar(255)

yes

預定入住時間

kefangid

int(11)

yes

關聯kefang的ID

userid

int(11)

yes

關聯user的ID

?

4.5? 平臺數據表的設計

根據平臺的需求分析和功能模塊的劃分,所涉及的實體有房間分類、開房信息、客房信息、用戶、預定。因此系統的定義數據庫主要包含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 ‘房間狀態 0表示正常狀態 1表示刪除狀態’,

? ‘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 ‘結賬狀態 已結賬 未結賬’,

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

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

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

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

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

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

? ‘kefangid’ int(11) default NULL COMMENT ‘關聯客房的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 ‘房間信息狀態 0表示未刪除 1表示刪除’,

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

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

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

? ‘fenleiid’ int(11) default NULL COMMENT ‘關聯分類的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 ‘聯系方式’,

? ‘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 ‘用戶狀態 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 ‘聯系方式’,

? ‘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 ‘預定狀態 0表示預定 1表示取消預定’,

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

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

? ‘userid’ int(11) default NULL COMMENT ‘關聯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? 本章小結

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

5? 系統功能實現

5.1? 系統的類圖

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

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

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

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

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

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

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行為圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作。它可以表示用例的行為順序,當執行一個用例行為時,時序圖中的每條消息對應了一個類操作或狀態機中引起轉換的觸發事件。

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

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

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

5.2.1? 房間分類模塊時序圖

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

?

圖5.6 房間分類模塊時序圖

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

5.2.2? 開房信息模塊時序圖

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

?

圖5.7 開房信息模塊時序圖

?

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

5.2.3? 客房信息模塊時序圖

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

?

圖5.8 客房信息模塊時序圖

?

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

5.2.4? 用戶模塊時序圖

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

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

?

圖5.9 用戶模塊時序圖

5.2.5? 預定模塊時序圖

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

?

圖5.10 預定模塊時序圖

?

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

5.3? 系統功能實現的主要框架

5.3.1? SSH框架

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

5.3.2 ?Hibernate配置文件

org.hibernate.connection.ProxoolConnectionProvider

在Hibernate的配置文件中:

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

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

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

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

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

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

表示當前數據庫的語言是MySQL

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

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

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

都表示當前數據庫建立起來的表和類之間的映射關系,比如<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? 系統功能實現的主要模塊

5.4.1? 系統登錄頁面

系統登錄頁面如圖5.11所示。

?

??????????????????????????? 圖5.11 系統登陸頁面圖

登錄代碼:

//登錄請求

?????? 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方法,從數據庫里取出該條記錄進行判斷,如果該條記錄存在,則說明用戶登陸成功,同時把用戶信息存在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('操作失敗,該用戶名已經存在,請再次注冊');window.location.href='login.jsp';</script>");

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

5.4.3? 系統管理員登錄頁面

系統管理員登錄頁面如圖5.13所示:

?

圖5.13 系統管理員登錄頁面圖

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

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");

實現客房信息管理,首先通過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方法來調用數據庫的查詢方法來查到符合條件的記錄,再通過request.setAttribute方法把查詢到的記錄傳到顯示的頁面。同時通過this.setUrl("kefang/kefanglist.jsp");方法指定傳回到具體指定的是哪個JSP頁面。通過這樣實現對數據查詢功能的實現,同時在該頁面定義了對客房信息的增加,修改,刪除等操作。

?

?

?

?

?

?

?

5.4.6? 用戶管理頁面

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

?

圖5.16 用戶管理頁面圖

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

5.4.7? 客房分類管理頁面

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

?

圖5.17 客房分類管理頁面圖

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

5.4.8? 開房管理頁面

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

?

?

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

?

圖5.18 開房管理頁面圖

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

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

?

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

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

5.5? 本章小結

本章對整個管理系統進行全面的開發和編碼,根據之前的準備對各個模塊進行了編碼,實現了各模塊的功能,并建立了數據庫的數據表,對數據庫進行連接。

?

?

?

?

?

?

?

?

6? 系統測試

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

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

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

控制流程面有以下四點:

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

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

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

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

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

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

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

6.1? 軟件測試的目的

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

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

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

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

6.2 ?軟件測試的任務

1.尋找Bug;

2.避免軟件開發過程中的缺陷;

3.衡量軟件的品質;

4.關注用戶的需求。

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

6.3? 測試環境

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

6.4? 測試環境的配置

6.4.1? 創建安裝項目

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

點擊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? 本章小結

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

結 論

本次畢業設計的系統開發結束了,系統已經基本成型,功能也都已實現,此系統實現了對酒店管理系統的用戶管理模塊,管理員管理模塊,可以為一些中小酒店和賓館使用。

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

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

1.靈活性能分析

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

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

2.功能設計

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

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

參考文獻

  • 李平. 基于JSP的動態網頁開發技術[J]. 微計算機信息, 2009,(21)
  • 錢娟. JAVA網絡編程的探討[J]. 煤炭技術, 2012,(11)
  • 董紅杰. 基于JSP的酒店管理系統的設計與實現[D]. 云南大學, 2009
  • 張敏. 酒店客房信息管理系統[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數據庫實例教程[M]. 天津大學出版社, 2009

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    致 謝

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

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

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

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

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    外文原文

    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技術的酒店預訂系統

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

    一.引言

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

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

    二.JavaServer Faces

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

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

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

    三.Spring框架

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

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

    四.iBATIS DataMapper的APACHE

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

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

    五.JSF的Spring集成

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

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

    1.從請求參數。

    2.建立適當的支持bean的相應的對象認為將繼續使用。

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

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

    5.創建視圖和存儲它在JSF上下文。

    6.支持bean的方法執行。

    六.具體配置文件

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

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

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

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

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

    七.結論

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

    總結

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

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