数据库酒店客房管理系统_第1页
数据库酒店客房管理系统_第2页
数据库酒店客房管理系统_第3页
数据库酒店客房管理系统_第4页
数据库酒店客房管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库酒店客房管理系统河南城建学院《数据库原理及应用课程设计》专业班级:0834131课程设计题目:酒店客房管理系统指导教师:吴孝丽苏靖枫学生学号:学生姓名:本小组合作者:计算机科学与工程学院6月目录TOC\o"1-2"\h\u69231需求分析阶段 1162141.1概述 158891.2需求阶段的目的及任务 138551.3安全性和完整性规定 29391.4建立数据业务流程及数据字典 2168172概念分析阶段 4239333逻辑设计阶段 5195053.1数据组织 6119653.2数据解决 9236374物理设计阶段 9287434.1数据存储方面 9186724.2系统功效模块 93605数据实施阶段 10206955.1建立数据库、数据表、视图、索引 10305765.2数据入库 1717046系统调试和测试 1719177心得体会 1930617附录 2022435参考文献 251需求分析阶段1.1概述进行数据库系统设计,首先要对系统的现状进行分析,明确自己酒店客房管理系统课程设计所要实现的目的、需求和功效,制订和选择一种较好的系统方案,有计划,有头绪,有思路,不能盲目的就着手去做,从而达成一种合理的优化系统。需求分析在于搞清这次课程设计的酒店管理系统确实切规定,因此,数据库课程设计的第一步就是明确数据库的目的和如何使用该系统。明确目的之后,才干够拟定自己需要保存那些表信息,以及每个表中需要保存哪些字段。对于酒店客房管理系统,需要理解下列内容:1.理解酒店客房管理的基本内容;2.综合的理解酒店客房管理各身份层次的不同需求;3.理解酒店客房管理的基本业务流程;4.理解酒店客房人工管理模式与信息系统的工作概况,以及它们之间的区别;5.通过网上查阅资料以及翻阅有关书籍,理解顾客对酒店客房管理系统的业务规定,安全性和完整性规定;1.2需求阶段的目的及任务(1)解决对象房客基本信息(Customer):房客编号,房客身份证号,房客姓名,房客性别,房客电话;房间基本信息(Room):房间编号,房间类型号,房间位置(楼层),房间描述(朝向);房间类型信息(RoomType):房间类型号,房间类型名,房间面积,房间价格;客房业务历史统计信息(History):房客编号,房客身份证号,房客姓名,房客电话,房间编号,消费金额,入住时间,退房时间;客房业务信息(RoomOperation):房客编号,房客身份证号,房间编号,入住时间;房间状态信息(RoomStatus):房间编号,房间状态(有人/未住)。解决功效及规定系统对酒店客房管理系统的功效及规定以下:①能够存储一定数量的房客信息,并方便有效的进行对应的房客数据操作和管理,这重要涉及:·房客信息的录入,删除和修改;·房客信息的核心字检索查询。②能够对房客的入住信息,换房信息,退房信息,进行对应的操作,这重要涉及:·房客入住,换房,退房的登记,删除及修改;·房客住房历史信息的删除、修改;·房客住房金额的统计与查询。③能够提供一定的安全机制,提供数据信息授权访问,修改和删除,避免随意查询,修改及删除。④对查询、统计的成果能够列表显示。1.3安全性和完整性规定(1)安全性规定系统安全性规定体现在数据库安全性、信息安全性和系统分平台的安全性等方面。安全性之基础的是通过视图机制,不同顾客只能访问系统授权的视图,这样能够提供系统数据一定程度上的安全性。系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。完整性规定系统完整性规定系统中数据的对的性以及相容性。可通过建立主、外键,使用unique约束,或者使用触发器更新。1.4建立数据业务流程及数据字典(1)酒店客房管理系统业务流程图(如图1)图1酒店客房管理系统业务流程图(2)酒店客房管理系统数据字典①数据项:系统涉及的数据项有16项,如表1所示表1数据项列表数据项编号数据项名数据项含义存储构造别名DI-01CuName房客姓名NVARCHAR(10)姓名DI-02CuNo房客编号NCHAR(6)房客号DI-03CuSex房客性别NCHAR(2)性别DI-04RoomNo房间号NCHAR(6)房间号DI-05CuPhone房客电话NVARCHAR(20)电话DI-06CuCard房客身份证NVARCHAR(20)身份证DI-07TypeNo房间类型号NCHAR(6)类型号DI-08RoomFloor房间楼层NVARCHAR(10)位置DI-09RoomStatus房间状态NVARCHAR(10)状态DI-10TypeName房间类型名称NVARCHAR(10)类型名DI-11TypeArea房间面积NVARCHAR(10)面积DI-12TypePrice房间价钱INT价钱DI-13Descripiption房间描述NVARCHAR(20)描述DI-14Price房客消费INT消费DI-15IntoTime入住时间DATETIME入住时间DI-16OutTime退房时间DATETIME退房时间EQ\o\ac(○,21)数据构造,如表2所示。更换符合多高多高对法国德国多高多高多高多高多高豆表2数据构造列表数据构造编号数据构造名数据构造含义构成DS-1Customer房客信息CuNo,CuName,CuPhone,CuSex,CuCardDS-2Room房间信息RoomNo,TypeNo,RoomFloor,DescripiptionDS-3RoomType房间类型TypeNo,TypeName,TypeArea,TypePriceDS-4History业务统计信息CuNo,CuName,CuPhone,CuCard,Price,OutTime,RoomNoDS-5RoomStatus房间状态RoomNo,RoomStatusDS-6RoomOperation客房业务信息RoomNo,CuNo,CuCard,IntoTime2概念分析阶段图2酒店客房管理系统全局E-R图上述E-R图各实体的属性以下所示:房客基本信息:Customer(CuNo,CuCard,CuName,CuSex,CuPhone)房间基本信息:Room(RoomNo,TypeNo,RoomFloor,Description)房间类型信息:RoomType(TypeNo,TypeName,TypeArea,TypePrice)客房业务历史统计信息:History(CuNo,CuCard,CuName,CuPhone,RoomNo,Price,IntoTime,OutTime)客房业务信息:RoomOperation(CuNo,CuCard,RoomNo,IntoTime)房间状态信息:RoomStatus(RoomNo,Status)数据库关系图:3逻辑设计阶段以上的概念设计阶段是独立于任何一种数据模型的,可是逻辑设计阶段就与选用的数据库管理系统(DBMS)产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑构造。具体内容涉及数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、顾客子模式设计)、数据解决(画出系统功效模块图)两大任务。3.1数据组织(1)将E-R图转换为关系模型实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有下列不同的状况:

