商店进销存管理系统.docx
1.题目要求及说明1.1题目要求(1)根据题目要求调查分析一个具体的或模拟的实例;(2)描述该实例的业务信息和管理工作的要求;(3)列出实体、联系;(4)指出实体和联系的属性;(5)画出E-R图;(6)将E-R图转换成关系模式,并注明主码和外码;(7)建立数据字典;(8)创立数据库.1.2题目:某商店进销存管理系统(1)实现商品类别、供货商、业务员信息管理;(2)实现商品信息、仓库信息管理、仓库商品管理;(3)实现商品验收入库、商品销售出库管理,入库和出库时自动修改对应商品的总库存和分库库存量(用触发器实现),另外验收或销售时一单可以验收或销售多种商品;(4)实现转仓管理,转仓时自动修改转出仓库和转入仓库对应商品的数量(用触发器实现);(5)创立存储过程统计指定时间段内各种商品的进货数量和销售数量;(6)设商品的单位只能是'只'、'件'、'箱',创立规那么进行限制;(7)创立表间关系。2.需求分析:2.1市场调查分析:通过对现流行在市场的软件的调查,发现,现在市场上软件多是针对大客户,比拟复杂,开发的过程比拟复杂,比拟昂贵,也不容易操作与维护,不能被广阔的小企业或是超市,还有商店等使用,所以,我们抓住市场的这个空白区,去开发商店的进销存管理系统。2.2系统描述:该系统主要是对中小型商店的进货、销售、库存管理等做出管理,根本实现了商店商品类别、供货商、业务员信息的管理:并用触发器和规那么实现了系统的完整性和一致性的管理,在商品入库、出库和转库的过程中,能自动修改相应的数量,并用规那么限制了商品的单位,只能是"只"、"件"、“箱"等功能。根本满足设计题目的要求。3.E-R图3.1实体与联系:实体:商品类别、供货商、业务员、商品、仓库联系:所属、供给、管理、库存、入库、出库、转库3.2属性:商品类别(商品类别号,商品类别名)供货商(供货商号,供货商名,供货商地址,联系)业务员(业务员号,业务员名,性别)商品(商品号, 仓库(仓库号, 库存(商品号, 入库(商品号, 出库(商品号, 转库(商品号,商品名,商品类别号,商品单位,商品价格,商品数量)仓库名,仓库地址)商品名,仓库号,仓库名,库存数量)商品名,仓库号,仓库名,入库数量,入库时间)商品名,仓库号,仓库名,出库数量,出库时间)商品名,原仓库号,目标仓库号,转库数量,转库时间)3.3E-R图(1)局部ER图:(2)全局ER图:3.4关系模式(1)假设实体间的联系是1:1联系,可以在两个实体类型转换成两个关系模式的任意一个关系式的属性中,参加另一个关系模式的主码和联系类型的属性。(2)假设实体间的联系是1:n联系,那么在n端实体类型转换成的关系模式中,参加1端实体类型转换成的关系模式的主码和联系类型的属性。(3)假设实体间的联系是m:n联系,那么将联系类型也转换成关系模式,其属性为两端实体类型的主码加上联系类型的属性,而该主码为两端实体主码的组合。根据以上规那么,本系统的E-R模型向关系模型转换如下(主码用下横线标出):具体图示如下:商品类别表(商品类别号,商品类别名)供货商表(供货商号,供货商名,供货商地址,联系)业务员表业务员号,业务员名,性别)仓库表(仓库号,仓库名,仓库地址)商品表(商品号,商品名,商品类别号,商品单位,商品单价,商品数量)库存表(商品号,仓库号,商品名,仓库名,库存数量)入库表商品号,仓库号,商品名,仓库名,入库数量,入库时间,业务员号)出库表(商品号,仓库号,商品名,仓库名,出库数量,出库时间,业务员号)转库表(商品号,商品名,原仓库编号,目标仓库编号,转库数量,转库时间,业务员号)4.数据字典表1商品类别表列名数据类型数据长度为空否主键商品类别号Char10X商品类别名Char20表2供货商表列名数据类型数据长度为空否主键供货商号Char10X供货商名Char20供货商地址Char30联系char13表3业务员表列名数据类型数据长度为空否主键业务员号char10X业务员名Char性别Char2表4仓库表列名数据类型数据长度为空否主键仓库编号char10X用仓库名Char20仓库地址char30表5商Fi表列名数据类型数据长度为空否主键商品号Char10X用商品名Char20商品类别号Char10商品单位Char商品价格float*商品数量int4表6库彳H表列名数据类型数据长度为空否主键商品号Char10×商品名Char20仓库号Char10X库存数量int4表7入库表列名数据类型数据长度为空否主犍商品编号CharIUX困商品名称Char20仓库号Char10X仓库名char2()入库数量Int4入库时间Datetime8业务员号char10表8出库表列名数据类型数据长度为空否主键商品号Char10X阐商品名称Char20仓库号Char10X仓库名char20出库数量Int1出库时间DatetimeX业务员号char10表9转自E表列名数据类型数据长度为空否主键商品编号char10X商品名称Char20原仓库编号Char10目标仓库编号Char10转库数量Int1转库时间datetime8业务员号char105.程序实现5.1程序/*创立数据库*/createdatabase商店进销存管理系统(name=商店进销存管理系统data,fiIename='d:SQLSerVer商店进销存管理系统data,mdf,size=1MB,maxsize=5MB,fiIegrowth=IMBlogonname=商店进销存管理系统log,filename='d:SQLSerVer商店进销存管理系统log.Idf',size=1MB,maxsize=2MB,fiIegrowth=IMB/*创立商品类别表并插入数据*/use商店进销存管理系统gocreatetable商品类别表商品类别号char(10)primarykey,商品类别名char(20)goinsertinto商品类别表values(,101,insertinto商品类别表values('102',insertinto商品类别表values(,103,insertinto商品类别表values(To4',insertinto商品类别表values(,105,insertinto商品类别表values('106',go饮料类')笔类')酒类)玩具宠物类')食品类')服装类')select*from商品类别表go/*创立供货商表并插入数据*/use商店进销存管理系统goCreatetable供货商表供货商号char(10)primarykey,供货商名char(20),供货商地址char(30),供货商char(13)go insert insert insert, insert insert insertinto into into into into into供货商表 供货商表 供货商表 供货商表 供货商表 供货商表values (' GHS10 ,家乐福',昆明','08 71-345617 7') values C GHSlO2','沃尔玛','昆明,0871-3699703') values (' GHS103,福多多','北京,0870-2224177')values (' GHSlO4','天力','重庆','0870-5932 703') values (' GHS105,'华联','上海','0873-3694177') values (' GHS106, t,金方','深证','0873-3699703')goselect*from供货商表go/*创立业务员表并插入数据*/use商店进销存管理系统gocreatetable业务员表业务员号char(10)primarykey,业务员名char(8),性别char(2)insertinto业务员表valuesCywyio李琴,insertinto业务员表valuesCYWY102f1王华',insert.into业务员表values('YWY103','方芳',insertinto业务员表values('YWY104','刘芳',insertinto业务员表values('YWY105','思源',insertinto业务员表values('YWY106','高竹insertinto业务员表values('YWY107','张瑞',gogselect*from业务员表g。/*创立仓库表并插入数据*/use商店进销存管理系统gocreatetable仓库表(仓库号Char(IO)primarykey,仓库名Char(20),)goinsertinto仓库表valuesCCKHlO1','仓库号')insertinto仓库表values('CKH102','仓库二号')insertinto仓库表values(CKHlO3,仓库三号)insertinto仓库表values('CKHlO4','仓库四号')insertinto仓库表values('CKHlO5','仓库五号)insertinto仓库表values('CKHlO6','仓库六号')goselect*from仓库表go/*创立商品表并插入数据*/use商店进销存管理系统gocreatetable商品表(商品号char(10)primarykey,商品名char(20),商品类别号char(10)foreignkeyreferences商品类别表(商品类别号),商品单位char(2),商品价格float,商品数量intgocreaterule单位限制as0valuein('只',件,箱')goexecsp_bindrule'单位限制','商品表商品单位'O,OOO532O,1OoO.OO45J46,箱只二箱箱,只,箱,件,1£JuinJ4OOOOOginsertinto商品表valuesCspioi,insertinto商品表values(rSPlO2,insertinto商品表values('SPlO3,insertinto商品表values('SPlO4,insertinto商品表values('SPlO5,insertinto商品表values(rSPlO6,insertinto商品表values('SPlO7,g。select*from商品表多笔,片面,狗橙性醇豆便服具鲜中青土方衣玩/*创立库存表并插入数据*/use商店进销存管理系统g。createtable库存表商品号char(10)foreignkeyreferences商品表(商品号),商品名char(20),仓库号char(10)foreignkeyreferences仓库表(仓库号),库存数量int,constraint库存primarykey(商品号,仓库号)goinsertinto库存表values('SPlOl',鲜橙多','CKHlOl',70)insertinto库存表values('SPlOl','鲜橙多','CKH102,30)insertinto库存表values(,SP102,'中性笔','CKH102,50)insertinto库存表values('SP10211中性笔','CKH103,50)insertinto库存表valuesCSP105,'方便面','CKH103,50)insertinto库存表values('SP10511'方便面','CKH104,50)insertinto库存表valuesCSP107,玩具狗','CKH104,50)insertinto库存表values('SP10711'玩具狗','CKH106,50)insertinto库存表valuesCSP103,'青醇CKH105,67)insertinto库存表values('SP103','青醇','CKHlOl133)insertinto库存表values('SP104'土豆片',CKH1O3,35)insertinto库存表values('SP10411'土豆片','CKH105,65)insertinto库存表values(,SP106,'衣服CKH106,30)insertinto库存表values('SP106','衣服','CKH103,70)g。select*from库存表go/*创立入库表并插入数据*/use商店进销存管理系统gocreatetable入库表(商品号char(10)foreignkeyreferences商品表(商品号),商品名char(20)j仓库号char(10)foreignkeyreferences仓库表(仓库号),仓库名char(20),入库数量int,入库时间datetime,业务员号char(10),constraint入库primarykey(商品号,仓库号)Go/*创立商品入库触发器*/createtriggerT_入库On入库表forinsertasdeclare数量intselect数量=入库数量from入库表update库存表set库存数量=库存数量+数量where库存表商品号=(SeIeCt商品号frominserted)and库存表仓库号=(SeIeCt仓库号frominserted)update商品表set商品数量=商品数量+数量where商品表商品号=(SeleCt商品号frominserted)g。select*from库存表goinsertinto入库表values'SPlOl','鲜橙多','CKHlOl','仓库号 10,' 2007T0T5 ' YWYlOF ) insert into 入库表 VaIUCS ,20, ,2007-10-19, ,YWY102,) insert into 入库表 values 20,5 2007-10-16, / YWY103,) insert into 入库表VaIUCS,30, 2007-1 l-20,YWY104,) insert into 入库表ValUeS',80,'2007-9-28','YWY105')insert into 入库表 ValUCS ,30, 2007-1 l-2,YWY106,) insert into 入库表 ValUeS('SP102','中性笔,CKHlo2','仓库二号CSP103,青醇,CKH105','仓库五号('SP104','土豆片','CKHIo3','仓库三号CSP105,方便面','CKH103','仓库三号('SP106','衣服'CKH106'仓库六号('SP107','玩具狗,CKH104','仓库四号,40,2007-1l-6,YWY107,)goselect*from库存表go/*创立出库表*/use商店进销存管理系统gocreatetable出库表商品号char(10)foreignkeyreferences商品表(商品号),商品名char(20),仓库号char(10)foreignkeyreferences仓库表(仓库号),仓库名char(20),出库数量int,出库时间datetime,业务员号char(10),constraint出库primarykey(商品号,仓库号)Go/*创立商品出库触发器*/createtriggerT_出库on出库表forinsertdeclare数量intselect数量=出库数量from出库表update库存表set库存数量=库存数量-数量where库存表商品号=(SeleCt商品号frominserted)and库存表仓库号=(SeIeCt仓库号frominserted)update商品表set商品数量=商品数量-数量where商品表商品号=(SeleCt商品号frominserted)g口select*from库存表goinsertinto出库表values('SPlOl','鲜橙多','CKHlOl','仓库一号',20,'2007-10-26,YWY101,)insert into 出库表 VaIUeS ,25, ,2007-10-29, ,YWY102,) insert into 出库表 ValUCS ,30, ,2007-10-22, ,YWY103,) insert into 出库表VaIUeS,60, 2007-1 l-29,YWY104,) insert into 出库表VaIUCS,80, ,2007-10-10, ,YWY105,) insert into 出库表 values ,25, ,2007-ll-15, ,YWY106,) insert into 出库表 VaIUCS ,60, 2007-1 l-26,YWY107,)CSP102,中性笔','CKH102','仓库二号CSP103,青醇,CKH105','仓库五号('SP104','土豆片','CKH103','仓库三号('SP105','方便面','CKH103','仓库三号('SP106','衣服,CKH106','仓库六号CSP107,玩具狗','CKH104','仓库四号goselect*from库存表g。/*创立转库表*/use商店进销存管理系统gocreatetable转库表商品号char(10)primarykey,商品名char(20),原仓库号char(10),目标仓库号char(10)t转库数量int,转库时间datetime,业务员号char(10)g。/*创立商品转库触发器*/createtriggerT_转库on转库表forinsertdeclare转库数量intselect转库数量=转库数量from转库表update库存表set库存数量=库存数量-转库数量where库存表仓库号=(SelCCt原仓库号frominserted)and库存表商品号=(select商品号frominserted)update库存表set库存数量=库存数量+转库数量where库存表仓库号=(SeleCt目标仓库号frominserted)and库存表商品号=(select商品号frominserted)goselect*from库存表goinsertinto转库表values(,SP10,鲜橙多','CKH101,CKH102,12,2007-10-20,YWY10)insertinto转库表values('SP102','中性笔CKH102,CKH103,11/200710-19,YWY1O2,)insertinto转库表valuesCSPlo3','青醇,/CKH105,CKH101,5/2007-10-22,YWY103,)insertinto转库表values(,SP104,土豆片','CKH103','CKH105,1,2007-ll13,YWY104,)insertinto转库表values('SP105,方便面,/CKH103,CKH104,40/2007TOT','YWY105,)insertinto转库表values('SP106,衣服','CKH106','CKH103,15,2007-ll10,YWY106,)insertinto转库表values(,SP107,1,玩具狗CKH104,CKH106,20/2OO7T1T5','YWY107,)goselect*from库存表go/*创立存储过程统计指定时间段内各种商品的进货数量和销售数量*/createprocU_slasselect入库表商品号,入库表.商品名,入库数量AS进货数量,入库时间AS进货时间,出库数量AS销售数量,出库时间AS销售时间from入库表,出库表where入库时间between'2007T0T0'and'2007Tl-1'and出库时间between,2007-10-10,and'2007TlT'orderby入库表商品号goexecU_slg口5.2结果用入库触发器的数据变化如下:用出库触发器的数据变化如下:用转库触发器的数据变化如下:、存储过程统计2007T0T0到2007-11-1这段时间内,各种商品的进货数量和销售数量如下: