数据库客房管理系统代码.docx

上传人:b****2 文档编号:24441738 上传时间:2023-05-27 格式:DOCX 页数:18 大小:176.51KB
下载 相关 举报
数据库客房管理系统代码.docx_第1页
第1页 / 共18页
数据库客房管理系统代码.docx_第2页
第2页 / 共18页
数据库客房管理系统代码.docx_第3页
第3页 / 共18页
数据库客房管理系统代码.docx_第4页
第4页 / 共18页
数据库客房管理系统代码.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据库客房管理系统代码.docx

《数据库客房管理系统代码.docx》由会员分享,可在线阅读,更多相关《数据库客房管理系统代码.docx(18页珍藏版)》请在冰豆网上搜索。

数据库客房管理系统代码.docx

数据库客房管理系统代码

酒店客房管理系统设计

一、需求分析

1.1系统需求分析

“客房管理信息系统”以实现宾馆客房各种信息的系统化、规范化、自动化为目标,具

体要达到以下几个基本要求:

(一)客户入住管理

通过该管理功能,系统可以通过计算机对客户的一些基本信息进行录入,成为客房管理信息系统查询的数据资料。

(1)新客人信息的录入。

(2)客人信息的修改。

(3)客人信息的查询。

(4)客人信息的删除。

(5)客人信息的保存。

(6)客房信息的查询。

(二)结算管理

(1)退房结算:

输入客户房号,查找该客户信息、住房信息以及费用情况。

(2)收银处理:

确认客户总费用,并自动登记总费用帐。

同时,自动将房间用房标志(占)改为(空);并将客户信息保存。

1.2数据分析

通过进行系统调查,了解用户需求、分析应用软件系统的功能需求。

总结出了系统逻辑模型,即系统业务流程图、数据流图、应用软件功能结构图和数据字典等。

各流程图如下面的图所示:

 

1.2.2客房管理系统数据流图

 

 

二、数据库概念结构设计

经考察和分析,本案例客房管理系统包括以下实体:

客户实体、客房实体、操作员实体、退房实体,它们的E-R图如以下所示。

 

三、数据库逻辑结构设计

根据E-R图,将图转换为关系模型即:

将实体、实体的属性和实体之间的联系转换为关系模式,然后对数据模型进行优化得到如下关系数据表。

客户入住登记:

{客户编号,客户姓名,年龄,性别,身份证号,户籍,客房号,客房类型,客房价格,住宿日期住宿时间,离宿日期,离宿时间,押金,账单编号}

客房表:

{客房号,客房类型,客房价格,房间状态}

退房登记表:

{客户编号,客户姓名,身份证号,客房号,客房类型,客房价格,住宿日期,住宿价格,

住宿天数,宿费,水费,电话费,总额}

关系数据表确定后要进行数据表的逻辑结构设计,即定义关系数据表中字段名称、数据结构、是否允许为空、关键字、说明等。

(1)客户入住登记表

用于存放客户的入住信息,例如:

客户名,房号等。

表3.1客户入住登记

字段名称

数据结构

是否允许为空

说明

客户编号

Int

NOTNULL,主键

客户姓名

Varchar(8)

Notnull

入住客户的姓名

年龄

Int

Notnull

性别

Char

Notnull

身份证号

Varchar(20)

Notnull

客户的身份证号

户籍

Varchar(50)

Notnull

客户的户籍地址

客房号

Int

Notnull

客房类型

Text

Notnull

客房价格

Money

Notnull

住宿日期

Datetime

Notnull

住宿时间

Varchar(15)

Notnull

离宿日期

Datetime

Notnull

离宿时间

Varchar(15)

Notnull

押金

Money

Notnull

账单编号

Int

Notnull

 

字段名称

数据结构

是否允许为空

说明

客房号

Int

NOTNULL,主键

唯一标识每个房间

客房类型

Text

NOTNULL

客房价格

Money

NOTNULL

客房状态

Varchar

(2)

NOTNULL

(2)客房表

用于存放客房的相关信息,例如:

房号,房间类型,房间状态等。

表3.2客房表

 

(3)退房登记表

退房登记表表用于存放客户消费的信息。

 

表3.3退房登记表

字段名称

数据结构

