DataBase.docx
《DataBase.docx》由会员分享,可在线阅读,更多相关《DataBase.docx(13页珍藏版)》请在冰豆网上搜索。
DataBase
课程设计报告
课程设计题目:
酒店管理系统
学生姓名:
侯清源
专业:
软件嵌入
班级:
10211111
学号:
1021111118
指导教师:
邓薇
2011-11-22
东华理工大学
课程设计评分表
学生姓名:
班级:
学号:
课程设计题目:
项目内容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(5人一题)
10
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
10
理论依据充分,数据准确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能体现创造性思维,或有独特见解
10
成
果
质
量
总体设计正确、合理,各项技术指标符合要求。
10
说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰
10
设计说明书栏目齐全、合理,符号统一、编号齐全。
格式、绘图、表格、插图等规范准确,符合国家标准
10
有一定篇幅,字符数不少于5000
10
总分
100
指导教师评语:
指导教师签名:
年月日
(注:
评分表填写好个人及课程设计题目等信息后放在课程设计报告的封面后的第一页,和课程设计报告一起装订)
1,系统功能分析
2,数据分析和E-R图
3,SQL建表,并根据上述分析建立主键,索引等相关约束
4,建立存储过程
5,建立触发器,保证数据一致性
6,正式操作实验部分
7,实验总结
房间信息表Room(房间号Cid,住房状态Rstat,房价Rprice)
客户住房信息表CR(房间号Rid,客户身份号Cid,入住日期Rindate,应付金额Rmoney)
3,SQL建表,并根据上述分析建立主键,索引等相关约束
1,建立数据库
CREATEDATABASEHotelMan--------1,建立数据库:
HotelMan
ON---------数据库文件
(
NAME=HotelMan,---------数据库名:
HotelMan
FILENAME='D:
\HotelMan.mdf',-------存储文件名:
HotelMan.mdf
SIZE=2024KB,--------文件大小:
2024kb
MAXSIZE=UNLIMITED,---------数据库文件大小:
没有限制
FILEGROWTH=1024KB----------文件自增长大小:
1024kb
)
LOGON--------备份数据库文件
(
NAME=Hotel_log,---------备份数据库名:
HotelMan_log
FILENAME='D:
\HotelMan_log.ldf',----------备份数据文件名:
HotelMan_log.ldf
SIZE=2024KB,----------文件大小:
2024kb
MAXSIZE=UNLIMITED,---------数据库文件大小:
没有限制
FILEGROWTH=1024KB---------文件自增长大小:
1024kb
)
2,创建客户信息表Customer
USEHotelMan---利用数据库HotelMan
CREATETABLECustomer---创建表:
Customer
(
CidCHAR(8)CONSTRAINTC_PrimPRIMARYKEY,---客户号Cid:
主键约束
CNCHAR(8)NOTNULL,----客户姓名CN:
非空约束
SexCHAR
(2)DEFAULT'男',---性别:
默认为男
AgeINTDEFAULT20---年龄:
默认为20岁
)
CREATEUNIQUEINDEXC_indexONCustomer(Cid)---创建唯一索引:
C_index
3,创建房间信息表Room
USEHotelMan---利用数据库:
HotelMan
CREATETABLERoom---创建表:
Room
(
RidCHAR(8)CONSTRAINTR_PrimPRIMARYKEY,--房间号Rid:
主键约束
RpriceMONEYNOTNULLDEFAULT50,---房价Rprice:
默认为50
RstatCHAR
(2)NOTNULLDEFAULT'空'---住房状态Rstat:
默认为空
)
CREATEUNIQUEINDEXR_indexONRoom(Rid)---创建唯一索引:
R_inde
4,客户住房信息表CR
USEHotelMan----利用数据库:
HotelMan
CREATETABLECR----创建表:
CR
(
RidCHAR(8),----房间号Rid
CidCHAR(8),---客户号Cid
RindateDATETIME,---入住日期Rindate
RmoneyMONEY,---应付房价Rmoney
CONSTRAINTCR_PrimPRIMARYKEY(Rid,Cid)---Rid和Cid为主键
)
1,建立存储过程
1,创建添加客户的存储过程
CREATEPROCEDURECustomerAdd---创建添加客户信息的存储过程
(
@cidCHAR(8),
@cnCHAR(8),
@sexCHAR
(2),
@ageINT
)
AS
INSERTINTOCustomerVALUES(@cid,@cn,@sex,@age)
2,创建修改客户信息的存储过程
CREATEPROCEDURECustomerEdit
(
@cidCHAR(8),
@cnCHAR(8),
@sexCHAR
(2),
@ageINT,
@infoVARCHAR(30)OUTPUT
)
AS
IFEXISTS(SELECT*FROMCustomerWHERECid=@cid)
UPDATECustomer
SETCN=@cn,
Sex=@sex,
Age=@age,
@info='修改成功'WHERECid=@cid
ELSE
SET@info='不存在该客户!
'
3,创建删除客户信息的存储过程
CREATEPROCEDURECustomerDelete
(
@cidCHAR(8),
@infoVARCHAR(20)OUTPUT
)
AS
IFEXISTS(SELECT*FROMCustomerWHERECid=@cid)
BEGIN
DELETEFROMCustomerWHERECid=@cid
IF@@ERROR=0
SET@info='删除成功'
ELSE
SET@info='删除失败'
END
ELSE
SET@info='不存在该客户'
4,创建添加房间信息的存储过程
CREATEPROCEDURERoomAdd
(
@ridCHAR(8),
@priceMONEY
)
AS
INSERTINTORoom(Rid,Rprice)VALUES(@rid,@price)
5,创建修改房间信息的存储过程
CREATEPROCEDURERoomEdit
(
@ridCHAR(8),
@rstatCHAR(8),
@priceMONEY,
@infoVARCHAR(20)OUTPUT
)
AS
IFEXISTS(SELECT*FROMRoomWHERERid=@rid)
BEGIN
UPDATERoom
SETRid=@rid,
Rstat=@rstat,
Rprice=@price,
@info='修改成功'WHERERid=@rid
END
ELSE
SET@info='不存在该房间'
6,创建删除房间的存储过程
CREATEPROCEDURERoomDelete
(
@ridCHAR(8),
@infoVARCHAR(20)OUTPUT
)
AS
IFEXISTS(SELECT*FROMRoomWHERERid=@rid)
BEGIN
DELETEFROMRoomWHERERid=@rid
IF@@ERROR=0
SET@info='删除成功'
ELSE
SET@info='删除失败'
END
ELSE
SET@info='不存在该房间'
7,创建添加客户住房信息的存储过程—同时修改对应房间为住
CREATEPROCEDURECRAdd
(
@ridCHAR(8),
@cidCHAR(8),
@infoVARCHAR(30)OUTPUT
)
AS
IFEXISTS(SELECT*FROMRoom,CustomerWHERERid=@ridANDCid=@cid)
BEGIN
INSERTINTOCR(Rid,Cid,Rindate)VALUES(@rid,@cid,GETDATE())
UPDATERoomSETRstat='住'WHERERid=@rid
SET@info='客户住房信息添加成功!
'
END
IFNOTEXISTS(SELECT*FROMRoomWHERERid=@rid)
SET@info='没有该房间号,不能添加!
'
IFNOTEXISTS(SELECT*FROMCustomerWHERECid=@cid)
SET@info='该客户没有登记身份,不能添加!
'
ELSE
SET@info='没有该房间号和客户身份,不能添加!
'
8,创建修改客户住房信息的存储过程
CREATEPROCEDURECREdit
(
@ridCHAR(8),
@cidCHAR(8),
@indateDATETIME,
@infoVARCHAR(20)OUTPUT
)
AS
IFEXISTS(SELECT*FROMCRWHERECid=@cidANDRid=@rid)
BEGIN
UPDATECR
SETRindate=@indate,
@info='修改成功'
WHERECid=@cidANDRid=@rid
END
ELSE
SET@info='不存在该客户的住房信息'
5,建立触发器,保证数据一致性
1,更新显示的触发器
当Customer插入、删除、更新时显示Customer的内容
CREATETRIGGERChangeDisplayCustomer
ONCustomer
FORINSERT,DELETE,UPDATE
AS
SELECT*FROMCustomer
当CR表插入、删除、更新时显示CR、Customer、Room的内容
CREATETRIGGERChangeDisplayCR
ONCR
FORINSERT,DELETE,UPDATE
AS
SELECT*FROMCR
SELECT*FROMCustomer
SELECT*FROMRoom
当Room表插入、删除、更新显示Room的信息
CREATETRIGGERChangeDisplayRoom
ONRoom
FORINSERT,DELETE,UPDATE
AS
SELECT*FROMRoom
2,创建结账的存储过程—结账时修改对应房间状态为空
CREATEPROCEDURECountMoneyRidCid
(
@ridCHAR(8),
@cidCHAR(8),
@infoVARCHAR(20)OUTPUT
)
AS
IFEXISTS(SELECT*FROMCRWHERERid=@ridANDCid=@cid)
BEGIN
UPDATECR
SETRmoney=(SELECTRpriceFROMRoomWHERERid=@rid)*DATEDIFF(dd,(SELECTRindateFROMCRWHERECid=@cid),GETDATE())
WHERECid=@cid
UPDATERoom
SETRstat='空',@info='结账成功'WHERERid=@rid
END
ELSE
SET@info='要结账的房间号或者客户号不存在,提示客户!
'
6,正式操作实验部分
1,Room
EXECSp_helptextRoomAdd
EXECRoomAdd@rid='001',@price=20
EXECRoomAdd@rid='002',@price=20
EXECRoomAdd@rid='003',@price=20
EXECRoomAdd@rid='004',@price=20
EXECRoomAdd@rid='005',@price=20
EXECRoomAdd@rid='006',@price=20
EXECRoomAdd@rid='007',@rstat='空',@price=20
2,Customer
EXECSp_helptextCustomerAdd
SELECT*FROMCustomer
EXECCustomerAdd@cid='1',@cn='诸金宏',@sex='男',@age=20
EXECCustomerAdd@cid='2',@cn='李廷森',@sex='男',@age=20
EXECCustomerAdd@cid='3',@cn='邓声宇',@sex='男',@age=20
EXECCustomerAdd@cid='4',@cn='侯清源',@sex='男',@age=20
3,CR
EXECSp_helptextCRAdd
SELECT*FROMCR
DROPTABLECR
DECLARE@infoVARCHAR(20
EXECCRAdd@rid='001',@cid='1',@infooutput
print@message
EXECCRAdd@rid='002',@cid='2',@info='0'
EXECCRAdd@rid='003',@cid='3',@info='0'
EXECCRAdd@rid='004',@cid='4',@info='0'
4,CountMoneyRidCid
EXECSp_helptextCountMomeyRidCid
EXECCountMoneyRidCid@rid='002',@cid='2',@info='0'
7,实验总结
在本次实验中,主要学会了如何创建触发器。
保证自动显示数据,自动结账。
最主要是了解了如何开发VB数据库系统应用。