《数据库应用系统实践》------ 酒店客房管理系统

news2024/12/23 9:22:06

系列文章

《数据库应用系统实践》------ 酒店客房管理系统


文章目录

  • 系列文章
  • 一、需求分析
    • 1、系统背景
    • 2、 系统功能结构(需包含功能结构框图和模块说明)
    • 3.系统功能简介
  • 二、概念模型设计
    • 1.基本要素(符号介绍说明)
    • 2.ER图
  • 三、逻辑模型设计
    • 1.ER模型向关系模型转换规则
    • 2.转换后的关系模型
    • 3.关系模型优化(达到3NF)
  • 四、物理设计
    • 1.创建数据库的SQL语句或截图
    • 2.创建所有表的SQL语句或截图(包含完整性约束)
  • 五、数据库实施
    • 1.粘贴所创建的数据库关系图
    • 2.数据录入
    • 3.数据处理
  • 六、数据库应用系统实现
    • 1.相关界面截图(对每一张截图进行一定的文字说明)
    • 2.和数据库连接的程序语句
    • 3.其它代码
  • 七、总结
    • 参考文献:
  • 八、源代码获取


一、需求分析

1、系统背景

为了方便酒店客房的管理,我设计了酒店客房管理系统来满足需求。

2、 系统功能结构(需包含功能结构框图和模块说明)

(1)功能结构图
在这里插入图片描述

(2)模块说明
系统分为员工、客房、客户三个大的模块
每个模块包含相应信息。

3.系统功能简介

可以对员工信息以及客房信息进行管理,员工可以查询相关信息。

二、概念模型设计

1.基本要素(符号介绍说明)

.基本要素(符号介绍说明)
① 矩形:表示实体。
② 椭圆形:表示属性,即实体的属性。
③ 菱形:表示联系。
④ 连线:该连线为没有方向的线段,分为连接实体与属性(矩形与椭圆形之间的连线)和连接实体与联系名(矩形与菱形之间的连线);实体与联系名的连线旁需标注联系的类型,如1:1、1:n、m:n。
注意:在联系类型标注时请按照约定俗成的方式标注,一对多使用1:n,多对多使用m:n,如果超过两个实体请采用m:n:p:q:

2.ER图

在这里插入图片描述

三、逻辑模型设计

1.ER模型向关系模型转换规则

① 实体转换为单独的关系模式。
② 一对一联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将其中一个实体的之间加入到另外一个实体的关系模式中,作为外键。
③ 一对多联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将n实体的主键合并到1实体的关系模式中,作为1实体关系模式的外键。

2.转换后的关系模型

员工(员工编号,姓名,性别,出生日期,联系方式)
客户(客户编号,姓名,性别,出生日期,身份证号,联系方式)
客房(客房编号,类型,状态,价格)
订单(订单编号,订房时间,押金,是否退房)
管理(员工编号,客房编号)员工编号引用为员工的外码,客房编号引用为客房的外码
住宿(客房编号,客户编号)客房编号引用为客房的外码,客户编号引用为客户的外码
登记 (员工编号,订单编号) 员工编号引用为员工的外码,订单编号引用为订单的外码
预定(订单编号,客户编号)订单编号引用为订单的外码,客户编号引用为客户的外码

3.关系模型优化(达到3NF)

以上要素都属于第三范式

四、物理设计

1.创建数据库的SQL语句或截图

CREATE DATABASE 酒店客房管理系统
ON PRIMARY
(NAME=YAN,
FILENAME='E:\SQLDate\酒店客房管理系统.mdf',
SIZE=5MB,
MAXSIZE=UNLIMITED)
LOG ON
(NAME=YAN_log,
FILENAME='E:\SQLDate\酒店客房管理系统_log.ldf',
SIZE=3MB,
MAXSIZE=UNLIMITED)

2.创建所有表的SQL语句或截图(包含完整性约束)

CREATE TABLE 员工表
(Sno CHAR(10)  PRIMARY KEY,
 Sname  CHAR(10) NOT NULL,
 Ssex CHAR(2) ,
 Sage TINYINT,
 Sphone CHAR(20))

