摘 要
酒店管理系統(tǒng)是伴隨著計算機的普及和IT產(chǎn)業(yè)的興起而出現(xiàn)的產(chǎn)物,該系統(tǒng)的產(chǎn)生為酒店的經(jīng)營管理帶來了很大的便捷——為此而得到了大范圍的推廣和使用;本系統(tǒng)是根據(jù)當(dāng)前市場需求而設(shè)計;能夠?qū)崿F(xiàn)酒店前臺與酒店各項管理制度的一體關(guān)聯(lián)與帶動性;能實現(xiàn)酒店管理的規(guī)范化和一體化;具有較長的市場存活周期。該酒店管理系統(tǒng)是典型的信息采集系統(tǒng),系統(tǒng)開發(fā)的任務(wù)主要包括數(shù)據(jù)庫的設(shè)計與維護、管理系統(tǒng)的開發(fā)這兩個主要方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求系統(tǒng)功能完備,易使用,具有較強的可移植性等特點。
酒店前臺管理系統(tǒng)是當(dāng)前市場酒店管理實現(xiàn)一體化和簡潔化的一個不可缺的系統(tǒng),該管理系統(tǒng)所提供的詳細管理記錄與管理資料使得酒店主管或酒店運營者能在較短的時間內(nèi)做出準確而明智的決策,該系統(tǒng)的所提供的全面和便捷的功能使得酒店能比較健康的運營下去,因此我們所要開發(fā)的酒店前臺管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段;我們所要開發(fā)的酒店管理明細是計算機管理本酒店的各種業(yè)務(wù)需求和業(yè)務(wù)實現(xiàn)的一種計算機應(yīng)用技術(shù)的創(chuàng)新,本系統(tǒng)是根據(jù)當(dāng)前酒店行業(yè)是發(fā)展需求而開發(fā)的系統(tǒng)。經(jīng)過分析,我使用JetBrains公司的IntelliJ IDEA開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,如swing圖形界面的設(shè)計;MYSQL來實現(xiàn)數(shù)據(jù)庫的建立和數(shù)據(jù)庫的相關(guān)操作;JDBC實現(xiàn)對數(shù)據(jù)庫的連接操作。能在短時間內(nèi)建立系統(tǒng)應(yīng)用雛形,然后對初始雛形系統(tǒng)進行需求的分析和系統(tǒng)個方面功能的不斷補充和完善,對系統(tǒng)各功能模塊的不斷的修正和改進,最后形成當(dāng)前的可行系統(tǒng)。
關(guān)鍵詞:酒店管理系統(tǒng);數(shù)據(jù)庫;JDK;圖形界面設(shè)計
Abstract
The hotel management system is the product of the popularity of computers and the rise of IT industry. The emergence of this system has brought great convenience to the hotel management - for this reason, it has been widely promoted and used; This system is designed according to the current market demand; It can realize the integrated connection and drive between the hotel front desk and various management systems of the hotel; It can realize the standardization and integration of hotel management; It has a long market life cycle. The hotel management system is a typical information collection system. The task of system development mainly includes the design and maintenance of the database and the development of the management system. For the former, it is required to establish a database with strong data consistency and integrity and good data security. For the latter, the system should have complete functions, be easy to use, and have strong portability.
The hotel front desk management system is an indispensable system for the integration and simplification of hotel management in the current market. The detailed management records and management materials provided by the management system enable the hotel director or hotel operator to make accurate and wise decisions in a short time. The comprehensive and convenient functions provided by the system enable the hotel to operate healthily, Therefore, the hotel front desk management system we want to develop should be able to provide users with sufficient information and quick query means; The hotel management details we are going to develop are a kind of computer application technology innovation for computer management of various business needs and business realization of the hotel. This system is developed according to the development needs of the current hotel industry. After analysis, I used the IntelliJ IDEA development tool of JetBrains and various object-oriented development tools provided by it, such as the design of swing graphical interface; MYSQL to achieve the establishment of the database and database related operations; JDBC implements the connection operation to the database. The system application prototype can be established in a short time, and then the requirements of the initial prototype system are analyzed and the functions of the system are continuously supplemented and improved, and the various functional modules of the system are constantly modified and improved, finally forming the current feasible system.
Keywords: hotel management system;database;JDK;graphic interface design
1 緒論
1.1 背景介紹
隨著社會經(jīng)濟的迅速發(fā)展和科學(xué)技術(shù)的全面進步,計算機事業(yè)的飛速發(fā)展,以計算機與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時期。隨著經(jīng)濟文化水平的顯著提高,人們對生活質(zhì)量及工作環(huán)境的要求也越來越高。中國改革開放以后,我國大力發(fā)展經(jīng)濟、教育、旅游等等先進產(chǎn)業(yè)鏈,人們對于外出旅游和群體聚餐的需求越來越大。而且我國的良好的科學(xué)教育水平和人民文化素質(zhì)的提高,為酒店管理系統(tǒng)提供了良好的機遇和前景。
采用現(xiàn)代化開發(fā)模式,能夠方便快捷的對酒店進行有效的管理了解酒店的具體情況,同時提供令顧客滿意的服務(wù),提高了效率。顧客可以方便地了解酒店的客房情況和餐飲情況,進行提前預(yù)訂消費。目前,由于中小型酒店缺少必要的資金和人員,仍采用手工記錄和打電話咨詢的方式,對酒店管理和顧客預(yù)訂都很不方便,而且極其容易出錯。所以開發(fā)一套適合的用于中小酒店的酒店管理系統(tǒng)是非常符合當(dāng)代的條件,既可以節(jié)約軟件開發(fā)成本預(yù)算,也可以提高酒店服務(wù)水平。
對于界面的設(shè)計我們應(yīng)該追求的是:實用性強、易讀性強、清晰度高;原則是:不能因為刻意追求美觀而以整個界面的清晰度的犧牲作為代價,不能為了清晰度而拋棄對易讀性的追求。再設(shè)計的過程中我們應(yīng)該根據(jù)實際的情況進行設(shè)計,做到具體問題具體分析,不刻意追求原則。
在對應(yīng)的界面與MySQL數(shù)據(jù)庫建立連接,并實現(xiàn)對應(yīng)的SQL語句進行實現(xiàn)將產(chǎn)生的結(jié)果顯示出來。并運用捕捉異常的方法,將異常信息顯示出來。
實現(xiàn)SQL語句的時候借助平臺開發(fā)工具中關(guān)于數(shù)據(jù)處理的控件來完成??偠灾褪菍崿F(xiàn)對各個信息表的查詢與修改刪除操作。
1.2 國內(nèi)外研究動態(tài)
酒店管理系統(tǒng)最開始的時候是在美國,大約在六十年代末,如Ecoo系統(tǒng),基本實現(xiàn)了酒店管理的功能,如預(yù)訂、結(jié)賬、餐廳、客房等模塊,由于當(dāng)時沒有 PC ,所以整個系統(tǒng)都是在集中式的小型機上管理。前些年,國內(nèi)的酒店管理系統(tǒng)之所以不成氣候,就是因為網(wǎng)絡(luò)信息化技術(shù)不夠,從而影響了酒店的業(yè)績。之后,國外的計算機技術(shù),網(wǎng)絡(luò)平臺,新型技術(shù)點不斷傳入國內(nèi)。國內(nèi)的酒店管理系統(tǒng)開始發(fā)展起來。論文網(wǎng)現(xiàn)今,酒店的電腦管理和網(wǎng)絡(luò)技術(shù)日益提升,電腦網(wǎng)絡(luò)服務(wù)日趨昌盛。因此,在經(jīng)濟效益上取得了突飛猛進的進展。國家建設(shè)部門的規(guī)定中已經(jīng)包含星級酒店的設(shè)計方案中必須有電腦管理系統(tǒng)。這是網(wǎng)絡(luò)化時代的體現(xiàn)。
我國傳統(tǒng)的管理方法以經(jīng)驗和理性相結(jié)合,管理者要保持理性和清醒,并在擁有實際操作經(jīng)驗基礎(chǔ)上,真正領(lǐng)會其中的要領(lǐng),注重的實際行動這個過程。因此,我國酒店更注重教育管理法、經(jīng)濟管理法、情感管理法等。而在需求性不明確這一現(xiàn)狀所存在的問題主要影響著國內(nèi)酒店信息管理技術(shù)開發(fā),使酒店項目工程難度增加,產(chǎn)品過渡不足,開發(fā)投資的總成本太高,缺乏創(chuàng)新和統(tǒng)一的行業(yè)規(guī)范,產(chǎn)品推廣阻力大,都是對于形成自己產(chǎn)品的特點和對自己產(chǎn)品質(zhì)量的控制有所不利的因素。國外優(yōu)秀產(chǎn)品的壟斷和競爭,極大的影響了開發(fā)者的利潤空間。
目前,現(xiàn)階段市場上所呈現(xiàn)出的酒店管理系統(tǒng),絕大部分是為大型的酒店企業(yè)進行設(shè)計的,優(yōu)點是其管理功能普遍較為全面,但是其存在的不足也是較為明顯的:許多功能并不適用于中小型的酒店企業(yè)。實際上,在當(dāng)今國內(nèi)市場中占據(jù)份額比例更大一塊的卻是中小型酒店企業(yè),與之對應(yīng)的卻是適用于中小型企業(yè)的酒店管理系統(tǒng)數(shù)量非常少。
1.3 課題研究的意義及價值
人們現(xiàn)在越來越注重精神上的滿足,排除了學(xué)習(xí)讀書等消遣方式之外,外出參加旅游和組織聚餐也成為當(dāng)下放松心情,緩解壓力的重要環(huán)節(jié)。因此對酒店的入住情況和餐飲服務(wù)質(zhì)量的及時了解是十分有必要的。而且隨著顧客對酒店的需求越來大,和酒店有關(guān)的信息也就越來越多,單靠人力已經(jīng)無法完成必要的信息記憶和信息整理,由此得出,我們必須要一套完善的酒店管理系統(tǒng)滿足顧客的需求,提供對酒店管理的效率。酒店管理系統(tǒng)可以幫助我們完成對信息的有效存儲和永不丟失,也能對信息進行有效整理,極大緩解了人員的工作負擔(dān)。而且能夠知道所需要的具體信息,執(zhí)行效率也是非常方便快捷,幾乎不會出錯。以上種種可以看出來,通過使用酒店管理系統(tǒng)能夠更加有效的對酒店進行管理和有效的進行信息處理,這樣就可以達到員工福利的
目的,緩解了雇職人員之間的矛盾,減少了酒店管理的成本。
2 系統(tǒng)開發(fā)工具
2.1 開發(fā)平臺
2.1.1 JDK介紹
Java 8平臺集合生產(chǎn)力、易用性、多語種編程、更高安全性和穩(wěn)定性等特色。
JDK8的特性已經(jīng)基本準備就緒,雖然一些特性還不是特別完善,但開發(fā)人員已經(jīng)開始慶祝這一里程碑事件了。
JDK8開發(fā)者計劃在上月底發(fā)布M7版本,按照原計劃,這應(yīng)該是一個功能完備的版本,包含完整的22個JEP(Java EnhancementProposals,Java增強建議)。目前大部分特性已經(jīng)完成,最重要的是Lambda相關(guān)的幾個特性(JEP 101、107、109和126)已經(jīng)完成。
經(jīng)過2年半的努力、屢次的延期和9個里程碑版本,甲骨文的Java開發(fā)團隊終于發(fā)布了Java 8正式版本。
Java 8版本最大的改進就是Lambda表達式,其目的是使Java更易于為多核處理器編寫代碼;其次,新加入的Nashorn引擎也使得Java程序可以和JavaScript代碼互操作;再者,新的日期時間API、GC改進、并發(fā)改進也相當(dāng)令人期待。
另外,原本要加入Java 8的Jigsaw項目(標(biāo)準模塊系統(tǒng))由于開發(fā)時間關(guān)系,被推遲到了Java 9中,不過Java 8已經(jīng)在朝著這個方向努力了。
JDK 8 主要特性如下:
Lambda表達式,一種新的語言特性,能夠使功能作為方法參數(shù)或?qū)⒋a作為數(shù)據(jù)。
顯著增加和修改了Java語言特性,增添了標(biāo)準庫,包括默認方法,新的java.util.stream包及 Date-Time API。
Compact Profiles包含 Java SE平臺預(yù)定義子集,使應(yīng)用程序員無需部署在整個平臺,可運行在小型設(shè)備上。
安全性包括更新可Java加密體系架構(gòu);限制doPrivileged;SSL/TLS Server Name Indication (SNI) Extension以及增強密鑰庫。
2.1.2 IntelliJ IDEA簡介
IDEA 全稱 IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動提示、重構(gòu)、J2EE支持、各類版本工具(git、svn、github等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。IntelliJ IDEA工具在有些方面比較優(yōu)秀,IDEA提倡只能編程節(jié)省程序員工作量,有很多特色功能如編碼輔助JavaScript自動補全功能、html頁面編寫代碼功能,靈活排版功能等,相對于Eclipse的IDE工具實用很多。
IDEA的優(yōu)點有許多:
智能的選?。涸谶x取某個方法,或某個循環(huán)或想一步一步從一個變量到整個類慢慢擴充著選取,IDEA就提供這種基于語法選擇,在默認設(shè)置中Ctrl+w,可以實現(xiàn)選取范圍不斷擴充,這種方式在重構(gòu)的時候尤其顯得方便。
豐富的導(dǎo)航模式:IDEA提供了豐富的導(dǎo)航查看模式,在最基本的project試圖中,你還可以選擇多種的視圖方式。
歷史記錄功能:不用通過版本管理服務(wù)器,單純的IDEA就可以查看任何工程中文件的歷史記錄,但版本恢復(fù)時你可以很容易的將其恢復(fù)。
對重構(gòu)的優(yōu)越支持:IDEA是所有IDE中最早支持重構(gòu)的,其優(yōu)秀的重構(gòu)能力一直是其主要賣點之一。
編碼輔助:java規(guī)范中提倡的tostring(),hashcode(),equals(),以及所有的get/set方法,你可以不用進行任何的輸入就可以實現(xiàn)代碼的自動生成,從而把你從無聊的基本方法編碼中解放出來。
靈活的排版功能:基本所有的IDE都有重排版功能,但僅有IDEA的是人性的,因為她支持排版模式的定制,你可以根據(jù)不同的項目要求采用不同的排版方式。
簡潔易用的GUI界面。
與文件系統(tǒng)自動同步。
自定義的快捷鍵:強大的快捷鍵設(shè)置,基本可以讓程序員離開鼠標(biāo)工作。
動態(tài)語法檢測:任何不符合java規(guī)范,自己預(yù)定義的規(guī)范,累贅都將在頁面中加亮顯示。
代碼檢查:對代碼進行自動分析,檢測不符合規(guī)范的,,存在風(fēng)險的代碼,并加亮顯示。
對JSP的完全支持:不需要任何的插件,完全支持JSP。
智能編輯:代碼輸入過程中,自動補充方法或類。
EJB支持:不需要任何插件完全支持EJB。
列編輯模式:減少了很多很多的無聊重復(fù)工作,而IDEA完全支持該模式,從而更加提高了編碼效率。
智能模板:預(yù)置模板可以讓你把經(jīng)常用到的方法編輯進模板,使用時你只用輸入簡單的幾個字母就可以完成全部代碼的編寫。
完美的自動代碼完成:智能檢查類中方法,當(dāng)發(fā)現(xiàn)方法名只有一個時自動完成代碼輸入,從而減少剩下代碼的編寫工作。
Ant 支持:不需要任何的第三方插件。
不使用代碼檢查:自動檢查代碼中不使用的代碼,并給出提示,從而使代碼更高效。
智能代碼:自動檢查代碼,發(fā)現(xiàn)與預(yù)置規(guī)范有出入的代碼給出提示,若程序員同意修改自動完成修改。
正則表達的查找和替換功能:查找替代支持正則表達,從而提高效率。
JavaDoc預(yù)覽支持:支持JavaDoc的預(yù)覽功能,在JavaDoc代碼中ctrl+q顯示JavaDoc的結(jié)果,從而提高doc文檔的質(zhì)量。
2.2 數(shù)據(jù)庫
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),使用最常用的數(shù)據(jù)庫管理語言結(jié)構(gòu)化查詢語言(SQL)于1998年1月發(fā)行第一個版本。MySQL(發(fā)音為"my ess cue el",不是"my sequel")是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。
由于MySQL是開放源代碼的,因此任何人都可以在General Public License的許可下下載并根據(jù)個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。
MySQL關(guān)系型數(shù)據(jù)庫于1998年1月發(fā)行第一個版本。它使用系統(tǒng)核心提供的多線程機制提供完全的多線程運行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等編程語言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。
MySQL開發(fā)組計劃于2001年中期公布MySQL4.0版本。在這個版本中將有以下新的特性被提供:新的表定義文件格式、高性能的數(shù)據(jù)復(fù)制功能、更加強大的全文搜索功能。在此之后,MySQL開發(fā)著希望提供安全的數(shù)據(jù)復(fù)制機制、在BeOS操作系統(tǒng)上的MySQL實現(xiàn)以及對延時關(guān)鍵字的定期刷新選項。隨著時間的推進,MySQL將對ANSI 92/ANSI 99標(biāo)準完全兼容。
3 系統(tǒng)結(jié)構(gòu)分析
3.1 需求分析
近年來,酒店業(yè)迅猛發(fā)展,市場的競爭日趨激烈。全面提高酒店的軟件管
理水準,已成為酒店業(yè)發(fā)展的當(dāng)務(wù)之急。尤其是對于星級酒店,既需要完成前臺的一些服務(wù)工作,還需要完成后臺的管理工作。然而,傳統(tǒng)的人工管理模式已經(jīng)遠遠不能滿足有效、快捷地處理經(jīng)營中產(chǎn)生的大量信息數(shù)據(jù)的需要,從而使得企業(yè)決策層無法及時、準確地掌握一線資料,繼而影響對市場進行正確地分析和預(yù)測。像沿海城市三星級以上酒店引進外方管理,使小部分酒店管理水準幾乎接近或達到國際水平。但對廣大中小型酒店來說是難以做到的。因此欲在競爭中甩開對手取得優(yōu)勢,必須在經(jīng)營、管理、產(chǎn)品、服務(wù)等方面具備獨到之處。而對酒店的經(jīng)營狀況起決定作用的是客房的管理。簡單的服務(wù)標(biāo)準已不是制勝的錦囊,只有管理做到最細微之處,才能讓顧客體會到酒店服務(wù)的高標(biāo)準、高質(zhì)量,而準確、快速、周全往往就是最基本的成功要素。
傳統(tǒng)的管理方法已經(jīng)不能適應(yīng)現(xiàn)代社會的需要。因此采用電腦管理業(yè)務(wù)、財務(wù)等諸多環(huán)節(jié)已成為推動酒店業(yè)迅速發(fā)展的先決條件,酒店管理系統(tǒng)是各大中小型酒店所需要使用的一個管理系統(tǒng)。
經(jīng)過綜合分析,確定了酒店管理系統(tǒng)管理員登陸與操作模塊主要包括以下功能:
3.1.1 客戶管理功能
(1)入住登記
此模塊主要的實現(xiàn)功能是添加新的客戶信息,即當(dāng)有新的客戶要入住本酒店時,可以通過此功能實現(xiàn),當(dāng)數(shù)據(jù)庫中存在其新信息,即成為入住酒店的新客戶。
入住本酒店的新客戶。其中登記信息分別包括入住房間號、入住客戶姓名、入住房間型號、入住房間的價格。同時可在此處實現(xiàn)入住客戶信息的添加。
退房登記
此模塊可以刪除退房的客戶和房間信息,把不再使用的房間釋放出來供其他人使用,從而達到對hotel數(shù)據(jù)庫中room表的清理,此處的刪除途徑為按房間號刪除,輸入退房的房間號即可刪除其信息。
( 3 )查詢?nèi)胱∏闆r
此模塊就是實現(xiàn)對客戶入住情況的查詢,管理員可以了解到所住客戶的所有信息,即已入住的房間號、入住客戶姓名、入住房間型號、入住房間的價格。
( 4 )結(jié)算價格
此模塊為輸入所需要結(jié)算的房間號,然后控制臺輸出該房間號的價格,以此來結(jié)算此房間的價格。
3.1.2 餐飲管理功能
(1)訂餐
此模塊主要的實現(xiàn)功能是添加新的客戶訂餐信息,即當(dāng)有新的客戶要預(yù)定本酒店的餐飲,可以通過此功能實現(xiàn),當(dāng)數(shù)據(jù)庫中存在其新信息,即客戶訂餐成功。其中信息分別包括所需訂餐房間號、所需要訂餐的食物號,此處的功能實現(xiàn)即添加訂餐信息。
(2)取消訂餐
此模塊主要的實現(xiàn)功能客戶取消訂餐的時候,輸入需要取消訂餐的客戶房間號,然后在控制臺輸出取消訂餐成功。
(3)查詢訂餐情況
此模塊主要可對所要了解的客戶訂餐信息。即把已經(jīng)訂餐的信息從數(shù)據(jù)庫調(diào)出來,顯示在控制臺中。查詢方式為按房間號查詢。
結(jié)算餐飲價錢
此模塊為輸入所需要結(jié)算餐飲價錢的房間號,然后會在控制臺輸出此房間所訂餐飲及其價格,最后結(jié)算它的價錢。
3.1.3 員工信息管理功能
(1)添加員工信息功能
此模塊主要的實現(xiàn)功能是將新來的員工信息輸入到酒店管理系統(tǒng)的員工表當(dāng)中,其中主要按如下信息往員工表中輸入。其中包括如下信息:員工工號、員工姓名、員工電話號碼、員工年齡、員工地址。
(2)刪除離職員工信息功能
此模塊為將所要離職的員工的信息從員工表中刪除。
修改員工信息
此模塊可以修改有錯的員工信息,或者是員工信息不全時使用此模塊來補齊。
查詢員工信息功能
在酒店管理系統(tǒng)中查詢是最基本的功能,此模塊屬于員工信息的功能模塊,可以查詢所有員工的詳細信息,將結(jié)果顯示在控制臺上面。可以根據(jù)查 詢出來的信息檢查是否有錯,如果有錯可以點擊修改員工信息模塊來修改員工信息。
3.2 功能模塊圖
(1)根據(jù)上述的功能,可以設(shè)計出系統(tǒng)的總體功能模塊,如圖3-1所示。

