SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]  文末附带数据库文件及数据库日志文件地址。 一.需求分析1、背景(1)待开发的系统名称:图书进货、销售管理系统(2)开发者:FriggaAZ(3)用户:书店管理人员(4)开发环境:① 操作系统:Windows10专业版Build17682② 数据库:SQLServer2017Developer2、系统总体功能分析需求(1)…

大家好,又见面了,我是你们的朋友全栈君。

 

 

文末附带数据库文件及数据库日志文件地址。

 

一. 需求分析

1、背景

(1) 待开发的系统名称:图书进货、销售管理系统

(2) 开发者:FriggaAZ

(3) 用户:书店管理人员

(4) 开发环境:

① 操作系统:Windows 10 专业版 Build17682

② 数据库:SQL Server 2017 Developer

2、系统总体功能分析需求

(1) 某书店图书进货、销售管理系统

(2) 实现图书类别、出版社、图书、仓库信息的管理;

(3)实现进货、入库管理;

(4)实现销售、出库管理;

(5)创建存储过程查询某段时间内各种图书的进货和销售情况;

(6)创建视图查询各类图书的库存总数;

(7)创建触发器当图书入库时自动修改相应图书的总量和存放仓库中该图书的数量;

(8)要求一单可以处理多种图书(比如销售设置销售单及其明细两个表);

建立数据库相关表之间的参照完整性约束。

 

二. 概念结构设计

1、概念结构设计步骤

①  进行局部E-R图设计。

②  进行视图的集成。

2、局部E-R图

①  出版社信息表

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图1 出版社信息E-R图

 

②  进货订单

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图2 进货订单E-R图

 

③  进货详情单

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图3 进货详情的E-R图

 

④  库存信息表

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图4 库存的E-R图

 

⑤  图书类别表

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图5 图书类别的E-R图

 

⑥  图书信息表

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图6 图书信息的E-R图

 

⑦  销售订单

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图7 销售订单的E-R图

 

⑧  销售订单详情表

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图8 销售详情表的E-R图

 

3、        整体E-R图

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

4、        物理结构设计

(1) 出版社信息表(出版社,出版社地址,电话,联系人)

表1 出版社信息表

字段名

数据类型

字段大小

是否允许空

备注

出版社

Char

20

N

主键

出版社地址

Char

20

Y

 

电话

Char

20

Y

 

联系人

Char

20

Y

 

 

表2 进货订单表

字段名

数据类型

字段大小

是否允许空

备注

进货单号

Char

20

N

主键

进货者

Char

20

Y

 

备注

Char

20

Y

 

 

表3 进货详情表

字段名

数据类型

字段大小

是否允许空

备注

进货项号

Char

20

N

主键

进货单号

Char

20

N

外键

图书号

Char

20

N

外键

图书数量

Char

20

N

 

进货日期

Date

 

N

 

进货价格

Char

20

N

 

 

表4 库存信息表

字段名

数据类型

字段大小

是否允许空

备注

图书号

Char

20

N

主键

图书数量

Char

20

N

 

入库信息

Char

20

N

 

出库信息

Char

20

N

 

 

表5 图书类别表

字段名

数据类型

字段大小

是否允许空

备注

类别号

Char

20

N

主键

类别

Char

20

Y

 

 

表6 图书信息表

字段名

数据类型

字段大小

是否允许空

备注

图书号

Char

20

N

主键

图书名

Char

20

N

 

出版社

Char

20

N

外键

类别号

Char

20

N

外键

作者

Char

20

Y

 

 

图7 销售订单表

字段名

数据类型

字段大小

是否允许空

备注

销售单号

Char

20

N

主键

购买者

Char

20

Y

 

备注

Char

20

Y

 

 

图8 销售详情表

字段名

数据类型

字段大小

是否允许空

备注

销售项号

Char

20

N

主键

销售单号

Char

20

N

外键

图书号

Char

20

N

外键

图书数量

Char

20

N

 

销售日期

Date

 

N

 

销售价格

Char

20

N

 

 

三. 数据库的实施

1、创建数据库

CREATE DATABASE 图书系统

 

2、创建出版社信息表

 

CREATE TABLE 出版社信息表(

出版社 char(20)primary key,

出版社地址 char(20),

电话 char(20),

联系人 char(20))

 

3、创建图书类别表

 

CREATE TABLE 图书类别表(

类别号 char(20) primary key,

类别 char(20),

类别信息 char(20),

备注 char(20))

4、创建图书信息表

