《数据库应用系统实践》------ 公园游客日流量管理系统

news2024/11/25 19:13:27

系列文章

《数据库应用系统实践》------ 公园游客日流量管理系统


文章目录

  • 系列文章
  • 一、需求分析
    • 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 park
ON PRIMARY
(NAME=YAN,
FILENAME='E:\SQLDate\park.mdf',
SIZE=5MB,
MAXSIZE=UNLIMITED)
LOG ON
(NAME=YAN_log,
FILENAME='E:\SQLDate\park.ldf',
SIZE=5MB,
MAXSIZE=UNLIMITED)

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

CREATE TABLE 管理员(
管理员账号       CHAR(20)      PRIMARY KEY,
密码			 CHAR(20)    NOT NULL
)

CREATE TABLE 公园信息(
公园编号       CHAR(20)      PRIMARY KEY,
公园类别		    CHAR(20)     NOT NULL,
管理员账号      CHAR(20)     NOT NULL
FOREIGN KEY (管理员账号) REFERENCES 管理员(管理员账号)
)

CREATE TABLE 游客(
游客账号               CHAR(20)     PRIMARY KEY,
密码                   CHAR(20)     NOT NULL,
公园编号               CHAR(20)     NOT NULL,
FOREIGN KEY (公园编号) REFERENCES 公园信息(公园编号)
)


CREATE TABLE 日流量(
公园号           CHAR(20)      PRIMARY KEY,
人数             CHAR(20)     NOT NULL,
 FOREIGN KEY (公园号) REFERENCES 公园信息(公园编号)
)

五、数据库实施

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

在这里插入图片描述

2.数据录入

INSERT INTO 管理员 VALUES ('001','001')
INSERT INTO 管理员 VALUES ('002','002')
INSERT INTO 管理员 VALUES ('003','003')
INSERT INTO 管理员 VALUES ('004','004')
INSERT INTO 管理员 VALUES ('005','005')


INSERT INTO 公园 VALUES ('001','相城公园','001')
INSERT INTO 公园 VALUES ('002','高新区公园','002')
INSERT INTO 公园 VALUES ('003','苏大附一院','003')
INSERT INTO 公园 VALUES ('004','淮安第二人民公园','004')
INSERT INTO 公园 VALUES ('005','苏州口腔公园','005')

INSERT INTO 游客 VALUES ('001','001','001')
INSERT INTO 游客 VALUES ('002','002','002')
INSERT INTO 游客 VALUES ('003','003','003')
INSERT INTO 游客 VALUES ('004','004','004')
INSERT INTO 游客 VALUES ('005','005','005')

INSERT INTO 日流量 VALUES ('001','001')
INSERT INTO 日流量 VALUES ('002','002')
INSERT INTO 日流量 VALUES ('003','003')
INSERT INTO 日流量 VALUES ('004','004')
INSERT INTO 日流量 VALUES ('005','005')

3.数据处理

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

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

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

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

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

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

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

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

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

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

六、数据库应用系统实现

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

游客登录:
账号:001
密码:001

在这里插入图片描述

信息查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管理员登录:
账号:002
密码:002

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

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

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

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

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

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

	String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=park";
	String userName = "sa";
	String userPwd = "1";

3.其它代码

		jp1.add(pc, "pc");
		jp1.add(sc, "sc");
		jp1.add(px, "px");
		crd.show(jp1, "pc");
		jp2.setBounds(550, 5, 200, 450);
		jp2.setLayout(new GridLayout(5, 1, 0, 10));
		jp2.setBorder(BorderFactory.createEmptyBorder(50, 50, 50, 50));
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		jb4.addActionListener(this);
		jp2.add(jb1);
		jp2.add(jb2);

		jp2.add(jb3);
		jp2.add(jb4);
		contentPane.add(jp1);
		contentPane.add(jp2);
		jfrm.setVisible(true);
	}

	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == jb1) {
			crd.show(jp1, "pc");
		} else if (e.getSource() == jb2) {
			crd.show(jp1, "sc");
		} else if (e.getSource() == jb3) {
			crd.show(jp1, "px");
		} else if (e.getSource() == jb4) {
			System.exit(0);
		}
	}
}

七、总结