圖3-1 酒店管理系統(tǒng)與登錄界面操作模塊功能示意圖
“房間信息管理”功能模塊用于入住登記、退房登記、查詢?nèi)胱∏闆r、結(jié)算價格模塊。其功能模塊如圖3-2所示。

圖3-2 房間信息管理
(3)“餐飲信息管理”功能模塊用于實現(xiàn)客戶訂餐功能,以及取消點餐時刪除相關(guān)客戶信息。其功能模塊如圖3-3所示。

圖3-3 餐飲信息管理
“員工信息管理”功能模塊用于添加、刪除、修改和查詢員工信息。其功能模塊如圖3-4所示。

圖3-4 員工信息管理
本系統(tǒng)用戶為系統(tǒng)管理員與前臺工作人員,他們可以管理其他用戶和員工的信息,在其他方面的權(quán)限相同。
3.3 系統(tǒng)運行環(huán)境
計算機一臺;IntelliJ IDEA軟件;My SQL軟件。
4 系統(tǒng)總體設(shè)計
4.1. 詳細設(shè)計
4.1.1 主界面
用戶登陸系統(tǒng)時會出現(xiàn)登錄界面,輸入正確賬號和密碼就會進入酒店管理系統(tǒng),用戶可以選擇要執(zhí)行的操作,點擊即可實現(xiàn)各功能模塊相應(yīng)的操作,登錄界面如圖4-1所示。