图书号 char(20) primary key,

图书名 char(20),

出版社 char(20)CONSTRAINT FK_1 foreign key references 出版社信息表(出版社),

类别号 char(20)CONSTRAINT FK_2 foreign key references 图书类别表(类别号),

作者 char(20))

 

5、创建进货订单

 

CREATE TABLE 进货订单(

进货单号 char(20) primary key,

进货者 char(20),

备注 char(20))

 

6、创建销售订单

 

CREATE TABLE 销售订单(

销售单号 char(20) primary key,

购买者 char(20)

)

 

7、创建进货详情表

 

CREATE TABLE 进货详情表(

进货项号 char(20) primary key,

进货单号 char(20)CONSTRAINT FK_3 foreign key references 进货订单(进货单号),

图书号 char(20)CONSTRAINT FK_4 foreign key references 图书信息表(图书号) ,

图书数量 char(20),

进货日期 date,

进货价格 char(20))

 

8、创建销售详情表

 

销售项号 char(20) primary key,

销售单号 char(20)CONSTRAINT FK_5 foreign key references 销售订单(销售单号),

图书号 char(20)CONSTRAINT FK_6 foreign key references 图书信息表(图书号),

图书数量 char(20),

销售日期 date,

销售价格 char(20))

 

9、创建存储过程查询某段时间内各种图书的进货情况

 

CREATE procedure [dbo].[某段时间进货查询]

@起始时间 date,@结束时间date

as begin           

SELECT *      

from 进货详情表      

where   进货日期 >=@起始时间 and 进货日期<=@结束时间

end;

 

10、创建存储过程查询某段时间内各种图书的销售情况

 

CREATE procedure [dbo].[某段时间销售查询]

  @起始时间 date,@终止时间date

  as begin           

  SELECT *      

  from 销售详情表      

  where   销售日期 >=@起始时间 and 销售日期<=@终止时间         

  end;

 

11、创建视图查询各类图书的库存总数

 

CREATE VIEW [dbo].[V_各类图书库存总数]

AS

SELECT   dbo.库存信息表.图书号, dbo.图书信息表.类别号,dbo.库存信息表.图书数量, dbo.图书类别表.类别

FROM      dbo.库存信息表 INNERJOIN

                dbo.图书信息表 ON dbo.库存信息表.图书号 =dbo.图书信息表.图书号 INNER JOIN

                dbo.图书类别表 ON dbo.图书信息表.类别号 =dbo.图书类别表.类别号

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 

 

 

12、创建触发器当图书入库时自动修改相应图书的总量和存放仓库中该图书的数量

Create Trigger [dbo].[进货]   On [dbo].[进货详情表] 

FOR Insert As   

declare @n int     Select @n=图书号 from inserted  

declare @num int    Select@num=图书数量 From inserted

Update 库存信息表   set 图书数量=图书数量+@num   Where 图书号=@n

 

13、创建触发器当图书销售时自动修改相应图书的总量和存放仓库中该图书的数量

 

Create Trigger [dbo].[销售]  On [dbo].[销售详情表] 

FOR Insert As    

declare @n int     Select @n=图书号 from inserted  

declare @num int    Select@num=图书数量 From inserted

Update 库存信息表   set 图书数量=图书数量-@num   Where 图书号=@n

 

 

 

四. 测试

 

(1) 出版社信息表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图13 插入出版社信息

(2) 进货订单表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图14 插入订单信息

 

(3) 进货详情表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图15 插入进货详情

(4) 库存信息表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图16 插入库存信息

(5) 图书类别表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图17 插入类别信息

(6) 图书信息表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图18 插入图书信息

(7) 销售订单

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图19 插入销售信息

(8) 销售详情表

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图20 插入销售详情

 

2、     测试

①  测试存储过程1:某段时间内的进货情况

exec 某段时间进货查询 @起始时间='2018-06-1',@结束时间='2018-07-1'

结果:

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 图21 存储过程1

 

②  测试存储过程2:某段时间内的进货情况

exec 某段时间销售查询 @起始时间='2019-04-1',@终止时间='2019-07-1' 

结果:

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图22 存储过程2

 

③  测试视图查询各类图书的库存总数

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图23 使用视图查询库存

 

④  测试触发器1:入库修改图书总量和仓库中该图书数量入库前的库存信息

 SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图24 入库前库存信息

 

在入库详情表中插入777本图书号为1的图书

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 再次查看库存信息表,图书号为1的图书数量已经增加777 本,说明触发器正确运行。

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

