《数据库应用系统实践》------ 包包销售系统

2023-11-02 03:50

本文主要是介绍《数据库应用系统实践》------ 包包销售系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章

《数据库应用系统实践》------ 包包销售系统


文章目录

  • 系列文章
  • 一、需求分析
    • 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 bagsystem
on primary
(
name=bag_data1,
filename='D:\bagsystem\bag_data1.mdf',
size=10MB,
maxsize=unlimited
),
(
name=bag_data2,
filename ='D:\bagsystem\bag_data2.ndf',
size=10MB,
maxsize=unlimited
)
log on
(name=bag_log,
filename='D:\bagsystem\bag_log.ldf',
size=10MB,
maxsize=unlimited,
filegrowth=2
)

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

----------管理员表----------
create table manager
(
mno char(8) not null primary key,
mname char(50) not null,
msex char(50) check (msex='男'or msex='女'),
mphone char(50) check(mphone like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
mpassword char(6) not null
)
----------销售员表----------
create table salesman
(
sno char(8) not null primary key,
sname char(50) not null, 
ssex char(8) check (ssex='男'or ssex='女'),
sphone char(11) check(sphone like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
spassword char(6) not null,
mno char(8) not null,
foreign key(mno) references manager(mno)
)
----------顾客表----------
create table customer
(
cno char(8) not null primary key,
cname char(50) not null, 
csex char(8) check (csex='男'or csex='女'),
cphone char(11) check (cphone like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' ),
cbirthday char(12) not null,
cpassword  char(6) not null
)
----------包包库存表----------
create table bag
(
bno char(8) not null primary key,
bprice money not null,
bnum int not null,
bbrand char(50),
sort nvarchar(50),
bcolour nchar(50)
)
----------进货表----------
create table purchase
(
sno char(8) not null,
bno char(8) not null,
pdate datetime,
primary key(sno,bno),
foreign key(sno) references salesman(sno),
foreign key(bno) references bag (bno)
)
----------购买表----------
create table buy
(
cno char(8) not null,
bno char(8) not null,
bdate datetime,
primary key(cno,bno),
foreign key(cno) references customer(cno),
foreign key(bno) references bag(bno)
)

五、数据库实施

1.粘贴所创建的数据库关系图

在这里插入图片描述

2.数据录入

----------管理员表----------
insert into manager values('M01','刘奕','男','13022171168','123456')
insert into manager values('M02','陈迩','男','13856722387','654321')
insert into manager values('M03','张叁','男','18005789252','234567')
insert into manager values('M04','李肆','男','18118959535','765432')
insert into manager values('M05','王武','男','13812345675','345678')
insert into manager values('M06','赵琉','女','13597056843','876543')
insert into manager values('M07','孙琪','女','18017353545','456789')
insert into manager values('M08','周芭','女','13927458901','987654')
----------销售员表----------
insert into salesman values('S01','小冉','女','13812345681','121212','M01')
insert into salesman values('S02','阿炜','男','13812345682','232323','M04')
insert into salesman values('S03','梦洁','女','13812345683','454545','M03')
insert into salesman values('S04','智鑫','男','13812345684','565656','M07')
insert into salesman values('S05','慕青','女','13812345685','343434','M05')
insert into salesman values('S06','付恒','男','13812345678','565656','M02') 
----------顾客表----------
insert into customer values('C01','白亭','男','13516548977','2000-10-20','123451')
insert into customer values('C02','易玺','男','13817356679','2001-2-18','123452')
insert into customer values('C03','张甜','女','13973590025','2002-5-24','123453')
insert into customer values('C04','陆佳','女','18033559642','1999-12-25','123454')
insert into customer values('C05','胡轩','男','18113778652','1997-6-27','123455')
insert into customer values('C06','李岳','男','18113778667','1999-7-27','123456')
----------包包库存表----------
insert into bag values('B01',4700,100,'coach','Madison','棕黄色')
insert into bag values('B02',3950,200,'coach','CENTRAL托特包','粉白色')
insert into bag values('B03',1880,57,'LaurenceChico','腋下包','浅米白')
insert into bag values('B04',699,125,'JW PEI','花瓶包','老花太空银')
insert into bag values('B05',759,1008,'Amazing Song','法棍腋下包','牛奶咖啡')
----------进货表----------
insert into purchase values('S01','B01','2021-11-8')
insert into purchase values('S02','B02','2021-11-10')
insert into purchase values('S03','B03','2021-11-14')
insert into purchase values('S04','B04','2021-10-15')
insert into purchase values('S05','B05','2021-11-20')
----------购买表----------
insert into buy values('C01','B01','2021-12-2')
insert into buy values('C02','B02','2021-11-28')
insert into buy values('C03','B03','2021-12-4')
insert into buy values('C04','B04','2021-12-15')
insert into buy values('C05','B05','2021-12-6')

3.数据处理

(1)至少包括2张表的等值连接;

(2)创建视图;

create view 包包库存详情
as
select * from bag

(3)编写包含子查询的SQL语句;

查询购买了'B02'包包编号的顾客姓名以及电话
select cname as 顾客姓名,cphone as 顾客电话 from customer where cno in (select cno from buy where bno='B02')

(4)有修改语句;

修改顾客编号为C04的姓名为陆嘉
update customer set cname='陆嘉' where cno='C04' 

(5)有删除语句;

删除辞职的管理员编号为’M05’的信息
由于M05号管理员被销售员表中引用了

(6)有包含聚集函数;

查询包包库存总数
select sum(bnum) as 包包库存总数 from bag

(7)有记录过滤,条件过滤语句;

查询姓名为易玺的顾客信息
select *  from customer where cname='易玺'

(8)有修改表结构的SQL语句;

将表manager中的msex列的数据类型改为char(12)
ALTER TABLE manager
ALTER COLUMN msex char(12) NOT NULL

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

select  cname as 顾客姓名,case csex when '男' then 'M' when '女' then 'F' end as 性别 from customer

(10)编写一个触发器;

create trigger tri_sale 
on salesman 
for update 
as
if UPDATE(sphone)beginprint'销售员的电话号码被修改了!!'rollbackend

六、数据库应用系统实现

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

顾客登录
账号:C01
密码:123451

在这里插入图片描述

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

管理员登录
账号:M01
密码:123456

在这里插入图片描述

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

信息修改:
在这里插入图片描述

增加:
在这里插入图片描述
修改:
在这里插入图片描述
删除:
在这里插入图片描述

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

	String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=bagsystem";String userName = "sa";String userPwd = "1";

3.其它代码

	scrollPan.setPreferredSize(new Dimension(300, 200));jl1 = new JLabel("购买信息查询");jl1.setFont(new Font("", 1, 30));jl1.setForeground(Color.BLUE);jb1 = new JButton("页面刷新");jb1.addActionListener(this);pan1 = new JPanel();pan1.setLayout(null);pan2 = new JPanel();pan2.setLayout(new FlowLayout(FlowLayout.CENTER));pan2.add(jb1);try {Class.forName(driverName);} catch (Exception e) {e.printStackTrace();}try {Connection con = DriverManager.getConnection(dbURL, userName, userPwd);// 连接数据库的具体路径Statement s = con.createStatement();String r1 = "select * from buy ";ResultSet rs = s.executeQuery(r1);int count = 0;while (rs.next()) {count++;}Object[][] A = new Object[count][3];count = 0;model.setRowCount(0);rs = s.executeQuery(r1);while (rs.next()) {A[count][0]=rs.getString("cno");A[count][1]=rs.getString("bno");A[count][2]=rs.getString("bdate");model.addRow(A[count]);count++;}s.close();con.close();

七、总结

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

这次,我在数据库系统实践课程中所选的课题名称是包包销售系统,在这个系统中分为几个不同的用户角色,不同的用户角色可以完成不同的工作内容,这就是角色的划分。在整个实验的过程中,我觉得是最初实验环境的搭建比较地困,遇见的问题也是比较多的,相比而言在之后的实验过程中我是比较地轻松的。在最后写了java代码之后和数据库连接的过程中也是出现了比较多的问题,这些问题都是我之前没有遇见过的,我相信这些问题在我这阶段遇见之后,还有别的问题我就可以很轻松地解决了。

参考文献:

[1] 张华萍. 浅谈连接SQLServer数据库的几种参数存放方式[J]. 科技情报开发与经济, 2008.
[2] 徐人凤, 曾建华. SQLServer数据库及应用[M]. 高等教育出版社, 2013.
[3] 邵河山, 张小福, 王雨功,等. SQLserver数据库与第三方平台交互的方法及系统:, CN110968625A[P]. 2020.

八、源代码获取

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

这篇关于《数据库应用系统实践》------ 包包销售系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327902

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设