《数据库应用系统实践》------ 个人作品管理系统

news2024/12/24 8:48:20

系列文章

《数据库应用系统实践》------ 个人作品管理系统


文章目录

  • 系列文章
  • 一、需求分析
    • 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,
作品名         NCHAR(10)    NOT NULL,
作品类别       NCHAR(10)    NOT NULL,
作品完成时间   DATETIME     NOT NULL,
管理员账号     CHAR(20),
FOREIGN KEY (管理员账号) REFERENCES 管理员(管理员账号)
)

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

CREATE TABLE 已有作品信息(
作品号         CHAR(20)     PRIMARY KEY,
作品名         NCHAR(10)     NOT NULL,
作品类别       NCHAR(10)    NOT NULL,
作品完成时间   DATETIME     NOT NULL,
管理员账号     CHAR(20),
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','正楷书法','书法','2021-12-04','001')
INSERT INTO 已有作品信息 VALUES ('002','山水绘画','山水','2021-12-04','002')
INSERT INTO 已有作品信息 VALUES ('003','人物素描','素描','2021-12-04','003')
INSERT INTO 已有作品信息 VALUES ('004','卡通绘画','卡通','2021-12-04','004')
INSERT INTO 已有作品信息 VALUES ('005','沙画','沙土','2021-12-04','005')

INSERT INTO 新作品信息 VALUES ('001','手工艺品','手工','2021-12-01','001')
INSERT INTO 新作品信息 VALUES ('002','手工DY','手工','2021-12-01','002')
INSERT INTO 新作品信息 VALUES ('003','雕刻印章','雕刻','2021-12-01','003')
INSERT INTO 新作品信息 VALUES ('004','宝石雕刻','雕刻','2021-12-01','004')
INSERT INTO 新作品信息 VALUES ('005','陶艺制作','手工','2021-12-01','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')

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()+"'";
					PreparedStatement pstm2 =conn2.prepareStatement(sql2);
						//执行查询
					pstm2.executeUpdate();
						JOptionPane.showMessageDialog(frm, "删除成功");}
				catch(ClassNotFoundException cnfe) {
					JOptionPane.showMessageDialog(null,"数据源错误", "错误",JOptionPane.ERROR_MESSAGE);	
				}
				catch(SQLException sqle) {
					JOptionPane.showMessageDialog(null,"核心用户不可删除!", "错误",JOptionPane.ERROR_MESSAGE);	
				}
			}});
			frm.add(d1);
			frm.add(d2);

七、总结

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

从这次试训中让我们更明白了一些知识,表是数据库最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际运用中使用多表,对表的规划和理解就会越深刻。通过这次试训,让我深刻的了解到自己的不足,要想对进行数据库更深的学习,自己得要多看有关的课外书籍,并多做练习,不懂得要多问同学和请教老师,以解决自己遇到的难题,知道更多的知识。实训不仅是让我们在实践中对理论知识的验证,也让我们知道我们多学的知识在社会上的运用,把所学知识和企业商业接轨。

参考文献:

[1]徐人凤, 曾建华. SQLServer数据库及应用[M]. 高等教育出版社, 2013.
[2]邓文艳. SQLServer数据库备份和还原[J]. 山西财经大学学报, 2007(S2):1.
[3]杨立志, 乔春贵, 黄毅梅,等. SqlServer数据库的数据备份[J]. 气象与环境科学, 2006, 000(002):86-87.

八、源代码获取

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

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

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

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

相关文章

Netty客户端与服务器端闲暇检测与心跳检测(三)

网络应用程序中普遍存在一个问题:连接假死,连接假死现象是:在某一端(服务器端|客户端)看来,底层的TCP连接已经断开,但是应用程序没有捕获到,因此会认为这个连接还存在。从TCP层面来说,只有收到四次握手数据包,或者一个RST数据包,才表示连接状态已断开; 连…

Spring练习二ssm框架整合应用

导入教程的项目,通过查看源码对aop面向切面编程进行理解分析 aop面向编程就像是我们给程序某些位置丢下锚点(切入点)以及当走到锚点时需要调用的方法(切面)。在程序运行的过程中, 一旦到达锚点,…

f-stack的源码编译安装

DPDK虽然能提供高性能的报文转发(安装使用方法见DPDK的源码编译安装),但是它并没有提供对应的IP/TCP协议栈,所以在网络产品的某些功能场景下(特别是涉及到需要使用TCP协议栈的情况),比如BGP邻居…

Ansible原理简介与安装篇

工作原理 1、在Ansible管理体系中,存在“管理节点”和“被管理节点” 2、被管理节点通常被称为”资产“ 3、在管理节点上,Ansible将AdHoc或PlayBook转换为python脚本。并通过SSH将这些python脚本传递到被管理服务器上。在被管理服务器上依次执行&#xf…

