数据库课程设计汇本商品信息管理系统.doc

上传人:夺命阿水 文档编号:27057 上传时间:2022-07-20 格式:DOC 页数:27 大小:571.93KB
返回 下载 相关 举报
数据库课程设计汇本商品信息管理系统.doc_第1页
第1页 / 共27页
数据库课程设计汇本商品信息管理系统.doc_第2页
第2页 / 共27页
数据库课程设计汇本商品信息管理系统.doc_第3页
第3页 / 共27页
数据库课程设计汇本商品信息管理系统.doc_第4页
第4页 / 共27页
数据库课程设计汇本商品信息管理系统.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数据库课程设计汇本商品信息管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计汇本商品信息管理系统.doc(27页珍藏版)》请在课桌文档上搜索。

1、 1课题简介随着现代科技的高速发展,设备和管理的现代化,在实际工作中如何提高工作效率成为一个很重要的问题。而建立管理信息系统是一个很好的解决办法。 经过半年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次软件技术实践的机会,在指导教师的帮助下,历经两周时间,我们自行设计一套商品信息管理系统,在下面的各章中,我将以这套商品管理系统为例,谈谈其开发过程和所涉及到的问题。2设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。 数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据

2、库的创建、基本操作、程序系统的建立和调试以及系统评价。 数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库商品信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。3设计内容 运用基于E-R 模型的数据库设计方法和关系规X化理论做指导完成从系统的分析到设计直至系统的最终实现,开发商品信息系统,完成商品信息管理系统的全部功能,商品入库子系统,商品出库子系统,商品库存子系统。 首先做好需求分析,并完成数据流图和数据字典

3、。 其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R 图。 然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型4 设计具体实施一、 进行需求分析,编写数据字典。1、系统功能要求设计 有一个存放商品的仓库,每天都有商品出库和入库。 每种商品都有商品编号、商品名称、生产厂家、型号、规格等。 入库时必须填写入库单据,单据包括商品名称、生产厂家、型号、规格、入库数量、入库日期、入库仓库号、入库仓库名称、送货人某。 出库时必须填写出库单据,单据包括仓库号、仓库名称、商品编号、商品名称、型号、规格、出库数量、出库日期、提货人某。 设置商品库存台帐,商品库存台

4、帐是对仓库中目前库存的所有商品的明细记录,商品库存台帐包括商品编号、商品名称、型号、规格、库存数量、库存日期。每当有商品入库或商品出库时都应该自动修改该台帐,最后一次修改的是现在的库存情况。 商品的入库和出库过程通过库存台帐更加清晰条理地显示出仓库中商品的库存数量和库存日期等信息,容易对库存内的商品信息进行查询,增加,修改,删除等操作。该仓库的商品型号统一为DA01-DA99格式,规格为CX100-CX199格式主要功能: 商品管理: 增加商品:修改商品,删除商品,浏览商品增加商品:实现增加商品的详细资料的功能修改商品:实现修改商品资料的功能删除商品:实现删除该商品的所有资料的功能浏览商品:实

5、现浏览所有商品的功能 库存管理:实现商品的入库,在商品入库时通过触发器或存储过程同时完成商品库存台帐的更新。实现商品的出库,在商品出库时通过触发器或存储过程同时完成商品库存台帐的更新。实现按商品名称查询商品的入库情况及目前的库存量。实现按入库日期查询商品的入库情况及目前的库存量。实现按商品名称查询商品的出库情况及目前的库存量。实现按出库日期查询商品的出库情况及目前的库存量。按时间段查询商品库存情况。实现分别按年、季度和月对入库商品数量的统计。实现分别按年、季度和月对出库商品数量的统计。2、系统模块设计库存物资管理大体可以分为以下3大模块,如下图所示:首先是商品入库模块,该模块主要就是描述把采购

6、回来的商品,分类别的放置到指定的仓库中去,然后是商品出库模块,该模块主要描述从指定的仓库中拿出商品;最后时库存模块,这个模块主要是记录商品的库存数量变化。商品信息管理商 品 入 库 模 块商 品 出 库 模 块商 品 库 存 模 块3、数据字典表表名中文名Ware商品Depot仓库Stock库存Stocking入库Outbound出库商品Ware字段名数据类型是否可以为空Is PKIs FK中文名WNochar(10)NOT NULLYesNo商品编号WNamevarchar(50)NOT NULLNoNo商品名称WFactoryvarchar(50)NOT NULLNoNo生产厂家WType

