小型数据库系统开发作业

article/2025/11/5 6:35:41

文章目录

  • 题目
  • 数据库设计
  • UI界面开发展示

原文链接:https://zhanghan.xyz/posts/60088/

题目

自学上层应用访问数据库的方式(如ODBC、ADO、JDBC、MySQLi或者其它),根据您使用的上层语言(不限语言(但要求与自己完成的文件管理数据实验开发语言一致)),不限数据库(除ACCESS,SQLite 以外),选择并学习使用一种合适的访问数据库的方式。
基于文件管理数据实现,实现使用关系数据库管理课本中 P70-6 题中 SPJ 数据库。功能包括:
在这里插入图片描述
开发环境说明:

Python3.6
Mysql 8.0.26
Navicat Premium 15
Pyqt5
Qt-designer
pymysql

数据库设计

有一个SPJ数据库,包括S、P、J及SPJ4个关系模式∶
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT):
J(JNO.JINAME,CrITY);
SPJ(SNO,PNO,NO,QTY)。

供应商表S由供应商代码(SNO)供应商姓名(SNAME)供应商状态(STATUS)供应商所在城市CITY组成。
零件表P由零件代码(PNO)零件名(PNAME)颜色(COLOR)重量(WEIGHT组成。
工程项目表J由工程项目代码(JNO)工程项目名(JNAME)工程项目所在城市(CITY组成。
供应情况表 SPJ由供应商代码(SNO)零件代码(PNO)工程项目代码(JNO)供应数量(OTY组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
在这里插入图片描述

4个数据库表构建代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `spj`()
BEGIN
-- 定义 S 表
CREATE TABLE S(Sno CHAR(10) PRIMARY KEY, Sname CHAR(10), Sstatus int CHECK (Sstatus in (10,20,30,40)), Scity CHAR(10)
);
INSERT INTO S(Sno, Sname, Sstatus, Scity) VALUES('S1', '精益', 20, '天津');
INSERT INTO S(Sno, Sname, Sstatus, Scity) VALUES('S2', '盛锡', 10, '北京');
INSERT INTO S(Sno, Sname, Sstatus, Scity) VALUES('S3', '东方红', 30, '北京');
INSERT INTO S(Sno, Sname, Sstatus, Scity) VALUES('S4', '丰泰盛', 20, '天津');
INSERT INTO S(Sno, Sname, Sstatus, Scity) VALUES('S5', '为民', 30, '上海');-- 定义 P 表
CREATE TABLE P(Pno CHAR(10) PRIMARY KEY,Pname CHAR(10),Pcolor CHAR(10),Pweight INT
);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P1', '螺母', '红', 12);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P2', '螺栓', '绿', 17);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P3', '螺丝刀', '蓝', 14);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P4', '螺丝刀', '红', 14);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P5', '凸轮', '蓝', 40);
INSERT INTO P(Pno, Pname, Pcolor, Pweight) VALUES('P6', '齿轮', '红', 30);
SELECT * FROM P;
-- 定义 J 表
CREATE TABLE J(Jno CHAR(10) PRIMARY KEY, Jname CHAR(10) UNIQUE, Jcity CHAR(10)
);
INSERT INTO J(Jno, Jname, Jcity) VALUES('J1', '三建','北京');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J2', '一汽','长春');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J3', '弹簧厂','天津');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J4', '造船厂','天津');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J5', '机车厂','唐山');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J6', '无线电厂','常州');
INSERT INTO J(Jno, Jname, Jcity) VALUES('J7', '半导体厂','南京');
SELECT * FROM J;
-- 定义 SPJ 表
CREATE TABLE SPJ(Sno CHAR(10),Pno CHAR(10),Jno CHAR(10),QTY INT,PRIMARY KEY (Sno, Pno, Jno),FOREIGN KEY (Sno) REFERENCES S(Sno),FOREIGN KEY (Pno) REFERENCES P(Pno),FOREIGN KEY (Jno) REFERENCES J(Jno)
);
INSERT INTO SPJ VALUES('S1', 'P1', 'J1', 200);
INSERT INTO SPJ VALUES('S1', 'P1', 'J3', 100);
INSERT INTO SPJ VALUES('S1', 'P1', 'J4', 700);
INSERT INTO SPJ VALUES('S1', 'P2', 'J2', 100);
INSERT INTO SPJ VALUES('S2', 'P3', 'J1', 400);
INSERT INTO SPJ VALUES('S2', 'P3', 'J2', 200);
INSERT INTO SPJ VALUES('S2', 'P3', 'J4', 500);
INSERT INTO SPJ VALUES('S2', 'P3', 'J5', 400);
INSERT INTO SPJ VALUES('S2', 'P5', 'J1', 400);
INSERT INTO SPJ VALUES('S2', 'P5', 'J2', 100);
INSERT INTO SPJ VALUES('S3', 'P1', 'J1', 200);
INSERT INTO SPJ VALUES('S3', 'P3', 'J1', 200);
INSERT INTO SPJ VALUES('S4', 'P5', 'J1', 100);
INSERT INTO SPJ VALUES('S4', 'P6', 'J3', 300);
INSERT INTO SPJ VALUES('S4', 'P6', 'J4', 200);
INSERT INTO SPJ VALUES('S5', 'P2', 'J4', 100);
INSERT INTO SPJ VALUES('S5', 'P3', 'J1', 200);
INSERT INTO SPJ VALUES('S5', 'P6', 'J2', 200);
INSERT INTO SPJ VALUES('S5', 'P6', 'J4', 500);SELECT * FROM S;
END