CREATE TABLE 客户表
(Cno CHAR(10)  PRIMARY KEY,
Cname CHAR(10) NOT NULL,
 Csex CHAR(2) ,
 Cage TINYINT,
Cidcard CHAR(18) NOT NULL,
Cphone CHAR(20))

CREATE TABLE 客房表
(Rno CHAR(10)  PRIMARY KEY,
 Rtype CHAR(10) NOT NULL,
Rsta CHAR(2) DEFAULT 0,
Rprice CHAR(5))

CREATE TABLE 订单表
(Ono CHAR(10) PRIMARY KEY,
 Otime SMALLDATETIME,
Omoney INT,
Oout CHAR(2) DEFAULT 0)

CREATE TABLE 管理表
(Sno CHAR(10)  ,
 Rno CHAR(10)  PRIMARY KEY(Sno,Rno),
 foreign key(Sno)references 员工表(Sno),
 foreign key(Rno)references 客房表(Rno)
)

CREATE TABLE 住宿表
(Rno CHAR(10) ,
Cno CHAR(10) PRIMARY KEY(Cno,Rno),
foreign key(Cno)references 客户表(Cno),
 foreign key(Rno)references 客房表(Rno)
)

CREATE TABLE 登记表
(Sno CHAR(10) ,
Ono CHAR(10) PRIMARY KEY(Sno,Ono),
foreign key(Sno)references  员工表(Sno),
 foreign key(Ono)references 订单表(Ono)
)

CREATE TABLE 预定表
(Ono CHAR(10),
Cno CHAR(10)PRIMARY KEY(Cno,Ono),
foreign key(Cno)references  客户表(Cno),
 foreign key(Ono)references 订单表(Ono)
)

五、数据库实施

1.粘贴所创建的数据库关系图

在这里插入图片描述

2.数据录入

insert 员工表 values('001','王杰','男','23','13022334455')
insert 员工表 values('002','程梦','男','25','15221158266')
insert 员工表 values('003','周宇轩','女','20','13669078243')
insert 员工表 values('004','张林','男','30','15000963321')
insert 员工表 values('005','冯晓','女','27','13177895426')
insert 员工表 values('006','宋佳','女','27','18025646577')

insert 客户表 values('150401','韩宏锵','男','26','50023219901136949','15888990013')
insert 客户表 values('150531','王晓娟','女','29','65282199608234577','13262222453')
insert 客户表 values('150501','刘德华','男','26','332885199302086785','13155673245')
insert 客户表 values('150661','蒋玉荣','女','30','500232199006014321','18099764531')
insert 客户表 values('150791','朱珠','女','33','458900199412037655','15251128265')
insert 客户表 values('160101','李飞','男','42','328160199012256643','13000131003')

insert 客房表 values('1101','豪华大床房','0','628')
insert 客房表 values('1102','标准单人间','1','258')
insert 客房表 values('1103','商务间','0','328')
insert 客房表 values('1104','单人大床房','1','298')
insert 客房表 values('1105','双人双床房','1','358')
insert 客房表 values('1106','豪华大床房','0','628')
insert 客房表 values('1107','双人双床房','1','358')
insert 客房表 values('2101','标准单人间','0','258')
insert 客房表 values('2102','商务间','1','425')
insert 客房表 values('2103','标准单人间','0','258')

insert  订单表 values('01001','2015-2-3 15:24','100','1')
insert  订单表 values('01002','2015-2-4 12:03','100','0')
insert  订单表 values('01003','2015-2-5 02:02','100','0')
insert  订单表 values('01004','2015-2-6 08:20','100','1')
insert  订单表 values('01005','2015-2-7 21:13','100','0')
insert  订单表 values('01006','2015-2-8 20:00','100','0')
insert  订单表 values('01007','2015-2-8 20:00','100','0')
insert  订单表 values('01008','2015-2-8 20:00','100','0')
insert  订单表 values('01009','2015-2-8 20:00','100','0')

