客房管理系統設計

2021-03-04 07:54:04 字數 5008 閱讀 5120

在當今經濟和商務往來交往日益頻繁的狀況下,賓館服務行業正面臨客流量驟增的壓力。越來越多的賓館飯店都認識到傳統的管理方法已經不能適合當今社會的需要,必須借助先進的計算機資訊技術對賓館服務進行管理。「客房管理系統」可以說是整個賓館計算機資訊管理的中心子系統,因為賓館最主要的功能就是為旅客提供客房。

設計客房管理這樣乙個系統,可以涉及到大多數sql server資料庫的重要資料庫物件、重要功能和特性,比如:檢視、觸發器和儲存過程等。由此,通過這個課程設計可以加深對這些sql server資料庫知識的學習、理解,積累在實際工程應用中運用各種資料庫物件的經驗,使學生掌握使用應用軟體開發工具開發資料庫管理系統的基本方法。

本課程設計的主要目的是學習和練習sql server資料庫的實際應用。

1.系統功能設計

1).資料錄入功能

在本系統中提供客人資訊登記功能。可以錄入客人的姓名、性別、年齡、身份證號碼、入住時間、預計入住天數、客房類別、客房號、離店時間以及繳納押金金額等資訊。在客人退房時,系統根據輸入的離店時間及客房單價自動計算客人住宿費金額。

2).資料查詢功能

系統需要提供以下查詢功能:

1 查某類客房的入住情況及空房情況,顯示所有該類客房空房數目和客房號。

2 根據客人姓名資訊查詢客人資訊;根據客房號查詢入住客人的資訊。

3 查詢某個客人住宿費用情況,顯示客人繳納押金金額,實際入住天數、客房**、實際住宿費、住宿費差額及餘額等資訊。

4 查詢所有入住時間達到或超過預計入住天數的客人。

3).資料統計功能

① 統計一段時間內各種客房的入住情況。

② 統計全年各月份的客房收入。

③ 統計一段時間內各類客房的入住率。

2.資料庫設計

1). 資料庫與資料表設計

2). 資料完整性設計

① 主鍵約束、非空值約束

② check約束離店時間》入住時間

③ 使用預設值入住時間、預計入住天數

④ 惟一約束客房類別

⑤ 外來鍵約束

⑥ 規則身份證長度 15 or 18

3). 檢視、觸發器和儲存過程設計

1、客人選擇客房處理

客人來到飯店入住前要做的第一件事是選擇合適的客房,客人將告知飯店服務員自己需要的客房型別,服務員在系統中選擇指定的客房型別後系統將現實所有空餘的該型別客房,並顯示該型別客房**供客人參考選擇。這個處理過程可以通過乙個儲存過程來實現。

在這個儲存過程中,需要的輸入引數是客房型別,輸出的結果集是所有這種客房型別的空房記錄和**。定義這個儲存過程名為selroom,定義輸入的引數名為roomtype,定義輸出的**引數名為roomprice。根據儲存過程的建立語法,編寫selroom的實現**如下:

create procedure selroom

@roomtype char(2),

@roomprice **allmoney output

asselect 客房號 from 客房資訊

where (客房型別編號=@roomtype) and (客房狀態='n')

select @roomprice=** from 客房型別

where 客房型別編號=@roomtype

在上面的**中包含了兩個select語句,第乙個select語句從客房資訊表中選擇了所有客房型別為輸入引數指定型別並且客房狀態為「空」(n)的客房號,並將所有記錄作為結果集返回;第二個select語句從客房型別中取得了制定客房型別的**,作為輸出引數roomprice返回。

2、客人入住登記處理

客人入住登記操作完成後,入住的客房狀態應該及時做相應的改變,並記錄客人的序號供以後查詢。這一功能可以使用觸發器來自動進行:因為進行客人入住登記操作是在客人資訊表中新增一條新記錄,所以可以為客人資訊表設計乙個insert觸發器,當客人資訊執行insert操作後自動更改客房資訊相應客房記錄的資料。

定義這個觸發器名稱為client_insert 。其實現**如下:

create trigger client_insert on dbo.客人資訊

for insert

asupdate 客房資訊

set 客房狀態='f',客房資訊.入住客人序號=b.序號

from 客房資訊 as a,inserted as b

where a.客房號=b.客房號

3、客人離店退房處理

客人在離店退房時,服務員輸入客人的退房時間,然後計算出客人的住宿費用,以便於客人結帳。同時,系統應該將客人所退房的狀態更改為「空」,以便於再次接待下一位客人入住。這一功能也可以通過乙個觸發器來實現。

為客人資訊表設計乙個名為client_update的update觸發器,當系統對客人資訊的離店時間進行update操作後,將會自動觸發它。該觸發器將自動取得當前所退客房的單價,並根據客人入住的天數計算出客人的住宿費用,將費用值寫入住宿費列,最後觸發器將客房資訊的相應客房記錄的客房狀態和入住序號更新,即將客房狀態置為空房,並清除對於該客人的入住標識資訊。

下面是client_update觸發器的定義**:

create trigger client_update on dbo.客人資訊

for update

asif update(離店時間) /*只有對離店時間列進行更改時才處理*/

begin /*求出客人所住客房的單價*/

