《数据库应用系统实践》------ 包裹信息管理系统

系列文章

《数据库应用系统实践》------ 包裹信息管理系统


文章目录

  • 系列文章
  • 一、需求分析
    • 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
)

CREATE TABLE 包裹(
包裹码		     CHAR(20)     PRIMARY KEY,
包裹名			 CHAR(20)    NOT NULL,
类别			 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,
管理员账号	    CHAR(20)	    NOT NULL,
FOREIGN KEY (管理员账号) REFERENCES 包裹(包裹码)
)

CREATE TABLE 放置(
快递站号         CHAR(20)     NOT NULL,
包裹码           CHAR(20)     NOT NULL,
 PRIMARY KEY(快递站号 ,包裹码),
 FOREIGN KEY (快递站号) REFERENCES 快递站(快递站号),
  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')
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')

3.数据处理

(1)至少包括2张表的等值连接;
在这里插入图片描述
(2)创建视图;
在这里插入图片描述
(3)编写包含子查询的SQL语句;
在这里插入图片描述
(4)有修改语句;
在这里插入图片描述
(5)有删除语句;
在这里插入图片描述
(6)有包含聚集函数;
在这里插入图片描述
(7)有记录过滤,条件过滤语句;
在这里插入图片描述
(8)有修改表结构的SQL语句;
在这里插入图片描述
(9)用T-SQL语句写出一个对数据表处理的人机交互程序;
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)建议)

从这次试训中让我们更明白了一些知识,表是数据库最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际运用中使用多表,对表的规划和理解就会越深刻。通过这次试训,让我深刻的了解到自己的不足,要想对进行数据库更深的学习,自己得要多看有关的课外书籍,并多做练习,不懂得要多问同学和请教老师,以解决自己遇到的难题,知道更多的知识。这次实训,不仅让我们学到了许多有关数据库的知识,老师也给我们讲了很多社会现状和就业情况,让我们不同的角度了解这个专业的就业趋势。让我们在今后的学习中更有动力的充实自己,曾加自己的知识面和锻炼自己各方面能力。

参考文献:

[1]刘桂玲. SQLServer数据库应用分析[J]. 软件导刊, 2012, 11(10):2.
[2]邓文艳. SQLServer数据库备份和还原[J]. 山西财经大学学报, 2007(S2):1.
[3]张虎. SQLSERVER的加锁技术[J]. 网络新媒体技术, 2005, 26(002):138-138.

八、源代码获取

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

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

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

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

相关文章

immutable深拷贝:数据多层属性-不可变数据结构

一、为何要用immutable深拷贝? 1.浅拷贝(浅复制) //引用赋值-浅复制、浅拷贝 var obj{name:"溜溜球"}var obj2obj;obj2.name"刘刘球";console.log(obj);//name:"刘刘球"console.log(obj2);//name:"刘刘…

解说天下之操作系统

