酒店管理系统 数据库课程设计.docx
《酒店管理系统 数据库课程设计.docx》由会员分享,可在线阅读,更多相关《酒店管理系统 数据库课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
![酒店管理系统 数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/29/b26f1880-9806-4136-8aea-cde687818324/b26f1880-9806-4136-8aea-cde6878183241.gif)
酒店管理系统数据库课程设计
数据库酒店管理系统课程设计
(基于SQLserver2000)
实现过程
1.1通过查询分析器实现建立数据库、数据表
------------------------------创建数据库和数据表----------------------------------
(1)创建酒店管理系统数据库
CREATEDATABASE酒店管理系统
(2)创建客房信息表
CREATETABLE客房
(客房编号CHAR(8)PRIMARYKEY,
客房类型CHAR(8)NOTNULL,
价格SMALLMONEYNOTNULL,
床位数INTNOTNULL,
使用状态CHAR(8)NOTNULL)
INSERTINTO客房VALUES('101','一',100,1,'在使用')
INSERTINTO客房VALUES('102','二',200,2,'在使用')
INSERTINTO客房VALUES('103','二',200,1,'在使用')
INSERTINTO客房VALUES('104','三',300,2,'在使用')
INSERTINTO客房VALUES('105','三',300,1,'未使用')
(3)创建客户信息表
CREATETABLE客户
(客户编号CHAR(8)PRIMARYKEY,
客户名称CHAR(10)NOTNULL,
身份证号CHAR(18)NOTNULL,
联系地址CHAR(25),
联系电话CHAR(10))
INSERTINTO客户VALUES('1001','王一',12234,'江西','3245354')
INSERTINTO客户VALUES('1002','张三',34234,'江西','2442442')
INSERTINTO客户VALUES('1003','李四',56465,'江西','5654645')
INSERTINTO客户VALUES('1004','王钱',65435,'江西','5676577')
INSERTINTO客户VALUES('1005','孙志',11464,'江西','4234343')
(4)创建入住登记表
CREATETABLE入住登记
(客房编号CHAR(8)FOREIGNKEYREFERENCES客房(客房编号),
客户编号CHAR(8)FOREIGNKEYREFERENCES客户(客户编号),
预定日期DATETIME,
预定数量INT,
PRIMARYKEY(客房编号,客户编号))
INSERTINTO入住登记VALUES('101','1001',2010-10-10,1)
INSERTINTO入住登记VALUES('102','1002',2010-12-10,1)
INSERTINTO入住登记VALUES('103','1003',2010-12-26,1)
INSERTINTO入住登记VALUES('104','1004',2010-12-9,1)
---------------------------------------创建查询视图----------------------------------------
1.2系统功能相应的查询视图:
(1)客户信息查询视图
CREATEVIEW客户信息查询
ASSELECT*FROM客户
(2)客房信息查询
CREATEVIEW客房信息查询
ASSELECT*FROM客房
(3)入住信息查询
CREATEVIEW入住登记信息查询
ASSELECT*FROM入住登记
(4)入住信息查询
CREATEVIEW入住信息查询
ASSELECT入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM客房,客户,入住登记
WHERE客房.客房编号=入住登记.客房编号AND入住登记.客户编号=客户.客户编号
----------------------------------------------建立索引------------------------------------------------------
1.3建立索引及数据入库
1.建立客房编号,价格,客户编号,客户名称的索引
创建客房表索引:
CREATEUNIQUEINDEXUKFON客房(客房编号,价格)
创建客户表索引:
CREATEUNIQUEINDEXUKHON客户(客户编号,客户名称)
创建入住表索引:
CREATEUNIQUEINDEXURZON入住登记(客户编号,客房编号)
2.数据入库
方法一酒店管理系统包括客房信息表,客户信息表,入住登记信息表。
采用Excel中录入数据,然后使用SQLServer2000数据导入、导出功能直接将数据导入到相应的基本表。
方法二在查询分析器中插入相关数据,用SQL语句插入。
-----------------------------------------创建存储过程-----------------------------------------------------
1.4建立存储过程
1.4.1客房信息存储过程
插入客房信息存储过程:
CREATEPROCEDURE插入客房信息
(@KFBCHAR(8),
@KFLCHAR(8),
@JGSMALLMONEY,
@CWSINT,
@SYZTCHAR(8)
)
AS
INSERTINTO客房VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)
修改客房信息存储过程:
CREATEPROCEDURE修改客房信息
(@KFBCHAR(8),
@KFLCHAR(8),
@JGSMALLMONEY,
@CWSINT,
@SYZTCHAR(8)
)
AS
UPDATE客房
SET客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT
WHERE客房编号=@KFB
删除客房信息存储过程:
CREATEPROCEDURE删除客房信息
(@KFBCHAR(8)
)
AS
DELETEFROM客房WHERE客房编号=@KFB
1.4.2客户信息存储过程
插入客户信息
CREATEPROCEDURE插入客户信息
(@KHBCHAR(8),
@KFMCHAR(10),
@SFZCHAR(18),
@LXDZCHAR(25),
@LXDHCHAR(10)
)
AS
INSERTINTO客户VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)
修改客户信息
CREATEPROCEDURE修改客户信息
(@KHBCHAR(8),
@KFMCHAR(10),
@SFZCHAR(18),
@LXDZCHAR(25),
@LXDHCHAR(10)
)
AS
UPDATE客户
SET客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH
WHERE客户编号=@KHB
删除客户信息
CREATEPROCEDURE删除客户信息
(@KHBCHAR(8))
AS
DELETE
FROM客户
WHERE客户编号=@KHB
EXEC删除客户信息@KHB='10009'
3.4.3创建入住信息存储过程
插入入住信息
CREATEPROCEDURE插入入住信息
(@KFBCHAR(8),
@KHBCHAR(8),
@YDRQDATETIME,
@YDSLINT
)
AS
INSERTINTO入住登记VALUES(@KFB,@KHB,@YDRQ,@YDSL)
修改入住信息
CREATEPROCEDURE修改入住信息
(@KFBCHAR(8),
@KHBCHAR(8),
@YDRQDATETIME,
@YDSLINT
)
AS
UPDATE入住登记
SET客房编号=@KFB,预定日期=@YDRQ,预定数量=@YDSL
WHERE客户编号=@KHB
删除入住信息
CREATEPROCEDURE删除入住信息
(
@KHBCHAR(8)
)
AS
DELETE
FROM入住登记
WHERE客户编号=@KHB
1.5查询存储过程的创建
客房编号查询
CREATEPROCEDURE客房编号查询
(@KFBCHAR(8),
@KFLCHAR(8)OUTPUT,
@JGSMALLMONEYOUTPUT,
@CWSINTOUTPUT,
@SYZTCHAR(8)OUTPUT
)
AS
SELECT@KFL=客房类型,@JG=价格,@CWS=床位数,@SYZT=使用状态
FROM客房
WHERE客房编号=@KFB
客户编号查询
CREATEPROCEDURE客户编号查询
(@KHBCHAR(8),
@KFMCHAR(10)OUTPUT,
@SFZCHAR(18)OUTPUT,
@LXDZCHAR(25)OUTPUT,
@LXDHCHAR(10)OUTPUT
)
AS
SELECT@KFM=客户名称,@SFZ=身份证号,@LXDZ=联系地址,@LXDH=联系电话
FROM客户
WHERE客户编号=@KHB
入住客户编号查询
CREATEPROCEDURE入住客户编号查询
(@KFBCHAR(8)OUTPUT,
@KHBCHAR(8),
@YDRQDATETIMEOUTPUT,
@YDSLINTOUTPUT
)
AS
SELECT@KFB=客房编号,@YDRQ=预定日期,@YDSL=预定数量
FROM入住登记
WHERE客户编号=@KHB
---------------------------------------建立触发器---------------------------------------------
1.6、建立触发器保证数据的一致性
客房使用状态的控制
CREATETRIGGER控制触发器
ON入住登记
FORINSERT
AS
UPDATE客房
SET使用状态='使用中'
WHERE客房编号=ANY(SELECT客房编号FROMINSERTED)
控制入住信息删除的触发器
CREATETRIGGER入住删除触发器
ON入住登记
FORDELETE
AS
BEGIN
DELETE
FROM客户
WHERE客户编号=ANY(SELECT客户编号FROMDELETED)
UPDATE客房
SET使用状态='未使用'
WHERE客房编号=ANY(SELECT客房编号FROMDELETED)
END
客户信息删除的控制
CREATETRIGGER客户删除触发器
ON客户
FORDELETE
AS
BEGIN
DELETE
FROM入住
WHERE客户编号=ANY(SELECT客户编号FROMDELETED)
UPDATE客房
SET使用状态='未使用'
WHERE客房编号=ANY(SELECT客房编号FROMDELETED)
END
客房删除触发器
CREATETRIGGER客房删除触发器
ON客房
FORDELETE
AS
DELETE
FROM入住
WHERE客户编号=ANY(SELECT客户编号FROMDELETED)
酒店管理系统数据库脚本
------------------------数据库初始化-------------------------------------
setnocounton
setdateformatmdy
go
usemaster
go
ifexists(select*fromsysdatabaseswherename='酒店管理系统')/*删除在master中已存*//*在的名为酒店管理系统的数据库*/
dropdatabase酒店管理系统
go
--------------------------酒店管理系统的建立--------------------------------
createdatabase酒店管理系统
onprimary/*设定系统主文件*/
(name='酒店管理系统_data',
filename='d:
\酒店管理系统.mdf',
size=10,
maxsize=50,
filegrowth=5)
logon/*创建事务日志文件*/
(name='酒店管理系统_log',
filename='d:
\酒店管理系统.ldf',
size=5,
maxsize=25,
filegrowth=5)
go
---------(注:
删除查询分析器中的以上代码后,运行以下代码)----------
--------------------------------------建立信息表-----------------------------------------
use酒店管理系统
ifexists(select*fromsysobjectswherename='客户')
droptable客户
go
print'droptable客户'
print'createtable客户'
go
/*客户信息表*/
CREATETABLE客户/*创建客户信息表*/
(客户编号CHAR(8)PRIMARYKEY,
客户名称CHAR(10)NOTNULL,
身份证号CHAR(18)NOTNULL,
联系地址CHAR(25),
联系电话CHAR(10))
go
--------------------------插入客户数据-----------------------
INSERTINTO客户VALUES('1001','王一',12234,'江西','3245354')
INSERTINTO客户VALUES('1002','张三',34234,'江西','2442442')
INSERTINTO客户VALUES('1003','李四',56465,'江西','5654645')
INSERTINTO客户VALUES('1004','王钱',65435,'江西','5676577')
INSERTINTO客户VALUES('1005','孙志',11464,'江西','4234343')
--------------------------------------------------------------
ifexists(select*fromsysobjectswherename='客房')
droptable客房
go
print'droptable客房'
print'createtable客房'
go
/*客房信息表*/
CREATETABLE客房/*创建客房信息表*/
(客房编号CHAR(8)PRIMARYKEY,
客房类型CHAR(8)NOTNULL,
价格SMALLMONEYNOTNULL,
床位数INTNOTNULL,
使用状态CHAR(8)NOTNULL)
go
-----------------------插入客房数据----------------------
INSERTINTO客房VALUES('101','一',100,1,'使用中')
INSERTINTO客房VALUES('102','二',200,2,'使用中')
INSERTINTO客房VALUES('103','二',200,1,'使用中')
INSERTINTO客房VALUES('104','三',300,2,'使用中')
INSERTINTO客房VALUES('105','三',300,1,'使用中')
--------------------------------------------------------------
ifexists(select*fromsysobjectswherename='入住登记')
droptable入住登记
go
print'droptable入住登记'
print'createtable入住登记'
go
/*入住登记信息表*/
CREATETABLE入住登记/*创建入住登记信息表*/
(客房编号CHAR(8)FOREIGNKEYREFERENCES客房(客房编号),
客户编号CHAR(8)FOREIGNKEYREFERENCES客户(客户编号),
预定日期DATETIME,
预定数量INT,
PRIMARYKEY(客房编号,客户编号))
go
---------------插入入住登记信息数据----------------------
INSERTINTO入住登记VALUES('101','1001',2010-10-10,1)
INSERTINTO入住登记VALUES('102','1002',2010-12-10,1)
INSERTINTO入住登记VALUES('103','1003',2010-12-26,1)
INSERTINTO入住登记VALUES('104','1004',2010-12-9,1)
go
------------------------------------建立索引--------------------------------------------------
CREATEUNIQUEINDEXUKFON客房(客房编号,价格)
go
CREATEUNIQUEINDEXUKHON客户(客户编号,客户名称)
go
CREATEUNIQUEINDEXURZON入住登记(客户编号,客房编号)
go
-----------------------------------建立触发器-------------------------------------------------
-------建立控制触发器(保证在客房使用状态的一致性)------
ifexists(select*fromsysobjectswherename='控制触发器')
droptrigger控制触发器
GO
CREATETRIGGER控制触发器
ON入住登记
FORINSERT
AS
UPDATE客房
SET使用状态='使用中'
WHERE客房编号=ANY(SELECT客房编号FROMINSERTED)
go
--------建立入住删除触发器(保证信息删除的一致性)----------
ifexists(select*fromsysobjectswherename='入住删除触发器')
droptrigger入住删除触发器
GO
CREATETRIGGER入住删除触发器
ON入住登记
FORDELETE
AS
BEGIN
DELETE
FROM客户
WHERE客户编号=ANY(SELECT客户编号FROMDELETED)
UPDATE客房
SET使用状态='未使用'
WHERE客房编号=ANY(SELECT客房编号FROMDELETED)
END
go
-------建立客房删除触发器(保证删除的一致性)---------
ifexists(select*fromsysobjectswherename='客房删除触发器')
droptrigger客房删除触发器
GO
CREATETRIGGER客房删除触发器
ON客房
FORDELETE
AS
DELETE
FROM入住
WHERE客户编号=ANY(SELECT客户编号FROMDELETED)
go
----------------------------------------创建查询视图-----------------------------------------------
CREATEVIEW入住信息查询
ASSELECT入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM客房,客户,入住登记
WHERE客房.客房编号=入住登记.客房编号AND入住登记.客户编号=客户.客户编号
go
----------------------------------------建立存储过程-----------------------------------------------
--------------客房信息插入存储过程--------------------------
CREATEPROCEDURE插入客房信息
(@KFBCHAR(8),
@KFLCHAR(8),
@JGSMALLMONEY,
@CWSINT,
@SYZTCHAR(8)
)
AS
INSERTINTO客房VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)
GO
--------------------客房信息修改的存储过程---------------------
CREATEPROCEDURE修改客房信息
(@KFBCHAR(8),
@KFLCHAR(8),
@JGSMALLMONEY,
@CWSINT,
@SYZTCHAR(8)
)
AS
UPDATE客房
SET客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT
WHERE客房编号=@KFB
go
--------------------客房信息删除的存储过程---------------------
CREATEPROCEDURE删除客房信息
(@KFBCHAR(8)
)
AS
DELETEFROM客房WHERE客房编号=@KFB
GO
--------------------客户信息插入的存储过程---------------------
CREATEPROCEDURE插入客户信息
(@KHBCHAR(8),
@KFMCHAR(10),
@SFZCHAR(18)