insert  管理表 values('001','1101')
insert  管理表 values('002','1102')
insert  管理表 values('003','1103')
insert  管理表 values('004','1104')
insert  管理表 values('005','1105')
insert  管理表 values('006','1106')

insert  住宿表 values('1101','150401')
insert  住宿表 values('1102','150531')
insert  住宿表 values('1103','150501')
insert  住宿表 values('1104','150661')
insert  住宿表 values('1105','150791')
insert  住宿表 values('1106','160101')

insert  登记表 values('001','01001')
insert  登记表 values('002','01002')
insert  登记表 values('003','01003')
insert  登记表 values('004','01004')
insert  登记表 values('005','01005')
insert  登记表 values('006','01006')
insert  预定表 values('01001','150401')
insert  预定表 values('01002','150531')
insert  预定表 values('01003','150501')
insert  预定表 values('01004','150661')
insert  预定表 values('01005','150791')
insert  预定表 values('01006','160101')

3.数据处理

(1)至少包括2张表的等值连接;
在这里插入图片描述

(2)创建视图;
在这里插入图片描述

(3)编写包含子查询的SQL语句;
在这里插入图片描述

(4)有修改语句;
在这里插入图片描述

(5)有删除语句;
在这里插入图片描述

(6)有包含聚集函数;
在这里插入图片描述

(7)有记录过滤,条件过滤语句;
在这里插入图片描述

(8)有修改表结构的SQL语句;
在这里插入图片描述

(9)用T-SQL语句写出一个对数据表处理的人机交互程序;
在这里插入图片描述

(10)编写一个触发器;
在这里插入图片描述

六、数据库应用系统实现

1.相关界面截图(对每一张截图进行一定的文字说明)

**顾客登录:(预定表,简单的查询操作)
账号:01001
密码:150401 **
在这里插入图片描述

信息查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户登录(管理表进行登录)
账号:001
密码:1101

在这里插入图片描述
信息查询:
在这里插入图片描述
在这里插入图片描述

信息修改:
在这里插入图片描述

数据增加:
在这里插入图片描述
在这里插入图片描述

数据修改:
在这里插入图片描述
在这里插入图片描述

数据删除:
在这里插入图片描述
在这里插入图片描述

2.和数据库连接的程序语句

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=酒店客房管理系统";
	String userName = "sa";
	String userPwd = "1";

3.其它代码

		s.close();
					con.close();
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}

			if (jr3.isSelected())// 顾客登录
			{
				String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
				String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=酒店客房管理系统";
				String userName = "sa";
				String userPwd = "1";
				userId = null; // 顾客的账号
				try {
					Class.forName(driverName);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				try {
					Connection con = DriverManager.getConnection(dbURL, userName, userPwd);
					Statement s = con.createStatement();
					String r1 = "select * from 管理表  where Sno=? and Rno=?";
					PreparedStatement P = con.prepareStatement(r1);
					P.setString(1, jtf1.getText());
					P.setString(2, jtf2.getText());
					ResultSet rs = P.executeQuery();
					if (rs.next()) {
						userId = rs.getString("Sno").trim();
						new Custom(userId);
						jfrm.setVisible(false);
					}

					else {
						JOptionPane.showMessageDialog(null, "Sno或Rno不正确!");
					}
					s.close();
					con.close();
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}
		}

		else if (e.getSource() == jb2) {
			System.exit(0);
		}
	}

	public static void main(String[] args) {
		new Log();
	}
}

七、总结

(可选,200字左右的小结,包括
(1)完成情况和不足之处
(2)心得体会
(3)建议)