圖4-1 登錄界面
進入酒店管理系統(tǒng)后會出現(xiàn)主界面,如圖4-2所示。

圖4-2 主界面
4.1.2 房間信息管理模塊功能實現(xiàn)
(1)入住登記
功能介紹:添加新的客戶,使其能夠出入酒店并且添加其信息到數(shù)據(jù)庫中,輸入其信息與所要入住的房間信息,輸出已入住房間,已有客戶入住房間不能再做入住登記,入住登記界面如圖4-3所示。

圖4-3 入住登記界面
(2)退房登記功能介紹:客戶退房時刪除其入住記錄并且同時在數(shù)據(jù)庫刪除其訂餐信息,退房登記界面如圖4-4所示。

圖4-4 退房登記界面
(3)查詢?nèi)胱∏闆r
功能介紹:可以對數(shù)據(jù)庫中已入住的客戶信息進行查詢。入住情況查詢界面如圖4-5所示。

圖4-5 查詢?nèi)胱∏闆r界面
(4)結(jié)算價格
功能介紹:結(jié)算房間的價格,輸入房間號,輸出價格。結(jié)算價格界面如圖4-6所示。

圖4-6 結(jié)算價格界面
4.1.3 餐飲信息管理模塊功能實現(xiàn)
(1)訂餐
功能介紹:此界面主要完成的功能是往數(shù)據(jù)庫food表中添加客戶訂餐的記錄,在food表中可查看最新的記錄。訂餐時輸入所要訂餐的房間號與食物號,即生成訂餐記錄,訂餐界面如圖4-7所示。

