数据库课程设计商品信息管理系统_第1页
数据库课程设计商品信息管理系统_第2页
数据库课程设计商品信息管理系统_第3页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、理论学习 , 通过上机实践的方式将理论知识与实践更好的结合起来 , 巩固所学知识。数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库商品信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。3 设计内容运用基于 E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到

3、设计直至系统的最终实现 , 开发商品信息系统 , 完成商品信息管理系统的全部功能 , 商品入库子系统,商品出库子系统,商品库存子系统。首先做好需求分析,并完成数据流图和数据字典。其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构, 得到 E-R 图。然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型4 设计具体实施一、进行需求分析,编写数据字典。1、系统功能要求设计'. 有一个存放商品的仓库,每天都有商品出库和入库。 每种商品都有商品编号、商品名称、生产厂家、型号、规格等。 入库时必须填写入库单据,单据包括商品名称、生产厂家、型号、规格、入库数量、入库

4、日期、入库仓库号、入库仓库名称、送货人姓名。 出库时必须填写出库单据, 单据包括仓库号、 仓库名称、商品编号、商品名称、型号、规格、出库数量、出库日期、提货人姓名。 设置商品库存台帐, 商品库存台帐是对仓库中目前库存的所有商品的明细记录,商品库存台帐包括商品编号、商品名称、型号、规格、库存数量、库存日期。每当有商品入库或商品出库时都应该自动修改该台帐,最后一次修改的是现在的库存情况。 商品的入库和出库过程通过库存台帐更加清晰条理地显示出仓库中商品的库存数量和库存日期等信息,容易对库存内的商品信息进行查询,增加,修改,删除等操作。 该仓库的商品型号统一为DA01-DA99 格式,规格为 CX10

5、0-CX199 格式主要功能: 商品管理:增加商品:修改商品,删除商品,浏览商品增加商品:实现增加商品的详细资料的功能修改商品:实现修改商品资料的功能删除商品:实现删除该商品的所有资料的功能浏览商品:实现浏览所有商品的功能 库存管理:实现商品的入库,在商品入库时通过触发器或存储过程同时完成商品库存台帐的更新。实现商品的出库,在商品出库时通过触发器或存储过程同时完成商品库存台帐的更新。实现按商品名称查询商品的入库情况及目前的库存量。实现按入库日期查询商品的入库情况及目前的库存量。实现按商品名称查询商品的出库情况及目前的库存量。实现按出库日期查询商品的出库情况及目前的库存量。按时间段查询商品库存情

6、况。实现分别按年、季度和月对入库商品数量的统计。实现分别按年、季度和月对出库商品数量的统计。'.2、系统模块设计库存物资管理大体可以分为以下3 大模块,如下图所示 :首先是商品入库模块, 该模块主要就是描述把采购回来的商品,分类别的放置到指定的仓库中去,然后是商品出库模块,该模块主要描述从指定的仓库中拿出商品;最后时库存模块,这个模块主要是记录商品的库存数量变化。商品商品入库模块信息管理商品出库模块商品库存模块3、数据字典表表名中文名Ware商品Depot仓库Stock库存Stocking入库Outbound出库商品 Ware字段名数据类型是否可以为空Is PKIs FK中文名WNoc