我的设计题目是设计一个小型客房管理系统,在前期的考察和分析之后,对系统进行了设计,经过对系统进行可行性分析、需求分析、概要设计、代码编写。现已基本满足了小型酒店客房用户的需求,实现了系统的基本功能,基本达到了系统初定的设计目标。当然,在该系统里存在很多是需要改进与扩充的。本人将会在日后进一步的优化该系统,使其功能更强大,性能更好。
通过这些日子以来对“客房管理系统”的研究与设计,不但使我的系统设计和软件代码的能力得到了提高,也使我各方面的素质的到了提升,更使我意识到了自身的很多不足之处。
希望可以提供更多的的实训机会,从而可以锻炼我们的实践能力。
对于信息的删除和修改只能局限于已添加的信息上,对于原来表中的数据因为存在键值之间的约束关系,所以不能成功操纵。

参考文献:

[1]周星, 魏应彬, 云敏. JSP、JDBC与Web数据库[J]. 计算机应用, 2001(z1):2.
[2]王珊, 陈红. 数据库系统原理教程[M]. 清华大学出版社, 1998.
[3]赵丽萍, 严海帆. 用VB实现ILAS书目数据库到SQLServer数据库的转化[J]. 数据分析与知识发现, 2000, 000(0z1):24-26.

八、源代码获取

本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕

提示:代码获取链接: 下载完整源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品种小组2期—凯利公式在RFI策略中的运用

量化策略开发,高质量社群,交易思路分享等相关内容 大家好,今天我们来聊一聊松鼠2期V2版本的阶段内容——凯利公式在RFI择时框架上的运用。 松鼠品种小组2期第1版策略、讲解视频已完结,该期小组我们分享了全新“普适性、自适应”择…

0基础学习VR全景平台篇第32章:场景功能-嵌入视频

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 一、本功能将用在哪里? 嵌入功能可对VR全景作品嵌入【图片】【视频】【文字】【标尺】四种不同类型内容; 本次主要带来视频类型的介绍,通过嵌入视频功能,…

python+django+vue关爱无主狗流浪狗动物领养公益网站

很多的家庭都开始有养个小宠物的习惯,平时可以排解寂寥。随着近些年来大家养宠物的数量逐日剧增,人类对自己行为的规范与责任感渐渐的缺失,从而造成社会上的流浪动物也越来越多。流浪狗的伤人的事件则更多的出现在了报纸,电视,网络上。国家社…

git 项目演练:007

接下来进行项目演练,这是一个项目提交到git一个完整过程 1. 创建一个项目, 如下,我创建了一个“测试项目” 2. 将项目添加到git管理仓库,打开Git Bash, cd到“测试项目”中 3. 使用git init 命令将项目添加&#xff0c…

python基于pygame库实现弹幕效果(多行显示,速度不同,颜色不同,循环显示)

一、实现目标 使用python实现类似弹幕的显示效果,弹幕文本存储在txt文件中,弹幕多行显示,弹幕颜色不同有区别,弹幕的速度不一,弹幕要循环显示。 弹幕文本数据:danmu.txt 永远的神 哥哥,好帅啊 啊啊啊啊 太好看啦 666 爱了爱了 啦啦啦啦啦啦 牛逼!牛逼!牛逼! 厉害啊…

5G的遮羞布又被撕了,只是这次是韩国,5G为何变成如此模样?

日前韩国公平交易委员会发布声明,对韩国三大运营商重罚336亿韩元,原因是韩国夸大5G网速,实际网速不到理论速率的十分之一,可以说韩国撕下了5G的遮羞布。 韩国公平交易委员会指出运营商宣传5G的时候强调5G的理论速度可以达到10Gbps…

JavaScrip练习

HTMLJS计算器 <!DOCTYPE html> <html> <head><title>Calculator</title> </head> <body> <!-- 计算器显示 --> <input type"text" id"display" disabled> <br><!--计算器按钮onclick &am…

数据偏度介绍和处理方法

偏度&#xff08;skewness&#xff09;是用来衡量概率分布或数据集中不对称程度的统计量。它描述了数据分布的尾部&#xff08;tail&#xff09;在平均值的哪一侧更重或更长。偏度可以帮助我们了解数据的偏斜性质&#xff0c;即数据相对于平均值的分布情况。 有时&#xff0c;正…

自主品牌份额持续提升!福特CEO表态,中国车企才是竞争对手

