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

一. 需求分析

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图

①  出版社信息表

图1 出版社信息E-R图

②  进货订单

图2 进货订单E-R图

③  进货详情单

图3 进货详情的E-R图

④  库存信息表

图4 库存的E-R图

⑤  图书类别表

图5 图书类别的E-R图

⑥  图书信息表

图6 图书信息的E-R图

⑦  销售订单

图7 销售订单的E-R图

⑧  销售订单详情表

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

3、        整体E-R图

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,@结束时间dateas begin           SELECT *      from 进货详情表      where   进货日期 >=@起始时间 and 进货日期<=@结束时间end;

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

CREATE procedure [dbo].[某段时间销售查询]@起始时间 date,@终止时间dateas begin           SELECT *      from 销售详情表      where   销售日期 >=@起始时间 and 销售日期<=@终止时间         end;

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

CREATE VIEW [dbo].[V_各类图书库存总数]ASSELECT   dbo.库存信息表.图书号, dbo.图书信息表.类别号,dbo.库存信息表.图书数量, dbo.图书类别表.类别FROM      dbo.库存信息表 INNERJOINdbo.图书信息表 ON dbo.库存信息表.图书号 =dbo.图书信息表.图书号 INNER JOINdbo.图书类别表 ON dbo.图书信息表.类别号 =dbo.图书类别表.类别号

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

Create Trigger [dbo].[进货]   On [dbo].[进货详情表] FOR Insert As   declare @n int     Select @n=图书号 from inserted  declare @num int    Select@num=图书数量 From insertedUpdate 库存信息表   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 insertedUpdate 库存信息表   set 图书数量=图书数量-@num   Where 图书号=@n

四. 测试

(1) 出版社信息表

图13 插入出版社信息

(2) 进货订单表

图14 插入订单信息

(3) 进货详情表

图15 插入进货详情

(4) 库存信息表

图16 插入库存信息

(5) 图书类别表

图17 插入类别信息

(6) 图书信息表

图18 插入图书信息

(7) 销售订单

图19 插入销售信息

(8) 销售详情表

图20 插入销售详情

2、     测试

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

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

结果:

图21 存储过程1

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

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

结果:

图22 存储过程2

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

图23 使用视图查询库存

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

图24 入库前库存信息

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

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

图25 入库后库存信息

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

图26 销售前库存信息

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

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

图27 销售后库存信息

五. 总结

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

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

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

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

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

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

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

https://github.com/FriggaAZ/BookManageDatabase

对你有用的话欢迎star嗷~

SQL Server实现某书店图书进货、销售管理系统相关推荐

  1. 基于javaweb的药品进货销售管理系统(java+ssm+html+js+jsp+mysql)

    基于javaweb的药品进货销售管理系统(java+ssm+html+js+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

  2. 图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...

    摘 要 本文根据<数据库应用系统设计>课程要求而做.选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大,并且经常去图书馆,对图书馆的大部分功能及流程还是比较了解,而且现在 ...

  3. 基于C#+SQL Server实现(Web)学生选课管理系统【100010309】

    学生选课管理系统的设计与开发 基于C#+SQL Server实现学生选课管理系统 一.项目背景 学生选课管理系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低.保密性差 ...

  4. 基于JAVA和SQL SERVER数据库实现的医院病房信息管理系统

    1 系统设计 1.1 设计目标 医院病房管理系统是一种以窗体界面为基础的多功能平台,本系统最根本的目的是让使用者与数据库能够通过系统达到交互,以此来进行医院病房的管理等相关操作.管理员可以通过该平台对 ...

  5. 基于SQL Server和C++搭建的高校教师信息管理系统

    开发工具: SQL Server 2014(其他版本并无差别) Visual Studio 2013 安装以上两个开发工具都没有困难,我们的整体架构是使用SQL Server 创建我们用于存储教师信息 ...

  6. Java实现基于SQL server的图形化图书管理系统

    文章目录 一.前言 二.运行环境 三.实现功能(简略) 1.用户登录 2.读者界面 3.管理员界面 4.超级管理员界面 四.过程中遇到的问题以及解决方案 1.验证码功能 2.模态窗口设置 3.对用户密 ...

  7. 基于C#和Sql Server的网上书店管理系统

    摘 要 本系统是建立在 Windows 平台上,基于 B/S 结构的一个网上书店.通过这个网上书店,可以实 现简单的电子商务功能. 整个网站风格一致,较为美观,有完善的导航机制.普通用户从前台首页进入 ...

  8. Java项目:SSM药品进货销售管理系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 管理员角色包含以下功能: 管理员登录,角色权限管理,职工管理,药品销售管理,供应商管理 ...

  9. Java项目:药品进货销售管理系统(java+SSM+HTML+JS+JSP+mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 管理员角色包含以下功能: 管理员登录,角色权限管理,职工管理,药品销售管理,供应商管理,进货管理,药品信息管理,过期药品处理等 ...

最新文章

  1. “一键”部署分布式训练,微软“群策MARO”上新集群管理助手
  2. 帝国Cms批量上传多图morepic上传超过最大文件2m的限制的方法
  3. latex 伪代码_Latex-算法伪代码
  4. 远程 不显示本地硬盘解决办法(高级版)
  5. windows终止处理程序( __try __finally) 简单解析
  6. AngularJS快速上手
  7. azure第一个月_MLOps:两个Azure管道的故事
  8. 微型计算机原理risc,微型计算机原理习题及解答-20210409003329.docx-原创力文档
  9. vim 显示tab键
  10. Android入门笔记02
  11. 【狂神说Redis】2Redis入门 2-3测试性能
  12. Phoca Gallery Images 去除 logo
  13. Solaris操作系统介绍
  14. java cmd 进程_关闭CMD进程-JAVA
  15. python 会议室预约系统解决方案_智能会议预约系统解决方案
  16. 逆函数求导公式_反三角函数_反三角函数定义域_反三角函数公式大全_反三角函数求导_【问他】...
  17. 卸载steam 桌面图标消失异常
  18. 苹果电脑 开机密码 忘记了, 黑苹果系统
  19. 在局域网内如何访问另一台计算机
  20. 程序君带你畅聊发送短信验证码

热门文章

  1. TOP100summit分享实录 | 数字化三支柱:企业数字化转型的众妙之门
  2. 计算机专业srtp项目选题,电气工程学院关于征集第六届SRTP项目选题的通知
  3. 网络摄像机的网络连接
  4. 【课设必备】-Matlab设计串联滞后超前校正-纯干货
  5. linux编译时-ldl,编译和链接C文件时关于-ldl标志
  6. 抖音发弹幕软件-协议
  7. Word文档忘记密码怎么办?
  8. 数据分析常用的四大战略分析工具
  9. 东北狼仙:苏宁手机端样式rem+flexible.js
  10. 互联网+的新零售微信商城