数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码)

一、前言

        该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表设计有什么不恰当还请各位大佬多多指点。

所需环境

  1.  MySQL可视化工具:navicat;
  2.  数据库:MySql 5.7/8.0等版本均可;

需求: 

        1:每个书店有多家供应商,每家供应商给多个书店供货。

        2:每个书店聘用多名员工,每个员工只属于一个书店每个书店存放多本图书,多本图书存放在一家书店。

        4: 每本图书可以被任何会员购买,一名会员可以购买任意一本图书。

 备注:

        书店包含下列属性: 编号,地址,书店名字,老板电话;

        员工包含下列属性: 身份证,名字,性别,年龄;

        图书包含下列属性: 编号,书名,价格,库存量;

        会员包含下列属性: 编号,姓名,电话,积分;

        关于某供应商给书店供货要描述供货日期;

        关于书店聘用员工要描述聘用日期:

        关于会员购买图书需要描述购买数量;

        关于书店存放图书需要描述存放位置。

二、E-R图

1248276d26ad43a4838669cdeb169f48.png

三、关系模式

        供应商:(供应商编号,供应商地址,供应商联系人,供应商联系电话,供应商名字,供应商备注)。

        书店:(书店编号,书店地址,书店名字,书店老板电话)

        员工:(身份证,员工名字,员工性别,员工年龄,书店编号,聘用时期)

        图书:(图书编号,书名,价格,库存量,书店编号,存放位置)

        会员:(会员编号,会员姓名,会员电话,积分)。

        供应信息:(供应商编号,书店编号,供应时间)

        购买信息:(会员编号,图书编号,购买数量)

 备注:

        下划线为主键,红色字为外键;

四、数据表的设计

表1 供应商

字段

数据类型

长度

备注

 

供应商编号

varchar

50

主键

 

供应商地址

varchar

50

 

 

供应商联系人

varchar

50

 

 

供应商联系电话

varchar

50

 

 

供应商名字

varchar

50

Not null

 

供应商备注

varchar

50

 

 

 表2 书店

字段

数据类型

长度

备注

 

书店编号

varchar

50

主键

 

书店地址

varchar

50

 

 

书店名字

varchar

50

Not null

 

书店老板电话

Varchar

50

 

 

表3 员工

字段

数据类型

长度

备注

 

身份证

varchar

20

主键

 

员工性别

varchar

50

 

 

员工年龄

Int

3

 

 

员工名字

varchar

50

Not null

 

书店编号

varchar

50

外键

 

聘用时间

date

 

Not null

 

表4 图书

字段

数据类型

长度

备注

 

图书编号

varchar

50

主键

 

书名

varchar

50

Not null

 

价格

float

8

 

 

库存量

int

8

 

 

书店编号

varchar

50

外键

 

存放位置

varchar

50

Not null

 

表5 会员

字段

数据类型

长度

备注

 

会员编号

varchar

50

主键

 

会员姓名

varchar

50

Not null

 

会员电话

varchar

50

 

 

积分

int

50

 

 

表6 供应信息

字段

数据类型

长度

备注

 

供应商编号

varchar

50

主键

 

书店编号

varchar

50

主键

 

供货时间

date

 

Not null

 

表7 购买信息

字段

数据类型

长度

备注

 

图书编号

varchar

50

主键

 

会员编号

varchar

50

主键

 

购买数量

int

8

Not null

 

五、创建数据库

Create database 书店图书进销存管理系统 character set utf8 collate utf8_general_ci
-- 在新建表前选择数据库
Use 书店图书进销存管理系统

创建各实体表:

1. 供应商

create table 供应商
(
 供应商编号 VARCHAR(50) PRIMARY KEY,
 供应商地址 VARCHAR(50),
 供应商联系人 VARCHAR(50),
 供应商联系电话 VARCHAR(50),
 供应商名字 VARCHAR(50) NOT NULL,
 供应商备注 VARCHAR(50)
)

2.书店

CREATE TABLE 书店
(
 书店编号 varchar(50) PRIMARY KEY,
 书店地址 VARCHAR(50),
 书店名字 VARCHAR(50) NOT NULL,
 书店老板电话 VARCHAR(50)
)