圖4-7 訂餐界面
(2)取消訂餐
功能介紹:點擊取消訂餐即可輸入所要取消餐飲的房間號和食物號,取消訂餐界面如圖4-8所示。

圖4-8 取消訂餐界面
(3)查詢訂餐情況
功能介紹:點擊查詢訂餐情況就會輸出已訂餐飲的房間號和食物號,查詢訂餐情況界面如圖4-9所示。

圖4-9 查詢訂餐情況界面
(4)結(jié)算餐飲價格
功能介紹:點擊結(jié)算餐飲價格后輸入所要結(jié)算價格的房間號,就會輸出其房間號、食物號和所對應(yīng)的價格。結(jié)算餐飲價格界面如圖4-10所示。

圖4-10 結(jié)算餐飲價格界面
4.1.4 員工信息管理模塊功能實現(xiàn)
(1)添加員工信息
輸入要添加員工的工號,姓名,電話號碼,年齡和地址,即可將其信息添加到數(shù)據(jù)庫的Staff表中,添加員工信息界面如圖4-11所示。

圖4-11 添加員工信息界面
(2)刪除離職員工信息
輸入所要刪除的員工工號,即可在數(shù)據(jù)庫中Staff表中刪除該員工的信息,刪除離職員工信息界面如圖4-12所示。