UI界面开发展示

这部分因为代码量比较大,所以只放了一些关键代码,完整代码链接在文末
软件开发流程图:
在这里插入图片描述
系统主界面展示:
在这里插入图片描述

  1. 浏览功能
  2. 连接数据库相关信息输入
  3. 其他功能子界面按钮
  4. 数据库数据展示区
  5. 交互终端区

系统功能展示——浏览功能
在这里插入图片描述
系统功能展示——信息录入功能
在这里插入图片描述
信息插入功能关键代码:

# 供应商表信息插入
self.insert_S = "INSERT INTO S(Sno,Sname,Sstatus,Scity) VALUES (\"{}\",\"{}\",\"{}\",\"{}\");".format(SNO,Sname,Sstatus, Scity)
self.SQL_exe(self.insert_S)
# 供应商情况表信息插入
self.insert_SPJ = "INSERT INTO SPJ(Sno,Pno,Jno,QTY) VALUES (\"{}\",\"{}\",\"{}\",\"{}\");".format(Sno,Pno,Jno, QTY)
self.SQL_exe(self.insert_SPJ)

系统功能展示——信息查询功能
在这里插入图片描述
信息查询功能关键代码:

self.select_SNO = "SELECT Sno,Sname,Sstatus,Scity FROM s WHERE SNO=\"{}\";".format(self.SELECT_SNO)
self.read(self.select_SNO)

系统功能展示——信息删除、查询功能
在这里插入图片描述
信息删除功能关键代码:

# 删除顺序很重要
self.delete_spj = "DELETE FROM SPJ WHERE SNO=\"{}\";".format(self.delete_SNO)
self.delete_s = "DELETE FROM S WHERE SNO=\"{}\";".format(self.delete_SNO)
self.read(self.delete_spj)
self.read(self.delete_s)

信息修改功能关键代码:

self.update_spj = "UPDATE SPJ SET QTY=QTY*1.1 WHERE SNO=\"{}\";".format(self.update_SNO)
self.read(self.update_spj)

系统功能展示——特殊情况触发
在这里插入图片描述

完整代码链接:https://gitee.com/zhgn2020814/small-database-management.git


http://chatgpt.dhexx.cn/article/ZCPAj8mk.shtml

相关文章

关于Freesurfer提取annotation分区结构特征的命令mri_segstats