3.员工

CREATE TABLE 员工
(
 身份证 VARCHAR(50) PRIMARY KEY,
 员工姓名 VARCHAR(50) NOT NULL,
 员工性别 VARCHAR(50),
 员工年龄 int(3),
 书店编号 VARCHAR(50),
 聘用时间 DATE NOT NULL,
 CONSTRAINT FK书店编号 FOREIGN KEY(书店编号) REFERENCES 书店(书店编号)
)

4.图书

CREATE TABLE 图书
(
 图书编号 VARCHAR(50) PRIMARY KEY,
 书名 VARCHAR(50) NOT NULL,
 价格 FLOAT(8),
 库存量 INT(8),
 书店编号 VARCHAR(50),
 存放位置 VARCHAR(50) NOT NULL,
 CONSTRAINT FK_书店编号 FOREIGN KEY (书店编号) REFERENCES 书店(书店编号)
)

5.会员

CREATE TABLE 会员
(
 会员编号 VARCHAR(50) PRIMARY KEY,
 会员姓名 VARCHAR(50) NOT NULL,
 会员电话 VARCHAR(50),
 积分 INT(5)
)

6. 供应信息

CREATE TABLE 供应信息
(
 供应商编号 VARCHAR(50),
 书店编号 VARCHAR(50),
 供应时间 DATE NOT NULL,
 PRIMARY KEY(供应商编号,书店编号)
)

7. 购买信息

CREATE TABLE 购买信息
(
 图书编号 VARCHAR(50),
 会员编号 VARCHAR(50),
 购买数量 INT(8) NOT NULL,
 PRIMARY KEY(图书编号,会员编号)
)

插入数据:

1. 供应商

INSERT INTO 供应商 VALUES ('G001','春熙路12号','李明','13123451234','邮电出版社','优等')
INSERT INTO 供应商 VALUES ('G002','天府路85号','薛鹏','15198762347','工业出版社','良好')
INSERT INTO 供应商 VALUES ('G003','太升路35号','林波','15823140987','机械出版社','良好')
INSERT INTO 供应商 VALUES ('G004','民航路94号','苏珊','18078651234','民航出版社','优等')
INSERT INTO 供应商 VALUES ('G005','芙蓉路53号','林达','18698704563','商务出版社','良好')
INSERT INTO 供应商 VALUES ('G006','天府三街6号','小野','19382069330','三街出版社','优等')
INSERT INTO 供应商 VALUES ('G007','十三区43号','成龙','17865989988','符咒出版社','优等')
INSERT INTO 供应商 VALUES ('G008','成华大道66号','谭警官','16666666666','成华出版社','良好')
INSERT INTO 供应商 VALUES ('G009','天益街83号','橙汁','18765498596','橙汁出版社','优等')
INSERT INTO 供应商 VALUES ('G0010','二仙桥23号','二大爷','15465989586','大爷版社','优等')

2.书店

INSERT INTO 书店 VALUES ('S001', '长城路5号', '求实书店', '13612345678')
INSERT INTO 书店 VALUES ('S002', '长江路64号', '上进书店', '13703456784')
INSERT INTO 书店 VALUES ('S003', '黄河路93号', '梦想书店', '13882346743')
INSERT INTO 书店 VALUES ('S004', '泰山路59路', '书虫书店', '13998762345')
INSERT INTO 书店 VALUES ('S005', '青城山路23号', '创业书店', '13976543214')
INSERT INTO 书店 VALUES ('S006', '春熙路13号', '邮电书店', '13598657412')
INSERT INTO 书店 VALUES ('S007', '天府路86号', '工业书店', '15146523698')
INSERT INTO 书店 VALUES ('S008', '太升路36号', '机械书店', '14756329833')
INSERT INTO 书店 VALUES ('S009', '民航路95号', '民航书店', '16654233322')
INSERT INTO 书店 VALUES ('S010', '芙蓉路54号', '商务书店', '13322336655')

3.员工