圖4-12 刪除離職員工信息
(3)修改員工信息
輸入所要修改后的員工信息,最后輸入要修改的員工的工號即可確定要修改數(shù)據(jù)的員工,最后會在數(shù)據(jù)庫中Staff表中修改號該員工的信息,修改員工信息界面如圖4-13所示。

圖4-13 刪除離職員工信息
(4)查詢員工信息
點擊查詢員工信息會在控制臺輸出員工的所有信息,查詢員工信息界面如圖4-14所示。

圖4-13 刪除離職員工信息
4.2 數(shù)據(jù)庫設(shè)計
4.2.1 概念結(jié)構(gòu)設(shè)計
根據(jù)需求分析抽象出信息結(jié)構(gòu),可得該系統(tǒng)的E-R圖。E-R圖如圖4-14所示。

圖4-14 系統(tǒng)E-R圖
4.2.2 邏輯結(jié)構(gòu)設(shè)計
根據(jù)上述的概念結(jié)構(gòu)設(shè)計出邏輯結(jié)構(gòu),將E-R圖轉(zhuǎn)換為關(guān)系模型。
數(shù)據(jù)庫hotel包含以下5個表:房間信息表room、餐飲信息表food、菜單信息表order、員工信息表staff。
(1)房間信息表room
用來存放客戶房間號,客戶姓名,房間型號,房間價格等信息。表room的結(jié)構(gòu)如表4-1所示。
表4-1 客戶房間的結(jié)構(gòu)
編號 |
字段名稱 |
數(shù)據(jù)結(jié)構(gòu) |
說明 |
1 |
Rno |
int |
記錄房間號 |
2 |
Pname |
char(10) |
記錄客戶姓名 |
3 |
Rsize |
char(10) |
記錄房間型號 |
4 |
Price |
int |
記錄房間價格 |
(2)餐飲信息表food,表food的結(jié)構(gòu)如表4-2所示。
表4-2 餐飲信息的結(jié)構(gòu)
編號 |
字段名稱 |
數(shù)據(jù)結(jié)構(gòu) |
說明 |
1 |
Rno |
int |
記錄訂餐房間號 |
2 |
Fno |
int |
記錄訂餐食物號 |
菜單信息表order,表order的結(jié)構(gòu)如表4-3所示。
表4-3 菜單信息的結(jié)構(gòu)
編號 |
字段名稱 |
數(shù)據(jù)結(jié)構(gòu) |
說明 |
1 |
Fname |
Varchar(10) |
記錄食物名 |
2 |
Fno |
int |
記錄食物號 |
3 |
Price |
int |
記錄食物價格 |
員工信息表staff,表staff的結(jié)構(gòu)如表4-4所示。
表4-4 員工信息的結(jié)構(gòu)
編號 |
字段名稱 |
數(shù)據(jù)結(jié)構(gòu) |
說明 |
1 |
Sno |
Char(9) |
記錄員工工號 |
2 |
Sname |
Varchar(10) |
記錄員工姓名 |
3 |
Sphone |
char(11) |
記錄員工電話號碼 |
4 |
Sage |
tinyint |
記錄員工年齡 |
5 |
Saddress |
Varchar(20) |
記錄員工地址 |
本系統(tǒng)將用戶劃分為系統(tǒng)管理員和員工。系統(tǒng)管理員可以管理其他用戶的信息,在其他方面的權(quán)限相同。
4.2.3 數(shù)據(jù)庫表的建立
本次課程設(shè)計使用的是My SQL數(shù)據(jù)庫,可以在hotel數(shù)據(jù)庫里面創(chuàng)建表。
使用企業(yè)管理其創(chuàng)建創(chuàng)建表room,其創(chuàng)建過程如圖4-15所示