7、varchar(20)NOT NULLNoNo型号Specvarchar(20)NOT NULLNoNo规格仓库 Depot字段名数据类型是否可以为空Is PKIs FK中文名DNochar(10)NOT NULLYesNo仓库号DNamevarchar(50)NOT NULLNoNo仓库名称库存Stock字段名数据类型是否可以为空Is PKIs FK中文名WNochar(10)NOT NULLYesYes商品编号Dnochar(10)NOT NULLYesYes仓库号WAmountIntNOT NULLNoNo库存数量入库Stocking字段名数据类型是否可以为空Is PKIs FK中文名S

8、Nochar(10)NOT NULLYesNo入库号WNochar(10)NOT NULLNoYes商品编号Dnochar(10)NOT NULLNoYes仓库号SAmountIntNOT NULLNoNo入库数量SDatesmalldatetimeNOT NULLNoNo入库日期Suppliervarchar(50)NOT NULLNoNo送货人某出库Outbound字段名数据类型是否可以为空Is PKIs FK中文名ONochar(10)NOT NULLYesNo出库号WNochar(10)NOT NULLNoYes商品编号Dnochar(10)NOT NULLNoYes仓库号OAmoun

9、tintNOT NULLNoNo出库数量ODatesmalldatetimeNOT NULLNoNo出库日期Buyersvarchar(50)NOT NULLNoNo提货人某二、 设计完整的E-R图。商品编号型号生产厂家规格商品名称商品仓库号仓库仓库名称商品仓库库存nm商品仓库入库nm商品仓库出库nm库存关系:入库关系:出库关系:分E-R图:总E-R图:商品编号型号生产厂家规格商品名称商品仓库号仓库仓库名称入库日期送货人某入库数量入库入库号nnnmmm库存库存数量提货人某出库日期出库数量出库出库号三、 进行数据库的逻辑设计。关系模式如下:商品(商品编号、商品名称、生产厂家、型号、规格) 商品编

10、号为主键仓库(仓库号、仓库名称) 仓库号为主键库存(商品编号,仓库号,库存数量) (商品编号,仓库号)为主键,同时也分别为外键入库(入库号,商品编号,仓库号,入库数量,入库日期,送货人某)(入库号)为主键,(商品编号,仓库号)为外键出库(出库号,商品编号,仓库号,出库数量,出库日期,提货人某)(出库号)为主键,(商品编号,仓库号)为外键四、 完成物理数据库的设计,(包括数据库、表、索引、视图、完整性约束的物理设计。)创建数据库createdatabaseMaterial_DB创建商品表use Material_DBcreatetable Ware(/*定义商品表*/WNo char(10)NO

11、TNULLprimarykey,WName varchar(50)NOTNULL,WFactory varchar(50)NOTNULL,WType varchar(20)NOTNULL,Spec varchar(20)NOTNULL)use Material_DB /*插入商品信息*/insertinto Warevalues(100000,毛巾,新家园,DA11,CX100);insertinto Warevalues(100001,台灯,新家园,DA35,CX110);insertinto Warevalues(100002,电冰箱,海尔,DA61,CX900);insertinto W

12、arevalues(100003,电视,东芝,DA52,CX901);insertinto Warevalues(100004,长城干红,中粮华夏,DA25,CX108);insertinto Warevalues(100005,笔记本,东芝,DA24,CX781);创建仓库表use Material_DBcreatetable Depot(/*定义仓库表*/DNo char(10)NOTNULLprimarykey,DName varchar(50)NOTNULL)use Material_DB /*插入仓库信息*/insertinto Depotvalues(2010001,胜昌);ins

