数据库酒店管理系统课程设计(基于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))ASINSERTINTO客房VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)修改客房信息存储过程:CREATEPROCEDURE修改客房信息(@KFBCHAR(8),@KFLCHAR(8),@JGSMALLMONEY,@CWSINT,@SYZTCHAR(8))ASUPDATE客房SET客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZTWHERE客房编号=@KFB删除客房信息存储过程:CREATEPROCEDURE删除客房信息(@KFBCHAR(8))ASDELETEFROM客房WHERE客房编号=@KFB1.4.2客户信息存储过程插入客户信息CREATEPROCEDURE插入客户信息(@KHBCHAR(8),@KFMCHAR(10),@SFZCHAR(18),@LXDZCHAR(25),@LXDHCHAR(10))ASINSERTINTO客户VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)修改客户信息CREATEPROCEDURE修改客户信息(@KHBCHAR(8),@KFMCHAR(10),@SFZCHAR(18),@LXDZCHAR(25),@LXDHCHAR(10))ASUPDATE客户SET客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDHWHERE客户编号=@KHB删除客户信息CREATEPROCEDURE删除客户信息(@KHBCHAR(8))ASDELETEFROM客户WHERE客户编号=@KHBEXEC删除客户信息@KHB='10009'3.4.3创建入住信息存储过程插入入住信息CREATEPROCEDURE插入入住信息(@KFBCHAR(8),@KHBCHAR(8),@YDRQDATETIME,@YDSLINT)ASINSERTINTO入住登记VALUES(@KFB,@KHB,@YDRQ,@YDSL)修改入住信息CREATEPROCEDURE修改入住信息(@KFBCHAR(8),@KHBCHAR(8),@YDRQDATETIME,@YDSLINT)ASUPDATE入住登记SET客房编号=@KFB,预定日期=@YDRQ,预定数量=@YDSLWHERE客户编号=@KHB删除入住信息CREATEPROCEDURE删除入住信息(@KHBCHAR(8))ASDELETEFROM入住登记WHERE客户编号=@KHB1.5查询存储过程的创建客房编号查询CREATEPROCEDURE客房编号查询(@KFBCHAR(8),@KFLCHAR(8)OUTPUT,@JGSMALLMONEYOUTPUT,@CWSINTOUTPUT,@SYZTCHAR(8)OUTPUT)ASSELECT@KFL=客房类型,@JG=价格,@CWS=床位数,@SYZT=使用状态FROM客房WHERE客房编号=@KFB客户编号查询CREATEPROCEDURE客户编号查询(@KHBCHAR(8),@KFMCHAR(10)OUTPUT,@SFZCHAR(18)OUTPUT,@LXDZCHAR(25)OUTPUT,@LXDHCHAR(10)OUTPUT)ASSELECT@KFM=客户名称,@SFZ=身份证号,@LXDZ=联系地址,@LXDH=联系电话FROM客户WHERE客户编号=@KHB入住客户编号查询CREATEPROCEDURE入住客户编号查询(@KFBCHAR(8)OUTPUT,@KHBCHAR(8),@YDRQDATETIMEOUTPUT,@YDSLINTOUTPUT)ASSELECT@KFB=客房编号,@YDRQ=预定日期,@YDSL=预定数量FROM入住登记WHERE客户编号=@KHB---------------------------------------建立触发器---------------------------------------------1.6、建立触发器保证数据的一致性客房使用状态的控制CREATETRIGGER控制触发器ON入住登记FORINSERTASUPDATE客房SET使用状态='使用中'WHERE客房编号=ANY(SELECT客房编号FROMINSERTED)控制入住信息删除的触发器CREATETRIGGER入住删除触发器ON入住登记FORDELETEASBEGINDELETEFROM客户WHERE客户编号=ANY(SELECT客户编号FROMDELETED)UPDATE客房SET使用状态='未使用'WHERE客房编号=ANY(SELECT客房编号FROMDELETED)END客户信息删除的控制CREATETRIGGER客户删除触发器ON客户FORDELETEASBEGINDELETEFROM入住WHERE客户编号=ANY(SELECT客户编号FROMDELETED)UPDATE客房SET使用状态='未使用'WHERE客房编号=ANY(SELECT客房编号FROMDELETED)END客房删除触发器CREATETRIGGER客房删除触发器ON客房FORDELETEASDELETEFROM入住WHERE客户编号=ANY(SELECT客户编号FROMDELETED)酒店管理系统数据库脚本------------------------数据库初始化-------------------------------------setnocountonsetdateformatmdygousemastergoifexists(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='客户