Freesurfer提供了基于分区模板提取常规特征(area, volume, thickness, thicknessstd, meancurv, gauscurv, foldind, curvind)的指令mris_anatomical_statsaparcstats2table还有可以提取从fMRI或DWI产生的结果以及一些特殊的结构特征(如LGI&a…

Linux下使用Freesurfer的两种方法

文章目录 1. 直接在终端使用准备工作开始运行 2. 通过调用python文件使用 1. 直接在终端使用 重点:Freesurfer安装完成后,需要在相同的用户名下运行,并且所有文件数据也要放在此用户下 放在其他地方可能会因为没有权限而运行失败 官网流程说…

freesurfer入门-试图理解freesurfer输出的数据

因为一些原因想要学习使用freesurfer,虽然照着tutorial跑了起来但是完全不知道跑出来的是个啥,所以准备弄一篇文章记录每个部分是干啥的,此文为记录 能记多少是多少吧… FreeSurfer内数据 labelmriorgtransforms scriptsstatssurf 首先要提一下比较常见的两个词:lh和rh 如果我没…

FreeSurfer入门(1) Output Data

目录 前言一、使用freeview查看卷二、使用freeview查看3D surfacePial surfacewhite surfaceInflated SurfaceThickness MapCortical Parcellation 前言 因一些原因需要学习FreeSurfer,然而教程比较少有些难懂,看了一段时间觉得可能要钻钻牛角尖才可以完成学习,所以开始记笔记…

IXI数据预处理 + Linux + freesurfer

目录 1. freesurfer下载安装测试1.1 下载受阻,安装axel-2.4,多线程下载1.2 安装1.3 安装时出现的问题1.4 测试1.5 使用前注意 2. freesurfer 处理IXI2.1 freesurfer 的使用2.2 从零开始处理IXI2.2.1 命令行skull_stripping 单个.nii文件2.2.2 分析处理完成后的文件2…

Freesurfer的简单使用和一些基础知识

Freesurfer Freesurfer是用于MRI图像处理和分析的一款开源软件,可进行多种模态数据的预处理,皮层重建,volume与surface的互相之间的配准等。 MRI成像 https://www.csdn.net/tags/Mtzagg1sNzM3MTMtYmxvZwO0O0OO0O0O.html MRI成像原理&…

FreeSurfer汉化教程

介绍FsFAST的预处理 根据官网的英文进行翻译,并在使用过程中所犯的错误进行解决的过程 介绍Tutorial Data 下载以及安装 安装 安装Tutorial Datasets 从教程数据,创建文件tutorial_data在自己的工作路径中。 curl https://surfer.nmr.mgh.harvard.e…

Freesurfer教程(ubuntu)

Freesurfer教程(ubuntu) 参考链接:http://www.wjhsh.net/zhhfan-p-13405572.html 1.安装 freesurfer的安装教程各个网站上都用详细的过程,这里不再叙述 这个命令是在处理tutorial_data中的dcm数据时使用的:recon-al…

freeSurfer颅骨剥离

命令参考 https://surfer.nmr.mgh.harvard.edu/fswiki/recon-all recon-all -i 输入文件路径.nii -s 创建用于保存文件夹名称 -sd 保存文件夹所在的目录 -命令 -autorecon2-cp 输入输出参考 https://surfer.nmr.mgh.harvard.edu/fswiki/ReconAllDevTable orig/001.mgz 将…

freesurfer使用

一.做灰白质分割 我的目的是得到某被试的脑白质mask。 1.首先找了freesurfer教程,直接打开了freeview; 2.可视界面中没有直接的wmseg功能; 3.去使用freeview的手册查询wmseg(开始怀疑这种操作不叫该名词..)&#x…

【freesurfer学习1】freesurfer结构像批处理

freesurfer结构像批处理 最近0基础新入脑科学的坑,在等待申请数据集的时候,顺便学习一下freesurfer。 软件的安装稍后在评论区补上。 recon-all 分割重建 在我自定义的重建文件夹recon下有test文件夹,有两个文件夹demo1dcmnii,…

FreeSurfer和FSL的安装和使用(脑部图像去除头骨+对图像和label同时进行仿射对齐)教程

FreeSurfer当前只支持Linux系统和Mac OS。我所使用的系统是Ubuntu 16 .0.4,FreeSurfer的安装耗时较小,但是在处理时耗时较长,可能需要数个小时,甚至一天,这个取决于机器性能,但是和GPU好像没太大关系。下面…

FreeSurfer的安装及使用(个人踩坑记录)

一、环境要求 目前只支持在Linux和MacOS系统,虽然可以用 -parallel 进行多线程处理,但基本消耗的是CPU内存。 二、FreeSurfer的下载与安装 1. 下载安装包 官网链接:rel7downloads - Free Surfer Wiki 根据自己系统型号下载对应安装包&am…

【数学建模】统计回归模型

一、 多元线性回归 matlab统计工具箱 [b,bint,rint,stats]regress(y,x,alpha) 输入 y~n维数据向量数据矩阵,第1列为全1向量alpha(置信水平,0.05) 输出 b~β的估计值bint~b的置信区间r~残差向量y-xbrint~r的置信区间(置信区间包含0则对y的影响不太显…

统计学习模型——决策树

决策树学习的三个步骤:特征选择、决策树的生成和决策树的修剪 一、决策树模型(分类与回归方法) 1.1 基本概念 决策树可为多叉树,是描述对实例进行分类的树形结构决策树由结点和有向边组成。其中结点又分为:内部结点…

机器学习的概率统计模型(附代码)(一)

目录 概率论 1.1 离散随机变量分布 1)伯努利分布 2)二项分布 3)泊松分布 1.2 连续随机变量分布 1)均匀分布 2)指数分布 3)正态分布 总结 系列文章目录 概率论 概率论,是研究随机现象数量规…

【统计模型】缺失数据处理方法

目录 一、缺失数据定义 二、缺失数据原因 三、缺失数据处理步骤 四、数据缺失机制 1.完全随机缺失(MCAR) 2.随机缺失(MAR) 3.非随机、不可忽略缺失(NMAR) 五、缺失数据处理方法 1.直接删除 2.缺失值…

数学统计建模

数据预处理 数据清洗 无量纲处理 检验数据来自哪个分布 正态分布检验 K-S检验的P值检验正态性 非正态数据处理 数据偏态处理 BOX-COX变换 成分数据处理 clr变换 ilr变换 logit变换 属性数据 相关性检验 假设检验方法使用时应首先判断数据是否为正态数据。如果是&#x…

【数学建模】统计分析方法

文章目录 1.回归分析2. 逻辑回归3. 聚类分析4. 判别分析5. 主成分分析6. 因子分析7. 对应分析 1.回归分析 数据量要多,样本总量n越大越好——>保证拟合效果更好,预测效果越好 一般n>40/45较好 方法 建立回归模型 yiβ0β1i……βkxkiεi 所估计的…

统计模型分类

传统统计模型->回归模型(可解决过去和预测未来) 数据挖掘模型->决策树、神经网络等(只能预测未来) 横截面模型:多元回归,逻辑回归,托宾回归(涉及到泊松分布) 向量…