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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、圖l 管理人員:管理人員結構圖4 詳細設計4.1 界面設計主窗口(Mainwindow)本窗體為主窗體,用到java的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)計");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("結賬");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)計子菜單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("關于");jmiAbout.addActionListener(this);jmHelp.add(jmiAbout);/窗體屬性setBounds(300,150,800,600);setVisible(true);菜單中的鍵用到了ActionListener接口來實現(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)/結賬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)/關于else if(ae.getSource()=jmiAbout)登陸界面(Login)本窗體連接到數(shù)據(jù)庫中的管理員表通過定義ResultSet來調用表中的數(shù)據(jù),相關代碼: ResultSet rs; rs=stat

17、.executeQuery("select * from 管理人員 where 編號="+"'"+tUser.getText()+"' and 密碼="+"'"+password.getText()+"'");判斷成功后實現(xiàn)主窗體中子菜單的setEnable()方法。登記客人信息(Add)本窗體主要用到T-SQL語句中的insert into. VALUES語句,相關代碼: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 客人信息 (客房編號,姓名,性別,年齡,身份證號碼,家庭住址,工作單位,來自地的地名,預定入住時間,入住時間,離店時間,押金) 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賬(Calculate)本窗體用到的T-SQL語句有(1)update 金額_viewset 需負金額=datediff(day,入住時間,getdate()*價格-押金where 客房編

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

23、息表,相關代碼: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)與前臺連接的相關語句有: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與前臺連接的相關代碼:stat=conn.createState

26、ment();rs=stat.executeQuery("select distinct 類別,編號 from 客房編號 join 客人信息 on 編號=客人信息.客房編號 where 編號=客人信息.客房編號 and 離店時間 is null");統(tǒng)計月收入(InCome)本窗體用到的T-SQL語句:select month(離店時間) as 月份,sum(金額) as 收入from 歷史記錄join 客房編號on 客房編號=編號where year(離店時間)=2008group by month(離店時間)與前臺連接的相關語句有: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)計一段時間內各客房入住率(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 客房編號與前臺連接的相關語句有: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)計一段時間內各類客房的入住情況(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 名稱 -(前臺應用改時間就可以了)與前臺連接的相關語句有: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 代碼設計l -建立客房管理數(shù)據(jù)庫(使用默認設置)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預定入住時間 datetimr not null,入住時間datetimr not null,離店時間datetimr,押金 money not null,需負金額money)-創(chuàng)建客房類別表create table 客房類別(類別 smallint primary key,名稱 varchar(20) not null,價格 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 -建立客人信息的默認值約束create default 性別_default as '男'gosp_bindefault '性別_default','客人信息.性別

溫馨提示

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

評論

0/150

提交評論