(可选,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/579988.html

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

相关文章

【阅读笔记】概率预测之MQ-RNN(含Pytorch代码实现)

本文作为自己阅读论文后的总结和思考,不涉及论文翻译和模型解读,适合大家阅读完论文后交流想法,关于论文翻译可以查看参考文献。论文地址:https://arxiv.org/abs/1711.11053 MQ-RNN 一. 全文总结二. 研究方法三. 结论四. 创新点五…

谷歌推出免费AI编程神器Colab,欲将Copilot拉下神坛

在如今的AI编码工具领域,微软旗下的Github Copilot可以算得上是一家独大,而作为老对手的谷歌显然并不愿屈服于此。 近日,谷歌通过其官网高调发文宣布,将为研发工具Google Colaboratory(Colab)加入全新的AI…

DAY 68 redis高可用的主从复制、哨兵、cluster集群

Redis 高可用 什么是高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服…

RT-Thread memheap 开启多块 SRAM的方法

验证环境 NUCLEO-L476RG 开发板,板载 STM32L476RGT6(96K SARM1 32K SRAM2) Win10 64 位 Keil MDK 5.36 RT-Thread 5.0.1 版本(2023-05-28 master 主线) 功能描述 最近在研究 RT-Thread 内存的管理,熟…

Linux内核源码分析 2:Linux内核版本号和源码目录结构

一、Linux的版本 1. 稳定版和开发版 Linux内核主要分为两种版本: 稳定版(长期支持版):稳定版的内核具有工业级的强度,可以广泛地应用和部署。而每一代新推出的稳定版内核大部分都只是修正了一些Bug或是加入了一些新的…

【网络协议详解】——FTP系统协议(学习笔记)

目录 🕒 1. 概述🕒 2. 工作原理🕘 2.1 两个连接 🕒 3. 相关命令与处理🕘 3.1 接入命令🕘 3.2 文件管理命令🕘 3.3 数据格式化命令🕘 3.4 端口定义命令🕘 3.5 文件传输命令…

计算机组成原理 期末复习笔记

🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 第一章 计算机系统概论计算机软件的发展 计算机硬件的基本组成 计算机系统的层次结构 计算机的性能指标 第二章 数据表示 与 第三章 数据运算与运…

Go语言实现JDBC

Go语言操作数据库 Go语言提供了关于数据库的操作,包下有sql/driver 该包用来定义操作数据库的接口,这保证了无论使用哪种数据库,操作方式都是相同的; 准备工作: 下载驱动 需要在代码所在文件夹下执行相应的命令 go get github.com/go-sql-driver/mys…

DAY 69 rsync远程同步

rsync介绍 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前…

超超超级详细的画图以及代码分析各种排序的实现!

各种排序的实现 排序的概念直接插入排序基本思想实现直接插入排序的特性总结 希尔排序基本思想实现希尔排序的特性总结 简单选择排序基本思想实现直接选择排序的特性总结 堆排序实现堆排序的特性总结 冒泡排序基本思想实现冒泡排序的特性总结 快速排序基本思想hoare版本挖坑法前…

JDBC测试

JDBC是什么? JDBC是一套接口,各大厂商来实现这套接口,进行数据库连接操作 比如Mysql驱动,Oracle驱动,sqlServer驱动,高斯驱动 以Mysql为例: JDBC编程六步 第一步:注册驱动 第二步:获取连接 第三步:获取数据库操作对象 第…

为什么不用Go开发操作系统?

操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly 等语言因其低开销和 “接近机器码” 的特性而被用于开发操作系统。 但诸如 Go 等高级语言的兴起引入了一些…

黑客为什么不攻击赌博网站?

攻击了,只是你不知道而已! 同样,对方也不会通知你,告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客,也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件:28岁小伙因赌博…

Xubuntu22.04之替换blueman-manager连接蓝牙设备(一百七十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【C++】static在类中修饰成员变量成员函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、定义:二、特性:1. 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区2. 静态成员变量必须在类外定…

C++学习笔记3:sort和priority_queue的比较器重载

1 sort 三种方法 1. 直接重载函数 #include <vector> #include <memory> #include <vector> #include <queue> #include <iostream> #include <algorithm>using namespace std;class Node{ public:int value;Node(){value 0;};explici…

【解决】sklearn-LabelEncoder遇到没在编码规则里的新值

文章目录 一、问题描述二、解决方法Reference 一、问题描述 问题&#xff1a;sklearn-LabelEncoder 遇到没在编码规则里的新值 二、解决方法 方法一&#xff1a;直接保存old_data和encoder_data和之间的映射关系&#xff0c;字典或者下面的csv格式里都可以。 for col in be…

UDS诊断实战系列-再谈19 04读取冻结帧子服务

本文框架 1. 前言2. 19 04 子服务2.1 请求某DTC快照信息2.1.1 请求报文格式及说明2.1.2 响应报文格式及说明 3. 开发注意事项3.1 快照高低字节顺序3.2 快照DID 1. 前言 19服务在整个UDS服务中非常重要&#xff0c;而19 04读取DTC冻结帧数据子服务又在0x19服务中非常重要&#…

<Linux开发>驱动开发 -之-资源的并发与竞争处理

&#xff1c;Linux开发&#xff1e;驱动开发 -之-资源的并发与竞争处理 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过…

K8s之Pod生命周期、启动停止钩子详解

文章目录 一、Pod生命周期流程二、初始化容器-initContainers三、主容器操作-containers1、启动钩子-lifecycle.postStart2、停止钩子-lifecycle.preStop 一、Pod生命周期流程 Pod生命周期整个过程 如下图&#xff1a; 1、在启动任何容器之前&#xff0c;前创建 pause 容器&am…