图25 入库后库存信息

 

⑤  测试触发器2:销售修改图书总量和仓库中该图书数量销售前的库存信息

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 图26 销售前库存信息 

在销售详情表中插入700本图书号为4的图书

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 再次查看库存信息表,图书号为4的图书数量已经减少700 本,说明触发器正确运行。

SQL Server实现某书店图书进货、销售管理系统[通俗易懂]

 图27 销售后库存信息 

 

 

五. 总结

 

通过本次的图书进货销售数据库系统的设计,我学到了之前在课程中不能学到的知识,并将平时所学所知的理论知识完全运用在实践中,这样的机会非常难得。

由于一开始对数据库相关知识掌握不牢固,所以面对题目中的“触发器”、“存储过程”、“视图”等相关名词比较陌生,通过搜索引擎搜索相关知识,利用书本学习相关概念,通过在线视频了解如何在一个数据库中创建和使用“触发器”、“存储过程”、“视图”,最终完成了题目要求。

因为没有实战经验,所以对图书系统中的各个部分的用处不了解,因而无法创建表。后来通过学习,画了数据流图,然后画了各个实体的局部E-R 图。在创建数据库的过程中,一开始使用了英文的表名,后来因为表和列的数量过多而导致混淆,所以改用了中文命名的表名和列名。通过E-R 图,能更清楚了解了各个部分的相关关系,理清了约束条件等,将基本的数据库框架搭建好,同时参考题目要求和数据流图,最终完善了数据库。

在整个过程中,最难的部分在于触发器的创建,由于教材中只是粗浅的介绍了概念和语法,所以我通过在线视频的方式,学习了触发器的知识,最终一步一步写出了题目要求的触发器。

通过这次亲自动手实践,我学会了分析需求,并按照要求去做出一个系统,并深知其不易。只有亲手去操作,才能知道在理论学习的过程中的不足,弥补这些不足的方法,可以通过搜索引擎,书本,以

及在线视频的讲解。我也更加期待下一次的动手实践课程。

 

数据库文件以及数据库日志文件地址:

https://github.com/FriggaAZ/BookManageDatabase

对你有用的话欢迎star嗷~

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138638.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么卸载电脑上的mysql_mysql installer

    怎么卸载电脑上的mysql_mysql installer如何完美的卸载掉Mysql?按以下几个步骤去执行。步骤一确认你的mysql服务是关闭的状态,不然卸载不干净。在我的电脑(计算机)–管理–服务和应用程序–服务,找到mysql把状态关闭。步骤二在控制面板中卸载mysql软件。步骤三卸载过后删除C:ProgramFiles(x86)\MySQL该目录下剩余了所有文件,把mysql文件夹也删了。因为我的系统是64位,把软件安装的位置是E…

    2022年9月28日
    4
  • chapter3.5内建函数「建议收藏」

    chapter3.5内建函数「建议收藏」chapter3.5内建函数

    2022年4月20日
    36
  • navicat15激活工具【最新永久激活】2022.01.21[通俗易懂]

    (navicat15激活工具)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月31日
    82
  • ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」

    ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」今天小编给大家讲解如何用Photoshop处理证件照,证件照是大家生活中经常要用到的,相信很多同学碰到过需要给背景照换颜色的时候,却不知道如何更换背景颜色。我们平时照的证件照,一般都是红底,这时我们遇到要蓝底的时候怎么办呢?下面讲解ps修图教程新手入门如何用Photoshop处理证件照。下面,以一寸照片为例,讲解如何用Photoshop制作证件照。1、电脑操作2、ps软件:AdobePhotoshop2017(演示)一、ps改变尺寸1、打开证件照原件(图片小编从网上下载了一张,并打码

    2022年6月26日
    50
  • 喊山第二部_demjanov重排

    喊山第二部_demjanov重排原题链接喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newsshow-8018.html)一个山头呼喊的声音可以被临近的山头同时听到。题目假设每个山头最多有两个能听到它的临近山头。给定任意一个发

    2022年8月8日
    8
  • Vue router原理

    Vue router原理总结:vue-router是vue项目的重要组成部分,用于构建单页应用。单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。路由的本质就是建立url和页面之间的映射关系router模式hash/historyhash模式是vue-router的默认模式。hash指的是url锚点,当锚点发生变化的时候,浏览器只会修改访问历史记录,不会访问服务器重新获取页面。因此可以监听描点值的变化,根据描点值渲染指定dom。hash监听方法:window.addEventListene

    2022年7月27日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号