INSERT INTO 员工 VALUES ('511001199001011234', '张三', '男', 33, 'S001', '2009-07-01')
INSERT INTO 员工 VALUES ('510102199102032345', '李四', '男', 32, 'S002', '2008-03-01')
INSERT INTO 员工 VALUES ('510101199203033456', '王丽', '女', 31, 'S003', '2007-04-01')
INSERT INTO 员工 VALUES ('510101199303033456', '王宝玉', '男', 30, 'S004', '2007-04-01')
INSERT INTO 员工 VALUES ('510104199408095678', '秦松', '男', 29, 'S005', '2006-08-01')
INSERT INTO 员工 VALUES ('510001199105079965', '丁真', '男', 32, 'S006', '2010-06-28')
INSERT INTO 员工 VALUES ('510011199304261355', '李明', '男', 30, 'S007', '2009-01-15')
INSERT INTO 员工 VALUES ('510010199512140932', '李华', '女', 28, 'S008', '2012-05-29')
INSERT INTO 员工 VALUES ('510110199811230623', '王明', '男', 25, 'S009', '2013-04-30')
INSERT INTO 员工 VALUES ('510023199407112556', '林琬茹', '女', 29, 'S010', '2009-09-01')

4.图书

INSERT INTO 图书 VALUES ('T001', '围城', 58, 31, 'S001', '一楼')
INSERT INTO 图书 VALUES ('T002', '边城', 46, 12, 'S002', '二楼')
INSERT INTO 图书 VALUES ('T003', '平凡的世界', 32, 87, 'S003', '三楼')
INSERT INTO 图书 VALUES ('T004', '撒野', 36, 67, 'S004', '二楼')
INSERT INTO 图书 VALUES ('T005', '人间失格', 28, 28, 'S005', '二楼')
INSERT INTO 图书 VALUES ('T006', '狂人日记', 99, 16, 'S006', '三楼')
INSERT INTO 图书 VALUES ('T007', '乌合之众', 32, 86, 'S007', '一楼')
INSERT INTO 图书 VALUES ('T008', '自卑与超越', 42, 66, 'S008', '二楼')
INSERT INTO 图书 VALUES ('T009', '人生', 66, 74, 'S009', '三楼')
INSERT INTO 图书 VALUES ('T010', '活着', 78, 33, 'S010', '一楼')

5.会员

INSERT INTO 会员 VALUES ('V001', '林丹', '17109872345', 654)
INSERT INTO 会员 VALUES ('V002', '十三', '17209874321', 1368)
INSERT INTO 会员 VALUES ('V003', '陈羽', '17308763456', 69)
INSERT INTO 会员 VALUES ('V004', '杨帆', '17408765467', 743)
INSERT INTO 会员 VALUES ('V005', '小白', '17567431298', 475)
INSERT INTO 会员 VALUES ('V006', '小黑', '17632684456', 216)
INSERT INTO 会员 VALUES ('V007', '黑大帅', '17698978445', 448)
INSERT INTO 会员 VALUES ('V008', '潇洒哥', '17544748596', 666)
INSERT INTO 会员 VALUES ('V009', '格林', '17488932254', 1473)
INSERT INTO 会员 VALUES ('V010', '路遥', '17588141121', 187)

6. 供应信息

INSERT INTO 供应信息 VALUES ('G001', 'S001', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G002', 'S002', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G003', 'S003', '2020-04-23')
INSERT INTO 供应信息 VALUES ('G004', 'S004', '2020-04-20')
INSERT INTO 供应信息 VALUES ('G005', 'S005', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G006', 'S006', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G007', 'S007', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G008', 'S008', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G009', 'S009', '2020-04-24')
INSERT INTO 供应信息 VALUES ('G010', 'S010', '2020-04-23')

7. 购买信息

