数据库客房管理系统代码文档格式.docx

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

数据库客房管理系统代码文档格式.docx

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

数据库客房管理系统代码文档格式.docx

三、数据库逻辑结构设计

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

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

客户入住登记:

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

客房表:

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

退房登记表:

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

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

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

(1)客户入住登记表

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

客户名,房号等。

表3.1客户入住登记

字段名称

数据结构

是否允许为空

说明

客户编号

Int

NOTNULL,主键

客户姓名

Varchar(8)

Notnull

入住客户的姓名

年龄

性别

Char

身份证号

Varchar(20)

客户的身份证号

户籍

Varchar(50)

客户的户籍地址

客房号

客房类型

Text

客房价格

Money

住宿日期

Datetime

住宿时间

Varchar(15)

离宿日期

离宿时间

押金

账单编号

NOTNULL,主键

唯一标识每个房间

NOTNULL

客房状态

Varchar

(2)

(2)客房表

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

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

表3.2客房表

(3)退房登记表

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

表3.3退房登记表

唯一标示每个客户

Int

Moeny

住宿天数

宿费

水费

电话费

总额

四、数据库物理结构设计

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

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),

客房状态varchar

(2)check(客房状态in('

满'

空'

primarykey(客房号)

(3)名称:

结算账单表“结算账单”

createtable退房登记表

客房号intnotnull,

住宿天数intnotnull,

宿费moneynotnull,

水费moneynotnull,

电话费moneynotnull,

总额moneynotnull,

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

登记失败,已有人'

end

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

CREATETRIGGER退房

FORdelete

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

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

六、数据库的操作

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

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

--

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

--代码如下

--创建触发器代码

CREATETRIGGER登记

ON客户入住登记

FORINSERT

AS

declare@idint

declare@statevarchar

(2)

set@id=(select客房号frominserted)

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

if@state='

else

end

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

insertinto客户入住登记

values(7,'

钱想'

20,'

3426911'

江苏泰州'

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登记

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

values(22,'

李二'

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

--

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

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

CREATETRIGGER退房

FORdelete

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

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)

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

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

--查询客房信息

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

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

--查询该客房号信息

--删除触发器“退房”

dropTRIGGER退房

--(3)修改客户信息

--修改客户信息

update客户入住登记

set客户姓名='

钱达'

身份证号='

342691'

客房类型='

标准单人间'

where客户编号=9

--查询修改后的信息

select*

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

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

当前位置:首页 > 医药卫生 > 预防医学

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

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