数据库-酒店客房信息管理系统剖析(共22页).doc
精选优质文档-倾情为你奉上 课程设计报告 课程设计题目:数据库客房信息管理系统 学生姓名: 汪世生 专 业: 软件工程 班 级: z (卓越班) 学 号: 5 指导教师:江霞 本系统采用vb程序开发,要的库友请联系 (QQ)第1页 2016年 1月 6日专心-专注-专业目录(Contents) 第 3-4页课程设计相关要求1. 需求2. 功能预览流程图 第5-6页 需求分析 第 7 页 ER图 第 8 页 ER图转为关系模式 第 9页 数据库表的数据字典1. 客房表(room) 2. 客户信息表(customer)3. 退/订房表(checkinout) 第10-11页 数据库表 第12-16页 创建数据库及各表、视图、存储过程、触发器的SQL代码1. 包括增、删、改、查 第17-21页 各功能实例演示 第 22 页 .总结第2页第2页一、课程设计相关要求 1.课程设计的目的和意义数据库应用开发课程设计是实践性教学环节之一,是数据库原理及应用课程的辅助教学课程。通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。 2.设计要求通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。熟练掌握两个主要环节概念结构设计与逻辑结构设计;熟练的使用SQL语言实现数据库的建立、应用和维护。(1) 根据题目写出需求分析(详细的功能描述)(2) 画出全局E-R图(3) 将E-R图转换为关系模式,定义主键、外键(4) 在SQL Server中创建数据库及数据表(至少3个数据表),定义约束。(5) 输入数据,至少创建4个视图,便于用户查看数据,数据可涉及多个表。(6) 至少创建3个存储过程,实现系统的主要功能(7) 创建1个登录、数据库用户,并分配数据库管理员权限。(8) 至少创建2个触发器,保证数据的正确性、数据的自动更新。(9) 为数据库做完全备份 成果: 报告,数据库文件(mdf和ldf),备份文件(bak), 前台程序(VB或其他语言实现)。 3.本课程设计内容与要求掌握数据库的设计的每个步骤,以及提交各步骤所需图表和文档。通过使用目前流行的DBMS,建立所设计的数据库,并在此基础上实现数据库查询、连接等操作和触发器、存储器等对象设计。(1)需求分析:根据自己的选题,给出功能模块图和必要的文字说明。(2)概念结构设计:绘制所选题目详细的E-R图。第3页(3)逻辑结构设计:将E-R图转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求;根据局部应用需要设计外模式。(4)物理结构设计:选定实施环境,存取方法等。(5)数据实施和维护:用DBMS建立数据库结构,加载数据,实现各种查询、链接应用程序,设计库中触发器、存储器等对象,并能对数据库做简单的维护操作。(6)成果:课程设计报告,程序,数据文件,日志文件,备份文件 4.课程设计报告要求课程设计报告有四个方面的要求: (1)问题描述。包括此问题的理论和实际两方面。 (2)解决方案。包括:E-R模型要设计规范、合理,关系模式的设计至少要满足第三范式,数据库的设计要考虑安全性和完整性的要求。(3)解决方案中所设计的E-R模型、关系模式的描述与具体实现的说明。(4)具体的解决实例。第4页二 需求分析阶段 1.需求 进行数据库系统设计,首先要对系统的现状进行分析,明确客房信息管理系统的相关需求1.2客户管理 (1)新建客户 (2)修改客户信息 (3)客户信息统计 课程设计所要实现的目标、需求和功能,制定和选择一个较好的系统方案,有计划,有头绪,有思路,不能盲目的就着手去做,从而达到一个合理的优化系统。需求分析在于弄清这次课程设计的酒店管理系统的确切要求,因此,数据库课程设计的第一步就是明确数据库的目的和如何使用该系统。明确目的之后,才可以确定自己需要保存那些表信息,以及每个表中需要保存哪些字段。对于酒店客房管理系统,需要了解以下内容:1.1信息管理 (1)个人信息 (2)用户信息 (3)客户信息 (4)房间信息1.4入住管理(1)入住(客房状态同时置为非空)(2)退房(客房状态同时置为空) (5)订单信息(输入房号,结束账) 1.3房间管理 (1) 查看客房信息(2) 空房统计(3) 添加房间第5页(4) 删除房间(有人预定的也会删除)2. 功能预览图 客 房 信 息 管 理 系 统 否 (员工)是是否为管理员? 客 户 管 理信 息 管 理入 住 管 理房 间 管 理客 户 管 理入 住 管 理信 息 管 理是是否是否退出?是否退出?否第6页 结束 修改客户信息三 客房管理系统E-R图 管理 工 作 人 员N1 管 理 员第7页修改房间信息状态(是否空) 价 格 类 型 房 号 手机号 ID 号 性 别 姓 名 房 间NMN1 管理1N 客 户退/订房 四 ER转为关系模式 1. 工作人员(工作人员ID号(主键), 管理员ID(外键)2. 管理员(管理员ID(主键)3. 客户(客户ID号(主键),姓名,性别,电话,管理员ID(外键)4. 房间(房间号(主键),类型,价格,状态,客户姓名,性别,电话,客户ID号(外键),管理员ID(外键)5. 管理(客户ID号(主键),工作人员ID号(主键),客户姓名,客户性别,客户电话) 第8页五 数据字典 1.数据项 数据项名称数据类型及长度说明房号字符,可变长度10主键,不能为空 客房类型字符,可变长度20 价格(*/天)Float型 客房状态字符,可变长度15 客户身份证号字符,可变长度20主键,不能为空 客户名字字符,可变长度20 性别字符,可变长度2不能为空(男/女) 联系电话字符,可变长度15 入住时间Date型不能为空退房时间Date型不能为空第9页六 数据库表 1.客房信息表room列名数据类型长度允许空字段说明主,外键Rnum字符10否客房号Pk,FkRtype字符20是客房类型RpriceFloat是客房单价Rstate字符15是客房状态2.客户信息表 customer列名数据类型长度允许空字段说明主,外键Cid字符20否身份证号Pk,FkCname字符20是名字CsexFloat2否性别Cphone字符15是联系电话3. 退/订房表checkinout第10页4.退/订房表checkinout列名数据类型长度允许空字段说明主,外键DateinDate否入住时间DateoutDate否退房时间Cid字符2否身份证号PkRnum字符15否预定房号Pk第11页七. SQL代码Ø客房信息管理:客房房号,类型,价格,状态等信息录入Ø 客户信息管理:客户信息录入、修改、删除(客户身份证号,姓名,性别,联系电话)Ø 客房信息查询:按类型、状态(是否为空)、房号等关键字查询客房的基本信息和入住情况Ø 入住、退房、结算、账单打印create database cus_roomon primary( name=cus_room, filename='e:数据库cus_room.mdf', size=10, maxsize=50, filegrowth=2)log on( name=cus_room1, filename='e:数据库cus_room.ldf', size=10, maxsize=50, filegrowth=2)use cus_roomcreate table room( rnum varchar(10) constraint pk_rnum primary key not null, rtype varchar(20), rprice decimal, rstate varchar(15)create table customer( cid varchar(20) constraint pk_cid primary key not null, cname varchar(20),第12页 csex char(2) constraint ck_csex check(csex='男' or csex='女'), cphone varchar(15)create table checkinout( datein datetime, dateout datetime, cid varchar(20) constraint fo_cid foreign key references customer(cid) on update cascade on delete cascade,-当对应主键(cid)发生改变时,该字段对应数据也会发生修改 rnum varchar(10) constraint fo_rnum foreign key references room(rnum) on update cascade on delete cascade,-当对应主键(rnum)发生改变时,该字段对应数据也会发生修改 constraint two_pk primary key(cid,rnum) -创建视图view1 用于结算房租create view view1asselect room.rnum,customer.cid,rprice,datein,dateout from room,customer,checkinout where room.rnum=checkinout.rnum and customer.cid=checkinout.ciddrop view view1select *from view1 -创建视图view2,用于订房对象(人)的选择create view view2asselect customer .cid from customer where cid not in (select cid from checkinout where customer .cid =checkinout.cid)select * from view2-创建视图view3,用于订房对象(房号)的选择create view view3as第13页select room.rnum from room where rnum not in (select rnum from checkinout where room.rnum =checkinout.rnum )select * from view3-创建视图view4,用于综合查询create view view4asselect room.rnum,customer.cid,cname,csex,cphone,rprice,rtype,datein from room,customer,checkinout where room.rnum=checkinout.rnum and customer.cid=checkinout.cid-drop view view4select *from view4-创建视图view5,用于综合查询对象(人)的选择create view view5asselect customer .cid from customer select * from view5-创建视图view6,用于订房对象(房号)的选择create view view6asselect room.rnum from roomselect * from view6-创建存储过程p1,用于综合查询的按cid(身份证号)查询create procedure p1(cid varchar(20)as if exists (select * from view4 where cid=cid) select * from view4 where cid=cidelse第14页 print'该客户暂时没有订房'-drop proc p1p1'123'-创建存储过程p2,用于综合查询的按客房rtype(类型)查询create procedure p2(rtype varchar(10)asselect * from room where rtype=rtypep2'单人'-创建存储过程p3,用于综合查询的按客房rstate(状态)查询create procedure p3(rstate varchar(10)asselect * from room where rstate=rstatep3'有'-创建触发器tr1,当chechinout(客房记录)表有人退房时,删除customer(客户信息)表中对应的客户信息create trigger tr1on checkinoutfor deleteasdelete from customer where cid=(select cid from deleted )-drop trigger tr1-创建触发器tr2,当chechinout(客房记录)表有用户订房时,room表对应的房号的状态更新为'无'create trigger tr2on checkinoutfor insertas第15页update room set rstate ='无' where rnum=(select rnum from inserted)-drop trigger tr2-创建触发器tr3,当chechinout(客房记录)表有用户退房时,room表对应的房号的状态更新为'有'create trigger tr3on checkinoutfor deleteasupdate room set rstate ='有' where rnum=(select rnum from deleted)-drop trigger tr3第16页八 实例演示1. 管理员登录2.管理入口选择界面第17页3.信息的增、删、改3.1客房信息的录入3.2 客房信息的修改第18页3.3客房信息的删除3.3客房信息的删除4. 客户信息的录入第19页5. 综合查询 5.1按房号查询5.2按身份证号查询第20页5.3按客房类型查询5.4按客房状态查询第21页九总结通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也上网查了不少资料,也看了一些别人设计的旅馆管理信息系统的设计报告,学以致用,自我创新,完成了这份自己的报告,从中在学到用,从用又到学,受益匪浅。第22页