圖4-15 創(chuàng)建表room
使用企業(yè)管理其創(chuàng)建創(chuàng)建表food,其創(chuàng)建過程如圖4-16所示

圖4-16 創(chuàng)建表food
使用企業(yè)管理其創(chuàng)建創(chuàng)建表order,其創(chuàng)建過程如圖4-16所示

圖4-17 創(chuàng)建表order
使用企業(yè)管理其創(chuàng)建創(chuàng)建表staff,其創(chuàng)建過程如圖4-16所示

圖4-18 創(chuàng)建表staff
5 系統(tǒng)實現(xiàn)
5.1 數(shù)據(jù)庫的連接
本實驗連接使用純Java方式連接MySQL數(shù)據(jù)庫,以下為連接數(shù)據(jù)庫的語句:
//獲取與數(shù)據(jù)庫之間的連接
String user = "root";
String password = "root";
String url = "jdbc:mysql://localhost:3306/hotel";
con = DriverManager.getConnection(url, user, dbpassword);
//創(chuàng)建發(fā)送sql語句的Statement對象
Statement sta = con.createStatement();
//發(fā)送sql語句,并用ResultSet類型的對象保存查詢的數(shù)據(jù)行
ResultSet rs=sta.executeQuery(sql);
5.2 系統(tǒng)功能模塊設(shè)置
在該系統(tǒng)中點擊相應(yīng)的菜單項會出現(xiàn)對應(yīng)得時間并且在控制臺操作輸入輸出,
輸入輸出界面如下圖所示:

圖5-1 入住登記界面

圖5-2 退房登記界面

圖5-3 查詢?nèi)胱∏闆r界面

圖5-4 結(jié)算房間價格界面

圖5-5 訂餐界面

圖5-6 取消訂餐界面

圖5-7 查詢訂餐情況界面

圖5-8 結(jié)算餐飲價格界面

圖5-9 添加員工信息界面

圖5-10 刪除離職員工界面

圖5-11 修改員工信息界面

