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

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

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名