图书进销存管理的设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功