圖5-12 查詢員工信息界面
結(jié) 論
通過這次實踐,使我靈活應(yīng)用所學(xué)知識,獨立完成問題分析,結(jié)合Java理論知識,編寫程序解決指定問題。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力。同時在這次實踐中,培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。 然而,在這次實踐中,我覺得一個人完成一個項目是多么的艱難,在一些大型的項目中,團隊合作是多么重要。盡管這次只是一個小項目,卻也要耗費大量的精力。 我學(xué)習(xí)了知識,也培養(yǎng)了實踐能力,讓我知道遇到一個問題,如何去尋找思路,如何去解決問題,最終完成整個事情。 學(xué)習(xí)的過程中不可避免的遇到問題,這些問題有的只是一個符號錯了,一個括號少了,這類的問題在他的文檔,或者一般的網(wǎng)站上就能夠找到,尤其是初學(xué)者的問題,不會是很難的問題 ,在你之前已經(jīng)無數(shù)人問過了,不要害怕提問,但是這個問題最好是你找不到答案的時候去提。等你走出了這個階段,這個時候在有問題可能就是比較難一些的,這個時候在一般的網(wǎng)站上應(yīng)該是難以找到結(jié)果的,包括Java自己的網(wǎng)站,為你養(yǎng)成良好的習(xí)慣有很大的幫助。
在程序中我主要用了awt包和swing包,界面排版主要用frame來實現(xiàn),頁面位置、大小是通過設(shè)置setbounds來控制的。不但成功的連接了MySQL數(shù)據(jù)庫,也成功實現(xiàn)了很多功能:在里面設(shè)置了很多功能仔細研究下終于改正了錯誤,使此功能終于可以正常使用了。
最后再次衷心感謝在課程設(shè)計過程中給予我?guī)椭睦蠋熀屯瑢W(xué)們,他們的幫助不僅使我開闊了視野,拓寬了思路,增長了學(xué)識,為我今后的學(xué)習(xí)打下了牢固的基礎(chǔ),也使我們增強了對系統(tǒng)開發(fā)的興趣,特別是Java語言的系統(tǒng)開發(fā)。
參考文獻
[1] 段新娥,賈宗維,JAVA 程序設(shè)計教程[M].人民郵電出版社,2013.
[2] 劉藝,Java程序設(shè)計大學(xué)教程[M].北京:機械工業(yè)出版社,2006.
[3] 張思民,JAVA程序設(shè)計實踐教程[M].第一版.北京:清華大學(xué)出版社,2006.
[4] 耿祥義,JAVA實用教程[M].第二版.北京:清華大學(xué)出版社,2006.
[5] 耿祥義,JSP基礎(chǔ)編程[M].清華大學(xué)出版社,2004.
[6] Julia Case Bradley,JAVA程序設(shè)計教程[M].北京:電子工業(yè)出版社, 2003.
[7] 王珊,數(shù)據(jù)庫系統(tǒng)概論[M]第四版.北京:高等教育出版社, 2008.
源文件:
首先是一個包含main方法的主類,用來設(shè)置密碼界面,輸入正確的密碼和賬號即可登錄進去管理系統(tǒng)界面。文章來源:http://www.zghlxwxcb.cn/news/detail-500030.html
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InterFace {
public static void main(String[] args) {
new InterFace();
}
public InterFace() {
JFrame jFrame = new JFrame("登錄界面");
jFrame.setLayout(new FlowLayout());
JLabel jLabel1=new JLabel("賬號");
JTextField jTextField=new JTextField(10);
JLabel jLabel2=new JLabel("密碼");
JPasswordField jPasswordField=new JPasswordField(10);
JButton ok=new JButton("確定");
jFrame.add(jLabel1);
jFrame.add(jTextField);
jFrame.add(jLabel2);
jFrame.add(jPasswordField);
jFrame.add(ok);
ok.addActionListener(new ActionListener() {//給確定按鈕添加事件
@Override
public void actionPerformed(ActionEvent e) {
String jtext=jTextField.getText();//得到賬號
char[] ch=jPasswordField.getPassword();//得到密碼
String jpass=new String(ch);//得到的密碼轉(zhuǎn)成String類型
if (jtext.equals("1111") & jpass.equals("root")){//判斷密碼是否正確
System.out.println("密碼正確,進入酒店管理系統(tǒng)");
new SystemDemo();
}else{
JDialog dialog=new JDialog(jFrame,"賬號或者密碼錯誤!",true);
dialog.setBounds(750,450,300,50);
dialog.setVisible(true);
jTextField.setText("");
jPasswordField.setText("");
}
}
});
jFrame.setVisible(true);
jFrame.setBounds(600,400,600,250);
// jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
}
}
系統(tǒng)界面類,輸入正確的賬號和密碼即可進入。文章來源地址http://www.zghlxwxcb.cn/news/detail-500030.html
package Face;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Scanner;
//登錄進去的界面,菜單條里面有三個菜單,分別為房間信息,訂餐信息和工作人員信息
class SystemDemo {
public SystemDemo() {
JFrame jFrame = new JFrame("酒店管理系統(tǒng)");
//房間的菜單項
JMenuItem ItemAdd1 = new JMenuItem("入住登記");
JMenuItem ItemOut = new JMenuItem("退房登記");
JMenuItem ItemQuery1 = new JMenuItem("查詢?nèi)胱∏闆r");
JMenuItem ItemCalculate1 = new JMenuItem("結(jié)算價格");
//訂餐的菜單項
JMenuItem ItemOrder = new JMenuItem("訂餐");
JMenuItem ItemCancel = new JMenuItem("取消訂餐");
JMenuItem ItemQuery2 = new JMenuItem("查詢訂餐情況");
JMenuItem ItemCalculate2 = new JMenuItem("結(jié)算餐飲價錢");
//工作人員的菜單項
JMenuItem ItemAdd3 = new JMenuItem("添加員工信息");
JMenuItem ItemDelete = new JMenuItem("刪除離職員工信息");
JMenuItem ItemUpdate = new JMenuItem("修改員工信息");
JMenuItem ItemQuery3 = new JMenuItem("查詢員工信息");
//設(shè)置三個菜單
JMenu MenuRoom = new JMenu("房間信息");
JMenu MenuFood = new JMenu("餐飲信息");
JMenu MenuStaff = new JMenu("員工信息");
//把房間的相關(guān)信息添加到房間的菜單項中
MenuRoom.add(ItemAdd1);
MenuRoom.add(ItemOut);
MenuRoom.add(ItemQuery1);
MenuRoom.add(ItemCalculate1);
//把訂餐的相關(guān)信息添加到餐飲的菜單項中
MenuFood.add(ItemOrder);
MenuFood.add(ItemCancel);
MenuFood.add(ItemQuery2);
MenuFood.add(ItemCalculate2);
//把員工的相關(guān)信息添加到員工信息的菜單項中
MenuStaff.add(ItemAdd3);
MenuStaff.add(ItemDelete);
MenuStaff.add(ItemUpdate);
MenuStaff.add(ItemQuery3);
//添加事件
listener lis = new listener();
ItemAdd1.addActionListener(lis);
ItemOut.addActionListener(lis);
ItemQuery1.addActionListener(lis);
ItemCalculate1.addActionListener(lis);
ItemOrder.addActionListener(lis);
ItemCancel.addActionListener(lis);
ItemQuery2.addActionListener(lis);
ItemCalculate2.addActionListener(lis);
ItemAdd3.addActionListener(lis);
ItemDelete.addActionListener(lis);
ItemUpdate.addActionListener(lis);
ItemQuery3.addActionListener(lis);
//設(shè)置菜單欄
JMenuBar jMenuBar = new JMenuBar();
//把三個菜單項添加到菜單欄
jMenuBar.add(MenuRoom);
jMenuBar.add(MenuFood);
jMenuBar.add(MenuStaff);
jFrame.add(jMenuBar);
jFrame.setVisible(true);
//jFrame.pack();
jFrame.setBounds(600, 400, 600, 150);
jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
}
public class listener implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
Scanner sc = new Scanner(System.in);
Connection con = null;
Statement sta = null;
ResultSet rs = null;
try {
//連接數(shù)據(jù)庫
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/hotel";
con = DriverManager.getConnection(url, "root", "root");
sta = con.createStatement();
} catch (Exception e) {
System.out.println("連接數(shù)據(jù)庫失敗");
}
String s = event.getActionCommand();
try {
switch (s) {
case "入住登記":
rs = sta.executeQuery("select Rno from Room");
while (rs.next()) {
System.out.print(" 已入住房間:" + rs.getInt("Rno"));
}
System.out.println();
String sql = "insert into Room values(?,?,?,?)";
PreparedStatement p1 = con.prepareStatement(sql);
System.out.println("輸入房間號101~210,入住客戶,房間型號(小,中,大),價格(100,150,200):");
p1.setInt(1, sc.nextInt());
p1.setString(2, sc.next());
p1.setString(3, sc.next());
p1.setInt(4, sc.nextInt());
p1.executeUpdate();
System.out.println("入住登記成功");
break;
case "退房登記":
String sql2 = "delete from Room where Rno=?";
PreparedStatement p2 = con.prepareStatement(sql2);
System.out.println("輸入退房的房間號:");
int DRno = sc.nextInt();
p2.setInt(1, DRno);
p2.executeUpdate();
System.out.println("退房登記成功");//退房時會同時在數(shù)據(jù)庫中刪除該房間所訂餐飲的記錄
break;
case "查詢?nèi)胱∏闆r":
System.out.println("目前入住情況:");
rs = sta.executeQuery("select * from Room");
while (rs.next()) {
System.out.println("房間號:" + rs.getInt("Rno") + "\t入住客戶:" +
rs.getString("Pname") + "\t房間型號:" +
rs.getString("Rsize") +
"\t價格:" + rs.getInt("Price"));
}
break;
case "結(jié)算價格":
System.out.println("輸入所結(jié)算房間價格的房間號:");
int n = sc.nextInt();
sta=con.createStatement();
rs= sta.executeQuery("select Price from Room where Rno='"+n+"'");
while(rs.next()){
System.out.println("房間價格為:"+rs.getString("Price"));
}
break;
case "訂餐":
String sql5 = "insert into Food values(?,?)";
PreparedStatement p5 = con.prepareStatement(sql5);
System.out.println("輸入點餐客戶房間號和食物號:");
p5.setInt(1, sc.nextInt());
p5.setInt(2, sc.nextInt());
p5.executeUpdate();
System.out.println("點餐成功");
break;
case "取消訂餐":
String sql6 = "delete from Food where Rno=? and Fno=? ";
PreparedStatement p6 = con.prepareStatement(sql6);
System.out.println("輸入取消訂餐的房間號和食物號:");
p6.setInt(1, sc.nextInt());
p6.setInt(2, sc.nextInt());
p6.executeUpdate();
System.out.println("取消訂餐成功");
break;
case "查詢訂餐情況":
System.out.println("目前的訂餐情況為:");
rs = sta.executeQuery("select * from Food");
while (rs.next()) {
System.out.println("房間號:" + rs.getInt("Rno") + "\t所訂食物 號:"+rs.getInt("Fno"));
}
break;
case "結(jié)算餐飲價錢":
System.out.println("輸入需要結(jié)算餐飲的房間號:");
int FoodPrice = sc.nextInt();
sta=con.createStatement();
rs= sta.executeQuery("SELECT Rno,food.Fno,Price\n" +"from Food,`order`\n" +"where Rno='"+FoodPrice+"' and food.Fno=`order`.Fno" );
System.out.println("所需結(jié)算餐飲的房間號、食物號和價格為:");
while(rs.next()){
System.out.println("房間號:"+rs.getInt("Rno")+
"\t食物號:"+rs.getInt("Fno")+
"\t食物價格:"+rs.getString("Price"));
}
break;
case "添加員工信息":
String sql10 = "insert into Staff values(?,?,?,?,?)";
PreparedStatement p10 = con.prepareStatement(sql10);
System.out.println("輸入要添加員工的工號,姓名,電話號碼,年齡和地址:");
p10.setString(1, sc.next());
p10.setString(2, sc.next());
p10.setString(3, sc.next());
p10.setInt(4, sc.nextInt());
p10.setString(5, sc.next());
p10.executeUpdate();
System.out.println("添加成功");
System.out.println("現(xiàn)有員工信息:");
rs = sta.executeQuery("select * from Staff");
while (rs.next()) {
System.out.println("工號:" + rs.getString("Sno") + "\t姓名:" +
rs.getString("Sname") + "\t電話號碼:" +rs.getString("Sphone") +"\t年齡:" + rs.getInt("Sage") + "\t地址:" +rs.getString("Saddress"));
}
break;
case "刪除離職員工信息":
String sql11 = "delete from Staff where Sno=? ";
PreparedStatement p11 = con.prepareStatement(sql11);
System.out.println("輸入離職員工的工號:");
p11.setInt(1, sc.nextInt());
p11.executeUpdate();
System.out.println("刪除成功,現(xiàn)有的員工信息:");
rs = sta.executeQuery("select * from Staff");
while (rs.next()) {
System.out.println("工號:" + rs.getString("Sno") + "\t姓名:" +rs.getString("Sname") + "\t電話號碼:" +rs.getString("Sphone") +"\t年齡:" + rs.getInt("Sage") + "\t地址:" +rs.getString("Saddress"));
}
break;
case "修改員工信息":
String sql12 = "update Staff set Sname=?,Sphone=?,Sage=?,Saddress=? where Sno=?";
PreparedStatement p12 = con.prepareStatement(sql12);
System.out.println("輸入修改后的員工姓名,電話號碼,年齡和地址和所需修改的員工的工號:");
p12.setString(1, sc.next());
p12.setString(2, sc.next());
p12.setInt(3, sc.nextInt());
p12.setString(4, sc.next());
p12.setString(5, sc.next());
p12.executeUpdate();
System.out.println("修改成功,修改后的所有員工信息:");
rs = sta.executeQuery("select * from Staff");
while (rs.next()) {
System.out.println("工號:" + rs.getString("Sno") + "\t姓名:" + rs.getString("Sname") + "\t電話號碼:" +
rs.getString("Sphone") + "\t年齡:" + rs.getInt("Sage") + "\t地址:" + rs.getString("Saddress"));
}break;
case "查詢員工信息":
System.out.println("現(xiàn)在的所有員工信息為:");
rs = sta.executeQuery("select * from Staff");
while (rs.next()) {
System.out.println("工號:" + rs.getString("Sno") + "\t姓名:" +
rs.getString("Sname") + "\t電話號碼:" + rs.getString("Sphone") +
"\t年齡:" + rs.getInt("Sage") + "\t地址" + rs.getString("Saddress"));
}
break;
}
} catch (Exception e2) {
e2.printStackTrace();
} finally {
try {
if (con != null)
con.close();
if (sta != null)
sta.close();
if (rs != null)
rs.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
}
}
到了這里,關(guān)于《酒店管理系統(tǒng)》Java課設(shè)(供參考)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!