基于JAVA的客房管理系統(tǒng)設(shè)計(jì)(有源代碼+數(shù)據(jù)庫)_第1頁
基于JAVA的客房管理系統(tǒng)設(shè)計(jì)(有源代碼+數(shù)據(jù)庫)_第2頁
基于JAVA的客房管理系統(tǒng)設(shè)計(jì)(有源代碼+數(shù)據(jù)庫)_第3頁
基于JAVA的客房管理系統(tǒng)設(shè)計(jì)(有源代碼+數(shù)據(jù)庫)_第4頁
基于JAVA的客房管理系統(tǒng)設(shè)計(jì)(有源代碼+數(shù)據(jù)庫)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)軟件學(xué)專業(yè)課程設(shè)計(jì)報(bào)告書課程名稱 SQL server 2000 課程設(shè)計(jì)題目 客房管理系統(tǒng)1 概述1.1 背景客房管理是旅店管理事務(wù)中的一項(xiàng)重要工作,在管理過程中涉及到大量的數(shù)據(jù)處理,傳統(tǒng)的人工管理已經(jīng)無法完成勝任。相關(guān)數(shù)據(jù)的處理帶來了更大的工作量。 本系統(tǒng)采用目前比較流行的JDBC-ODBC數(shù)據(jù)訪問技術(shù),成功地將面向?qū)ο蟮某绦蛟O(shè)計(jì)思想應(yīng)用到數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)中。1.2 開發(fā)與運(yùn)行環(huán)境本客房管理系統(tǒng)的開發(fā)與運(yùn)行環(huán)境如下:開發(fā)環(huán)境:Eclipse 3.1開發(fā)工具:JAVA 1.5數(shù)據(jù)庫管理系統(tǒng):SQL Server 2000運(yùn)行環(huán)境:Windows 2000/XP/2003/Vista使

2、用說明:用戶自己附加數(shù)據(jù)庫,并且在控制面板下的數(shù)據(jù)工具中的數(shù)據(jù)源(ODBC),在用戶DSN下添加名為“客房管理”,驅(qū)動程序?yàn)镾QL-Server。并且安裝了JAVA虛擬機(jī),該程序即可使用。2 需求分析客房資管理系統(tǒng)涉及到:客人信息、客房信息、入住信息、歷史信息等多種數(shù)據(jù)信息??头抗芾硐到y(tǒng)的用戶包括系統(tǒng)管理員。系統(tǒng)管理員負(fù)責(zé)整理工作,如各種基本信息的添加、刪除和簡單的結(jié)賬計(jì)算等操作。本系統(tǒng)的主要功能包括:客人信息管理:客人信息數(shù)據(jù)的添加、刪除、結(jié)賬計(jì)算。數(shù)據(jù)查詢:查看客人信息數(shù)據(jù),查看客房信息數(shù)據(jù)。數(shù)據(jù)統(tǒng)計(jì):統(tǒng)計(jì)一段時間內(nèi)的客房情況和月收入等基本統(tǒng)計(jì)。3 系統(tǒng)設(shè)計(jì)3.1 系統(tǒng)模塊設(shè)計(jì)根據(jù)系統(tǒng)功能

3、分析和一些旅店客房管理的特點(diǎn),經(jīng)過模塊化的分析得到如下圖所示的系統(tǒng)功能模塊結(jié)構(gòu)圖??头抗芾淼怯浌δ芙y(tǒng)計(jì)功能查詢功能已入住客房查尋空房查詢按名字查詢客人信息按客人編號查詢客人信息添加客人信息刪除客人信息統(tǒng)計(jì)入住情況統(tǒng)計(jì)入住率統(tǒng)計(jì)收入安全管理模塊用戶名和密碼登陸注銷系統(tǒng)功能模塊結(jié)構(gòu)圖3.2 數(shù)據(jù)庫設(shè)計(jì)3.2.1 數(shù)據(jù)流圖頂層數(shù)據(jù)流圖第0層數(shù)據(jù)流圖3.2.2 數(shù)據(jù)字典根據(jù)系統(tǒng)功能模塊結(jié)構(gòu)圖及典型旅店客房管理系統(tǒng)的需求,總結(jié)出來如下的數(shù)據(jù)字典:(1)數(shù)據(jù)項(xiàng)說明數(shù)據(jù)項(xiàng)名稱含義說明類型長度記錄編號惟一標(biāo)識一條記錄bigint8客房編號惟一標(biāo)識一間客房varchar10離店時間標(biāo)識離店時間datetime8