13、ertinto Depotvalues(2010002,德隆);insertinto Depotvalues(2010003,豪友);创建库存表use Material_DBcreatetable Stock (/*定义库存关系*/WNo char(10)NOTNULL,DNo char(10)NOTNULL,-WDate smalldatetime NOT NULL,WAmount intNOTNULL,primarykey(WNo,Dno),foreignkey(WNo)references Ware(WNo),foreignkey(DNo)references Depot(DNo)创建入

14、库表use Material_DBcreatetable Stocking(/*定义入库关系*/SNo char(10)NOTNULLprimarykey,WNo char(10)NOTNULL,DNo char(10)NOTNULL,foreignkey(WNo)references Ware(WNo),foreignkey(DNo)references Depot(DNo),SAmount IntNOTNULL,SDate smalldatetimeNOTNULL,Supplier varchar(50)NOTNULL)创建出库表use Material_DBcreatetable Out

15、bound(/*定义出库关系*/ONo char(10)NOTNULLprimarykey,WNo char(10)NOTNULL,foreignkey(WNo)references Ware(WNo),DNo char(10)NOTNULL,foreignkey(DNo)references Depot(DNo),OAmount intNOTNULl,ODate smalldatetimeNOTNULL,Buyers varchar(50)NOTNULL)完整约束的说明:商品Ware的WNo商品编号要求在100000999999之间,WName不能取空;仓库Depot的DNo仓库编号要求在2

16、0100012010999之间,DName不能取空;该仓库的商品型号统一为DA01-DA99格式,规格为CX100-CX199格式。use Material_DB /*定义表Ware唯一性的约束条件*/alterTable Ware addunique(WName,WFactory,WType,Spec);alterTable Ware /*定义WType的完整性约束条件:商品型号统一为DA01-DA99格式*/addconstraint C2 check(WType likeDA0-91-9);alterTable Ware /*定义Spec的完整性约束条件:规格为CX100-CX199格式

17、*/addconstraint C3 check(Spec likeCX1-90-90-9);use Material_DBaltertable Ware /*添加对表Ware的WNo属性的完整性约束,要求在9999999999之间*/addconstraint C4 check(WNo like1-90-90-90-90-90-90-90-90-90-9);altertable Depotaddconstraint C5 check(DNo like20100-90-90-9);use Material_DBaltertable Waredropconstraint C4;use Mater

18、ial_DBaltertable Ware /*添加对表Ware的WNo属性的完整性约束,要求在999999之间*/addconstraint C4 check(WNo like1-90-90-90-90-90-9);创建视图通过WLST(提取“物料视图”每个字的头字母)视图来浏览库存中相同编号商品的信息,其中包括:商品编号WNo、商品名WName、商品厂家WFactory、商品型号WType、商品规格Spec、商品数量SNum、createview VWname(商品编号,商品名称, 库存数量)-视图ASSELECT Stock.WNo,Ware.WName,sum(Stock.WAmoun

19、t)from Ware,Stockwhere Stock.WNo=Ware.WNo groupby Stock.WNo,Ware.WName;五、 实现商品的入库,在商品入库时通过触发器或存储过程同时完成商品库存台帐的更新。入库表的触发器createtrigger stocking_into on stocking -这是入库表的触发器 after insertasbegindeclare a char(10),b char(10),d int;select a=i.DNo,b=i.WNo,d=i.SAmountfrom inserted as i;if(select Stock.WNo fr

20、om Stock where Stock.WNo=b and Stock.DNo=a)isnotnullbeginupdate Stockset Stock.WAmount=Stock.WAmount+dwhere Stock.WNo=b and Stock.DNo=a;return;endinsertinto stock values(b,a,d);endinsertinto stocking values(100,100005,2010001,200,2006-01-02,小明);insertinto stocking values(101,100005,2010003,200,2006-

21、01-02,小兰);insertinto stocking values(102,100001,2010003,200,2006-01-02,小东);insertinto stocking values(103,100002,2010001,200,2006-01-02,小红);insertinto stocking values(104,100003,2010001,200,2007-01-14,小风);insertinto stocking values(105,100005,2010002,200,2006-01-25,小明);insertinto stocking values(106

22、,100000,2010002,200,2006-02-02,小明);insertinto stocking values(107,100001,2010001,200,2005-03-02,小东);insertinto stocking values(108,100002,2010002,200,2007-04-02,小红);insertinto stocking values(109,100003,2010003,200,2006-04-02,小风);insertinto stocking values(110,100004,2010001,200,2006-06-09,小敏);inser

23、tinto stocking values(111,100004,2010002,200,2005-06-02,小风);insertinto stocking values(112,100005,2010001,200,2005-06-02,小青);insertinto stocking values(113,100000,2010003,200,2005-06-02,小明);insertinto stocking values(114,100001,2010001,200,2005-06-02,小东);insertinto stocking values(115,100002,2010002

24、,200,2007-07-02,小红);insertinto stocking values(116,100003,2010003,200,2006-08-02,小风);insertinto stocking values(117,100000,2010001,200,2006-08-02,小明);insertinto stocking values(118,100001,2010001,200,2005-09-04,小东);insertinto stocking values(119,100002,2010002,200,2005-06-02,小红);insertinto stocking

25、values(120,100003,2010003,200,2005-09-11,小风);insertinto stocking values(121,100002,2010002,200,2005-09-01,小明);insertinto stocking values(122,100003,2010002,200,2005-07-08,小敏);insertinto stocking values(123,100002,2010003,200,2005-04-11,小敏);insertinto stocking values(124,100001,2010001,200,2007-07-08

26、,小红);insertinto stocking values(125,100001,2010003,200,2005-08-21,小青);insertinto stocking values(126,100005,2010001,200,2005-07-08,小青);insertinto stocking values(127,100003,2010003,200,2005-09-01,小兰);insertinto stocking values(128,100002,2010002,200,2007-07-08,小兰);insertinto stocking values(129,1000

27、04,2010001,200,2007-07-08,小兰);insertinto stocking values(130,100005,2010002,200,2007-07-08,小红);六、 实现商品的出库,在商品出库时通过触发器或存储过程同时完成商品库存台帐的更新。出库表触发器createtrigger outbound_d on Outbound -这是出库表的触发器 after insertasbegindeclare a char(10),b char(10),d int;select a=i.DNo,b=i.WNo,d=i.OAmountfrom inserted as iif(

28、select s.WNo from Stock as s where s.DNo=a and s.WNo=b )isnotnullbeginif(select s.WAmount from Stock as s ,inserted where s.WAmount=inserted.OAmount and s.WNo=inserted.WNo and s.DNo=inserted.DNo)isnotnullbeginupdate Stock set Stock.WAmount=Stock.WAmount-dwhere Stock.DNo=a and Stock.WNo=bendelsebegin

29、print库存量不够rollbackendendelsebeginprint库存中没有这种产品rollbackendendinsertintoOutbound values(1,100005,2010001,50,2010-01-02,小红);insertintoOutbound values(2,100005,2010002,30,2010-01-02,小红);insertinto Outbound values(3,100001,2010003,50,2010-01-02,小风);insertintoOutbound values(4,100005,2010001,30,2010-01-0

30、2,小红);insertinto Outbound values(5,100002,2010002,20,2010-02-08,小风);insertintoOutbound values(6,100003,2010003,50,2010-03-09,小红);insertinto Outbound values(7,100000,2010002,30,2009-04-15,小风);insertinto Outbound values(8,100004,2010002,50,2009-04-15,小风);insertintoOutbound values(9,100005,2010001,30,2

31、010-06-02,小红);insertintoOutbound values(10,100005,2010002,50,2009-04-15,小红);insertinto Outbound values(11,100001,2010003,50,2010-06-03,小风);insertintoOutbound values(12,100005,2010001,30,2009-04-15,小红);insertinto Outbound values(13,100002,2010002,20,2010-07-05,小风);insertintoOutbound values(14,100003,

32、2010003,50,2009-07-05,小红);insertinto Outbound values(15,100000,2010002,40,2010-07-05,小风);insertinto Outbound values(16,100004,2010002,50,2009-07-05,小风);insertinto Outbound values(17,100005,2010002,20,2008-09-01,小明);insertinto Outbound values(18,100001,2010003,30,2010-09-01,小敏);insertinto Outbound va

33、lues(19,100000,2010002,40,2010-09-01,小敏);insertinto Outbound values(20,100002,2010002,50,2008-09-01,小红);insertinto Outbound values(21,100000,2010002,20,2010-08-21,小青);insertinto Outbound values(22,100003,2010001,30,2008-09-01,小青);insertinto Outbound values(23,100002,2010002,40,2008-09-01,小兰);inserti

34、nto Outbound values(24,100003,2010003,50,2008-12-30,小兰);insertinto Outbound values(25,100004,2010002,20,2009-12-30,小兰);insertinto Outbound values(26,100005,2010001,40,2008-12-08,小红);insertinto Outbound values(27,100001,2010003,10,2010-12-30,小敏);insertinto Outbound values(28,100002,2010002,30,2008-12

35、-08,小明);insertinto Outbound values(29,100003,2010003,30,2009-12-18,小红);insertinto Outbound values(30,100004,2010001,40,2010-09-01,小敏);七、 实现按商品名称查询商品的入库情况及目前的库存量。/*方法一*/select SNo,WName,s.WNo,s.DNo,SAmount,WAmount from Stock as s,Ware as w,Stocking as siwhere WName=电冰箱and s.WNo=w.WNo and w.WNo=si.WNo

36、 and s.DNo=si.DNo/*方法二*/declare WName varchar(32)SET WName =电冰箱SELECT*FROM Stocking WHERE WNo IN(SELECT WNo FROM Ware WHERE WName = WName);/*方法三*/CREATEVIEW LSName(SNo,WName,WNo,DNo,SAmount,WAmount)ASselect SNo,WName,s.WNo,s.DNo,SAmount,WAmountfrom Stock as s,Ware as w,Stocking as si selectdistinct

37、si.Sno,l.WName,si.SAmount,s.WAmountFROM Stock as s,LSName as l,Ware as w,Stocking as siWHERE l.WName=电冰箱and si.Sno=l.Sno and w.WName=l.WName ands.WNo=si.WNo and si.WNo=w.WNo and w.WNo=l.WNo and si.DNo=l.DNo and si.SAmount=l.SAmount and s.WAmount=l.WAmount 八、 实现按入库日期查询商品的入库情况及目前的库存量。/*方法一 复合条件查询*/sel

38、ect SNo,s.WNo,s.DNo,SAmount,SDate,Supplier,WAmount from Stock as s,Stockingwhere SDate=2006-01-02 00:00:00and s.WNo=Stocking.WNo and s.DNo=Stocking.DNo/*方法二建立视图查询*/createview WA_Stocking(SNo,WNo,DNo,SAmount,SDate,Supplier,WAmount)asselect SNo,s.WNo,s.DNo,SAmount,SDate,Supplier,WAmount from Stock as

39、s JOIN Stocking on s.WNo=Stocking.WNo and s.DNo=Stocking.DNo and SDate=2006-01-02 00:00:00withcheckoption;/*方法三相关子查询*/select SNo,s.WNo,s.DNo,SAmount,SDate,Supplier,WAmount from Stock as s,Stockingwhereexists(select*where SDate=2006-01-02 00:00:00and s.WNo=Stocking.WNo and s.DNo=Stocking.DNo);九、 实现按商

40、品名称查询商品的出库情况及目前的库存量。/*方法一*/select ONo,s.WNo,s.DNo,OAmount,WName,ODate,Buyers,WAmount from Stock as s,Outbound,Warewhere WName=长城干红and Ware.Wno=s.Wno and s.Wno=Outbound.Wno and s.DNo=Outbound.DNo/*方法二*/* 创建视图*/CREATEVIEW W_S_O(ONo,WNo,DNo,OAmount,ODate,Buyers,WAmount,WName)ASSELECT ONo,Stock.WNo,Stoc

41、k.DNo,OAmount,ODate,Buyers,WAmount,Ware.WNameFROM Ware,Stock,OutboundWHERE Stock.WNo=Outbound.WNo AND Stock.DNo=Outbound.DNo AND Ware.WNo=Stock.Wnoselect ONo,WNo,DNo,OAmount,WName,ODate,Buyers,WAmount from W_S_Owhere WName=长城干红/*方法三*/declare WName varchar(32)set WName=长城干红select*from Outbound where

42、WNo=(select WNo from Ware where WName=WName);/*方法四*/select ONo,s.WNo,s.DNo,OAmount,WName,ODate,Buyers,WAmount from Stock as s,Outbound,Warewhereexists(select*where WName=长城干红and s.WNo=Outbound.WNo and s.DNo=Outbound.DNo and Ware.Wno=s.Wno);十、 实现按出库日期查询商品的出库情况及目前的库存量。/*方法一*/select ONo,s.WNo,s.DNo,OAmount,ODate,Buyers,WAmount from Stock as s,Outboundwhere ODate=2010-01-02 0:00:00and s.WNo=Outbound.WNo and s.DNo=Outbound.DNo/*方法二*/* 创建视图*/CREATEVIEW SO(ONo,WNo,DNo,OAmount,ODate,Buyers,WAmount)ASSELECT ONo,Stock.WNo,Stock.DNo,OAmount,ODate,Buyers,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号