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

文章详细介绍了包包销售系统的数据库设计过程,从需求分析、概念模型设计、逻辑模型设计到物理设计和数据实施,包括ER图、关系模型、SQL语句和数据录入。系统旨在提供销售员、管理员和顾客信息管理,以及包包库存的高效操作。
摘要由CSDN通过智能技术生成

系列文章

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



一、需求分析

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)
  begin
  print'销售员的电话号码被修改了!!'
  rollback
 end

六、数据库应用系统实现

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.

八、源代码获取

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿代码_QQ_3014067949

给小编价格鸡腿吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值