宾馆管理系统数据库应用课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南科技大学
数据库应用课程设计报告
宾馆管理系统数据库设计
学生姓名:
学号:
班级:
指导老师:
学院:
提交日期:2016 年6月8日
数据库应用课程设计评阅
目录
前言 (4)
1.需求分析 (4)
1.1系统功能背景资料 (4)
1.2系统功能 (4)
2.概要结构设计 (5)
3.逻辑结构设计 (7)
3.1关系模式设计 (7)
3.2 关系模式的分析优化 (8)
4.数据库物理设计 (10)
5.数据库实施 (12)
5.1.1各数据表说明 (12)
5.1.2数据库创建 (12)
5.2数据库操作 (12)
6.部分系统功能实现 (16)
7.总结 (18)
前言
在计算机技术发达的今天,各行各业都能利用计算机、网络来优化自己的业务,使业务简洁化、有序化。
宾馆管理系统能为宾馆提供如下功能:通过房间号查询该房间的等级/价位与入住信息;通过订单号查询单次入住信息及消费情况;通过身份证号查询该客户等级,入住记录;通过日期查询宾馆当月资产变化记录。
1. 需求分析
设计本系统模拟宾馆内的工作人员及房间资金等管理内容,包括房间管理、客人入住、店内消费管理、结算管理、实现分类查询、输出相应的数据报表。
系统需要管理的情况如下:房间管理、客人入住、店内消费管理、结算管理、实现分类查询、输出相应的数据报表。
宾馆管理系统能为宾馆提供如下功能:通过房间号查询该房间的等级/价位与入住信息;通过订单号查询单次入住信息及消费情况;通过身份证号查询该客户等级,入住记录;通过日期查询宾馆当月资产变化记录。
1.1系统功能背景资料
客户在邮局订购报纸的管理内容包括:
1).宾馆有一名总经理、多名会计和多名前台。
总经理负责宾馆的日常运营,会计负责对宾馆收入支出的统计管理,前台数据包括职工号等。
职工号在宾馆内唯一。
2).宾馆有各种标准的房间。
房间数据包括房间号、房间级别、房间价位以及房间的状态(是否已经有客人)。
房间号唯一表示一个房间,房间级别决定房间价位,房间有多种级别分别表示:单人间、标准间、豪华间、商务间、行政间。
房间状态表示此房间是否可以预定或者入住或者转房。
1.2系统功能
1)通过房间号查询该房间的等级/价位与入住信息;
2) 通过订单号查询单次入住信息及消费情况;
3) 通过身份证号查询该客户等级,入住记录;
4) 通过日期查询宾馆当月资产变化记录。
2.概要结构设计
通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出订报管理系统E-R图。
图1 “房间”实体E-R图
图2 “工作人员”实体E-R图
图3 “客户”实体E-R图
图4 “开房”实体E-R图
图5 “退房”实体E-R图
图6 “资产”实体E-R图
图7 系统E-R图
3.逻辑结构设计
3.1关系模式设计
根据概念结构的设计,可以将系统E-R图转换为以下关系模式(画横线的为各关系的码):
房间(房间号,房间级别,房间价位,房间状态)
工作人员(职工编号,职位,在职状态)
客户(客户身份证,客户等级)
开房(订单编号,房间号,客户身份证,开房时间,职工编号)外码:房间号,客户身份证,职工编号
退房(订单编号,房间号,客户身份证,退房时间,房内额外消费,物品损坏赔偿,应付款,职工编号)外码:房间号,客户身份证,职工编号资产(日期,本月资出金额,本月收入金额,公司库存,职工编号)外码:职工编号
3.2 关系模式的分析优化
1.对以上关系模式进行函数依赖分析
·考察关系模式:房间(房间号,房间级别,房间价位,房间状态)房间号—>房间级别
房间号—>房间价位
房间号—>房间状态
它只有一个码:房间号,这里没有任何属性对房间号部分依赖或传递依赖,所以此关系模式属于3NF。
·考察关系模式:工作人员(职工编号,职位,在职状态)
职工编号—>职位
职工编号—>在职状态
它只有一个码:职工编号,这里没有任何属性对职工编号部分依赖或传递依赖,所以此关系模式属于3NF。
·考察关系模式:客户(客户身份证,客户等级)
客户身份证—>客户等级
它只有一个码:客户身份证,这里没有任何属性对客户身份证部分依赖或传递依赖,所以此关系模式属于3NF。
·考察关系模式:开房(订单编号,房间号,客户身份证,开房时间,职工编号)订单编号—>房间号
订单编号—>客户身份证
订单编号—>开房时间
订单编号—>职工编号
它只有一个码:订单编号,这里没有任何属性对订单编号部分依赖或传递依赖,所以此关系模式属于3NF。
·考察关系模式:退房(订单编号,房间号,客户身份证,退房时间,房内额外消费,物品损坏赔偿,应付款,职工编号)
订单编号—>房间号
订单编号—>客户身份证
订单编号—>退房时间
订单编号—>房内额外消费
订单编号—>物品损坏赔偿
订单编号—>应付款
订单编号—>职工编号
它只有一个码:订单编号,这里没有任何属性对订单编号部分依赖或传递依赖,所以此关系模式属于3NF。
·考察关系模式:资产(日期,本月资出金额,本月收入金额,公司库存,职工编号)
日期—>本月资出金额
日期—>本月收入金额
日期—>公司库存
日期—>职工编号
它只有一个码:日期,这里没有任何属性对日期部分依赖或传递依赖,所以此关系模式属于3NF。
2.系统完整性设计
房间(房间号,房间级别,房间价位,房间状态)其中:房间号为主码,房间级别,房间价位,房间状态约束都为非空
工作人员(职工编号,职位,在职状态)其中:职工编号为主码,职位,在
职状态约束都为非空
客户(客户身份证,客户等级)其中:客户身份证为主码,客户等级约束为非空
开房(订单编号,房间号,客户身份证,开房时间,职工编号)其中:订单编号为主码,房间号,客户身份证,开房时间,职工编号约束为非空退房(订单编号,房间号,客户身份证,退房时间,房内额外消费,物品损坏赔偿,应付款,职工编号)其中:订单编号为主码,房间号,客户身份证,退房时间,房内额外消费,物品损坏赔偿,应付款,职工编号约束为非空,外码为房间号,客户身份证,职工编号
资产(日期,本月资出金额,本月收入金额,公司库存,职工编号)其中:日期为主码,本月资出金额,本月收入金额,公司库存,职工编号为非空,职工编号为外码
4. 数据库物理设计
表4.1 房间信息表结构
字段名说明类型长度可否为空约束
FJH 房间号数值型10 否主键
FJJB 房间级别字符型50 否
FJJW 房间价位数值型50 否
FJZT 房间状态字符型50 否
表4.2 工作人员信息表结构
字段名说明类型长度可否为空约束
ZGBH 职工编号数值型10 否主键
ZW 职位字符型50 否
ZZZT 在职状态字符型50 否
表4.3 客户信息表结构
字段名说明类型长度可否为空约束
KHSFZ 客户身份证字符型18 否主键
KHDJ 客户等级字符型50 否
表4.4 开房信息表结构
字段名说明类型长度可否为空约束DDBH 订单编号数值型20 否主键FJH 房间号数值型10 否
KHSFZ 客户身份证字符型18 否
KFSJ 开房时间字符型50 否
ZGBH 职工编号数值型10 否外码表4.5 退房信息表结构
字段名说明类型长度可否为空约束DDBH 订单编号数值型20 否主键FJH 房间号数值型10 否外码KHSFZ 客户身份证字符型18 否外码TFSJ 退房时间字符型50 否
FNEWXF 房内额外消费数值型10 是
WPSHPC 物品损坏赔偿数值型10 是
YFK 应付款数值型10 否
ZZBH 职工编号数值型10 否外码表4.6 资产信息表结构
字段名说明类型长度可否为空约束RQ 日期字符型50 否主键BYZCJE 本月资出金额数值型10 否
BYSRJE 本月收入金额数值型10 否
GSKC 公司库存数值型10 否
ZGBH 职工编号数值型10 否外码
5. 数据库实施
5.1.1各数据表说明
编号数据表名称类型内容
1 房间主表记录房间信息
2 工作人员主表记录工作人员信息
3 客户主表记录客户等级信息
4 开房主表记录开房信息
5 退房主表记录退房信息
6 资产主表记录公司资产变动信息
5.1.2数据库创建
在SQL SERVER 2005中创建邮局订报系统数据库,在数据库中创建房间,工作人员,客户,开房,退房,资产数据表及加入相关约束。
创建了满足管理需求的视图,写出相关业务操作所需的查询语句等。
操作代码详见“5120145084_梁学言.sql”文件。
5.2数据库操作
CREATE DATABASE `abc` ; //创建数据库
USE `abc`;
DROP TABLE IF EXISTS `房间`;
CREATE TABLE `房间` (
`房间号` INT(10) NOT NULL,
`房间级别` VARCHAR(50) NOT NULL,
`房间价位` VARCHAR(50) NOT NULL,
`房间状态` VARCHAR(50) NOT NULL,
PRIMARY KEY (`房间号`)
) ENGINE=INNODB DEFAULT CHARSET=latin1; //创建房间表
USE `abc`;
DROP TABLE IF EXISTS `工作人员`;
CREATE TABLE `工作人员` (
`职工编号` INT(10) NOT NULL,
`职位` VARCHAR(50) NOT NULL,
`在职状态` VARCHAR(50) NOT NULL,
PRIMARY KEY (`职工编号`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
//创建工作人员表
USE `abc`;
DROP TABLE IF EXISTS `开房`;
CREATE TABLE `开房` (
`订单编号` INT(10) NOT NULL,
`房间号` INT(10) NOT NULL,
`客户身份证` INT(18) NOT NULL,
`开房时间` VARCHAR(50) NOT NULL,
`职工编号` INT(10) NOT NULL,
PRIMARY KEY (`订单编号`),
KEY `房间号` (`房间号`),
KEY `客户身份证` (`客户身份证`),
KEY `职工编号` (`职工编号`),
CONSTRAINT `@5f00@623f_ibfk_1` FOREIGN KEY (`房间号`) REFERENCES `房间` (`房间号`),
CONSTRAINT `@5f00@623f_ibfk_2` FOREIGN KEY (`客户身份证`) REFERENCES `客户` (`客户身份证`),
CONSTRAINT `@5f00@623f_ibfk_3` FOREIGN KEY (`职工编号`) REFERENCES `工作人员` (`职工编号`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
//创建开房表
USE `abc`;
DROP TABLE IF EXISTS `退房`;
CREATE TABLE `退房` (
`订单编号` INT(20) NOT NULL,
`房间号` INT(10) NOT NULL,
`客户身份证` INT(18) NOT NULL,
`退房时间` VARCHAR(50) NOT NULL,
`房内额外消费` INT(10) NOT NULL,
`物品损坏赔偿` INT(10) NOT NULL,
`应付款` INT(10) NOT NULL,
`职工编号` INT(10) NOT NULL,
PRIMARY KEY (`订单编号`),
KEY `房间号` (`房间号`),
KEY `客户身份证` (`客户身份证`),
KEY `职工编号` (`职工编号`),
CONSTRAINT `@9000@623f_ibfk_1` FOREIGN KEY (`房间号`) REFERENCES `房间` (`房间号`),
CONSTRAINT `@9000@623f_ibfk_2` FOREIGN KEY (`客户身份证`) REFERENCES `客户` (`客户身份证`),
CONSTRAINT `@9000@623f_ibfk_3` FOREIGN KEY (`职工编号`) REFERENCES `工作人员` (`职工编号`)
) ENGINE=INNODB DEFAULT CHARSET=latin1; //创建退房表
USE `abc`;
DROP TABLE IF EXISTS `资产`;
CREATE TABLE `资产` (
`日期` VARCHAR(50) NOT NULL,
`本月资出金额` INT(10) NOT NULL,
`本月收入金额` INT(10) NOT NULL,
`公司库存` INT(10) NOT NULL,
`职工编号` INT(10) NOT NULL,
PRIMARY KEY (`日期`),
KEY `职工编号` (`职工编号`),
CONSTRAINT `@8d44@4ea7_ibfk_1` FOREIGN KEY (`职工编号`) REFERENCES `工作人员` (`职工编号`)
) ENGINE=INNODB DEFAULT CHARSET=latin1; //创建资产表
INSERT INTO‘abc’.’房间’
(‘房间号’
,’房间级别’
,’房间状态’
,’房间价位’)
VALUES
(‘房间号,int’>
,’房间级别,varchar(50),’
,’房间状态,varchar(50),’
,’房间价位,varchar(50),’) //输入房间信息
INSERT INTO‘ABC’.’工作人员’
(‘职工编号’
,’职位’
,’在职状态’)
VALUES
(‘职工编号,int’
,’职位,varchar(50)’
,’在职状态,varchar(50)’)
//输入工作人员信息
其他输入略。
1、查看所有房间信息:
SELECT [房间号]
,[房间级别]
,[房间状态]
,[房间价位]
FROM [ABC].[dbo].[房间]
2、通过房间号查询当前房间信息:SELECT [房间号]
,[房间级别]
,[房间状态]
,[房间价位]
FROM [ABC].[dbo].[房间]
WHERE [房间号]='X'
3、通过价位或房间级别查询相应房间号:SELECT [房间号]
FROM [ABC].[dbo].[房间]
WHERE [房间价位]='X'
//WHERE[房间级别]='X'
4、通过客户身份证查询用户等级:SELECT [用户等级]
FROM [ABC].[dbo].[客户]
WHERE [客户身份证]='X'
5、通过订单编号查询款项:
SELECT [应付款]
,[物品损坏赔偿]
,[房内额外消费]
FROM [ABC].[dbo].[退房]
WHERE [订单编号]='X'
6、通过日期查询当月收支情况:
SELECT [本月资出金额]
,[本月收入金额]
,[公司库存]
FROM [ABC].[dbo].[资产]
WHERE [日期]='X年X月'
6. 部分系统功能实现
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:GEQUGUANLIConnectionString %>"
SelectCommand="SELECT * FROM [FaXingShang]"></asp:SqlDataSource>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
#form1 {
text-align: center;
}
</style>
</head>
<body style="background-color: #00FFFF">
<form id="form1" runat="server">
<div>
</div>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="Data Source=.;Initial Catalog=abc;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM [房
间]"></asp:SqlDataSource>
<p style="background-color: #00FFFF">
</p>
<asp:TextBox runat="server"
OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="房间查询" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource2"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Height="379px"
Width="869px">
<Columns>
<asp:BoundField DataField="房间号" HeaderText="房间号"
SortExpression="房间号" />
<asp:BoundField DataField="房间级别" HeaderText="房间级别"
SortExpression="房间级别" />
<asp:BoundField DataField="房间价位" HeaderText="房间价位"
SortExpression="房间价位" />
<asp:BoundField DataField="房间状态" HeaderText="房间状态"
SortExpression="房间状态" />
</Columns>
</asp:GridView>
</form>
<p style="text-align: center">
</p>
<p style="text-align: center">
</p>
</body>
</html>
7. 总结
这次实验使我受益匪浅。
数据库课程设计是对于一个给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足用户的应用需求。
信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象要进行哪些操作,如查询、加入、删除、修改、统计等操作。
数据库课程设计的目标是为了用户和各种应用系统提供一个信息基础设施和高效率的运行
环境。
通过这次试验,我对数据库设计有了更深的认识,并且终生难忘。