declare @price **allmoney

set @price=(select ** from 客房型別 right join 客房資訊 on

客房型別.客房型別編號=客房資訊.客房型別編號 right join 客人資訊 on 客房資訊.客房號=客人資訊.客房號

where 客人資訊.序號 in(select 序號 from inserted))

/*求客人住宿費並更改住宿費列*/

update 客人資訊

set 住宿費=@price*datediff(day,b.入住時間,b.離店時間)

from 客人資訊 as a,inserted as b

where a.序號=b.序號

/*更新客房資訊相應客房的狀態*/

update 客房資訊

set 客房狀態='n',入住客人序號=''

from 客房資訊 ,inserted

where 客房資訊.入住客人序號=inserted.序號

end 在上面的**中,首先定義了乙個變數@price,然後通過乙個右聯合直接得到當前客人所住客房的單價。在第二段語句中,使用sql函式datediff求得客人入住時間和退房時間之差,求出入住天數,乘以@price變數就得到了客人最終的住宿費用。值得注意的是:

update觸發器可以使用inserted表和deleted表,這裡必須使用inserted表,它的離店時間才識最新更改的離店時間,如果使用deleted表,將得不到正確的結果。

最後,觸發器對客房資訊表中入住序號為當前客人的入住序號的記錄的客房狀態列和入住序號列進行了更新。

4、客人資訊查詢處理

在實際應用中,經常會有這樣的要求:服務員需要通過客人的部分資料查詢客人的全部資訊以及客人住在哪乙個客房。由於需要通過輸入查詢條,才能得到結果集,所以可以設計乙個帶輸入引數的儲存過程來實現。

定義乙個名為spclientinfo的儲存過程,該儲存過程以客人姓名(@clientname)作為輸入引數,儲存過程返回到查詢到的結果集。

spclientinfo的定義**如下:

create procedure spclientinfo

@clientname varchar(8)='%'

asselect * from 客人資訊

where 姓名 like @clientname+'%'

在上面的**中,想spclientinfo傳入客人姓名引數。在where子句中使用like,並在引數前、後新增「%」,使得該儲存過程具有模糊查詢的功能。比如,@clientname引數中只輸入客人的姓,就可以查詢到所有該姓氏的客人資訊。

5、查詢客人住宿費用的處理

在本系統的功能需求中要求能夠查詢客人住宿費用的詳細情況,包括客人入住時交付的押金金額、客人住宿天數、客房**、客人住宿費金額、住宿費和押金差額等資訊。實現該功能可以通過乙個儲存過程,以客人序號為輸入引數,輸出上面要求的各種資訊數值。設計乙個名為spclientcost的儲存過程,定義**如下:

create procedure spclientcost

@clientid char(9)

asdeclare @clientprice **allmoney

declare @clientdays **allint

declare @clientcost **allmoney

declare @clientbalance **allmoney

select

@clientprice=(

select ** from 客房型別 right join 客房資訊

on 客房資訊.客房型別編號=客房型別.客房型別編號

right join 客人資訊

on 客人資訊.客房號=客房資訊.客房號

where 客人資訊.序號=@clientid),

@clientdays=(datediff(day,入住時間,getdate())),

@clientcost=(@clientprice*@clientdays),

@clientbalance=(押金金額-@clientcost)

from 客人資訊 where 序號=@clientid

select 押金金額,@clientprice as **,

@clientdays as 天數,@clientcost as 住宿費,@clientbalance as 餘額

from 客人資訊

where 序號=@clientid

在上面**中,首先定義了4個變數,分別是:@clientprice,@clientdays,@clientcost,@clientbalance,它們分別表示:客人入住房間的單價客人住宿的時間,客人的住宿費用和客人所繳納押金與住宿費用的差額。

第乙個select語句起賦值作用,分別把各個表示式的結果賦值給各個變數。第二個select語句是乙個選擇,將客人資訊表的押金金額以及前面求得的各個變數值作為儲存過程的結果集返回。

賓館客房管理系統設計報告

隨著社會經濟的發展,人們對生活質量的要求越來越高,作為服務之一的賓館業也在不斷的完善服務體制。它是集餐飲 住宿 娛樂於一體的立體化服務體系,其中顧客可以隨意消費並統一結賬 賓館管理者可及時了解賓館的全部運營情況及經營走勢,找出運轉成本,作為經營決策的依據。只有運用先進的科學管理手段,利用計算機管理系...

賓館客房管理系統

資料庫原理課程設計 系部商學系 專業資訊管理與資訊系統 班級資訊n121 學號學生姓名 指導教師 編寫日期 2014.06.28 目錄 1 1 系統需求分析 2 1.1 系統調查 2 1.2使用者需求 2 1.3 系統業務流程圖 3 2 系統邏輯方案 5 2.1資料流圖 簡稱為dfd 5 2.2 資...

賓館客房管理系統

赤峰學院計算機與資訊工程學院 課程設計報告 設計名稱賓館客房管理系統 姓名 峰學號 0914 專業班級09級漢本1班 系 院電腦科學與技術系 設計時間2011年12月 設計地點逸夫理工樓325 1 任務概述 1.1 設計目的 資料庫原理與應用 課程設計是電腦科學與技術專業集中實踐性環節之一,是學習完...