INSERT INTO 购买信息 VALUES ('T001', 'V010', 2)
INSERT INTO 购买信息 VALUES ('T002', 'V009', 4)
INSERT INTO 购买信息 VALUES ('T003', 'V008', 5)
INSERT INTO 购买信息 VALUES ('T004', 'V007', 2)
INSERT INTO 购买信息 VALUES ('T005', 'V006', 1)
INSERT INTO 购买信息 VALUES ('T006', 'V005', 6)
INSERT INTO 购买信息 VALUES ('T007', 'V004', 7)
INSERT INTO 购买信息 VALUES ('T008', 'V003', 3)
INSERT INTO 购买信息 VALUES ('T009', 'V002', 2)
INSERT INTO 购买信息 VALUES ('T010', 'V001', 1)

 六、主要查询命令

 

  1. 查询所有书店地址信息结果

    select 书店地址 from 书店

    0a678663b52c4fcea76fd4a777683539.png

  2. 查询四月所有供应商中哪些供应过书籍。(查看供应商编号)

    select DISTINCT 供应商编号 from 供应信息 where 供应时间 like '2020-04%'

    8182ef8443e14eee82ab6898ddc0d34c.png

  3. 查询所有书店中年龄最大的男员工姓名。

    select 员工姓名 from 员工 where 员工性别 = '男' ORDER BY 员工年龄 desc limit 1

    a4bcc3d454854665b6b08e2a893d09db.png

  4. 查询书店老板电话为139开头的书店名字。

    select 书店名字 from 书店 where 书店老板电话 like '139%'

    f8cd4e04dedc4045aea3ddc68ae6712d.png

  5. 查询价格低于平均价格的书籍名字。

    SELECT 书名 FROM 图书 WHERE 价格 < (SELECT AVG(价格) FROM 图书)

    54fedc47488245259a24c2df095e5c2f.png

  6. 查询购买书籍数量最多的会员名字。

    SELECT 会员姓名 FROM 会员 WHERE 会员编号 = (select 会员编号 from 购买信息 GROUP BY 会员编号 ORDER BY(购买数量) desc limit 1)

    d26fb54425db4e77a7248f06b6b1a3b6.png

  7. 查询员工人数最少的书店所在地址。

    select 书店地址 from 书店 where 书店编号 = (select 书店编号 from 员工 GROUP BY 书店编号 ORDER BY count(*) asc limit 1)

    a105774eb6b04938ac475d865a05069c.png

  8. 查询优等供应商给哪些书店供货过,并按照供货时间从早到晚排序。

    select * from 供应信息 where 供应商编号 in (select 供应商编号 from 供应商 where 供应商备注 = '优等') ORDER BY 供应时间

    aa6b908bcaa5496f9be501385cbf3d33.png

  9. 查询价格最贵的三种图书,存放在哪些书店里。(查看书店名字)。

    select 书店名字 from 书店 where 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1) or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1,1)or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 2,1)

    9fc657a877ce47fc930218bd5665fad0.png

  10. 查询人生这本书,被哪些会员购买过。

    select 会员姓名 from 会员 where 会员编号 in (select 会员编号 from 购买信息 where 图书编号 in (select 图书编号 from 图书 where 书名 = '人生'))

    f5f4ad3756e249e4843b2f5fb9349980.png

七、答疑解惑 

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主VX:18884281851

谢谢各位的支持~~

 

  • 62
    点赞
  • 213
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 48
    评论