2023年1-4月&#xff0c;中国市场自主品牌乘用车新车交付275.13万辆&#xff0c;份额占比48.63%&#xff0c;两项数字分别比上年同期增长4.68%&#xff0c;以及提升约3个百分点。其中&#xff0c;新能源汽车继续成为主要推动因素。 “中国电动汽车制造商是我们的主要竞争对手&a…

使用Vuex进行状态管理

在Vue.js应用程序中&#xff0c;状态管理是一个重要的主题。当应用程序变得复杂&#xff0c;组件之间的状态共享和通信变得困难&#xff0c;这时候使用Vuex就会变得十分有用。Vuex是一个专门为Vue.js设计的状态管理库&#xff0c;它提供了一个集中式的状态管理方案&#xff0c;…

Logisim 头歌 偶校验编码设计图解及代码(计算机组成原理)

努力是为了不平庸~ 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。 急的同学请直接点击目录跳到下方解答处&#xff01;&#xff01; 目录 图解&#xff1a; 代码题解&#xff08;免费&#xff09;&#xff1a; 实…

PyTorch-Sequential

Cifar-10用的模型结构&#xff1a; 第一次卷积 (3,32,32) to (32,32,32) 卷积核&#xff08;55&#xff09;&#xff0c;我们需要进行一下计算&#xff0c;看看padding和stride是多少: 未引入Sequential前&#xff1a; import torch from torch import nn from torch.nn impo…

如何用chatGPT赚钱?

赚钱思路 1&#xff09;初级-账号 对于新事物的出现&#xff0c;很多人对此都是抱着一个看热闹的态度&#xff0c;大家对于这个东西的整体认知水平是很低的&#xff01; 所以这个时候的思路就是快速去抢占市场&#xff0c;去各个平台发一些和ChatGPT相关的视频和文章去抢占市…

速递:惠州学院生科院副院长谢海伟一行莅临易基因科技参观交流 | 校企合作

2023年05月26日上午&#xff0c;惠州学院生命科学学院副院长谢海伟教授、陈兆贵教授、陈勇智博士、龚浩博士及生科院本科毕业生陈佳良一行5人莅临深圳市易基因科技有限公司参观交流&#xff0c;并举行“惠州学院实践教学基地“挂牌仪式。易基因总经理王君文、副总经理丁振东等公…

vue项目中使用depcheck检查缺失的依赖项目

使用depcheck检查缺失的项目依赖 由来&#xff1a;今天在做地铁的时候&#xff0c;刷短视频发现一个非常好用的东西&#xff0c;分享一下 它可以帮助我们找出问题&#xff0c;在 package.json 中&#xff0c;每个依赖包如何被使用、哪些依赖包没有用处、哪些依赖包缺失。它是解…

EMC测试中放大器的线性度验证

在进行EMC抗扰度测试时&#xff0c;必须在所有适用的测试频率下检查所用射频功率放大器的线性度。检查方法如下&#xff1a; 确定产生测试电平所需的功率&#xff0c;包括调制。例如: 测试电平:10v /m 调制:80% AM, 1 kHz 所需场强包括调制:18 V/m 辐射抗干扰校准配置示例 在特…

【LED子系统】九、数据结构详解(番外篇)

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强公司&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录…

AI大爆炸 | ChatGPT引爆AI热潮,大佬怎么看?

ChatGPT在AI领域点起的大火&#xff0c;从去年烧到了今年。以ChatGPT为代表的AIGC(人工智能生成内容)在全球风靡&#xff0c;多个代表性AI大模型纷纷涌现&#xff0c;不少业内人士高呼以人机智能融合为主要特征的“AI 2.0时代”已经来临。      有人为人工智能引领未来的广…

jQuery-表中数据的添加与删除

<!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>表中数据的添加与删除</title> <link rel"stylesheet" type"text/css&quo…

vue插槽使用总结

什么是插槽解决什么问题插槽的分类默认插槽具名插槽作用域插槽 什么是插槽 插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。…