课 程 设 计 报 告
设计题目:酒店住宿及消费管理信息系统
一、课程设计项目名称:
酒店住宿及消费管理信息系统
二、相关基本原理:
数据库设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
数据库建设是硬件、软件和干件(技术与管理的界面)的结合,靠得是\"三分技术,七分管理,十二分基础数据“。数据库设计应该与应用系统设计相结合。包括结构(数据)设计:设计数据库框架或数据库结构,行为(处理)设计:设计应用程序、事务处理等。数据库设计是结构和行为分离的设计。
需求分析
调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。
需求分析的重点是调查、收集与分析用户在数据管理 中的信息要求、处理要求、安全性与完整性要求。
概念模型设计
对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。
需求分析阶段描述的用户应用需求是现实世界的具体需求将需求,分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。概念结构设计是整个数据库设计的关键。
逻辑结构设计
主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。
概念结构是各种数据模型的共同基础,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。
将概念结构转化为一般的关系、网状、层次 模型。将转化来的关系、网状、层次模型向特定 DBMS支持下的数据模型转换。对数据模型进行优化。
物理结构设计
根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。
根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法:使设计出的物理数据库占用较少的存储空间。对数据库的操作具有尽
可能高的速度。
三、课程设计目的:
1)巩固和加深对数据库原理及应用课程基本知识的理解,综合该课程中所学到的理论知识,与小组成员联合完成一个数据库应用系统课题的需求分析;
2)根据课题需要,通过查阅相关手册和文献资料,培养独立分析和解决实际问题的能力;
3)掌握数据库应用系统需求分析的基本步骤,能用基本图表工具描述需求分析的过程及结果
4) 熟练掌握局部E-R图和全局E-R图的建立方法,熟练掌握概念模型向数据模型(关系模式)的转化;
5) 能够根据系统的实际需要,对数据库进行物理设计
6) 掌握在数据库管理系统中创建数据库及对数据库进行维护和数据查询的基本方法;培养动手能力。
四、课程设计内容:
需求分析:根据实际情况,对于酒店住宿及消费管理系统进行调查,必须明确用户的要求和应用现场环境的特点,了解系统应具有哪些功能,数据流程和数据之间的联系。需求分析需要进行调查,查阅手册和文献资料,明确问题所在,按需求分析步骤,一步一步进行分析,完成系统需求分析,得到系统目标、功能分析、系统需求、业务流程图、数据流图、数据字典等分析成果。
概念模型设计:
根据所选应用系统的需求分析,继续进行局部概念模型分析与设计,然后进行全局概念模型设计。要求:
1)根据需求分析的结果,小组分工进行局部E-R图设计; 2)根据局部E-R图进行合并整合,形成全局E-R图。 3)对全局E-R图进行分析,根据需要进行一定的合并优化处理
逻辑结构设计:对自选的数据库应用项目进行关系数据模型的设计,一方面进行概念
模型到逻辑结构(关系模型)的转化;另一方面用关系规范化理论对形成的关系模式进行合并、分解的优化;
物理设计:根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。
数据库实施:
在以上分析设计的基础上,要实现数据库,保证能在现有数据库基础上进行应用系统的程序开发。要求: 在数据库管理系统上实现数据库,并能在该库上进行相应的数据处理;数据库建议用SQL SERVER ,也可用ACCESS。
完成课程设计报告。
五、课程设计过程及结果分析:
(一)需求分析
1、 背景分析
随着酒店的规模扩大和连锁经营,将管理信息系统嵌入到酒店的经营和管理中已是必不可少。在本课程设计中,只涉及酒店入住和消费。经过调查分析,确定酒店入住和消费管理系统由预定房间、查询客房信息、登记、入住、消费(尤指如就餐,叫车等除房费以外的费用)、退房等功能模块。预订系统尤指针对顾客而言,他可以登录系统随时查询酒店客房预售一览表,及可售房间数,可查询某间客房预订情况,并实现预订功能,此时酒店的管理系统可以接收到其信息,也就是说通过网络,该系统更好的联系起来。同时对常客可使用系统的客历资料预定,可大大减少资料的输入。客人一旦入住酒店,酒店就会详细记录客人的资料。
本系统面向酒店的前台,系统可以接收到客户在其他平台提交的预订信息,系统数据管理员可以接收到数据信息,进行集中管理,分类,然后将信息报给不同的酒店管理人员,简化传统手工作业方式,最大限度地简化酒店管理过程。
(1)能对客房数据进行跟踪管理(添加、更改、删除、查询等);
(2)能对客户数据进行跟踪管理(添加、更改、删除、查询等);
(3)能对预订信息进行跟踪管理(添加、更改、删除、查询等); (4)能对入住信息进行跟踪管理(添加、更改、删除、查询等); (5)能对住宿消费信息进行跟踪管理(添加、更改、删除、查询等);、 (6)该数据库系统要具有良好的可扩展性(界面友好); (7)用户及权限管理(具有一定的安全性): 1)系统工作人员增加、删改用户; 2)系统工作人员对用户角色及权限分配;
3)用户登录及权限验证; 4)系统管理员及用户更改密码。 2、业务流程分析
1)第一层业务流程图
2)第二层业务流程图
(1)顾客登录系统:
1)查询酒店客房预售一览表,及可售房间数,可查询某间客房预订情况; 2)预订,形成预订信息,提交至系统存储。 (2)前台登录系统:
1)前台登录系统后可查询酒店客房预售一览表,及可售房间数,可查询某间客房预订情况,某位顾客的预订情况;
2)为顾客登记,实现入住,提交入住信息给系统,并生成入住单; 3)顾客产生消费行为,前台提交信息至系统生成消费单;
4)顾客前台结账,收取费用退还押金,并注销顾客入住,提交信息,更新房间信息。
(3)系统工作人员:
系统工作人员登录系统可以收到顾客的预订信息,入住信息,消费信息,结账信息,以及顾客信息和客房信息,进行数据处理后提交至系统,授予不同用户不同权限。 3、 系统数据流图DFD (1.系统顶层数据流图:
2.系统第一层数据流图:
基于上述数据流图,可以用文字描述相关的处理过程: (1)顾客登录系统:
1)查询酒店客房预售一览表,及可售房间数,可查询某间客房预订情况; 2)预订,形成预订信息,提交至系统存储。 (2)前台登录系统:
1)前台登录系统后可查询酒店客房预售一览表,及可售房间数,可查询某间客房预订情况,某位顾客的预订情况;
2)为顾客登记,实现入住,提交入住信息给系统,并生成入住单;
3)顾客产生消费行为,前台提交信息至系统生成消费单;
4)顾客前台结账,收取费用退还押金,并注销顾客入住,提交信息,更新房间信息。
(3)系统工作人员:
系统工作人员登录系统可以收到顾客的预订信息,入住信息,消费信息,结账信息,以及顾客信息和客房信息,进行数据处理后提交至系统,授予不同用户不同权限。 3.系统第2层数据流图: (图形+文字说明)
1)顾客预订,入住信息处理逻辑第二层数据流图
2)前台进行顾客入住,结算等信息处理逻辑第二层数据流图
4、 数据字典DD (1)、数据项说明 1)客房信息表
数据项编数据项名 号 数据项含义 与其他存储结构 数据项的关系 1 房间号 房间的编号 字符型,长度为10,格式例A101,A表示xx栋,数字由三位组成,第一个数字为楼层,后两位为该楼层房间编号 2 3 4 房间名称 房间类型 房间位置 房间的名字 房间的类型 字符型,长度限制为20 字符型,长度限制为20 字符型,长度限制为50,格式为xx栋xx层xx号 由房间浮点型,长度限制为8 类型决定 6 房间状态 房间所处的由客户字符型,长度限制为20,限制状态,是满还预定,入字符为以下三种:“预订中”或是空 住,退房“入住”或“空” 时间决定 7 2)客户信息表
数据项编数据项名 号 数据项含义 与其他存储结构 数据项的关系 房间备注 房间备注 房间具体位 置 5 房价 房间的价格
1 2 客户姓名 证件类型 客户的姓名 字符型,长度为20 字符型,长度限制为20 客户出示证 件的类型 3 证件号 客户出示证与证件字符型,长度限制为30 件的编号 类型相对应 4 性别 客户的性别 字符型,长度限制为4,可选择字符为“男”,“女” 5 联系电话 客户的联系 方式 字符型,长度限制为50 6 备注 客户的备注 信息,如客户身份与要求 字符型,长度限制为500 3)住宿费用信息表
数据项编数据项名 号 1 证件号 数据项含义 与其他数据项存储结构 的关系 客户出示证 件的编号 2 房间号 房间的编号 字符型,长度为10,格式例A101,A表示xx栋,数字由三位组成,第一个数字为楼层,后两位为该楼层房间编号 3 入住日期 客户入住的 日期 4 入住时间 客户入住的 时间 日期型,格式为年-月-日 时间型,格式为时:分:秒 字符型,长度为30
5 离开日期 客户退房的 日期 日期型,格式为年-月-日 时间型,格式为时:分:秒 6 离开时间 客户退房的 时间 7 天数 客户入住的由客户入住日整型,长度为4 天数 期,入住时间,退房日期,退房时间决定 8 9 10 房价 折扣率 预付 房间的价格 最终折扣率 浮点型,长度限制为8 浮点型,长度限制为8 浮点型,长度限制为8 客户入住时 缴纳的订金 11 其他消费日期 客户除入住 外的其他消费日期 日期型,格式为年-月-日 12 其他消费时间 客户除入住 外的其他消费时间 时间型,格式为时:分:秒 13 其他消费名称 客户除入住 外的其他消费名称 字符型,长度限制为20 14 其他消费金额 客户除入住 外的其他消费金额 浮点型,长度限制为8 4)预订房间信息表
数据项编数据项名 号 数据项含义 与其他存储结构 数据项的关系
1 证件号 客户出示的 证件编号 字符型,长度限定30 2 房间号 房间的编号 字符型,长度为10,格式例A101,A表示xx栋,数字由三位组成,第一个数字为楼层,后两位为该楼层房间编号 3 预定日期 客户预定的 日期 日期型,格式为年-月-日 4 预定时间 客户预定的 时间 时间型,格式为时:分:秒 5 入住日期 房间具体位 置 日期型,格式为年-月-日 6 7 预订天数 预订备注 房间的价格 整型 字符型,长度限制为500 客户预定时 的要求 8 是否入住 目前客户的由入住字符型,长度限制为20,限制入住情况 日期决字符为以下两种:“入住中”或定 “未入住” 5)入住信息表
数据项编数据项名 号 数据项含义 与其他存储结构 数据项的关系 1 证件号 客户出示证 件的的编号 2 房间号 房间的编号 字符型,长度限制为20字符型,长度为10,格式例A101,A表示xx栋,数字由三位组成,第一个数字为楼层,后两位为字符型,长度限定30
该楼层房间编号 3 预付 客户入住时 缴纳的订金 浮点型,长度限制为8 4 入住日期 客户入住的 日期 日期型,格式为年-月-日 5 入住天数 客户入住的 天数 时间型,格式为时:分:秒 6 备注 客户入住备 注信息 字符型,长度限制为500 7 工号 办理该入住 的员工编号 字符型,长度限制为20 6)前排工作人员信息表
数据项编数据项名 号 数据项含义 与其他存储结构 数据项的关系 1 2 3 工号 姓名 所在部门 员工的编号 员工的名字 字符型,长度为20, 字符型,长度限制为20 字符型,长度限制为20 员工所在的 部门 4 职务 员工的职务 字符型,长度限制为20 (2)、数据结构说明
数据结构编号 数据结构名 数据结构含义 组成内容
1 客房 指明酒店客房的具体信息 房间号,房间名称,房间类型,房间位置,房价,房间状态,房间备注 2 客户 每位客户的的信息 客户姓名,证件类型,证件号,性别,联系电话,备注 证件号,房间号,入住日期,入住时间,离开日期,日期,其他消费时间,其它消费名称,其他消费金额 证件号,房间号,预定日期,预定时间,入住日期,预定天数,预定备注,是否入住 证件号,房间号,预付,入住日期,入住天数,备注,工号 工号,姓名,所在部门,职务 3 住宿费用 客户在整个括住宿外消费)信息 入住过程(包离开时间,天数,房价,折扣率,预付,其他消费4 预订 客户预定房间信息 5 入住 客户入住房间信息 6 前台工作人员 前台工作人员信息 (3)、数据流说明
1)预订信息数据流表
简述 输入来源 输出去向 顾客预订客房信息流向系统 顾客输入 前台和系统管理员 数据项组成 证件号,房间号,预定日期,预定时间,入住日期,预定天数,预定备注,是否入住 流量 每个顾客的预订信息 2)入住信息数据流表
简述 顾客入住客房信息流向系统
输入来源 输出去向 顾客提供、前台输入 系统管理员 数据项组成 证件号,房间号,预付,入住日期,入住天数,备注,工号 流量 每个顾客的入住信息 3)结账信息数据流表
简述 输入来源 输出去向 顾客退房信息流向系统 顾客要求、前台输入(消费信息)、系统提供 前台和系统管理员 数据项组成 证件号,房间号,入住日期,入住时间,离开日期,离开时间,天数,房价,折扣率,预付,其他消费日期,其他消费时间,其它消费名称,其他消费金额 流量 (4)、数据存储说明
1)顾客信息存储说明
简述 输入来源 输出去向 存放顾客基本信息 顾客输入 前台和系统管理员 每个顾客的退房信息 数据项组成 客户姓名,证件类型,证件号,性别,联系电话,备注 存储容量 每个顾客的基本信息 2)客房信息存储说明
简述 输入来源 客房基本信息 系统工作人员提前录入
输出去向 顾客、前台和系统管理员 数据项组成 客房信息:房间号,房间名称,房间类型,房间位置,房价,房间状态,房间备注 存储容量 每间客房的基本信息 3)前台工作人员信息存储说明
简述 输入来源 输出去向 前台工作人员基本信息 系统工作人员提前录入 前台和系统管理员 数据项组成 前台工作人员信息:工号,姓名,所在部门,职务 存储容量 (5)、处理过程说明
1)预订信息录入、修改
简述 逻辑说明 针对一个客户 显示证件号 针对每条预订信息进行录入(修改) 录入(修改)证件号,房间号,预定日期,预定时间,入住日期,预定天数,预定备注,是否入住 概要说明 1、可以用“上一步”、“下一步”“回到首页”“提交”点击进行预订信息录入和修改; 2、显示时,只可读;录入修改时,可读可写。 单个客户单独输入预订信息 每位前台工作人员的基本信息 2)入住信息录入、修改
简述 逻辑说明 单个前台工作人员依据顾客提供信息输入入住信息 针对一个客户 显示证件号,房间号 针对每条入住信息进行录入(修改) 录入(修改)证件号,房间号,预付,入住日期,入住天数,备注,工号 概要说明 1、可以用“上一步”、“下一步”“回到首页”“提交”点击进行预订信息录入和修改; 2、显示时,只可读;录入修改时,可读可写。 3)结算信息录入、修改
简述 逻辑说明 前台工作人员依据入住信息及其他消费输入结算信息 针对一个客户 显示 证件号 针对每条结算信息进行录入(修改) 录入(修改)证件号,房间号,入住日期,入住时间,离开日期,离开时间,天数,房价,折扣率,预付,其他消费日期,其他消费时间,其它消费名称,其他消费金额 概要说明 1、可以用“上一步”、“下一步”“回到首页”“提交”点击进行预订信息录入和修改; 2、显示时,只可读;录入修改时,可读可写。 2)客房信息查询
简述 逻辑说明 针对顾客 显示 证件号 对房间信息进行查询
针对前台或系统工作人员 显示 房间号 针对每条预订、入住和结算信息进行查询 查询 证件号,房间号,预定日期,预定时间,入住日期,预定天数,预定备注,是否入住 查询 证件号,房间号,预付,入住日期,入住天数,备注,工号 查询 证件号,房间号,入住日期,入住时间,离开日期,离开时间,天数,房价,折扣率,预付,其他消费日期,其他消费时间,其它消费名称,其他消费金额 概要说明 1、可以用“上一步”、“下一步”“回到首页”“提交”点击进行评教信息的查询; 2、可以输入指定的房间号直接显示客房的信息;输入指定的证件号,直接显示该顾客的预订、入住、结算信息。 3、所有的查询内容均只可读,不可写。 (二)概念模型设计
1.局部E-R图
1根据数据字典确定每个实体及其属性E-R图;
(1)客房实体E-R图
(2)客户实体E-R图
(3)前台工作人员实体E-R图
(4)住宿费用实体E-R图
2根据第二层数据流图确定局部E-R图; (1)预订局部E-R图
(2)入住局部E-R图
(3)结算局部E-R图
2.全局E-R图
3.优化处理
在以上实体集的属性中,有些属性不够明确,将做一下修改。
将预定中的预订时间细化为预定日期,预订时间,入住时间改为入住日期;将入住中的入住时间细化为入住日期和入住时间;删除住宿费用中的入住日期,并将离开日期细化为离开日期和离开时间。
(三)逻辑结构设计
1.E-R图转换为关系模式
(1)Room(Rno,Rname,Rtype,Rpostion,Rprice,Rstatus,Rnote) (2)Customer(Cno,Cname,Ctype,Csex,Ctel,Cnote) (3)Reserve(Cno,Rno,Orderdate,Rindate,Days_1,Note,Isin) (4)Check_in(Cno,Rno,Sno,Prepay,Indate,Days_2,Note)
(5)Fee(Cno,Rno,Indate,Outdate,Days,Rprice,Rate,Prepay,OtherC_time, OtherC_name,OtherC_price)
(6)Reception(Sno,Sname,Sdept,Sjob)
2.关系模式的优化 1)优化过程
结合E-R图优化过程做以下处理:
(1)Room关系模式中存在数据冗余,可无损分解为以下两个关系模式: Roomtype(Rtype,Rprice)不存在非主属性对码的部分函数依赖,属于BCNF
RoomInfo(Rno,Rname,Rtype,Rpostion,Rstatus,Rnote)不存在非主属性对码的部分函数依赖,属于BCNF
(2)Customer(Cno,Cname,Ctype,Csex,Ctel,Cnote)不存在非主属性对码的部分函数依赖,属于BCNF
(3)Reserve(Cno,Rno,Orderdate,Ordetime,RIndate ,Days_1,Note,Isin),添加属性Intime,不存在非主属性对码的部分函数依赖,属于BCNF
(4)Check_in(Cno,Rno,Sno,Prepay,Indate, Intime ,Days_2,Note)添加属性Intime,考虑实际情况,假设酒店前台人员按天值班Cno,Rno->Indate,Intime, Indate, Intime,->Sno,存在传递依赖,不存在非主属性对码的部分依赖,属于2NF
(5)Fee关系模式中存在数据冗余,可无损分解为以下两个关系模式:
Fee(Cno,Rno,Sno, Outdate,Outtime,Rate)添加属性Outtime,考虑实际情况,假设酒店前台人员按天值班Cno,Rno->Outdate,Outtime, Outdate Outtime,->Sno,存在传递依赖,不存在非主属性对码的部分依赖,属于2NF
OtherC(Cno,Rno,Sno, OtherC_date ,OtherC_time, OtherC_name, OtherC_price) 考虑实际情况,一个顾客,一间客房可能会产生多个消费,将OtherC_date,OtherC_time设置为主码,不存在非主属性对码的部分函数依赖,属于BCNF
(6)Reception(Sno,Sname,Sdept,Sjob)不存在非主属性对码的部分函数依赖,属于BCNF 2)优化结果
Roomtype(Rtype,Rprice)
RoomInfo(Rno,Rname,Rtype,Rpostion,Rstatus,Rnote) Customer(Cno,Cname,Ctype,Csex,Ctel,Cnote)
Reserve(Cno,Rno,Orderdate,Ordetime,RIndate ,Days_1,Note,Isin)Check_in(Cno,Rno,Sno,Prepay,Indate, Intime ,Days_2,Note) Fee(Cno,Rno,Sno, Outdate,Outtime,Rate)
OtherC(Cno,Rno,Sno, OtherC_date ,OtherC_time, OtherC_name, OtherC_price)
Reception(Sno,Sname,Sdept,Sjob) 3.结合数据字典得到关系具体设计 表1 Roomtype 属性名 标题 数据类型 长度 可否为空 约束 备注 Rtype 房间类型 Rprice 房间价格 表2 RoomInfo 属性名 Rno Rname 标题 房间号 房间名称 Char Float 20 8 否 是 无 无 主码 数据类型 Char Char 长度 10 20 可否为空 否 是 约束 无 无 备注 主码
Rtype 房间类型 Char 20 是 无 Rposition Rstatus 房间位置 房间状态 房间备注 Char 50 是 无 Char 20 是 “预订中”或“入住”或“空” 无 Rnote Char 500 是 表3 Customer 属性名 Cno Cname 标题 证件号 客户姓名 证件类型 性别 联系电话 客户备注 数据类型 Char Char 长度 30 20 可否为空 否 否 约束 无 无 备注 主码 Ctype Char 20 否 无 Csex Ctel Char Char 4 50 是 是 “男”或“女” 无 Cnote Char 500 是 无 表4 Reserve
属性名 标题 数据类型 长可否为空 度 Char Char Date 30 10 否 否 否 约束 备注 Cno Rno Orderdate 证件号 房间号 预订日期 预定时无 无 无 主码 主码 Othertime Time 否 无
间 RIndate 入住时间 预订天数 预定备注 是否入住 Char 20 否 无 Days_1 Int 否 无 ReNote Char 500 是 无 Isin Char 20 是 “入住中”或“未入住” 表5 Check_in 属性名 Cno Rno Sno Prepay Indate 标题 证件号 房间号 工号 预付 入住日期 入住时间 入住天数 备注 数据类型 Char Char Char Float Date 长度 30 10 20 8 可否为空 否 否 否 是 否 约束 无 无 无 无 无 备注 主码 主码 Intime Time 否 无 Days_2 Int 否 无 Note 表6 Fee 属性名 Cno Rno Sno Char 500 是 无 标题 证件号 房间号 工号 数据类型 Char Char Char 长度 30 10 20 可否为空 否 否 否 约束 无 无 无 备注 主码 主码
Outdate 离开日期 Date 否 无 Outtime 离开时间 折扣率 Time 否 无 Rate Float 8 是 无 表7 OtherC 属性名 Cno Rno Sno OtherC_date OtherC_time OtherC_name OtherC_price 标题 证件号 房间号 工号 其他消费日期 其他消费时间 其它消费名称 其他消费金额 数据类型 Char Char Char Date 长度 30 10 20 可否为空 否 否 否 否 约束 无 无 无 无 备注 主码 主码 主码 Time 否 无 主码 Char 20 否 无 Float 8 否 无 表8 Reception 属性名 Sno Sname Sdept 标题 工号 姓名 所在部门 职务 数据类型 Char Char Char 长度 20 20 20 可否为空 否 是 是 约束 无 无 无 备注 主码 Sjob Char 20 是 无 (四)物理设计
(1)使用SQL Server Management Studio 创建一个数据库,名称为“Eva_teach”,数据文
件初始大小为20MB,自动增长5MB,最大为100MB;日志文件初始大小为10MB,自动增长5MB,最大为100MB。存储路径为“C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA” (2)系统配置设计
本系统采用单机运行。
(五)数据库实现
1.建表语句 (1)房间类型表
use 酒店住宿及消费管理数据库 create table Roomtype (Rtype char(20) primary key, Rprice float (8),)
(2)房间信息表 create table RoomInfo (Rno char(10) primary key, Rname char (20), Rtype char (20), Rpostion char(50), Rstatus char(20)
constraint C1 check(Rstatus IN('预订中','入住','空')),
Rnote char (500),
foreign key(Rtype)references Roomtype(Rtype),)
(3)顾客表 create table Customer (Cno char(30) primary key, Cname char(20) not null, Ctype char(20) not null, Csex char(4)
constraint c2 check(Csex IN('男','女')), Ctel char(50), Cnote char (500) )
(4)前台表 create table Reception (Sno char(20) primary key,
Sname char(20), Sdept char(20), Sjob char(20))
(5)预订表 create table Reserve (Cno char(30), Rno char(10), Orderdate date, ordertime time, Rindate datenot null, Days_1 int not null, ReNote char (500), Isin char (20)
constraint c3 check(Isin IN ('入住中','未入住')), Primary key(CNO,Rno),
constraint RE_k1 foreign key (Rno)references RoomInfo(Rno), constraint RE_k2 foreign key (Cno)references Customer(Cno))
(6)入住表 create table Check_in (Cno char(30), Rno char(10), Sno char(20)not null, Prepay float(8), Indate date not null, Days_2 int not null, Note char(500), intime time not null, Primary key(CNO,Rno),
constraint IN_k1 foreign key (Rno)references RoomInfo(Rno), constraint IN_k2 foreign key (Cno)references Customer(Cno), constraint IN_k3 foreign key (Sno)references Reception(Sno))
(7)结算表 create table Fee (Cno char(30), Rno char(10), Sno char(20)not null, Rate float(8), Outdate date not null, outtime time not null, Primary key(CNO,Rno),
constraint FEE_k1 foreign key (Rno)references RoomInfo(Rno), constraint FEE_k2 foreign key (Cno)references Customer(Cno), constraint FEE_k3 foreign key (Sno)references Reception(Sno))
(8)其他消费表
create table OtherC (Cno char(30) , Rno char(10), Sno char(20)not null, OtherC_date Date not null, OtherC_time time not null, OtherC_name char(20) not null, OtherC_price float(8) not null,
Primary key(CNO,Rno,OtherC_date,OtherC_time),
constraint OC_k1 foreign key (Rno)references RoomInfo(Rno), constraint OC_k2 foreign key (Cno)references Customer(Cno), constraint OC_k3 foreign key (Sno)references Reception(Sno))
2.数据关系图
3.建立测试初始数据 (1)Roomtype
(2)RoomInfo
(3)顾客表
(4)前台表
(5)预订表
(6)入住表
(7)结算表
(8)其他消费表
4.建立视图及查询 1、建立房间视图
create view Roomview(房间号,房间名称,房间类型,房价,房间位置,房间备注) as
select Rno,Rname,Roomtype.Rtype,Rprice,Rpostion,Rnote from RoomInfo,Roomtype
where Roomtype.Rtype=RoomInfo.Rtype and Rprice<=800
2.建立消费视图
create view Consumptionview1( 证件号,房间号,折扣率,其他消费日期,
其他消费时间,其他消费名称,其他消费金额,折扣后其他消费金额) as select
Fee.Cno,Fee.Rno,Fee.rate,OtherC.OtherC_date,
OtherC.OtherC_time,OtherC.otherC_name,OtherC.OtherC_Price,OtherC.OtherC_Price*Fee.rate
from Fee,OtherC
where Fee.Cno=OtherC.Cno AND
Fee.Rno=OtherC.Rno
视图查询1:
use 酒店住宿及消费管理数据库 select 房间号,房价 from Roomview where 房价>=400
视图查询2:
use 酒店住宿及消费管理数据库
select 证件号,房间号,其他消费时间,折扣后其他消费金额 from Consumptionview where 房间号='A404'
视图查询3:
use 酒店住宿及消费管理数据库 select *
from Consumptionview where 其他消费金额<30
视图查询4:
use 酒店住宿及消费管理数据库 select *
from Roomview
where 房间类型='花园私密家庭房'
视图查询5:
use 酒店住宿及消费管理数据库
select 证件号,房间号,SUM(其他消费金额) from Consumptionview group by 证件号,房间号 order by sum(其他消费金额)
5.数据操纵语句 1、插入语句
use 酒店住宿及消费管理数据库 insert into Roomtype (Rtype,Rprice)
values('标准双人间',360)
use 酒店住宿及消费管理数据库 insert into Customer
(Cno,Cname,Ctype,Csex,Ctel,Cnote)
values('3412349','牛魔王','身份证','男','',NULL)
删除语句: delete from Reserve
where Cno='342122198001061111'
delete from OtherC
where OtherC_price<20
修改语句: update RoomType set Rprice=998
where Rtype='行政套房'
update RoomInfo set Rtype='行政套房'
where Rno='A101'
6.建立合理的触发器
use 酒店住宿及消费管理数据库 go
create trigger trig_Room on Roominfo for insert, update as if exists (select count(*) from RoomInfo having COUNT(*)>16)
begin Print('所有房间位置已满,不能再插入房间信息') rollback End
use 酒店住宿及消费管理数据库 go
create trigger trigdays2 on Check_in after insert,update as if exists (select days_2 from Check_in where days_2>7)
Begin print(‘入住单天数一次不可超过7天’) rollback
六、课程设计总结及心得体会:
数据库的建立过程是一个结构化的方法,也就是说技术要一步步实施,要从过程中分离数据。建立一个数据库,虽然在本课程设计只是酒店管理信息系统的一个小小视角,但是对于我们来说确实是一个不小的挑战。
我们首先计划了酒店入住及消费管理系统,通过查找大量资料以及询问专业人士,
确定了基本框架,在抽丝剥茧后,我们画出了本课程设计所需要的业务流程图,并分析业务流程图画出数据流图。进而我们将模型从现实世界抽象为概念模型,抽象出数据实体和联系集。在这个过程中,由于我们对酒店管理系统并不十分了解,在进行业务流程图和E-R图的绘制时出现了不少的问题,最终我们小组克服了困难,做出了初步的需求分析和概念模型设计。从概念模型转化到逻辑模型,在分解关系模式时,在做的过程中不断发现问题并更改,又加入一些属性使得数据库趋于完善。在最后的物理设计中,问题较少,较之前做出了进一步的完善。最后我们一起核查了数据库所有内容,避免出现不能必要的问题和麻烦。
在本课程设计中,我们一直是共同完成,并在一些小的细节上进行一定的任务分配,这一次合作的很愉快且较为高效,在整个过程中,我们不断的发现问题,提出问题,并及时交流心得,共同寻找解决问题的方案。在这个过程中,我们感触最深的是,在整个数据库课程设计中,结构化方法很重要,但由于此过程是不可逆的,所以越在前面出现的问题将来产生错误为此付出的代价就会更大,所以我们要在每一个环节完成后都要进行一定的检验,避免将来出现更大的错误。
以上心得体会是小组所有成员共同交流所得。
七、对本设计程及方法、手段的改进建议:
在本课程化设计中,结构化步骤化的方法给我们的课程设计带来了很大的便利性,但
结构化方法有一个缺点就是其过程是不可逆的,所以我们希望在每一个环节中后都加一个检验以及增减的修改内容,这样能更大程度的及时避免问题的产生。
报告评分:X
指导教师签字:XXX
因篇幅问题不能全部显示,请点此查看更多更全内容