《数据库应用系统实践》------ 小区停车管理系统

系列文章

《数据库应用系统实践》------ 小区停车管理系统


文章目录

  • 系列文章
  • 一、需求分析
    • 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=5MB,
MAXSIZE=UNLIMITED)

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

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 
)

CREATE TABLE 车位(
车位号       CHAR(20)      PRIMARY KEY,
车位名		 CHAR(20)      NOT NULL,
管理员账号	 CHAR(20)	   NOT NULL, 
FOREIGN KEY (管理员账号) REFERENCES 管理员(管理员账号)
)

CREATE TABLE 汽车(
车牌号         CHAR(20)     PRIMARY KEY,
车排名         NCHAR(10)    NOT NULL,
型号		   NCHAR(10)    NOT NULL,
小时租金       NCHAR(10)    NOT NULL,
用户账号       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','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','CITI','001')
INSERT INTO 车位 VALUES ('002','CLPS','002')
INSERT INTO 车位 VALUES ('003','ASP','003')
INSERT INTO 车位 VALUES ('004','WDL','004')
INSERT INTO 车位 VALUES ('005','HJK','005')

INSERT INTO 汽车 VALUES ('001','路虎','轿车',1000,'001')
INSERT INTO 汽车 VALUES ('002','奔驰','越野',2000,'002')
INSERT INTO 汽车 VALUES ('003','奥迪','越野',3000,'003')
INSERT INTO 汽车 VALUES ('004','玛莎拉蒂','跑车',5000,'004')
INSERT INTO 汽车 VALUES ('005','保时捷','跑车',5000,'005')

3.数据处理

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

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

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

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

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

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

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

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

(9)用T-SQL语句写出一个对数据表处理的人机交互程序;

在这里插入图片描述

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

六、数据库应用系统实现

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

用户登录
在这里插入图片描述

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

管理员
在这里插入图片描述

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

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

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

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

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

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
				String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=小区停车管理系统";
				String userName = "sa";
				String userPwd = "1";

3.其它代码

		xg.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
					try{
						Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
						Connection conn =DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName =小区停车管理系统","sa","1");
						String sql ="update 管理员 set 管理员账号='"+d1.getText()+"',密码='"+d2.getText()+"' where 管理员账号='"+d1.getText()+"'";
						PreparedStatement pstm = conn.prepareStatement(sql);//执行查询
						pstm.executeUpdate();
						JOptionPane.showMessageDialog(frm,"修改成功");
						}catch(ClassNotFoundException cnfe) {
								JOptionPane.showMessageDialog(null, "数据源错误" ,"错误",JOptionPane.ERROR_MESSAGE);
							}
						catch(SQLException sqle) {
								JOptionPane.showMessageDialog(null, "数据操作错误" ,"错误",JOptionPane.ERROR_MESSAGE);
							}
		}});
		
			lr.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			try{
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");	
			    Connection conn =DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName =小区停车管理系统","sa","1");//建立查询条件
			    String sql = "insert into 管理员 (管理员账号,密码) values ('" +d1.getText()+"','"+d2.getText()+"')";
			    PreparedStatement pstm =conn.prepareStatement(sql);//执行查询
			    pstm.executeUpdate();
			    JOptionPane.showMessageDialog(frm, "添加成功");}
			catch(ClassNotFoundException cnfe) {
				JOptionPane.showMessageDialog(null,"数据源错误","错误",JOptionPane.ERROR_MESSAGE);
			}
			catch(SQLException sqle) {
				JOptionPane.showMessageDialog(null,"数据操作错误","错误",JOptionPane.ERROR_MESSAGE);
			}
		}});
			sc.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				try{
					Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" );
					Connection conn2 =DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=小区停车管理系统","sa","1");//建立查询条件
					String sql2 ="delete from 管理员  where 管理员账号='"+d1.getText()+"'";

七、总结

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

本次大作业实践,我已经完成了全部的内容,其中我知道了很多的内容。数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把 DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。
关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。

参考文献:

[1]不公告发明人. 一种小区停车管理系统:, CN204759557U[P]. 2015.
[2]刘引涛. SQLServer数据库管理与应用技术[M]. 高等教育出版社, 2013.
[3]高少航. ASP.NET及SQLServer的基本应用[J]. 电脑知识与技术:学术版, 2010, 6(10):2.

八、源代码获取

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第13届蓝桥杯Scratch选拔赛真题集锦

第13届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题问答题 跳舞机游戏 题目说明 编程实现 跳舞机游戏。 具体要求: 1).点击绿旗,舞台左上角显示得分0代表玩家分数,在得分右侧倒计时10代表游戏时长(10s) 2).游戏开始倒数计时,在舞台上随机显示上、下、左、右四个箭头中…

SCMA基本原理介绍

SCMA: Sparse Code Multiple Access SCMA基本原理 我们考虑一个同步(synchronous)的SCMA系统, 含1个基站(Base Station, BS); J J J个用户(so called layers);K个OFDM…

vue2介绍(入门)

目录 声明式渲染 v-bind v-if条件与循环 name命名 学会log打印 一些js方法 双向绑定v-model和v-bind 那么请实现一个复选框吧 自定义标签模板 声明式渲染 我感觉这里文档的意思是双向绑定, 或许需要清理一下js缓存机制 ,嗯...不懂,响应式&…

深入解析Linux C/C++ 编程中的内存泄漏问题