遥感云大数据在灾害、水体与湿地领域及GPT模型应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

目录 基础篇010.1 STM32驱动RC522 RFID模块之一:基础知识 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3.2 配置调试方式 3.3 配置时钟电路 3.4 配置时钟 3.5 配…

【C++】Map、Set 模拟实现

文章目录 📕 概念📕 实现框架Find()★ 迭代器 ★反向迭代器map 的 operator[ ] 📕 源代码rb_tree.hset.hmap.h 📕 概念 map、set 是 C 中的关联式容器,由于 map 和set所开放的各种操作接口,RB-tree 也都提…

2023.05.28 学习周报

文章目录 摘要文献阅读1.题目2.现有方法存在的局限性3.SR-GNN模型4.模型的组成部分4.1 构图4.2 item向量表示4.3 session向量表示4.4 预测模块 5.实验与分析5.1 数据集5.2 比较方法5.3 评估指标5.4 实验结果 6.结论 有限元法1.一个例子2.进一步 深度学习1.张量场2.对流-扩散方程…

Linux(基础IO详解)

在基础IO这篇博客中,我们将了解到文件系统的构成,以及缓冲区究竟是个什么东东,我们都知道缓冲区,有时也谈论缓冲区,但不一定真的去深入了解过缓冲区。为什么内存和磁盘交互速度如此之慢?为什么都说Linux中一…

Dom解析与Sax解析的区别

1.Dom解析: Dom解析的时候,首先要把整个文件读取完毕,装载到内存中。然后进行解析,在解析的过程中,你可以直接获取某个节点,进行操作,也可以获取根节点然后进行遍历操作,得到所有的…

一台服务器通过apache安装多个web应用

当我们只有一台linux服务器资源但有创建多个网站的需求时,我们可以通过安装一个网站服务器Apache进行搭建,此次服务器使用Centos 7 下面分别介绍一个域名多个端口和多个域名用Apache来搭建多个网站的操作过程。 一、使用apache 服务器 (一…

HCIA-MSTP替代技术之链路捆绑(LACP模式)

目录 手工链路聚合的不足: LACP链路聚合的原理 LACP模式: LACPDU: 1,设备优先级: 设备优先级的比较是:先比较优先级大小,0到32768,越小优先级越高,如果优先级相同&a…

华为FinalMLP

FinalMLP:An Enhanced Two-Stream MLP model for CTR Prediction 摘要 Two-Stream model:因为一个普通的MLP网络不足以学到丰富的特征交叉信息,因此大家提出了很多实用MLP和其他专用网络结合来学习。 MLP是隐式地学习特征交叉,当前很多工作…

分布式网络通信框架(二)——RPC通信原理和技术选型

项目实现功能 技术选型 黄色部分:设计rpc方法参数的打包和解析,也就是数据的序列化和反序列化,用protobuf做RPC方法调用的序列化和反序列化。 使用protobuf的好处: protobuf是二进制存储,xml和json是文本存储; pro…

哈希应用: 位图 + 布隆过滤器

文章目录 哈希应用: 位图 布隆过滤器1. 位图1.1 提出问题1.2 位图概念1.3 位图实现1.4 位图应用1.4.1 变形题1代码 1.4.2 变形题21.4.3 找文件交集思路1思路2 1.4.4 总结 1.5 位图优缺点 2. 哈希切割3. 布隆过滤器3.1 提出问题3.2 布隆过滤器概念3.3 布隆过滤器的各个接口3.3.…

MySQL---优化(insert、order by 、group by 、limit、子查询)

1. insert语句优化 当进行数据的insert操作的时候,可以考虑采用以下几种优化方案: -- 如果需要同时对一张表插入很多行数据时,应该尽量使用多个值表的insert语句,这种方式将大大的缩减 -- 客户端与数据库之间的连接、关闭等消耗。使得效率比…

R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践与拓展

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

ARM体系结构

目录 ARM体系架构 一、ARM公司概述 二、ARM产品系列 三、指令、指令集 指令 指令集 ARM指令集 ARM指令集 Thumb指令集 (属于ARM指令集) 四、编译原理 五、ARM数据类型 字节序 大端对齐 小端对齐 六、ARM工作模式 1.AR…

Java中synchronized锁的深入理解

使用范围 synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使用中用于对非static修饰的便是当前对象锁 synchronized的优化 在jdk1.6中对synchronized做了相关的优化 锁消除 在synchronized修饰的代码块中…

如何实现局域网下设备之间的互通互联和外网访问?

两台电脑怎么在同一路由下访问共享文件夹?两台不同系统的电脑在同一个路由器下访问共享文件夹进行数据共享,从本质上说就是在同一个局域网下设备之间的互通互联,这就需要我们搭建一个内网文件共享服务器来实现此功能 ,比如常见的W…