是否允许为空

说明

客户编号

Int

Notnull

唯一标示每个客户

客户姓名

Varchar(8)

Notnull

身份证号

Varchar(20)

Notnull

客房号

Int

Notnull

客房类型

Text

Notnull

客房价格

Moeny

Notnull

住宿日期

Datetime

Notnull

住宿时间

Varchar(15)

Notnull

住宿天数

Int

Notnull

宿费

Money

Notnull

水费

Money

Notnull

电话费

Money

Notnull

总额

Money

Notnull

4、数据库物理结构设计

根据代码自动生成表,其物理结构表如下

1.“客房”表的物理结构

“客房”表的物理结构如图4.1所示,关键字为”客房号”

图4.1

 

2.“客户入住登记”表的物理结构

“客户”表的物理结构如图4.2所示,关键字为”客户编号”,利用”客房号”可与”退房登记”表和”客房号”表建立联系。

 

图4.2

 

3.“退房登记”表的物理结构

“退房登记”表的物理结构如图4.3所示,关键字为”客户编号”。

图4.3

五、数据库的实施

根据以上所进行的调查、设计和进行方案,建立并实施数据库。

此系统运用

SQLServer2000进行数据库的开发。

1.数据库建表语句

⑴名称:

客户入住登记

标示:

客户编号

建表语句如下:

createtable客户入住登记

客户编号intnotnull,

客户姓名varchar(8)notnull,

年龄int

constraintC1check(年龄between1and80),

性别char

(2)check(性别in('男','女')),

身份证号varchar(20)notnull,

户籍varchar(50)notnull,

客房号intcheck(客房号>=1and客房号<=100),

客房类型textnotnull,

客房价格moneynotnull,

住宿日期datetimenotnull,

住宿时间varchar(15)notnull,

离宿日期datetimenotnull,

离宿时间varchar(15)notnull,

押金moneynotnull,

账单编号intnotnull,

primarykey(客户编号),

foreignkey(客房号)references客房表(客房号)

ondeletecascade

onupdatecascade,

);

⑵名称:

客房表“客房”

标识:

客房号

建表语句如下:

createtable客房表

客房号intcheck(客房号between1and100),

客房类型textnotnull,

客房价格moneynotnull,

客房状态varchar

(2)check(客房状态in('满','空')),

primarykey(客房号)

);

(3)名称:

结算账单表“结算账单”

标识:

客户编号

建表语句如下:

createtable退房登记表

客户编号intnotnull,

客户姓名varchar(8)notnull,

身份证号varchar(20)notnull,

客房号intnotnull,

客房类型textnotnull,

客房价格moneynotnull,

住宿日期datetimenotnull,

住宿时间varchar(15)notnull,

住宿天数intnotnull,

宿费moneynotnull,

水费moneynotnull,

电话费moneynotnull,

总额moneynotnull,

primarykey(客户编号),

foreignkey(客房号)references客房表(客房号)

ondeletecascade

onupdatecascade,

 

2.数据库的建立触发器语句

(1)建立触发器名“登记”

CREATETRIGGER登记

ON客户入住登记

FORINSERT

AS

declare@idint

declare@statevarchar

(2)

begin

set@id=(select客房号frominserted)

set@state=(select客房状态from客房表where客房号=@id)

if@state='空'

begin

update客房表set客房状态='满'where客房号=@id

print'登记成功'

end

else

print'登记失败,已有人'

end

 

(2)建立触发器名“登记”

CREATETRIGGER退房

ON客户入住登记

FORdelete

AS

declare@idint

declare@namevarchar(8)

declare@cardIdvarchar(20)

declare@houseNoint

declare@houseTypevarchar(15)

declare@housePriceint

declare@registerDatedatetime

declare@leaveDatedatetime

declare@registerTimevarchar(15)

declare@sumDayint

declare@homePaymoney

declare@waterPaymoney

declare@phonePaymoney

declare@payCheckmoney

begin

select@id=客户编号,@name=客户姓名,@cardId=身份证号,@houseNo=客房号,@houseType=客房类型,@housePrice=客房价格,@registerDate=住宿日期,@registerTime=住宿时间,@leaveDate=离宿日期,@homePay=客房价格fromdeleted