4、金額標(biāo)識所收金額money8類別標(biāo)識客房類別smallint2名稱標(biāo)識客房類別名稱varchar20價(jià)格標(biāo)識客房價(jià)格money8(2)數(shù)據(jù)流說明數(shù)據(jù)流名稱含義來源去向組成登陸管理員進(jìn)入系統(tǒng)操作客房管理系統(tǒng)管理員端編號+密碼查詢已住房查詢住房資料客人信息表統(tǒng)計(jì)界面客人信息表+客房編號表查詢空房查詢空住房客房編號表統(tǒng)計(jì)界面客房編號表查詢房號查詢房號信息客人信息表統(tǒng)計(jì)界面客人信息表計(jì)算計(jì)算金額客房管理系統(tǒng)管理員端客房管理系統(tǒng)登記,刪除錄入住房信息管理員端客房管理系統(tǒng)系統(tǒng)數(shù)據(jù)庫統(tǒng)計(jì)統(tǒng)計(jì)住房信息系統(tǒng)數(shù)據(jù)庫統(tǒng)計(jì)界面系統(tǒng)數(shù)據(jù)庫(3)數(shù)據(jù)存儲說明數(shù)據(jù)存儲名稱含義說明組成結(jié)構(gòu)歷史記錄表存放客房歷史的有關(guān)信息客房

5、編號+金額客人信息表存放客人相關(guān)的信息個人信息+住店時間+金額客房類別表存放客房對應(yīng)的價(jià)格類別+價(jià)格客房編號表存放客房對應(yīng)的編號類別+編號管理人員表存放管理員驗(yàn)證信息編號+密碼(4)處理過程說明處理過程名稱:審核登陸輸入:編號+密碼輸出:確認(rèn)加工邏輯:根據(jù)編號和密碼管理員,進(jìn)入主窗體。(其他處理過程略)3.2.3 概念結(jié)構(gòu)設(shè)計(jì)依據(jù)客房管理系統(tǒng)的實(shí)際情況,考慮了多方面的因素以后,確定系統(tǒng)的E-R圖,如圖所示:客房管理系統(tǒng)E-R圖3.2.4 邏輯結(jié)構(gòu)設(shè)計(jì)按照E-R圖轉(zhuǎn)換規(guī)則,可以得到如下的關(guān)系模式:客人信息(客房編號,姓名,性別,年齡,身份證號碼,家庭住址,工作單位,來自地的地名,預(yù)定入住時間,入

6、住時間,離店時間,押金,需負(fù)金額)客人類別(類別,名稱,價(jià)格)客房編號(編號,類別)歷史記錄(記錄編號,客房編號,離店時間,金額)管理人員(編號,密碼)3.2.5 物理結(jié)構(gòu)設(shè)計(jì)根據(jù)E-R圖及數(shù)據(jù)字典,設(shè)計(jì)出公司工資管理系統(tǒng)數(shù)據(jù)庫中的各個數(shù)據(jù)表,包括:客人信息、客房類別、客房編號、歷史記錄、管理人員共5個數(shù)據(jù)表。本系統(tǒng)數(shù)據(jù)庫命名為“客房管理系統(tǒng)”,數(shù)據(jù)庫中的各個數(shù)據(jù)表名稱和結(jié)構(gòu)分別如下所示,為便于說明,各個數(shù)據(jù)表的結(jié)構(gòu)使用該表在SQL Server企業(yè)管理器中的設(shè)計(jì)視圖表示。l 關(guān)系圖:l 客人信息:客人信息結(jié)構(gòu)圖l 客房類別:客房類別結(jié)構(gòu)圖l 客房編號:客房編號結(jié)構(gòu)圖l 歷史記錄:歷史記錄結(jié)構(gòu)