深入解析Linux C/C 编程中的内存泄漏问题 I. 前言 (Introduction)1.1 文章目的与内容概述 (Purpose and Overview of the Content)1.2 重要性和实用性的说明 (Significance and Practicality Explanation)1.3 数据结构与内存泄漏的基本概念 (Basic Concepts of Data Structure …

PDF文件数字证书签名指南

一、安装PDF证书的环境 1.1 PDF证书安装环境 Windows pc 机一台 安装Adobe Acrobat 软件 PDF文档签名证书一张(备注:本指南使用沃通内部文档加密证书进行操作,通用其它版本证书) 1.2 网络环境要求 请确保您签名的电脑可以正常访问外网。 二、PDF证书安装 2.…

数据结构之二叉树的基本实现

在我们之前已经了解的堆这样的完全二叉树的实现,也对树型结构有了一些了解,那么今天我们来看看二叉树的一些性质。 因为二叉树是一种每个节点至多只有两个子树(即二叉树的每个节点的度不大于2),并且二叉树的子树有左右…

Shell脚本攻略:shell函数应用

目录 一、理论 1.shell函数 2.函数传参 3.函数变量的作用范围 4.递归 5.函数位置变量与脚本位置变量区别 6.创建库 二、实验 1.实验一 一、理论 1.shell函数 (1)概念 将命令序列按格式写在一起,可方便重复使用命令序列。 ① 避免…

Docker容器与虚拟机(VM)大对比

Docker是一个开源应用容器引擎。Docker可以将应用程序与基本架构分开,从而快速交付软件。 传统虚拟机的运行需要占用较高的资源,包括磁盘空间、内存和处理器性能。每个虚拟机都需要完整的操作系统和应用程序副本,这在资源利用和启动时间上存…

js实现PDF 预览和文件下载

在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,PDF 类型文件的来源又包括 H5 移动端 和 PC 端,而针对这两个不同端的处理会有些许不同,下文会有所提及。 针对 PDF 预览 的文章不在少数,但似乎都没有提及可能遇到的问…

Markdown可以在线编辑吗?这个办法很好用

Markdown是一种轻量级标记语言,它使用简单的语法来创建文本,非常易于学习。它最初被设计为一种用于写作的格式,但现在已经成为了一种非常受欢迎的文本编辑工具。 作为一个较为方便的在线文本编辑器,它可以用代码代替文字&#xf…

27事务管理AOP

一、MySQL事务回顾 二、Spring事务管理 Spring框架的第一大核心:IOC控制反转 在DeptServiceImpl下删除部门方法下新加一个删除员工信息的操作,注意:此时的id是部门id。 1、问题分析 2、Transactional-Spring事务管理 一般是在Service实现类的…

Visual Studio内引用Lua解释器,编译Lua源码,执行Lua脚本

前言 本篇在讲什么 在Visual Studio中引入lua的解释器 使用C调用Lua文件 本篇适合什么 适合初学Lua的小白 适合需要C/C和lua结合开发的人 本篇需要什么 对Lua语法有简单认知 对C/C语法有简单认知 依赖Lua5.1的环境 依赖VS 2017编辑器 本篇的特色 具有全流程的图文…

springboot中将logback切换为log4j2

前言 springboot默认使用logback作为日志记录框架,常见的日志记录框架有log4j、logback、log4j2。这篇文章我们来学习怎样将logbak替换为log4j2。 一、为什么使用log4j2? 我们在项目中经常使用一个叫SLF4J的依赖,它是做什么的呢? …

Activity的预览窗口StartingWindow添加

Activity的预览窗口StartingWindow添加 1、Activity组件启动2、ActivityStarter.java#startActivityInner() > 主要查看Task.java#startActivityLocked3、ActivityRecord.java#addStartingWindow到WindowManagerService.java#addWindow3.1 ActivityRecord.java#addStartingW…

C/C++开发,libiec61850库学习及运用

目录 一、libiec61850库下载编译 1.1 下载 1.2 linux编译: 1.3 win编译 二、案例编译测试 2.1 CMakeLists.txt调整(server_example_goose) 2.2 模型static_model.h/static_model.cpp生成 2.3 案例编译(server_goose) 2.4 客户端编译 2.5 运行测试 一、libiec61850…

【Python开发】FastAPI 03:请求参数—请求体

除了路径参数和查询参数,还有请求体,其用于传递 JSON、XML 或其他格式的数据,以便服务器能够读取并做出相应的处理,可以说请求体的作用更为强大。试想一下,如果存在七八个参数,路径参数和查询是不是就招架不…

Android播放器拖动进度条的小图预览

Android播放器拖动进度条的小图预览 背景效果图关键代码1. 获取指定位置的视频帧2. 预览图的显示和隐藏 完整代码1. xml布局文件activity_video.xml2. Activity文件VideoActivity.java 背景 我们在使用一些播放器时,拖动进度条会有一个预览框,上一篇博客…

Docker容器 和 Kubernetes容器集群管理系统

一、快速了解Docker 1. 什么是Docker的定义 Docker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以…

javaScript 给图片加水印

背景 在很多地方,我们都可以看到,上传图片的时候,图片都会被加上默认的水印,水印的作用主要体现在以下几个方面: 1.版权保护:在商业用途的照片中添加水印可以帮助保护作者的版权,防止他人未经…

IOS复杂震动AHAP文件编辑指南

简介 目前部分游戏会在播放一些特定的音乐音效时,令设备产生贴合音效的复杂震动,给玩家一个更好的游戏体验。这种复杂震动就是通过苹果的CoreHaptics库实现的。 下面是关于CoreHaptics的官方文档 ​​​​​​​Core Haptics | Apple Developer Docum…