图书销售管理系统数据库设计 数据库系统概论课程设计报告 2011年 05月 28 日 图书销售管理系统数据库设计全文共23页,当前为第1页。 目 录 图书销售管理系统数据库设计全文共23页,当前为第1页。 引 言 1 第一章 系统分析 1 功能需求 2 待开发系统功能 2 第二章 系统功能概要设计 2 系统主要功能模块设计 2 系统处理流程分析 3 系统接口设计 4 外部接口 4 内部接口 5 第三章 系统数据库设计 5 系统数据库分析 5 系统关系表 6 数据字典 6 数据项 6 数据结构 7 数据流表 8 数据存储 8 处理过程 9 第四章 概念结构设计 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 用户管理模块 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 图书管理模块 10 图书销售管理模块 11 查询管理模块 12 报表查询管理模块 13 数据管理模块 14 图书销售管理系统E-R图 15 第五章 逻辑结构设计 16 与系统E-R图对应的关系模式 16 试题所对应的关系模式 16 联系所对应的关系模式 16 关系模式优化处理 17 第六章 物理结构设计 18 系统数据处理特点 18 系统数据存储选择 18 第七章 数据库的实施和维护 18 数据库的实施 19 致 谢 20 图书销售管理系统数据库设计全文共23页,当前为第3页。 引 言 图书销售管理系统数据库设计全文共23页,当前为第3页。 随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理。 通过图书销售管理系统可以解决书店管理中遇到的各种问题,该图书销售管理系统分析了市场需求和实际需要,利用Microsoft Visual Studio 2008连接SQL数据库的方式,实现书店图书销售等一系列管理,该系统具有处理图书录入、图书销售及管理、图书查询、报表查询等功能。 第一章 系统分析 功能需求: 本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标: 用户管理:对系统所有用户的相关信息进行管理。 图书管理:对图书信息进行添加以及编辑,对图书基本信息的录入及编辑包括图书类别、图书进价、图书售价、图书出版社、图书折扣、图书作者等。 图书销售管理:对图书的销售信息进行动态添加并实现图书库存量的动态修改等,所添加的图书销售信息包括图书的售价、折扣、销售日期。 查询管理:用户根据实际需要对图书图书销售、图书库存等信息分类查询。 报表查询:系统用户可以通过对时间段的选择来查看该段时间内图书的销售情况,以便于做出更为合理的销售计划、提高效益。 图书销售管理系统数据库设计全文共23页,当前为第4页。数据管理:为了防止系统用户的误操作,用户可以根据自己的需要对图书信息、销售数据等进行备份等操作。 图书销售管理系统数据库设计全文共23页,当前为第4页。 待开发软件功能: 通过以上的系统目标分析,根据以上系统所要满足的功能,设计出了图书销售管理系统的主要功能模块图,如图所示。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数据管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数据管理模块(M6) 用户管理模块(M1) 图 图书销售管理系统的系统功能图 第二章 系统功能概要设计图书销售管理系统是根据书店的情况结合实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。 系统主要功能模块设计图书销售管理系统数据库设计全文共23页,当前为第5页。结合前面对系统功能的分析,以及Microsoft Visual Studio 2008开发环境的特点,得到如下图所示的系统功能模块图: 图书销售管理系统数据库设计全文共23页,当前为第5页。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数 管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数 管理模块(M6) 用户管理模块(M1) 图图书销售管理系统主要功能模块图 系统各个模块功能分配如下: (1)用户管理模块:系统用户根据权限进行系统登录并对相关用户信息进行管理;
Java实现进销存管理系统采用C/S(客户端/服务器)模式,并使用MySQL数据库。C/S模式是一种常见的软件架构模式,它将软件系统分为客户端和服务器两个部分。客户端负责提供用户界面和交互,而服务器负责处理业务逻辑和数据存储。 在这种架构模式下,Java语言可以用于开发客户端和服务器端的应用程序。Java的跨平台特性使得客户端可以在不同的操作系统上运行,并且可以提供丰富的用户界面和交互体验。服务器端可以使用Java开发,以处理业务逻辑和与数据库进行交互。 MySQL是一个流行的关系型数据库管理系统,具有开源、跨平台和高性能的特点。它可以提供可靠的数据存储和高效的数据查询能力,非常适合进销存管理系统这种需要处理大量数据的应用场景。 通过Java实现进销存管理系统,可以使用Java的数据库连接技术(如JDBC)来与MySQL数据库进行通信。客户端可以通过连接服务器来发送和接收数据,服务器可以将数据存储在MySQL数据库中,并针对不同的需求进行查询和分析。 Java的面向对象特性和丰富的类库使得开发系统变得更加便捷和灵活。开发人员可以使用Java的多线程技术来提高系统的并发性能,并且可以使用Java的图形库来设计用户友好的界面。 总之,通过采用Java实现进销存管理系统的C/S模式,并选择MySQL作为数据库,可以构建一个可靠、高效和易于使用的系统。这种架构具有良好的扩展性和可维护性,并能满足企业的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花花´◡`

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值