解说天下之操作系统 本文由桌案drawon (https://www.drawon.cn),云晶(https://www.yunjingxz.com)创始人根据多年从业经验, 从操作系统的起源,应用分类, 设计分类,以及资源使用角度对操作系统进…

2023年6月18日DAMA-CDGA/CDGP认证北京/上海/深圳报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

思维导图到底有多少种?

思维导图是一种非常实用的工具,它可以帮助我们更好地组织和表达我们的思想。在日常生活和工作中,我们可以使用各种不同类型的思维导图来解决不同的问题。下面,我将介绍一些常见的思维导图类型以及如何使用ProcessOn思维导图软件制作思维导图。…

ThreadLocal的应用

1. ThreadLocal 是什么 JDK 对ThreadLocal的描述为: 此类提供线程局部变量。这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal 实例通常是类中的私有…

Centos7安装Java8(在线安装避坑详细安装)

开篇语: 喜欢在一个明媚阳光的午后 坐在那夕阳斑驳的南墙下 听着风起 闻着花香 望着远山 身边是你 如此便觉得很好 1.查看目前环境 rpm -qa|grep jdk在这里我们会发现,原有系统安装有jdk,如果对于jdk有要求,我们就需要重新安装jdk…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...

最近有朋友去字节面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

3DMAX车缝线生成器插件使用方法详解

3dMax车缝线生成器插件,用于创建缝合对象和一个对象,以沿样条线或仅通过绘制选定边上的缝合之间的孔。 目前有两种类型的缝线,圆形缝线和平面缝线。对于给定类型的针脚,它们的厚度是最常用的。缝线的长度和间距以及旋转都可以很容易地调整,这些参数也可以随机设置,以创造…

[C语言][典例详解]打印杨辉三角(找规律简单实现)

目录 杨辉三角的相关知识 杨辉三角图: 杨辉三角的规律 在编程中实现 第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状; ​编辑 1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的…

Python自动化测试框架有哪些?怎么选

目录 自动化测试框架概念 自动化测试框架根据思想理念和深度不同,渐进式的分为以下几种: 模块化测试脚本框架: 测试库框架: 数据驱动测试框架: 关键字驱动或表驱动的测试框架: 混合测试自动化框架&am…

沉浸式翻译 安装及使用

介绍一下最近非常或的沉浸式翻译工具,非常有助于外文阅读,包括网页、pdf等。可以同时显示原文和译文,操作简单,使用起来还是非常友好的。 先上链接:介绍 - 沉浸式翻译 如何使用 - 沉浸式翻译 1.安装 支持Edg…

Linux——使用命令行参数管理环境变量

目录 使用命令行参数获取用户在DOS命令行输入的指令: 方法:代码如下: 使用命令行参数获取并打印部分或者整体环境变量的方法: 方法1: 运行结果: 方法2:使用外部链接environ: 使用命令行参数…

article-并联机械手爪运动学分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3aNKIR4E-1685371700448)(data:image/svgxml;utf8, )] 2.4.3 基于Robotics Toolbox的工具箱的模型检测 上文中,我们已经对采摘机器手爪运动学理论模型进行了创建,接下来要用MA…

【智慧排水】智慧排水监测系统助力城市抗洪排涝建设

随着城市的发展和生活水平的提高,城市排水系统面临着各种挑战和难题。虽然国家已经大力建设和改造雨污分流系统,以解决城市排水问题,但在实际应用中仍然存在着诸多难题,如雨污混接、偷排漏排、管道堵塞淤积、管道溢流和内涝等问题…

没有经验能做产品经理吗?

没有经验能做产品经理吗?这是一个经常被讨论的问题,因为很多人想转行成为产品经理,但他们没有相关的工作经验。这里我也给出一些解答。 一、产品经理的职责和技能 首先,让我们看一下产品经理的职责和技能。产品经理是负责产品开…

java项目打包方式

普通项目打包 项目内容很简单,只是引用了一个三方包。 打包步骤 File-Project Structure... 点击确定后选择Build - Build Artifacts.. 选择build即可,可以查看编译日志 maven项目打包 若果是普通项目就先转为maven项目。 右键项目选择第二项add frame…

SpringCloud Nacos实战应用

目录 1 Nacos安装1.1 Nacos概要1.2 Nacos架构1.3 Nacos安装1.3.1 Nacos Derby安装1.3.2 Nacos MySQL版安装1.3.3 Docker 安装Nacos 2 Nacos功能应用2.1 Nacos服务注册与发现2.2 负载均衡2.3 配置中心2.4 灰度发布 3 Nacos集群3.1 集群架构3.2 Nacos集群部署3.3 客户端接入Nacos…

华为OD机试之打印机队列(Java源码)

打印机队列 题目描述 有5台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中 数字越大优先级越高 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如…

Windows 上安装和启动 Nacos 2.2.2 最新版本

文章目录 前言版本声明本地启动1. 下载 Nacos2. 开启鉴权配置3. 持久化数据库4. 启动 Nacos5. 启动测试 联系我 前言 本文旨在为您详细介绍如何安装和启动 Nacos 2.2.2 的最新版本,以及为 youlai-mall 开源商城版本的升级做好准备工作。 版本声明 名称版本操作系…

3年外包裸辞,面试阿里、字节全都一面挂,哭死.....

测试员可以先在外包积累经验,以后去大厂就很容易,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓今年今天履历只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大…