7、圖l 管理人員:管理人員結(jié)構(gòu)圖4 詳細(xì)設(shè)計(jì)4.1 界面設(shè)計(jì)主窗口(Mainwindow)本窗體為主窗體,用到j(luò)ava的swing中的菜單欄組件,主要代碼如下:panel1=new JPanel();this.setContentPane(panel1);lbPicture=newJLabel(new ImageIcon(管理系統(tǒng).Mainwindow.class.getResource("背景.jpg");panel1.add(lbPicture);/主菜單jmbMain=new JMenuBar();jmSystem=new JMenu("系統(tǒng)");j

8、mSearch=new JMenu("查詢");jmAdd=new JMenu("登記");jmCount=new JMenu("統(tǒng)計(jì)");jmHelp=new JMenu("幫助");setJMenuBar(jmbMain);/添加主菜單jmbMain.add(jmSystem);jmbMain.add(jmSearch);jmbMain.add(jmAdd);jmbMain.add(jmCount);jmbMain.add(jmHelp);/系統(tǒng)子菜單jmiLogin=new JMenuItem("登

9、陸");jmiLogin.addActionListener(this);jmSystem.add(jmiLogin);jmiCancel=new JMenuItem("注銷");jmiCancel.addActionListener(this);jmiCancel.setEnabled(false);jmSystem.add(jmiCancel);jmiExit=new JMenuItem("退出");jmiExit.addActionListener(this);jmSystem.add(jmiExit);/查詢子菜單jmiSearchFu

10、llRoom=new JMenuItem("查已住房");jmiSearchFullRoom.addActionListener(this);jmiSearchFullRoom.setEnabled(false);jmSearch.add(jmiSearchFullRoom);jmiSearchVoidRoom=new JMenuItem("查空房");jmiSearchVoidRoom.addActionListener(this);jmiSearchVoidRoom.setEnabled(false);jmSearch.add(jmiSearchVo

11、idRoom);jmiSearchName=new JMenuItem("按名字或房號查");jmiSearchName.addActionListener(this);jmiSearchName.setEnabled(false);jmSearch.add(jmiSearchName);jmiLine.setEnabled(false);jmSearch.add(jmiLine);jmiCalculate=new JMenuItem("結(jié)賬");jmiCalculate.addActionListener(this);jmiCalculate.setE

12、nabled(false);jmSearch.add(jmiCalculate);/登記子菜單jmiAdd=new JMenuItem("添加");jmiAdd.addActionListener(this);jmiAdd.setEnabled(false);jmAdd.add(jmiAdd);jmiDelete=new JMenuItem("刪除");jmiDelete.addActionListener(this);jmiDelete.setEnabled(false);jmAdd.add(jmiDelete);/統(tǒng)計(jì)子菜單jmiCircumstan

13、ces=new JMenuItem("入住情況");jmiCircumstances.addActionListener(this);jmiCircumstances.setEnabled(false);jmCount.add(jmiCircumstances);jmiRate=new JMenuItem("入住率");jmiRate.addActionListener(this);jmiRate.setEnabled(false);jmCount.add(jmiRate);jmiIncome=new JMenuItem("收入");

14、jmiIncome.addActionListener(this);jmiIncome.setEnabled(false);jmCount.add(jmiIncome);/幫助子菜單jmiAbout=new JMenuItem("關(guān)于");jmiAbout.addActionListener(this);jmHelp.add(jmiAbout);/窗體屬性setBounds(300,150,800,600);setVisible(true);菜單中的鍵用到了ActionListener接口來實(shí)現(xiàn) 主要代碼如下:public void actionPerformed(Acti

15、onEvent ae)/退出鍵if (ae.getSource()=jmiExit)/登陸鍵else if(ae.getActionCommand()="登陸")/注銷鍵else if(ae.getSource()=jmiCancel)/查已住房間鍵else if(ae.getSource()=jmiSearchFullRoom)/查空房else if(ae.getSource()=jmiSearchVoidRoom)/按名字或房號查else if(ae.getSource()=jmiSearchName)/結(jié)賬else if(ae.getSource()=jmiCalcu

16、late)/添加else if(ae.getSource()=jmiAdd)/刪除else if(ae.getSource()=jmiDelete)/入住情況else if(ae.getSource()=jmiCircumstances)/入住率else if(ae.getSource()=jmiRate)/收入else if(ae.getSource()=jmiIncome)/關(guān)于else if(ae.getSource()=jmiAbout)登陸界面(Login)本窗體連接到數(shù)據(jù)庫中的管理員表通過定義ResultSet來調(diào)用表中的數(shù)據(jù),相關(guān)代碼: ResultSet rs; rs=stat

17、.executeQuery("select * from 管理人員 where 編號="+"'"+tUser.getText()+"' and 密碼="+"'"+password.getText()+"'");判斷成功后實(shí)現(xiàn)主窗體中子菜單的setEnable()方法。登記客人信息(Add)本窗體主要用到T-SQL語句中的insert into. VALUES語句,相關(guān)代碼:a1="'"+tName.getText().trim()+&q

18、uot;'"a2="'"+tSex.getText().trim()+"'"a3="'"+tAge.getText().trim()+"'"a4="'"+tIdentication.getText().trim()+"'"a5="'"+tAddress.getText().trim()+"'"a6="'"+tWorkPlace.

19、getText().trim()+"'"a7="'"+tFrom.getText().trim()+"'"a8="'"+tRoomNo.getText().trim()+"'"a9="'"+tWillIn.getText().trim()+"'"a10="'"+tIn.getText().trim()+"'"a11="'&quo

20、t;+tLeave.getText().trim()+"'"int i = Integer.valueOf(tCash.getText().intValue();String b="insert into 客人信息 (客房編號,姓名,性別,年齡,身份證號碼,家庭住址,工作單位,來自地的地名,預(yù)定入住時間,入住時間,離店時間,押金) VALUES ("+a8+","+a1+","+a2+","+a3+","+a4+","+a5+",&quo

21、t;+a6+","+a7+","+a9+","+a10+","+a11+","+i+")"stat=conn.prepareStatement(b);r=stat.executeUpdate();刪除客人信息(Delete)刪除窗體與添加窗體相類似,用到T-SQL中的delete語句??腿私Y(jié)賬(Calculate)本窗體用到的T-SQL語句有(1)update 金額_viewset 需負(fù)金額=datediff(day,入住時間,getdate()*價(jià)格-押金where 客房編

22、號=501(2)update 金額_viewset 離店時間=dateadd(day,datediff(day,入住時間,getdate(),入住時間)where 客房編號=501(3)select 客房編號,姓名,需負(fù)金額from 金額_viewwhere 客房編號=501 -(前臺應(yīng)用改客房編號就可以了)在前臺定義stat=con.createStatement()再用stat.executeUpdate(1);stat.executeUpdate(2);rs=stat.executeQuery(3);來實(shí)現(xiàn)。查詢客人信息(SearchForName)本窗體主要用到JTable和連接客人信

23、息表,相關(guān)代碼:stat=conn.createStatement();rs=stat.executeQuery("select 姓名,性別,工作單位,客房編號,入住時間 from 客人信息 where 姓名="+"'"+tName.getText()+"'");rs=stat.executeQuery("select 姓名,性別,工作單位,客房編號,入住時間 from 客人信息 where 客房編號="+"'"+tName.getText()+"'&q

24、uot;);查詢空房(VoidRoom)本窗體用到的T-SQL語句有:select distinct 名稱,編號from 客房編號join 客房類別on 客房類別.類別=客房編號.類別where 編號 not in(select distinct 編號from 客房編號join 客人信息on 編號=客人信息.客房編號where 編號=客人信息.客房編號 and 離店時間 is null)與前臺連接的相關(guān)語句有:stat=conn.createStatement();rs=stat.executeQuery("select distinct 類別,編號 from 客房編號 where

25、編號 not in (select distinct 編號 as 已定或已住 from 客房編號 join 客人信息 on 編號=客人信息.客房編號 where 編號=客人信息.客房編號 and 離店時間 is null)");查詢已住或已定的客房(FullRoom)本窗體用到的T-SQL有:select distinct 名稱,編號from 客房編號join 客人信息on 編號=客人信息.客房編號join 客房類別on 客房類別.類別=客房編號.類別where 編號=客人信息.客房編號 and 離店時間 is null與前臺連接的相關(guān)代碼:stat=conn.createState

26、ment();rs=stat.executeQuery("select distinct 類別,編號 from 客房編號 join 客人信息 on 編號=客人信息.客房編號 where 編號=客人信息.客房編號 and 離店時間 is null");統(tǒng)計(jì)月收入(InCome)本窗體用到的T-SQL語句:select month(離店時間) as 月份,sum(金額) as 收入from 歷史記錄join 客房編號on 客房編號=編號where year(離店時間)=2008group by month(離店時間)與前臺連接的相關(guān)語句有:stat=con.createStat

27、ement();rs=stat.executeQuery("select month(離店時間) as 月份,sum(金額) as 收入 from 歷史記錄 join 客房編號 on 客房編號=編號 where year(離店時間)="+"'"+tYear.getText()+"'"+" group by month(離店時間)");統(tǒng)計(jì)一段時間內(nèi)各客房入住率(Rate)本窗體用到的T-SQL語句有:select 客房編號,cast(cast(count(*) as float)/(select c

28、ount(*) from 歷史記錄)*100.00 as varchar)+'%' as 入住率from 歷史記錄where '2008-1-1'<=離店時間 and 離店時間<='2008-12-31'group by 客房編號與前臺連接的相關(guān)語句有:stat=conn.createStatement();rs=stat.executeQuery("select 客房編號,cast(cast(count(*) as float)/(select count(*) from 歷史記錄)*100.00 as varchar)+

29、'%' as 入住率 " +"from 歷史記錄 where 離店時間>="+"'"+tStart.getText()+"' and 離店時間<="+"'"+tOver.getText()+"' group by 客房編號");統(tǒng)計(jì)一段時間內(nèi)各類客房的入住情況(StatisticsInto)本窗體用到的T-SQL語句有:select 名稱,cast(cast(count(*) as real)/(select count(*)

30、 from 歷史記錄)*100.00 as varchar)+'%' as 入住率,sum(金額) as 收入金額from 歷史記錄join 客房編號on 客房編號=編號join 客房類別on 客房類別.類別=客房編號.類別where '2008-1-1'<=離店時間 and 離店時間<='2008-12-31'group by 名稱 -(前臺應(yīng)用改時間就可以了)與前臺連接的相關(guān)語句有:stat=conn.createStatement();rs=stat.executeQuery("select 名稱,cast(cast(

31、count(*) as real)/(select count(*) from 歷史記錄)*100.00 as varchar)+'%' as 入住率,sum(金額) as 收入金額 " +"from 歷史記錄 join 客房編號 on 客房編號=編號 join 客房類別 on 客房類別.類別=客房編號.類別 " +"where 離店時間>="+"'"+tStart.getText()+"' and 離店時間<="+"'"+tOver

32、.getText()+"' group by 名稱");4.2 代碼設(shè)計(jì)l -建立客房管理數(shù)據(jù)庫(使用默認(rèn)設(shè)置)create database 客房管理系統(tǒng)-創(chuàng)建客人信息表create table 客人信息(客房編號 varchar(10) primary key,姓名 varchar(10) not null,性別 char(2) not null,年齡 tinyint,身份證號碼 varchar(20) not null,家庭住址 varchar(50) not null,工作單位varchar(50) not null,來自地的地名varchar(50) no

33、t null預(yù)定入住時間 datetimr not null,入住時間datetimr not null,離店時間datetimr,押金 money not null,需負(fù)金額money)-創(chuàng)建客房類別表create table 客房類別(類別 smallint primary key,名稱 varchar(20) not null,價(jià)格 money)-創(chuàng)建客房編號表create table 客房編號(編號varchar(10) primary key,類別smallint)-創(chuàng)建歷史記錄表create table 歷史記錄(記錄編號 bigint,客房編號 varchar(10),離店時間 datetime,金額 money)-創(chuàng)建管理人員表create table 管理人員(編號 varchar(10) primary key,密碼 varchar(20) not null)l -建立客人信息的默認(rèn)值約束create default 性別_default as '男'gosp_bindefault '性別_default','客人信息.性別

溫馨提示

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

評論

0/150

提交評論