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

news2024/11/23 8:14:19

系列文章

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


文章目录

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

八、源代码获取

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

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

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

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

相关文章

9. Linux下实现简单的UDP请求

本文简单介绍了UDP传输层协议,并在Linux下实现简单的socket通讯 一、UDP UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它不保证数据包的可靠性和顺序。UDP在IP协议的基础上增加了简单的差错…

阿里云服务器配置CPU内存、带宽和系统盘选择方法

阿里云服务器配置怎么选择?CPU内存、公网带宽和系统盘怎么选择?个人用户选择轻量应用服务器或ECS通用算力型u1云服务器,企业用户选择ECS计算型c7、通用型g7云服务器,阿里云服务器网分享阿里云服务器配置选择方法: 目录…

大数据周会-本周学习内容总结015

开会时间:2023.05.28 15:30 线下会议 目录 01【fhzny项目】 02【Spark】 03【调研-数仓构建】 3.1【数仓构建,流程图、架构图、使用场景】 场景选择 组件设计 构建流程 04【专利】 05【导师点评】 01【fhzny项目】 GitLabMyBatis-PlusSpringbo…

Java001——基本的Dos命令

打开CMD的方式 1、win10:开始->系统->命令提示符 win11:开始->windows工具->命令提示符 2、Win键R输入cmd 打开控制台 3、进入文件夹,按住shift键鼠标右键点击,在此…

路径规划算法:基于萤火虫优化的路径规划算法- 附代码

路径规划算法:基于萤火虫优化的路径规划算法- 附代码 文章目录 路径规划算法:基于萤火虫优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法…

[第一章 web入门]SQL注入-1

拿到题目是一篇日记,是GET型请求方式,我们可以直接在url栏中注入数据 判断注入类型,页面有回显所以不是整型注入 id 1 and 1 2 id 1 页面无回显,判断为字符型注入,闭合符应该就是单引号 id 1 order by 4-- 无回显&…

C#,码海拾贝(26)——求解“一般带状线性方程组”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

Reorder buffer and Reservation station

Reoder buffer(ROB) 为了解决异常问题 instruction 的decode阶段被写入缓冲区的条目&#xff0c;指令完成的话&#xff0c;向缓冲区写入结果&#xff0c;最早decode的指令&#xff08;程序顺序&#xff09;如果没有被标记异常的话&#xff0c;写入reg file register rename …

基于STM32的IIC驱动协议实现

目录 1.简介 2.特点 3.协议细节 1.简介 IIC(Inter&#xff0d;Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行线&#xff0c;用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线&#xff0c;可发送和接收数据。在 CPU 与被控 IC 之…

第一部分-基础篇-第一章:PSTN与VOIP(下篇)

文章目录 序言上一篇文章&#xff1a;1.6 电路交换与分组交换1.6.1 电路交换1.6.2 分组交换 1.7 VoIP1.8 IMS1.8.1 什么是IMS1.8.2 IMS的特点1.8.3 IMS核心网元&#xff08;1 &#xff09; CSCF&#xff08;2 &#xff09; MGCF&#xff08;3 &#xff09; IM-MGW&#xff08;5…

【数据结构】--单链表力扣面试题⑤链表分割

目录 一、有相对顺序的链表分割 二、无相对顺序的链表分割 一、有相对顺序的链表分割 题述&#xff1a;现有一链表的头指针ListNode* phead,给一定值x,编写一段代码将所有<x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排序后的链表的…

Three.js加载FBX模型并解析骨骼动画

通过Threejs先加载一个.FBX格式的三维模型文件&#xff0c;然后解析该文件中的骨骼动画信息。 FBX 加载器FBXLoader.js <!-- 引入fbx模型加载库FBXLoader --> <script src"http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/loaders/FBXLoader.…

Linux源码包的安装与升级

文章目录 Linux源码包的安装与升级什么是源代码、编译器与可执行文件什么是函数库什么是make与configure什么是Tarball的软件如何安装与升级软件 Linux源码包的安装与升级 如果你想在自己的Linux服务器上运行网站&#xff0c;就需要安装一个Web服务器软件&#xff0c;否则无法…

测试工程师 | 测试基础知识点速查

文章目录 1. 测试介绍2. 测试的分类2.1 按照测试阶段划分&#xff08;4种&#xff09;2.2 按照代码可见度划分&#xff08;3种&#xff09;2.3 是否运行代码&#xff08;2种&#xff09;2.4 是否按照自动化&#xff08;2种&#xff09;2.5 其它测试&#xff08;4种&#xff09;…

深入篇【C++】CC++内存管理:new/delete底层原理剖析+思维导图总结

深入篇【C】C&C内存管理&#xff1a;new/delete底层原理剖析思维导图总结 Ⅰ.C/C内存分布Ⅱ.C的内存管理Ⅲ.C的内存管理①.new/delete操作内置类型总结&#xff1a; ②.new/delete操作自定义类型总结: ③.operator new与operator delete总结&#xff1a; ④.new/delete底层…

【C++String类使用】万字详解保姆级教学,手把手教你使用string类。

string类的使用 什么是string类&#xff1f;string构造string();string (const char* s);string (const string& str);string (const string& str, size_t pos, size_t len npos);string (const char* s, size_t n);string (size_t n, char c);template < class In…

《The Element of Style》阅读笔记 —— 章节 III A Few Matters of Form

前言&#xff1a;本篇为书籍《The Element of Style》第三章的阅读笔记。 本书电子版链接&#xff1a;http://www.jlakes.org/ch/web/The-elements-of-style.pdf 章节 I Elementary Rules of Usage 阅读笔记&#xff1a;链接章节 II Elementary Principles of Composition 阅读…

JavaScript进阶之路(一)初学者的开始

一&#xff1a;写在前面的问题和话 一个javascript初学者的进阶之路&#xff01; 背景&#xff1a;3年后端&#xff08;ASP.NET&#xff09;工作经验&#xff0c;javascript水平一般般&#xff0c;前端水平一般般。学习资料&#xff1a;犀牛书。 如有误导&#xff0c;或者错…

Git日常使用技巧 - 笔记

Git日常使用技巧 - 笔记 Git是目前世界上最先进的分布式版本控制系统 学习资料 廖雪峰 学习视频 https://www.bilibili.com/video/BV1pX4y1S7Dq/?spm_id_from333.337.search-card.all.click&vd_source2ac127043ccd79c92d5b966fd4a54cd7 Git 命令在线练习工具 https://l…

多线程 -- Thread类的基本用法

本篇重点 什么是变量捕获?? 有关线程的操作 线程创建线程中断线程等待线程休眠获取线程实例目录 1. 线程创建2. 线程中断变量捕获 线程的六种状态NEW 状态TERMNATED 状态RUNNABLE 就绪状态TIMED_WAITING 状态 1. 线程创建 关于线程的创建看上篇博客, 里面为线程的创建提供…