一种m:n联系转换为一种关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一种1:n联系能够转换为一种独立的关系模式,也能够与n端对应的关系模式合并。如果转换为一种独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

一种1:1联系能够转换为一种独立的关系模式,也能够与任意一端对应的关系模式合并。三个或三个以上实体间的一种多元联系能够转换为一种关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合含有相似码的关系模式可合并。例如房间信息与房间类型信息之间是1:n的关联。能够将其之间的联系转化为独立的关系模式,具体的基本E-R图向关系模型的转化以下:房客基本信息:Customer(CuNo,CuCard,CuName,CuSex,CuPhone)房间基本信息:Room(RoomNo,TypeNo,RoomFloor,Description)房间类型信息:RoomType(TypeNo,TypeName,TypeArea,TypePrice)客房业务历史统计信息:History(CuNo,CuCard,CuName,CuPhone,RoomNo,Price,IntoTime,OutTime)客房业务信息:RoomOperation(CuNo,CuCard,RoomNo,IntoTime)房间状态信息:(RoomNo,Status)(注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性)(2)模型优化第一范式规定每一列的项不可分割,酒店管理系统的六个表都满足了1NF;简朴理解,第二范式规定每个表所描述的是一件事,例如在Room表中如果加上房间状态Status,则Room表就不满足2NF了,它涉及了房间信息和房间与否有房客入住的信息两个事件,因此就有了RoomStatus表;第三范式规定,每一项都不传递依赖,如果Room表中再加上房间类型名,则TypeName通过Room中的TypeNo传递依赖于RoomNo,因此有了RoomType表。现在六张表都达成了3NF。(3)数据库模式定义根据分析,本数据库共创立了6个表,如表3~表8所示表3房客信息表列名数据类型可否为空阐明CuNoNCHARNOTNULL房客编号CuNameNVARCHARNOTNULL房客姓名CuSexNCHAR房客性别CuPhoneNVARCHAR电话CuCardNVARCHARNOTNULL身份证表4房间信息表列名数据类型可否为空阐明RoomNoNCHARNOTNULL房间号TypeNoNCHARNOTNULL类型号RoomFloorNVARCHAR位置DescriptionNVARCHAR描述表5房间类型信息表列名数据类型可否为空阐明TypeNoNCHARNOTNULL类型号TypeNameNVARCHARNOTNULL类型名TypeAreaNVARCHARNOTNULL面积TypePriceINT价钱表6客房业务表列名数据类型可否为空阐明CuNoNCHARNOTNULL房客编号RoomNoNCHAR房间号IntoTimeDATETIME入住时间CuCardNVARCHARNOTNULL身份证表7业务统计表列名数据类型可否为空阐明CuNoNCHAR房客编号CuCardNVARCHAR身份证CuPhoneNVARCHAR电话CuNameNVARCHAR姓名RoomNoNCHARNOTNULL房间号PriceINT消费金额IntoTimeDATETIME入住时间OutTimeDATETIME退房时间表8房间状态表列名数据类型可否为空阐明RoomNoNCHARNOTNULL房间号StatusNVARCHAR状态顾客子模式定义,如表9~12。表9房间基本信息视图列名数据类型可否为空阐明RoomNoNCHARNOTNULL房间号TypeNameNCHARNOTNULL类型号RoomFloorNVARCHAR位置TypePriceINT价钱表10退房房客基本信息视图列名数据类型可否为空阐明CuNameNVARCHAR姓名CuSexNCHAR房客性别CuCardNVARCHARNOTNULL身份证CuPhoneNVARCHAR电话OutTimeDATETIME退房时间表11空房间基本信息视图列名数据类型可否为空阐明RoomNoNCHARNOTNULL房间号TypeNameNCHARNOTNULL类型号RoomFloorNVARCHAR位置TypePriceINT价钱表12房客基本信息视图列名数据类型可否为空阐明CuNameNVARCHAR姓名CuSexNCHAR房客性别CuCardNVARCHARNOTNULL身份证CuPhoneNVARCHAR电话3.2数据解决酒店客房管理系统酒店客房管理系统房客管理房客管理房间管理类型管理增加房间删除房间增加房间删除房间查询住房换房退房修改信息查询住房换房退房修改信息图3系统功效模块图4物理设计阶段数据库的物理设计就是为逻辑数据模型选用一种最适宜应用规定的物理构造的过程,在这个阶段中要完毕两大任务:(1)拟定数据库的物理构造,在关系数据库中重要是存取办法和存储构造;(2)对物理构造进行评价,评价的重点是时间和空间效率。4.1数据存储方面为数据库中各基本表建立的索引以下:EQ\o\ac(○,1)由于基本表History、Customer的CuName、CuCard在现实生活中经常在查询条件中出现,在两个属性上建立索引。4.2系统功效模块实现对房间信息,房客信息的查询、添加、删除操作,功效模块见图3。5数据实施阶段5.1建立数据库、数据表、视图、索引(1)建立数据库Createdatabase酒店客房管理系统(2)建立数据表房客基本信息表的建立:CREATETABLECustomer(CuNoNCHAR(6)PRIMARYKEY,--房客编号CuCardNVARCHAR(20)UNIQUENOTNULL,--身份证CuNameNVARCHAR(10)NOTNULL,--房客姓名CuSexNCHAR(2),--房客性别CuPhoneNVARCHAR(20),--电话②房间基本信息表的建立:CREATETABLERoom(RoomNoNCHAR(6)PRIMARYKEY,--房间号TypeNoNCHAR(6)NOTNULL,--房间类型号RoomFloorNVARCHAR(10),--房间位置DescriptionNVARCHAR(20)--房间描述)③房间类型基本信息表的建立:CREATETABLERoomType(TypeNoNCHAR(6)PRIMARYKEY,--房间类型号TypeNameNVARCHAR(10)NOTNULL,--类型名称TypeAreaNVARCHAR(10),--房间面积TypePriceINTNOTNULL--房间价钱)④业务统计基本信息表的建立:CREATETABLEHistory(CuNoNCHAR(6),--房客编号CuCardNVARCHAR(20)UNIQUENOTNULL,--身份证CuNameNVARCHAR(10),--姓名CuPhoneNVARCHAR(20),--电话RoomNoNCHAR(6),--房间号Priceint,--消费金额IntoTimeDATETIME,--入住时间OutTimeDATETIME,--退房时间PRIMARYKEY(IntoTime,RoomNo))eq\o\ac(○,5)客房业务基本信息表的建立CREATETABLERoomOperation(CuNoNCHAR(6)PRIMARYKEY,--房客编号RoomNoNCHAR(6),--房间号IntoTimeDATETIME,--入住时间CuCardNVARCHAR(20)UNIQUENOTNULL--身份证)eq\o\ac(○,6)房间状态基本信息表的建立CREATETABLERoomStatus(RoomNoNCHAR(6)PRIMARYKEY,--房间号StatusNVARCHAR(6)--状态)建立视图eq\o\ac(○,1)用于查询房间基本信息的视图createviewRoomview(房间号,房间类型,位置,价钱)asselectRoomNo,TypeName,RoomFloor,TypePricefromRoom,RoomTypewhereRoom.TypeNo=RoomType.TypeNoeq\o\ac(○,2)用于查询退房房客基本信息的视图createviewCustomerview(姓名,性别,身份证,电话,退房时间)asselectCustomer.CuName,CuSex,Customer.CuCard,Customer.CuPhone,History.OutTimefromHistory,CustomerwhereCustomer.CuNo=History.CuNoeq\o\ac(○,3)用于查询未住人的客房信息createviewRoomnopeople(房间号,类型,位置,价钱)asselectRoom.RoomNo,TypeName,RoomFloor,TypePricefromRoom,RoomStatus,RoomTypewhereStatus='未住'andRoom.RoomNo=RoomStatus.RoomNoandRoom.TypeNo=RoomType.TypeNoEQ\o\ac(○,4)用于查询房客基本信息的视图createviewShowCustomerview(姓名,性别,身份证,电话)asselectCuName,CuSex,CuCard,CuPhonefromCustomer建立索引eq\o\ac(○,1)建立业务统计信息上的房客姓名索引createindexi_HistoryonHistory(CuName)eq\o\ac(○,2)建立房客信息上的身份证索引createindexi_CustomeronCustomer(CuCard)建立存储过程eq\o\ac(○,1)添加新的房间存储过程的建立:createprocp_InsertRoom@RoomNonchar(6),@TypeNonchar(6),@RoomFloornvarchar(10),@Descriptionnvarchar(20),@Statusnvarchar(6)='未住'asinsertintoRoomvalues(@RoomNo,@TypeNo,@RoomFloor,@Description)insertintoRoomStatusvalues(@RoomNo,@Status)eq\o\ac(○,2)根据房间类型获取未住房间信息的存储过程的建立:createprocp_ShowRoom@TypeNonchar(6),@Statusnvarchar(6)='未住'asselectRoom.RoomNo,Room.RoomFloor,Room.Description,RoomType.TypeArea,RoomType.TypeName,RoomType.TypePricefromRoom,RoomType,RoomStatuswhereRoom.TypeNo=@TypeNoandStatus=@StatusandRoom.TypeNo=RoomType.TypeNoandRoom.RoomNo=RoomStatus.RoomNoeq\o\ac(○,3)-根据房间号查询房间信息的存储过程的建立createprocp_GetRoom@RoomNonchar(6)asselectRoom.RoomNo,RoomFloor,Description,TypeName,TypeArea,TypePricefromRoom,RoomTypewhereRoom.TypeNo=RoomType.TypeNoandRoom.RoomNo=@RoomNoeq\o\ac(○,4)新的房客入住时的存储过程的建立createprocp_AddCustomer@CuNonchar(6),@RoomNOnchar(6),@CuNamenvarchar(10),@CuSexnchar(2),@CuCardnvarchar(20),@CoPhonenvarchar(20),@IntoTimedatetimeasupdateRoomStatussetStatus='有人'whereRoomNo=@RoomNoif(selectCOUNT(*)fromCustomerwhereCuNo=@CuNo)=0begininsertintoCustomervalues(@CuNo,@CuCard,@CuName,@CuSex,@CoPhone)endelsebeginupdateCustomersetCuCard=@CuCard,CuName=@CuName,CuSex=@CuSex,CuPhone=@CoPhonewhereCuNo=@CuNoendinsertintoRoomOperationvalues(@CuNo,@RoomNO,@IntoTime,@CuCard)eq\o\ac(○,5)根据姓名信息查询房客具体信息的存储过程的建立createprocp_Customer-@CuNamenvarchar(10)='%'asselect*fromCustomerwhereCuNamelike@CuName+'%'eq\o\ac(○,6)根据房间号查询房间入住信息的存储过程的建立createprocp_GetCustomer@RoomNonchar(6)asselectCustomer.CuName,Customer.CuCard,Customer.CuPhone,Customer.CuSex,RoomOperation.IntoTimefromCustomer,RoomOperationwhereRoomOperation.CuNo=Customer.CuNoandRoomOperation.RoomNo=@RoomNoeq\o\ac(○,7)退房存储过程的建立createprocp_OutRoom@CuNonchar(6),@RoomNOnchar(6),@CuNamenvarchar(10),@CuSexnchar(2),@CuCardnvarchar(20),@CoPhonenvarchar(20),@IntoTimedatetime,@OutTimedatetime,@PriceintasupdateRoomStatussetStatus='未住'whereRoomNo=@RoomNOdeclare@TypePriceintselect@TypePrice=RoomType.TypePricefromRoom,RoomTypewhereRoom.TypeNo=RoomType.TypeNoandRoom.RoomNo=@RoomNOset@Price=@TypePrice*DATEDIFF(DAY,@IntoTime,@OutTime)if(@Price=0)beginset@Price=@TypePriceendinsertintoHistoryvalues(@CuNo,@CuCard,@CuName,@CoPhone,@RoomNO,@Price,@IntoTime,@OutTime)deletefromRoomOperationwhereRoomNo=@RoomNO建立触发器eq\o\ac(○,1)当修改RoomType表中某一信息时,触发RoomType表修改这一信息createtriggerT_updateRoomTypeonRoomTypeforupdateasif(UPDATE(TypeNo)orupdate(TypeArea))beginprint's事务不能被解决,修改失败'rollbacktransactionendelseprint'修改成功'eq\o\ac(○,2)当删除History中房客信息统计时,触发Customer表,删除对应的统计createtriggerT_deleteCustomeronHistoryafterdeleteasbegindeletefromCustomerwhereCustomer.CuNoin(selectCuNofromdeleted)endeq\o\ac(○,3)当修改房RoomOperation表中房客房间信息时,触发RoomStatus表修改对应房间状态统计createtriggerT_UpdateCustomeronRoomOperationforupdateasifUPDATE(RoomNo)begin updateRoomStatussetStatus='未住'whereRoomNo=(selectRoomNofromdeleted) updateRoomStatussetStatus='有人'whereRoomNo=(selectRoomNofrominserted) end5.2数据入库系统涉及房客基本信息、房间基本信息、房间类型基本信息、业务统计信息、客房业务信息、房间状态信息,共有6张基本表,采用事先在Excel中录入数据,然后使用SQLServer数据导入/导出向导功效,直接将数据导入到对应的基本表中。6系统调试和测试对该酒店客房管理系统进行测试,验证每个功效与否符合规定,具体测试以下:EQ\o\ac(○,1)通过视图查看各个基本表和视图中的数据(见附录1);EQ\o\ac(○,2)检测各个存储过程的功效(见附录2);EQ\o\ac(○,3)检测各个触发器的效果(见附录3)。心得体会通过两周的数据库课程设计,使我对《数据库原理及应用》这门课程有了更进一步的理解。《数据库原理及应用》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。我的课程设计题目是酒店客房管理系统,本次课程设计加深了我对数据库设计有关知识的理解。之前对于数据库设计各阶段的理解不透彻,诸多概念都很含糊。通过本次课程设计,我进一步理解了课本上的知识,并且亲身体验了数据库设计的各个环节。理解了数据库设计的流程。感触最深的是需求分析阶段和概念模型设计阶段。需求分析阶段是整个数据库设计的基础,这个阶段直接影响到背面各个阶段的设计。由于对业务不是十分精通,在这个阶段返工了好几次,如果这个阶段做的不好,背面就无法继续进行下去。概念模型设计阶段,最重要的是从数据流图中抽象出实体,并且要考虑冲突的发生。另外,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。与此同时,更进一步的理解并掌握了SQLSERVER的功效。由于在有关存储过程和触发器的知识掌握的不是太好,日常实验报告的时候也只是按实习指导书上的代码进行编写,并不理解触发器的真正原理,可是在本次课程设计中,大量的用到触发器和存储过程,理解了它们的功效和原理。更加理解了SQL语句,在酒店客房管理系统的实施阶段,由于有大量的功效要通过触发器、存储过程来实现,因此锻炼了自己的编程能力。通过这段时间的课程设计,我认识到数据库程序设计是一门比较难的课程。需要多花时间上机练习。这次的程序训练培养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能,提高了我适应实际,实践编程的能力。这次课程设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论