set@sumDay=abs(datediff(dd,@registerDate,@leaveDate))

set@phonePay=cast(20asmoney)

set@waterPay=cast(10asmoney)

set@payCheck=@housePrice*@sumDay

Insertinto退房登记表values(@id,@name,@cardId,@houseNo,@houseType,@housePrice,convert(varchar

(10),@registerDate,101),@registerTime,@sumDay,@payCheck,@waterPay,@phonePay,(@waterPay+@phonePay+@housePrice)*@sumDay)

update客房表set客房状态='空'where客房号=@houseNo

End

6、数据库的操作

备注(1-5普通单人间,6-10豪华单人间,11-15豪华套房,16-30总统套房)

--数据库设计功能调试步骤

--

(1)首先创建触发器名为“登记”,然后调试插入新客户信息

--代码如下

--创建触发器代码

CREATETRIGGER登记

ON客户入住登记

FORINSERT

AS

declare@idint

declare@statevarchar

(2)

begin

set@id=(select客房号frominserted)

set@state=(select客房状态from客房表where客房号=@id)

if@state='空'

begin

update客房表set客房状态='满'where客房号=@id

print'登记成功'

end

else

print'登记失败,已有人'

end

--插入新客户信息则显示成功

insertinto客户入住登记

values(7,'钱想',20,'男','342690199082312311','江苏泰州',30,'总统套房',500,'2011-1-07',convert(varchar(5),getdate(),108),'2011-8-23','18:

09',50,2011002)

--查询客户入住登记以及客房信息

select*from客户入住登记where客户编号=7

--查询客房表信息

select*from客房表where客房号=30

--删除触发器

dropTRIGGER登记

--如果重复分配客房号,则显示错误,因为违背完整性定义

insertinto客户入住登记

values(22,'李二',20,'男','342690199082312311','江苏泰州',30,'总统套房',500,'2011-1-07',convert(varchar(5),getdate(),108),'2011-8-23','18:

09',50,2011002)

deletefrom客户入住登记where客户编号=22

--

(2)创建触发器名为“退房”,然后退房信息

--创建触发器“退房”代码

CREATETRIGGER退房

ON客户入住登记

FORdelete

AS

declare@idint

declare@namevarchar(8)

declare@cardIdvarchar(20)

declare@houseNoint

declare@houseTypevarchar(15)

declare@housePriceint

declare@registerDatedatetime

declare@leaveDatedatetime

declare@registerTimevarchar(15)

declare@sumDayint

declare@homePaymoney

declare@waterPaymoney

declare@phonePaymoney

declare@payCheckmoney

begin

select@id=客户编号,@name=客户姓名,@cardId=身份证号,@houseNo=客房号,@houseType=客房类型,@housePrice=客房价格,@registerDate=住宿日期,@registerTime=住宿时间,@leaveDate=离宿日期,@homePay=客房价格fromdeleted

set@sumDay=abs(datediff(dd,@registerDate,@leaveDate))

set@phonePay=cast(20asmoney)

set@waterPay=cast(10asmoney)

set@payCheck=@housePrice*@sumDay

insertinto退房登记表values(@id,@name,@cardId,@houseNo,@houseType,@housePrice,convert(varchar

(10),@registerDate,101),@registerTime,@sumDay,@payCheck,@waterPay,@phonePay,(@waterPay+@phonePay+@housePrice)*@sumDay)

update客房表set客房状态='空'where客房号=@houseNo

end

--删除客户信息(从退房登记表中删除,则此人已经退房)

deletefrom退房登记表where客户编号=7

--查询客房信息

--须首先从客户入住登记中删除

deletefrom客户入住登记where客户编号=7

--查询该客房号信息

select*from客房表where客房号=30

--删除触发器“退房”

dropTRIGGER退房

--(3)修改客户信息

--修改客户信息

update客户入住登记

set客户姓名='钱达',身份证号='342690188002312311',客房类型='标准单人间'

where客户编号=9

--查询修改后的信息

select*

from客户入住登记where客户编号=9

 

欢迎您的下载,

资料仅供参考!

 

致力为企业和个人提供合同协议,策划案计划书,学习资料等等

打造全网一站式需求

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1