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

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

相关文章

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J