图书进销存管理的设计与实现Word下载.docx
《图书进销存管理的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《图书进销存管理的设计与实现Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
3.统计管理模块:
根据销售情况输出统计的报表。
一般内容为每月的销售总额、销售总量及排行榜等信息。
4.销售管理模块:
输入顾客要买书籍的信息,自动显示此书的库存量,如果可以销售,打印销售单并修改库存,同时把此次销售的有关信息添加到日销售库中。
5.查询管理模块:
允许用户设置条件进行进货、退货、统计、销售和库存书籍的信息查询。
1.3面对用户需求分析
在图书进销存管理系统中,最主要的功能就是对图书进货、销售、库存的管理以及查询功能。
因此,可以将图书进销存管理系统分为进货、销售、库存三个子系统。
而在所设计的图书进销存管理系统中,主要有两类用户,即图书管理员、书店管理员。
各类用户在该系统中的需求不同,权限也不同。
因此,为了更明确,更系统的了解用户需求,我们还可以将管理系统再细分为图书管理系统,书店管理系统。
同样,将查询系统也按用户职能进行细分,即图书查询系统,书店查询系统。
这样细分后,看似把系统需求繁杂化了。
其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。
二、 面向对象分析和设计
类和对象设计如下:
进货订单
订单号:
int
图书号:
图书价格:
图书数量:
进货日期:
char
添加()
修改()
删除()
查询()
库存
供应商
供应商名称:
供应图书号:
图书价格:
int
销售订单
销售日期:
图书类别
类别号:
类别名称:
增加()
图书信息表
作者:
出版社:
价格:
图2
三、数据流图
四、 概念和逻辑结构设计
4.1局部E-R图
图3
4.2全局E-R图:
图4
4.3 类和对象向关系模式转换
图书表(图书号,图书名,作者,价格,类别号,出版社)
图书类别表(类别名,类别号)
供应商表(供应商名称,供应图书号,图书价格)
进货订单表(订单号,图书号,图书数量,进货价格,进货日期)
销售订单表(订单号,图书号,图书数量,销售价格,销售日期)
库存表(图书号,图书数量)
五、 数据库物理结构设计
5.1存取方法设计
数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。
对于系统来说,为了提高某些属性的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。
这样会大大提高查询速度。
因此,该系统中选择聚簇存取方法。
5.2存储结构设计
书店进货、销售管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设。
数据库管理系统采用Microsoft公司推出的SQLServer2014或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。
5.3 物理设计
实现该设计的环境为Windows10专业版+MSSQLServer2014
1、建立图书进销存管理系统数据库
createdatabase图书系统
2、建立图书表
use图书系统
createtable图书表(
图书号nvarchar(20)primarykey,
图书名nvarchar(20),
作者nvarchar(15)
价格float,
类别号nvarchar(20),
出版社char(20),
);
3、建立图书类别表
createtable图书类别表(
类别号nvarchar(15)primarykey,
类别名nvarchar(15),
4、建立进货订单表
createtable进货订单表(
订单号char(20)primarykey,
图书号nvarchar(20),
图书数量int,
图书价格float,
进货日期datetime,
)
5、建立销售订单表
createtable销售订单表(
销售日期datetime,
6、建立库存表
createtable库存表(
图书号nvarchar(20)primarykey,
图书数量int,
7、建立供应商表
createtable供应商(
供应商名称char(20),
供应图书号nvarchar(20),
Primarykey(供应商名称,供应图书号));
六、 数据库完整性设计
6.1主键及唯一性索引
表名
主键
建立唯一性索引
图书表
(图书号)
createuniqueindex图书号
on图书表(图书号)
图书类别表
(类别名称)
createuniqueindex类别号
on图书类别(类别号)
进货订单表
(订单号)
createuniqueindex订单号
on进货订单(订单号)
销售订单表
on销售订单(订单号)
库存表
on库存(图书号)
供应商表
(供应商名称、供应图书号)
createindex供应商名称
on供应商(供应商名称)
图5
6.2参照完整性设计
1、图书表中将类别号设计为图书类别的外键
altertable图书表addforeignkey(类别号)references图书类别表(类别号);
2、进货订单表中将属性图书号为图书表的外键
ALTERTABLE进货订单表addforeignkey(图书号)references图书表(图书号);
3、销售订单表中将属性图书号为图书表的外键
ALTERTABLE销售订单表addforeignkey(图书号)references图书表(图书号);
4、库存表中将属性图书号为图书表的外键
ALTERTABLE库存表addforeignkey(图书号)references图书表(图书号);
6.3触发器设计
6.3.1入库
CreateTrigger入库1
On进货订单表
FORInsert
As
declare@nint
Select@n=图书号frominserted
declare@numint
Select@num=图书数量Frominserted
Update图书表
set数量=数量+@num
Where图书号=@n
6.3.2出库
CreateTrigger出库
On销售订单表
Asbegin
update库存表
set库存表.图书数量-=销售订单表.图书数量
from库存表,销售订单表
where库存表.图书号=销售订单表.图书号;
end;
6.4存储过程查询某段时间内各种图书的进货和销售情况
SELECT进货订单表.订单号,进货订单表.图书数量,进货日期,销售订单表.订单号,销售订单表.图书数量,销售日期from进货订单表,销售订单表
where销售日期>
='
2016-01-03'
and销售日期<
2016-06-07'
and进货日期>
and进货日期<
七、数据库视图设计
1、建立查询每册图书销售总数的视图
Createview月销数量
AS
selectsum(图书数量)as图书总数,销售订单表.图书号FROM销售订单表groupby销售订单表.图书号;
2、选择供应商
Createview选择供应商
Selects1.供应商名称,s1.供应图书号,s1.图书价格From供应商s1,供应商s2
Wheres1.供应图书号=s2.供应图书号ANDs1.图书价格<
=s2.图书价格;
3、建立销售订单应付总金额
createview应付金额
as
select图书数量*图书价格AS总数,订单号
from销售订单表;
4、建立书店总销售
createview总售出金额
selectsum(图书数量*图书价格)总数
八、数据库存储过程设计
1、存储过程查询某段时间内各种图书的进货和销售情况
ALTERprocedure图书进货销售情况
asbegin
SELECT进货订单表.订单号,进货订单表.图书数量,进货日期,销售订单表.订单号,销售订单表.图书数量,销售日期
from进货订单表,销售订单表
2014-1-1'
2014-12-31'
and
进货日期>
end;
九、程序截图
十、总结
通过这次数据库课程设计,我深刻的体会到作为DBA要考虑到方方面面的问题。
刚开始我根本不知道从哪下手,根据关系模式,从SQL中慢慢建表。
刚开始用英文定义的,可是由于没有连续的时间,英文易混。
反反复复的建了好几次表,最后用中文定义的。
也从刚开始的直接建表变为了后来的代码建表。
触发器设计中建立了销售、进货修改图书信息表与库存图书数量。
建立了存储过程查询某段时间内各种图书的进货和销售情况。
参考资料
[1]王珊,萨师煊.数据库系统概论(第四版).北京:
高等教育出版社,2006.05
[2]罗运模.完全掌握SQLServer2000.北京:
人民邮电出版社,2001
[3]白尚旺.PowerDesigner软件工程技术.北京:
电子工业出版社,2004