7、har(10)NOT NULLYesNo商品编号WNamevarchar(50)NOT NULLNoNo商品名称WFactoryvarchar(50)NOT NULLNoNo生产厂家WTypevarchar(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 NU

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

9、否可以为空Is PKIs FK中文名ONochar(10)NOT NULLYesNo出库号WNochar(10)NOT NULLNoYes商品编号Dnochar(10)NOT NULLNoYes仓库号OAmountintNOT NULLNoNo出库数量ODatesmalldatetimeNOT NULLNoNo出库日期Buyersvarchar(50)NOT NULLNoNo提货人姓名二、设计完整的 E-R 图。'.分 E-R 图:商品编号商品名称生产厂家型号规格商品仓库仓库号仓库名称库存关系:n库存m仓库商品入库关系:n入库m仓库商品出库关系:n出库m仓库商品'.总 E-R

10、图:商品编号商品名称型号商品nn入库号库存数量生产厂家规格n提货人姓名入库数量入库库存入库日期送货人姓名mm仓库仓库号仓库名称出库m出库日期出库数量出库号三、进行数据库的逻辑设计。关系模式如下:商品(商品编号、商品名称、生产厂家、型号、规格)商品编号为主键仓库(仓库号、仓库名称)仓库号为主键库存(商品编号,仓库号,库存数量)(商品编号,仓库号)为主键,同时也分别为外键入库(入库号,商品编号,仓库号,入库数量,入库日期,送货人姓名)(入库号)为主键,(商品编号,仓库号)为外键'.出库(出库号,商品编号,仓库号,出库数量,出库日期,提货人姓名)(出库号)为主键,(商品编号,仓库号)为外键四

11、、完成物理数据库的设计,(包括数据库、表、索引、视图、完整性约束的物理设计。)创建数据库createdatabaseMaterial_DB创建商品表useMaterial_DBcreatetableWare(/*定义商品表 */WNo char(10)NOTNULLprimarykey ,WName varchar( 50)NOT NULL,WFactoryvarchar(50 )NOT NULL,WType varchar( 20)NOT NULL,Specvarchar( 20)NOTNULL)useMaterial_DB/*插入商品信息 */insertintoWarevalues( &

12、#39;100000', '毛巾','新家园 ' , 'DA11', 'CX100');insertintoWarevalues( '100001', '台灯','新家园 ' , 'DA35', 'CX110');insertintoWarevalues( '100002', '电冰箱 ', ' 海尔 ' , 'DA61', 'CX900');insertintoW

13、arevalues( '100003', '电视','东芝 ', 'DA52', 'CX901');insertintoWarevalues( '100004', '长城干红 ' , ' 中粮华夏 ' , 'DA25' , 'CX108' );insertintoWarevalues( '100005', '笔记本 ', ' 东芝 ' , 'DA24', 'CX78

14、1');创建仓库表use Material_DB'.createtableDepot( /*定义仓库表 */DNo char ( 10 )NOTNULLprimarykey ,DNamevarchar( 50)NOTNULL)use Material_DB/*插入仓库信息 */insertintoDepotvalues( '2010001', '胜昌 ');insertintoDepotvalues( '2010002', '德隆 ');insertintoDepotvalues( '2010003'

15、;, '豪友 ');创建库存表use Material_DBcreatetableStock( /* 定义库存关系 */WNo char(10)NOT NULL,DNo char(10)NOT NULL,-WDate smalldatetime NOT NULL,WAmountintNOT NULL,primarykey ( WNo, Dno ),foreignkey( WNo)referencesWare( WNo),foreignkey( DNo)referencesDepot( DNo)'.创建入库表use Material_DBcreatetableStocki

16、ng(/* 定义入库关系 */SNo char ( 10 )NOT NULLprimarykey ,WNo char(10)NOT NULL,DNo char(10)NOT NULL,foreignkey( WNo)referencesWare( WNo),foreignkey( DNo)referencesDepot( DNo),SAmountIntNOT NULL,SDatesmalldatetimeNOT NULL,Suppliervarchar( 50 )NOT NULL)'.创建出库表use Material_DBcreatetableOutbound( /* 定义出库关系

17、*/ONo char( 10 )NOTNULLprimarykey ,WNo char( 10 )NOTNULL,foreignkey( WNo) referencesWare ( WNo),DNo char(10)NOT NULL,foreignkey( DNo) referencesDepot ( DNo),OAmountintNOTNULl,ODatesmalldatetimeNOT NULL,Buyersvarchar( 50 )NOT NULL)'.完整约束的说明:商品 Ware的 WNo 商品编号要求在 100000999999之间, WName 不能取空;仓库 Depot

18、 的 DNo 仓库编号要求在 20100012010999之间, DName 不能取空;该仓库的商品型号统一为 DA01-DA99 格式,规格为 CX100-CX199 格式。useMaterial_DB/*定义表 Ware唯一性的约束条件*/alterTableWareaddunique( WName, WFactory, WType , Spec );alterTableWare/*定义 WType 的完整性约束条件:商品型号统一为DA01-DA99格式 */addconstraintC2check ( WType like'DA0-91-9');alterTableWar

19、e/*定义 Spec 的完整性约束条件:规格为CX100-CX199格式 */addconstraintC3check ( Spec like'CX1-90-90-9');useMaterial_DBaltertableWare/*添加对表 Ware 的 WNo属性的完整性约束,要求在9999999999之间 */addconstraintC4check ( WNolike'1-90-90-90-90-90-90-90-90-90-9');altertableDepotaddconstraintC5check ( DNolike'20100-90-90-

20、9');useMaterial_DBaltertableWaredropconstraintC4;useMaterial_DBaltertableWare/*添加对表 Ware 的 WNo属性的完整性约束,要求在999999 之间 */addconstraintC4check ( WNo like'1-90-90-90-90-90-9');创建视图通过 WLST(提取“物料视图”每个字的头字母) 视图来浏览库存中相同编号商品的信息,其中包括:商品编号 WNo 、商品名 WName、商品厂家 WFactory、商品型号 WType、商品规格 Spec、商品数量 SNum、

21、createviewVWname ( 商品编号 , 商品名称 ,库存数量 ) -视图ASSELECT Stock. WNo, Ware . WName, sum ( Stock. WAmount )fromWare, StockwhereStock. WNo= Ware . WNogroupby Stock. WNo, Ware . WName;'.五、实现商品的入库,在商品入库时通过触发器或存储过程同时完成商品库存台帐的更新。入库表的触发器createtriggerstocking_intoon stocking-这是入库表的触发器afterinsertasbegindeclarea

22、char( 10 ), b char( 10 ), d int;selecta = i . DNo, b= i . WNo, d= i . SAmountfrominsertedas i;if( selectStock. WNo fromStockwhereStock. WNo= b and Stock. DNo= a)isnotnullbeginupdateStocksetStock. WAmount =Stock. WAmount + dwhereStock. WNo=b and Stock. DNo=a;return;endinsertintostockvalues( b, a, d);

23、end'.insertintostockingvalues ( '100' , '100005', '2010001', 200 , '2006-01-02',' 小明' );insertintostockingvalues ( '101' , '100005', '2010003', 200 , '2006-01-02',' 小兰' );insertintostockingvalues ( '102' , &#

24、39;100001', '2010003', 200 , '2006-01-02',' 小东' );insertintostockingvalues ( '103' , '100002', '2010001', 200 , '2006-01-02',' 小红' );insertintostockingvalues ( '104' , '100003', '2010001', 200 , '2007-01-

25、14',' 小风' );insertintostockingvalues ( '105' , '100005', '2010002', 200 , '2006-01-25',' 小明' );insertintostockingvalues ( '106' , '100000', '2010002', 200 , '2006-02-02',' 小明' );insertintostockingvalues ( 

26、9;107' , '100001', '2010001', 200 , '2005-03-02',' 小东' );insertintostockingvalues ( '108' , '100002', '2010002', 200 , '2007-04-02',' 小红' );insertintostockingvalues ( '109' , '100003', '2010003', 200

27、, '2006-04-02',' 小风' );insertintostockingvalues ( '110' , '100004', '2010001', 200 , '2006-06-09',' 小敏' );insertintostockingvalues ( '111' , '100004', '2010002', 200 , '2005-06-02',' 小风' );insertintostock

28、ingvalues ( '112' , '100005', '2010001', 200 , '2005-06-02',' 小青' );insertintostockingvalues ( '113' , '100000', '2010003', 200, '2005-06-02',' 小明' );insertintostockingvalues ( '114' , '100001', '2010

29、001', 200, '2005-06-02',' 小东' );insertintostockingvalues ( '115' , '100002', '2010002', 200, '2007-07-02',' 小红' );insertintostockingvalues ( '116' , '100003', '2010003', 200, '2006-08-02',' 小风' );'

30、;.insertintostockingvalues ( '117' , '100000', '2010001', 200 , '2006-08-02',' 小明' );insertintostockingvalues ( '118' , '100001', '2010001', 200 , '2005-09-04',' 小东' );insertintostockingvalues ( '119' , '1000

31、02', '2010002', 200 , '2005-06-02',' 小红' );insertintostockingvalues ( '120' , '100003', '2010003', 200 , '2005-09-11',' 小风' );insertintostockingvalues ( '121' , '100002', '2010002', 200 , '2005-09-01'

32、,' 小明' );insertintostockingvalues ( '122' , '100003', '2010002', 200 , '2005-07-08',' 小敏' );insertintostockingvalues ( '123' , '100002', '2010003', 200 , '2005-04-11',' 小敏' );insertintostockingvalues ( '124&#

33、39; , '100001', '2010001', 200 , '2007-07-08',' 小红' );insertintostockingvalues ( '125' , '100001', '2010003', 200 , '2005-08-21',' 小青' );insertintostockingvalues ( '126' , '100005', '2010001', 200 , '

34、2005-07-08',' 小青' );insertintostockingvalues ( '127' , '100003', '2010003', 200, '2005-09-01',' 小兰' );insertintostockingvalues ( '128' , '100002', '2010002', 200, '2007-07-08',' 小兰' );insertintostockingvalues

35、 ( '129' , '100004', '2010001', 200, '2007-07-08',' 小兰' );insertintostockingvalues ( '130' , '100005', '2010002', 200, '2007-07-08',' 小红' );六、实现商品的出库,在商品出库时通过触发器或存储过程同时完成商品库存台帐的更新。出库表触发器createtriggeroutbound_don Outbound

36、-这是出库表的触发器afterinsertasbegindeclareachar( 10 ), b char( 10 ), d int;selecta =i . DNo, b=i . WNo, d=i . OAmountfrominsertedas iif( selects . WNo fromStockas swheres . DNo=a and s . WNo= b )isnotnullbeginif( selects . WAmountfromStockas s, insertedwheres . WAmount >= inserted. OAmountand s . WNo= i

37、nserted . WNo and s . DNo= inserted . DNo) is not null beginupdateStocksetStock. WAmount = Stock. WAmount - dwhereStock. DNo= a and Stock. WNo= bendelsebeginprint' 库存量不够 'rollback'.endendelsebeginprint' 库存中没有这种产品'rollbackendendinsertintoOutboundvalues ( '1' , '100005&

38、#39;, '2010001', 50, '2010-01-02',' 小红' );insertintoOutboundvalues ( '2' , '100005', '2010002', 30, '2010-01-02',' 小红' );insertintoOutboundvalues( '3', '100001', '2010003',50,'2010-01-02', '小风 ');

39、insertintoOutboundvalues( '4', '100005', '2010001',30,'2010-01-02', '小红 ');'.insertintoOutboundvalues ( '5' , '100002', '2010002', 20,'2010-02-08', '小风 ');insertintoOutboundvalues ( '6' , '100003', &#

40、39;2010003', 50,'2010-03-09', '小红 ');insertintoOutboundvalues ( '7' , '100000', '2010002', 30,'2009-04-15', '小风 ');insertintoOutboundvalues ( '8' , '100004', '2010002', 50,'2009-04-15', '小风 ');inserti

41、ntoOutboundvalues ( '9' , '100005', '2010001', 30,'2010-06-02', '小红 ');insertintoOutboundvalues( '10', '100005', '2010002', 50, '2009-04-15','小红' );insertintoOutboundvalues( '11', '100001', '2010003&#

42、39;, 50, '2010-06-03','小风' );insertintoOutboundvalues( '12', '100005', '2010001', 30, '2009-04-15','小红' );insertintoOutboundvalues( '13', '100002', '2010002', 20, '2010-07-05','小风' );insertintoOutboundval

43、ues( '14', '100003', '2010003', 50, '2009-07-05','小红' );insertintoOutboundvalues( '15', '100000', '2010002', 40, '2010-07-05','小风' );insertintoOutboundvalues( '16', '100004', '2010002', 50, '2

44、009-07-05','小风' );insertintoOutboundvalues( '17', '100005', '2010002', 20, '2008-09-01','小明' );insertintoOutboundvalues( '18', '100001', '2010003', 30, '2010-09-01','小敏' );insertintoOutboundvalues( '19

45、9;, '100000', '2010002', 40, '2010-09-01','小敏' );insertintoOutboundvalues( '20', '100002', '2010002', 50, '2008-09-01','小红' );insertintoOutboundvalues( '21', '100000', '2010002', 20, '2010-08-21',

46、'小青' );insertintoOutboundvalues( '22', '100003', '2010001', 30, '2008-09-01','小青' );insertintoOutboundvalues( '23', '100002', '2010002', 40, '2008-09-01','小兰' );insertintoOutboundvalues( '24', '100003

47、', '2010003', 50, '2008-12-30','小兰' );insertintoOutboundvalues( '25', '100004', '2010002', 20, '2009-12-30','小兰' );insertintoOutboundvalues( '26', '100005', '2010001', 40, '2008-12-08','小红' );

48、insertintoOutboundvalues( '27', '100001', '2010003', 10, '2010-12-30','小敏' );insertintoOutboundvalues( '28', '100002', '2010002', 30, '2008-12-08','小明' );insertintoOutboundvalues( '29', '100003', '201

49、0003', 30, '2009-12-18','小红' );insertintoOutboundvalues( '30', '100004', '2010001', 40, '2010-09-01','小敏' );七、实现按商品名称查询商品的入库情况及目前的库存量。/* 方法一 */selectSNo , WName, s . WNo, s . DNo, SAmount , WAmountfromStockas s , Wareas w , Stockingas siwhereWName = ' 电冰箱 'and s . WNo=w. WNo and w . WNo= si . WNo and s . DNo= si . DNo/* 方法二 */declareWName varchar( 32 )SET WName = &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论