还剩49页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
__应用技术学院课程设计2014~2015学年第一学期设计题目仓库信息管理系院(系)计算机科学与信息工程专业计算机科学与技术班级11104113学号学生姓名设计时间指导教师周兰风提交日期
1、概述
1.1课程设计选题背景ERP市场当前状况我们可以从多个方面对当前的市场需求和变化进行考察其一,实践证明,有的国内企业采用自主__的模式,采用了不成熟的系统,在投入较少的情况下,这种模式的应用效果并不好虽然,从理论上来讲,自主__模式最能符合企业对信息系统的要求因为存在升级和昂贵的集成费用等潜在困难,中型用户越来越远离这种定制的ERP系统经过多年的发展,全球范围内的ERP软件的模式已经有了事实上的行业标准,已经完全成熟,这种商品化和模块化的ERP产品越来越获得用户的青睐其二,所有的ERP厂商都在和软件系统的复杂性作斗争,使得缺乏IT资源和人力的中型企业能应用ERP系统SAP、PeopleSoft、Oracle和Baan都在缩短实施周期上做出了切实的进展,国内的很多ERP厂商等也认识到了这一点,这是中型企业实施成功的关键之一其三,中国企业的信息化水平还是比较低的,有着广阔的市场和利润空间现在,越来越多的企业正在从“系统集成”阶段向“应用集成”和“信息集成”等更高级的阶段迈进也就是说,很多企业经历了购置电脑、构建网络的阶段,跨越了办公自动化的阶段,产生了对ERP等应用软件的巨大需求其四,在信息化人员配备方面,企业中既懂管理又对企业信息化有深刻理解的员工越来越多经过多年的发展,很多企业负责信息化的员工建立起了对大型的、跨越业务领域、跨越地域的企业管理软件系统的概念而提供ERP__和服务的软件商、__机构也越来越多其五,竞争的加剧使得ERP厂商不得不降低__,提供针对性的实施方法,缩短ERP软件实施过程,从而使得ERP系统整体拥有成本的下降,使得越来越多的企业有能力拥有ERP这种过去只有大企业才能用得起的系统对产品的预期和定位要想取得产品的成功,必须对自己__的产品有清晰明确的定位,对于市场上琳琅满目的ERP产品,我必须做出自己的特色才能有立足之地所以,我计划做个性价比较高的ERP库存管理系统,系统具有界面友好,用户易操作、易学习,维护简单的特点面向的客户为小微型企业,小微型客户会因为规模小而忽略对数字化的信息管理系统的使用,而__ERP系统的软件公司也“懒得”对这一部分潜在客户下力气其实这是一个市场的盲区,我认为小微型企业是一个潜力股,往往在这些小微型成长起来后,会持续给公司带来大量客观的业务,我们前期用心给他们做管理系统,相当于是对他们的帮助,这为未来的友好合作关系打下牢固的基础!
1.2课程设计目标通过五周的课程设计,要求学生加深对ERP模块设计和数据库技术相关理论的理解,增强动手能力,掌握使用现行较为流行的数据库理论和数据库__工具进行管理信息系统设计(如前台界面和后台对数据库中数据进行查询,更改等操作)的方法,以及全面采用面向对象的程序设计技术,使用__驱动机制进行程序设计本系统主要针对物流供应链中的库存管理环节,实现基本信息管理,指对供应商信息,客户信息,货品信息的管理基本信息查询管理,指对供应商信息,客户信息,货品信息的查询管理
(1)系统管理:指对供应商信息,客户信息,货品信息的管理
(2)设备管理:指对设备的基本信息管理及查询
(3)设备入库管理指对入库的设备进行管理
(4)设备出库管理指对出库的设备进行管理
(5)设备还库管理指对还回来的设备进行管理
(6)库存信息管理指对库存信息及采购的管理
(7)设备需求管理指对设备供求的管理
2、系统分析
2.1仓库管理分析
2.
1.1整体分析企业的库存物资管理往往是很复杂、很繁琐的由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案 由于家电产品行业产品种类繁多,业务量巨大,若仍然采用人工记账的方式,必然不能满足企业的需求,企业需要利用计算机来进行库存管理,因此需要构造一个库存管理系统一个完整的企业物资供应管理系统应包括采购计划管理,合同收托管理、仓库库存管理、定额管理、统计管理、财务管理等模块其中仓库的库存管理是整个物资供应管理系统的核心因此有必要__一套__的库存管理系统来提高企业工作效率而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化通过对这些情况的仔细调查,我__了下面的仓库库存管理系统
2.
1.2细化分析1)库存种类的细分(物料编码)物料编码编码结构和企业管理方式有关系,生产型企业建议结构是物料性质+分类+材质+仓库+流水号+补码物料性质,一般指成品、半成品、原材料;分类,就是常规物料分类;材质,仓库,这个仓储有关总之,物料编码应该尽可能细化库存物品的分类,库存管理是企业物资流通管理的核心,是为生产、销售等活动而发生的物料接收、发放以及存储管理等一系列管理活动a.库存物料按完成情况分类可分为原材料——采购部门从供应商那里采购来的,准备投入生产__的物料在制品——正在__或等待__的物料产成品——已经完工的最终产品,就是企业生产出来准备销售的产品b.库存物料按价值划分——ABC分类ABC分类法是库存控制的基本方法之一,并广泛应用于库存控制、生产控制、质量控制及其他许多管理问题ABC分类法的基本概念如下A类物品高值总价值占库存总值70%-80%的相对少数物品通常为物品的15%-20%B类物品中值总价值占库存总值的15%-20%物品数居中,通常占物品的30%-40%C类物品低值库存总价值小,只占5%-10%这是物品的大多数,通常占60%-70%2库存与其他模块的__物料需求计划MRP的计算,需要考虑现有库存、在单量在途PO和生产在制,举个例子生产1个A,需要2个a3个b,这是BOM现在接到客户订单需要100个A,现有的状况是库存有50个a,产线正在生产的A有20个无对应客户订单,已经发出PO尚未收料的b有100个,则,MRP运算结果是生产计划80个A,采购计划2*80-50=110个a3*80-100=140个b.本例没有考虑时间的连动关系从这个简单的例子中就可以ERP的资源共享的优点,这些连接BOM、在单量、库存繁琐的运算,在ERP中你只要__一下“运算”就可以得出结果
2.2可行性分析 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资__这个系统的程度因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程 一般来说,可行性分析应从经济可行性、技术可行性、操作可行性等方面进行研究本系统的可行性分析如下1经济可行性分析 由于本库存管理系统所要求的硬件(计算机及相关硬件)和软件环境VisualC#.NET+SQLServer2005,市场上都容易__到或从相关__下载,系统成本主要集中在本管理系统的__与维护上,对用户不造成过重的经济负担而一旦此系统投入使用不仅可以减少库存的工作强度,提高工作效率,而且方便了库存对信息的管理,延续了传统的管理模式,极大限度地方便了库存管理人员,而且,目标系统不是很复杂,__的周期较短,人员经济支出不大,所节省的大量人力、财力产生的效益将远远大于本系统的__成本,所以从经济方面讲__此系统是可行的 2技术可行性分析 技术上的可行性分析要考虑现有技术条件能否顺利完成__工作及将来要采用的硬件和软件技术能否满足用户提出的要求(如计算机的容量、速度等) 本系统采用VisualC#.NET作为系统前台应用程序__工具,采用SQLServer2005工具建立数据库,并通过VisualC#.NET中的ADO控件使两者进行连接从而进行系统软件__VisualC#.NET不仅能帮助软件__者提高软件__的质量和效率,缩短__周期,而且还具备强大的数据库管理功能,完全能够满足本系统的__需求此外,从__人员的水平考虑,作为计算机科学与技术专业毕业的学生,大学四年所积累的专业知识使我们从一定程度上具备了__一个小型系统的能力,而且学校现有的计算机设备也完全能够满足__的需要3操作可行性分析 传统的库存管理系统,一般有两种方式一是手工管理,这种方式应用最传统的“笔纸操作系统”,将库存的货物信息、销售信息、厂商信息管理及单据管理等均以纯手工的形式进行,将信息以表格文件的表现形式记录在纸上,再进行统一保存这种方式虽然在简单信息查询时会有一定的方便,但是存在着更多的不便信息保存时间和条件很受限制、容易被损坏、信息查询不便、信息传达容易造成失误等另一种常见的信息管理方法是应用单机版的管理系统,本系统就是一款做的相对到位的单机版的库存管理系统,在库存信息处理方面做得很精准规范因为库存管理人员已经有丰富的信息管理经验,加之有相当的计算机应用经验,所以对于此系统一定很容易就可操作熟练综上所述,本库存管理系统投资少、收益大,且其运行操作简单易学,具备了__的可行性
2.3系统需求分析功能需求及用户需求1)功能需求该系统主要分为三大功能:___功能、信息安全功能、一般用户功能a.___功能产品入库登记、确认入库信息、删除库内信息、借出信息登记、产分类管理、添加人员、删除人员、查询库内信息b.信息安全功能人员权限区分、__记录c.一般用户功能查询库内信息、查询出库信息、查询入库信息;d.报表生成库存信息报表生成2用户需求根据用户需求,该系统应该实现以下功能a.进、出库管理对进、出库信息进行记录b.查询功能仓库管理对查询要求高,通过主菜单记录当前操作用户的用户编号,保证了对进、出库信息录入负责人的确认c.部门资料管理与库存报表生成资料管理包括了人员信息管理,财政支出信息管理,以及各项业务单据的资料管理报表主要分类为日报表,月报表,销售报表,入库报表等等d.由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确e.许多重复性的工作,都可由计算机去执行,从而使管理人员从事务性工作解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作 3系统需求分析就是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告在确定系统的总体结构方案过程中,包括确定应用程序的结构、系统__环境和__工具的选择 a.应用程序结构确定 从用户应用角度来看,可把应用程序系统的组成部分分成数据存储层、业务处理层和界面表示层等3个层次,而应用程序结构可归纳为集中式应用程序结构、单机板应用程序结构、多层服务器应用程序结构、浏览器/服务器应用程序结构、客户机/服务器应用程序结构等5种类型 b.确定系统__环境 由于大多数公司内部使用的计算机平台都是基于Windows环境的为了降低系统成本,应最大程度地利用现有的资源、兼容现有的环境,可确定使用下面的__环境 ★数据库MicrosoftSQLServer2005; ★前端__工具VisualC#.NET; ★数据访问对象ADO c.__工具的选择 可视化(visual)程序设计是一种全新的程序设计方法,全面采用面向对象的程序设计技术,使用__驱动机制进行程序设计利用可视化__工具可以快速、高效地__应用程序可视化的__工具很多,如Microsoft公司推出的VisualStudio软件系列,Borland公司的Delphi、C++Builder系列等 VisualStudio是微软公司推出的集成__环境,是目前最流行的Windows平台应用程序__环境它是把代码的编写、程序的调试、编译、运行以及其他的相关操作都集成在一起的“编程工具”作用是程序员通过它这个平台,利用编程语言来写程序,调试,运行 SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统该版本继承了SQLServer
7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用经分析,本库存管理系统选用VisualC#.NET来设计界面,选用SQLServer2005来建立后台数据库功能结构图安全性要求和完整性要求1安全性要求系统安全性要求至少达到TCSEC(TDI)的C1级即只提供了非常初级的自主安全保护能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播实行用户标识与鉴别,具有数据备份和日志审计功能本系统__分为三类不同的用户,分别具有不同的权限2完整性要求每个关系中都至少要有一个主键,并且都有一个聚集索引(ClusteredIndex)关系与关系之间通过主外键关联定义属性上的约束条件,定义触发器
2.4系统的__及功能描述 1__方法的选择 信息系统的__是一项比较复杂的工作,因此我们必须选用科学有效的__方法本系统的__采用了生命周期法在系统设计时遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,则通过在系统的使用及对系统了解的不断加深中,对某一部分或几部分进行重新分析、设计、实施,使系统逐步完善 2系统功能描述及系统安全性 本库存管理系统是一套对货品入库、出库、库存进行全面管理的系统 在管理内容上,它的主要功能包括 进货管理:进行填写货品信息,货品采购入库入库单据的填写和修改最低库存量 出货管理:进行货品出库出货单据的填写和获取采购员信息 信息查询货品信息查询,库存信息查询,入库、出库单据查询,日报表、月报表查询 统计报表:完整的日报表、月报表统计查询功能,每张单据每次业务金额都可以清楚地反映 系统管理身份验证,修改本人__,注册用户,修改删除用户
3、总体设计
3.1成本效益分析由于本库存管理系统所要求的硬件(计算机及相关硬件)和软件环境VisualC#.NET+SQLServer2005,市场上都容易__到或从相关__下载,系统成本主要集中在本管理系统的__与维护上,对用户不造成过重的经济负担而一旦此系统投入使用不仅可以减少库存的工作强度,提高工作效率,而且方便了库存对信息的管理,延续了传统的管理模式,极大限度地方便了库存管理人员,而且,目标系统不是很复杂,__的周期较短,人员经济支出不大,所节省的大量人力、财力产生的效益将远远大于本系统的__成本,所以从经济方面讲__此系统是可行的
3.2进度计划高层设计阶段详细设计阶段
3.3系统流图
3.4数据描述
3.
4.1数据字典1)基本数据项及数据结构设备信息包括的数据项有设备号、设备名称、规格、单价、描述仓库信息包括的数据项有仓库号、已用库存、库存总量、负责人、__号码供应商信息包括的数据项有编号、供应商、__号码、地址部门信息包括的数据项有部门号、名称、__数据项名称别名简述类型长度取值范围设备号-设备的编号字符型7第1位进口/国产I/D第2-4位类别第5-7位物资编号设备名称-设备的名称字符型20-规格-设备规格字符型10单价-设备的单位__货币型6默认计量单位元描述-设备描述/说明文本型--仓库号-仓库的编号字符型3-已用库存-仓库已用存储容量数值型60仓库非空=0空仓库0不允许库存总量-仓库总存储容量数值型60物资存量=0空仓库0不允许负责人-仓库负责人字符型20-供应商编号-供应商编号字符型3-供应商-供应商名称字符型20-地址-供应商__地址文本--部门号-公司部门编号字符型3-部门名-公司部门名称字符型20-__-__号码字符型15-2)数据流条目名称别名简述来源去向入库单-入库单位在把相应的零件送人仓库时必须填写的单据供应商库存出库单-领料人员从仓库中__零件时必须填写的单据库存公司部门客户还库单-设备使用后归还入库必须填写的单据公司部门库存需求单-对新设备需求所填写的单据公司部门库存采购单-__新设备所填写的单据采购员供应商3)数据存储条目名称别名简述组织方式查询要求仓库库存-存放索引文件,以仓库编号为关键字要求立即查询设备库存-存放索引文件,以零件编号为关键字要求立即查询4)__条目__名激发条件优先级输入输出设备入库接收到合格入库单时普通合格入库单库存满,设备成功入库__逻辑根据库存记录Loop:If入库物资的数量+物资现有存量=该物资库存量临界值Then物资存入仓库;物资现有存量=物资现有存量+入库物资的数量;Else物资库存已足,If物资现有存量=该物资库存量临界值Then结束,入库失败Endif;调整入库单;gotoloop,直到入库物资的数量+物资现有存量=该物资库存量临界值;Endif;零件入库;统计仓库库存已用量;__名激发条件优先级输入输出设备出库接收到合格出库单时普通合格出库单库存量不足,零件成功出库__逻辑根据库存记录Loop零件是否存在?是If需求单物资的数量该物资库存量的临界值Then设备出库物资现有存量=物资现有存量-出库零件的数量;Else物资短缺,If物资现有存量=物资最少存量Then结束,出库失败Endif;调整入库单;gotoloop,直到物资现有存量-出库零件的数量=该物资库存量临界值;Endif;否零件不存在,gotoloop;零件入库;统计仓库库存已用量;
3.
4.2数据流图1本系统的顶层数据流图2细化后的数据流图3货物入库信息管理细化4货物出库信息管理细化4.系统详细设计
4.1概念结构设计1)库存实体E-R图2)入库实体E-R图3出库实体E-R图4)部门需求实体E-R图5)还库实体E-R图6)计划采购实体E-R图7)实体和实体之间的关系图如图所示8仓库管理E-R图如图所示
4.2系统数据库设计
4.
2.1关系模型设计1仓库表storehouseNO.字段名代码类型约束1仓库号stoIDChar3主键2已用库存Used_volume__allint非空,默认0,unsigned,=All_volume3库存总量All_volume__allint非空,默认_____,unsigned4负责人principalVarchar20非空5__号码stoTELVarchar152零件表partsNO.字段名代码类型约束1设备号parIDChar7主键2名称partVarchar20非空3规格specChar104单价pri__Deci__l62非空,默认0,unsigned5计量单位mensurationChar4非空,默认“元”6描述descriptionText3供应商supplierNO.字段名代码类型约束1编号supIDChar3主键2供应商supNameVarchar20非空3__号码supTELVarchar15非空4地址addressText4部门表deptNO.字段名代码类型约束1部门号depIDChar3主键2名称depNameVarchar20非空3__depTELVarchar155库存表storageNO.字段名代码类型约束1仓库号stoIDChar3主键,与storehouse表中的stoID外键关联,级联删除、更新2设备号parIDChar7主键,与parts表中的parID外键关联,级联删除、更新3现有存量Now_volume__allint非空,默认0,=Min_volume,=__x_volume4最小存量Min_volume__allint非空,默认0,unsigned5最大存量__x_volume__allint非空,默认0,unsigned6供应表supplyNO.字段名代码类型约束1供应商号supIDChar3主键,与supplier表中的supID外键关联,级联删除、更新2设备号parIDChar7主键,与parts表中的parID外键关联,级联删除、更新3供应量supVolume__allint非空,默认0,unsigned4供应时间supDateTimestamp非空7部门需求表de__ndNO.字段名代码类型约束1设备号parIDChar7主键,与parts表中的parID外键关联,级联删除、更新2部门号depIDChar3主键,与dept表中的depID外键关联,级联更新、删除3需求数量demVolume__allint非空,默认0,unsigned4开始时间startTimeTimestamp非空5结束时间endTimeTimestamp非空8设备归还表restoreNO.字段名代码类型约束0编号resID__allint主键,AUTO_INCREMENT1仓库号stoIDChar3主键,与storehouse表中的stoID外键关联,级联删除、更新2零件号parIDChar7主键,与parts表中的parID外键关联,级联更新、删除3部门号depIDChar3主键,与dept表中的depID外键关联,级联更新、删除4归还数量resVolume__allint非空,默认0,unsigned5经手人c__kerVarchar20非空6归还者returnerVarchar20非空7归还时间resDateTimestamp非空9零部件采购计划表stockNO.字段名代码类型约束1设备号parIDChar7主键,与parts表中的parID外键关联,级联更新、删除2采购量stoVolume__allint非空,默认0,unsigned3供应商号supIDChar3与supplier表中的supID外键关联4采购时间stoDateTimestamp主键5采购员buyerVarchar2010入库表warehousingNO.字段名代码类型约束0编号inID__allint主键,AUTO_INCREMENT1仓库号stoIDChar3主键,与storehouse表中的stoID外键关联,级联删除、更新2供应商号supIDChar3非空,与supplier表中的supID外键关联3设备号parIDChar7主键,与parts表中的parID外键关联,级联更新、删除4入库数量inVolume__allint非空,默认0,unsigned5经手人c__kerVarchar20非空6入库时间inDateTimestamp非空,默认当前时间11出库表stockoutNO.字段名代码类型约束0编号outID__allint主键,AUTO_INCREMENT1仓库号stoIDChar3主键,与storehouse表中的stoID外键关联,级联删除、更新2设备号parIDChar7主键,与parts表中的parID外键关联,级联更新、删除3出库数量outVolume__allint非空,默认0,unsigned4使用者userVarchar20非空5经手人c__kerVarchar20非空6__人re__iptorVarchar20非空7出库时间outDateTimestamp非空,默认当前时间
4.
2.2用户子模式设计1仓库信息视图storehouse_viewNO.字段名代码类型备注1仓库号stoIDChar3连storehouse表2已用库存Used_volumeInt连storehouse表3库存总量All_volumeInt连storehouse表4负责人principalVarchar20连storehouse表6__号码stoTELVarchar15连storehouse表2设备件库存视图parts_storage_viewNO.字段名代码类型备注1仓库号stoIDChar3连storage表2设备号parIDChar7连parts表3名称partVarchar20连parts表4规格specChar10连parts表5单价pri__Deci__l62连parts表6计量单位mensurationChar4连parts表7现有存量Now_volume__allint连storage表8最小存量Min_volume__allint连storage表9最大存量__x_volume__allint连storage表3设备入库视图warehousing_viewNO.字段名代码类型备注0仓库号stoIDChar3连warehousing表1设备号parIDChar7连parts表,更新warehousing表的parID项2供应商号supIDChar3连supplier表3供应商supNameVarchar20连supplier表4__supTELVarchar15连supplier表5设备名partVarchar20连parts表NO.字段名代码类型备注6规格specChar10连parts表7单价pri__Deci__l62连parts表8计量单位mensurationChar4连parts表9入库数量inVolume__allint连warehousing表,更新parts_storage_view视图的Now_volume项10描述descriptionText连parts表11经手人c__kerVarchar20连warehousing表12入库时间inDateTimestamp连warehousing表4设备出库视图stockout_viewNO.字段名代码类型备注0仓库号stoIDChar3连stockout表1设备号parIDChar7连parts表,更新stockout表的parID项2出库数量outVolume__allint连stockout表,更新storage表的now_volume3使用单位userVarchar20连stockout表4经手人c__kerVarchar20连stockout表5__人re__iptorVarchar20连stockout表6出库时间outDateTimestamp连stockout表5零部件计划采购视图stock_viewNO.字段名代码类型备注1设备号parIDChar7连stock表2采购量stoVolume__allint连stock表3供应商号supIDChar3连supplier表,更新stock表的supName4__supTELVarchar15连supplier表NO.字段名代码类型备注5__pri__Deci__l62连parts表6计量单位mensurationChar4连parts表7规格specChar10连parts表8采购时间stoDateTimestamp连stock表9采购员buyerVarchar20连stock表6部门需求视图de__nd_viewNO.字段名代码类型备注1设备号parIDChar7连de__nd表2部门号depIDChar3连de__nd表3需求数量demVolume__allint连de__nd表4开始时间startTimeTimestamp连de__nd表5结束时间endTimeTimestamp连de__nd表7供应商零件供应视图supply_viewNO.字段名代码类型备注1供应商号supIDChar3连supplier表2设备号parIDChar7连supply表3单价pri__Deci__l62连parts表4计量单位mensurationChar4连parts表5规格specChar10连parts表6供应量supVolume__allint连supply表7供应时间supDateTimestamp连supply表8__supTELVarchar15连supplier表8设备归还入库视图restore_viewNO.字段名代码类型备注0仓库号stoIDChar3连restore表1设备号parIDChar7连restore表2部门号depIDChar3连restore表3归还数量resVolume__allint连restore表4经手人c__kerVarchar20连restore表5归还者returnerVarchar20连restore表6归还时间resDateTimestamp连restore表
4.
2.3数据库物理设计1)建立索引,各表索引设计如下表名索引字段索引类型零件零件号聚集索引零件名非聚集索引供应商供应商号聚集索引供应商名非聚集索引部门部门号聚集索引部门名非聚集索引库存零件号非聚集索引供应供应商号非聚集索引零件号非聚集索引供应时间聚集索引部门需求零件号非聚集索引部门号非聚集索引开始时间非聚集索引结束时间非聚集索引零件归还归还时间聚集索引零件号非聚集索引部门号非聚集索引零件采购零件号非聚集索引采购时间聚集索引零件入库入库时间聚集索引零件号非聚集索引零件出库出库时间聚集索引零件号非聚集索引2)确定数据的存放位置该数据库的数据文件都存放在MySQL的__目录的WINDOWS-RQV4LBM\数据库\storage文件夹下.3)确定系统配置a.运行环境操作系统Windows2003或WindowsXP,以上__平台VisualC#.NET+SQLServer2005b.数据库配置#适合于内存256M--512M的用户用于服务器搭建[client]port=3306[mysql]default-character-set=gbk[mysqld]port=3306basedir=D:/PC_webserver/mysql/datadir=D:/PC_webserver/mysql/Data/default-character-set=gbkdefault-storage-engine=INNODBsql-mode=STRICT_TRANS_TABLESNO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION__x_connections=447query_cache_size=12Mtable_cache=128tmp_table_size=8Mthread_cache_size=4myisam___x_sort_file_size=100Gmyisam___x_extra_sort_file_size=100Gmyisam_sort_buffer_size=16Mkey_buffer_size=32Mread_buffer_size=64Kread_rnd_buffer_size=256Ksort_buffer_size=2Minnodb_data_home_dir=D:/PC_webserver/mysql/datafiles/innodb_additional_mem_pool_size=2Minnodb_flush_log_at_trx_commit=1innodb_log_buffer_size=1Minnodb_buffer_pool_size=29Minnodb_log_file_size=10Minnodb_thread_concurrency=8log=D:\PC_webserver\mysql\log\sql.loglog-output=FILE3)模块设计仓库管理HIPO图
4.3各功能模块及界面设计不同的用户类型具有不同的功能Inf用户类型注销、登录、退出、信息查询;Dba用户类型系统管理、仓库管理;Sys用户类型系统管理、仓库管理、备份恢复正确登录系统,选择程序菜单上的菜单项进入相应的功能窗体进行操作1)添加用户并分配权限publicAddUser{////Windows窗体设计器支持所必需的//InitializeComponent;////TODO:在InitializeComponent调用后添加任何构造函数代码//}///sum__ry///清理所有正在使用的资源////sum__ryprotectedoverridevoidDisposebooldisposing{ifdisposing{ifcomponents!=null{components.Dispose;}}base.Disposedisposing;}privatevoidenter_button_Clicko__ectsenderSystem.EventArgse{ifstring.Empty//判断用户ID是否输入{MessageBox.Show请输入用户ID或__;return;}NewID=this.textID.Text.Trim;ifstring.Empty//判断用户__是否输入{MessageBox.Show请输入用户ID或__;return;}NewPwd=this.textPwd.Text.Trim;ifthis1-经理人员//选择权限{NewGrp=1;}else{ifthis2-仓库___{NewGrp=2;}else{NewGrp=3;}}SqlConnectionmyConn=null;SqlTransactionUserInsertTra=null;DataSetUserInfoSet=newDataSet;try{myConn=newSqlConnectionserver=.;Trusted_Connection=yes;user=sa;pwd=1;database=storage;//建立连接SELECT*FROMLonInFrmWHEREUserID=+NewID+;myConn.Open;AddAdapter.FillUserInfoSetUserInfo;//填充数据集ifUserInfoSet.Tables[UserInfo].Rows.Count!=0//判断输入的ID号是否唯一{MessageBox.Show员工ID必须唯一!;return;}UserInsertTra=myConn.BeginTransaction;UserInfoSet.Clear;DataRowNewUserInfoRow=UserInfoSet.Tables[UserInfo].NewRow;//建立新记录NewUserInfoRow[UserID]=NewID;NewUserInfoRow[Password]=NewPwd;NewUserInfoRow[GroupID]=NewGrp;UserInfoSet.Tables
[0].Rows.AddNewUserInfoRow;this.AddAdapter.UpdateUserInfoSet.Tables[UserInfo];//更新数据集UserInsertTra.Commit;MessageBox.ShowOK;}catchEx__ptionex{ifUserInsertTra!=null{UserInsertTra.Rollback;}MessageBox.Showex.Message;}}privatevoidesc_button_Clicko__ectsenderSystem.EventArgse//退出操作{this.Close;}}}2)修改__privatenull;publicPwdUpdate{////Windows窗体设计器支持所必需的//InitializeComponent;////TODO:在InitializeComponent调用后添加任何构造函数代码//}///sum__ry///清理所有正在使用的资源////sum__ryprotectedoverridevoidDisposebooldisposing{ifdisposing{ifcomponents!=null{components.Dispose;}}base.Disposedisposing;}privatevoidsure_button_Clicko__ectsenderSystem.EventArgse{ifstring.Empty//判断是否输入了ID{}else{MessageBox.Show此字段不能为空!;return;}ifstring.Empty//判断是否输入了原有__{}else{MessageBox.Show此字段不能为空!;return;}ifstring.Empty//判断是否输入了新__{}else{MessageBox.Show此字段不能为空!;return;}ifstring.Empty//判断是否再次输入了新__{}else{MessageBox.Show此字段不能为空!;return;}SqlConnectionmyConn=null;SqlTransactionUserInsertTra=null;DataSetUserInfoSet=newDataSet;ifNewPassWord1==NewPassWord2//强制两次输入新__必须相同{try{myConn=newSqlConnectionserver=.;Trusted_Connection=yes;user=sa;pwd=1;database=storage;//连接字符串myConn.Open;SELECT*FROMLonInFrmWHEREUserID=+userID+;PwdAdapter.FillUserInfoSetUserInfoTab;ifUserInfoSet.Tables[UserInfoTab]==null||UserInfoSet.Tables[UserInfoTab].Rows.Count==0//判断用户是否存在{MessageBox.ShowUserisnotexist;this.textID.Focus;this.textID.Select0thisreturn;}ifUserInfoSet.Tables[UserInfoTab].Rows
[0][PassWord].ToString.Trim!=passWord//用户原有__输入错误{MessageBox.ShowPassWordError!;this.textPwdOld.Focus;this.textPwdOld.Select0thisreturn;}UserInfoSet.Tables[UserInfoTab].Rows
[0][PassWord]=NewPassWord1;//更新__UserInsertTra=myConn.BeginTransaction;PwdAdapter.UpdateUserInfoSet.Tables
[0];UserInsertTra.Commit;MessageBox.ShowOK;}catchEx__ptionex{UserInsertTra.Rollback;MessageBox.Showex.Message;}finally{ifmyConn.State!=ConnectionState.Closed//关闭数据库{myConn.Close;}}}}privatevoidesc_button_Clicko__ectsenderSystem.EventArgse{this.Close;}}}3主程序publicclass__inFrmForm{private__i__enu__i__enu1;privateMenuItemmenuItem1;privateMenuItemmenuItem2;privateMenuItemmenuItem3;privateMenuItemmenuItem4;privateMenuItemmenuItem5;privateMenuItemmenuItem6;privateMenuItemmenuItem7;privateMenuItemmenuItem8;privateMenuItemmenuIte__;privateMenuItemmenuItem10;privateMenuItemmenuItem11;privateMenuItemmenuItem12;privateMenuItemmenuItem13;privateMenuItemmenuItem19;privateMenuItemmenuItem21;privateMenuItemmenuItem14;privateMenuItemmenuItem15;privateMenuItemmenuItem20;privateMenuItemmenuItem16;privateMenuItemmenuItem17;privateMenuItemmenuItem18;privateStatu__arstatu__ar1;///sum__ry///必需的设计器变量////sum__ryprivateSystem.ComponentModel.Containercomponents=null;public__inFrm{////Windows窗体设计器支持所必需的//InitializeComponent;////TODO:在InitializeComponent调用后添加任何构造函数代码//}///sum__ry///清理所有正在使用的资源////sum__ryprotectedoverridevoidDisposebooldisposing{ifdisposing{ifcomponents!=null{components.Dispose;}}base.Disposedisposing;}staticvoid__in//主程序{LongInFormLonInForm=newLongInForm;LonInForm.ShowDialog;ifLongInForm.lfstate==true{Application.Runnew__inFrm;}}privatevoidmenuItem2_Clicko__ectsenderSystem.EventArgse//添加用户{ifthis.checkExistAddUser==true{return;}AddUsernewFrm=newAddUser;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem3_Clicko__ectsenderSystem.EventArgse//系统用户修改__{ifthis.checkExistPwdUpdate==true{return;}PwdUpdatenewFrm=newPwdUpdate;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem4_Clicko__ectsenderSystem.EventArgse//退出系统{ifMessageBox.Show确实要退出系统吗询问MessageBoxButtons.YesNo==DialogResult.Yes{this.Close;}}privatevoidmenuItem6_Clicko__ectsenderSystem.EventArgse//入库管理{ifthis.checkExistInStorage==true{return;}InStoragenewFrm=newInStorage;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem7_Clicko__ectsenderSystem.EventArgse//入库信息查询{ifthis.checkExistSelInStg==true{return;}SelInStgnewFrm=newSelInStg;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuIte___Clicko__ectsenderSystem.EventArgse//出库管理{ifthis.checkExistOutStorage==true{return;}OutStoragenewFrm=newOutStorage;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem10_Clicko__ectsenderSystem.EventArgse//出库信息查询{ifthis.checkExistSelOutStg==true{return;}SelOutStgnewFrm=newSelOutStg;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem12_Clicko__ectsenderSystem.EventArgse//还库管理{ifthis.checkExistReturnStg==true{return;}ReturnStgnewFrm=newReturnStg;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem13_Clicko__ectsenderSystem.EventArgse//还库信息查询{ifthis.checkExistSelReturn==true{return;}SelReturnnewFrm=newSelReturn;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem15_Clicko__ectsenderSystem.EventArgse//设备代码管理{ifthis.checkExistFaclityNum==true{return;}FaclityNumnewFrm=newFaclityNum;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem20_Clicko__ectsenderSystem.EventArgse//设备代码查询{ifthis.checkExistSelFacNum==true{return;}SelFacNumnewFrm=newSelFacNum;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem17_Clicko__ectsenderSystem.EventArgse//生成采购计划{ifthis.checkExistbuyFrm==true{return;}buyFrmnewFrm=newbuyFrm;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem18_Clicko__ectsenderSystem.EventArgse//采购计划查询{ifthis.checkExistSelBuy==true{return;}SelBuynewFrm=newSelBuy;newFrm.MdiParent=this;newFrm.Show;}privatevoidmenuItem21_Clicko__ectsenderSystem.EventArgse//采购计划查询{ifthis.checkExistSelDriveInfo==true{return;}SelDriveInfonewFrm=newSelDriveInfo;newFrm.MdiParent=this;newFrm.Show;}privateboolcheckExiststringchildFrmName//验证子窗体是否存在{foreachFormchildFrminthis.MdiChildren{ifchildFrm.Name==childFrmName{ifchildFrm.WindowState==FormWindowState.MinimizedchildFrm.WindowState=FormWindowState.Nor__l;childFrm.Activate;returntrue;}}returnfalse;}privatevoid__inFrm_Loado__ectsenderSystem.EventArgse{this.statu__ar
1.Text=欢迎使用本系统今天是:+DateTime.Today;ifLonIn.Group==1//经理级{this.menuItem
2.Enabled=true;this.menuItem
3.Enabled=true;this.menuItem
4.Enabled=true;this.menuItem
15.Enabled=false;this.menuItem
20.Enabled=true;this.menuItem
6.Enabled=false;this.menuItem
7.Enabled=true;this.menuIte__.Enabled=false;this.menuItem
10.Enabled=true;this.menuItem
12.Enabled=false;this.menuItem
13.Enabled=true;this.menuItem
21.Enabled=true;this.menuItem
17.Enabled=true;this.menuItem
18.Enabled=true;}else{ifLonIn.Group==2//仓库___级别{this.menuItem
2.Enabled=true;this.menuItem
3.Enabled=true;this.menuItem
4.Enabled=true;this.menuItem
15.Enabled=true;this.menuItem
20.Enabled=true;this.menuItem
6.Enabled=true;this.menuItem
7.Enabled=true;this.menuIte__.Enabled=true;this.menuItem
10.Enabled=true;this.menuItem
12.Enabled=true;this.menuItem
13.Enabled=true;this.menuItem
21.Enabled=true;this.menuItem
17.Enabled=true;this.menuItem
18.Enabled=true;}else//普通用户级{this.menuItem
2.Enabled=false;this.menuItem
3.Enabled=true;this.menuItem
4.Enabled=true;this.menuItem
15.Enabled=false;this.menuItem
20.Enabled=true;this.menuItem
6.Enabled=false;this.menuItem
7.Enabled=true;this.menuIte__.Enabled=false;this.menuItem
10.Enabled=true;this.menuItem
12.Enabled=false;this.menuItem
13.Enabled=true;this.menuItem
21.Enabled=true;this.menuItem
17.Enabled=false;this.menuItem
18.Enabled=true;}}}}}
5.系统测试方案
5.1登录测试输入空账号输入不存在的账号__输入正确的账号和错误的__输入正确账号和空__
5.2新建用户测试创建一个已存在的账号创建每种用户类型的空__的账号正常创建每种用户类型的账号(非空__)创建每种用户类型的空账号且空__创建每种用户类型的非空__的空账号
5.3更改用户测试更改每种用户类型已存在的用户更改每种用户类型一个不存在的用户每种用户类型将一个非空__的用户改为空__每种用户类型将一个空__的用户改为空__每种用户类型将一个用户只更改权限每种用户类型更改一个空账号__的用户每种用户类型更改一个空帐户但__非空
5.4删除用户测试删除一个不存在的用户删除一个已存在的用户删除一个空用户
5.5数据录入测试录入一条空记录录入一条以上全部数据项非空记录录入一条以上只填必填数据项的记录录入一条以上只填非必填数据项的记录对具有外键关联的表录入一条以上检验外键约束的记录录入一条以上正确的记录录入一条以上检验其他自定义完整性约束的记录
5.6查询测试正常查询一条以上记录查询各种查非所查的记录查询各种不对应选项的查询
6.心得体会在这次数据库课程设计中,我花了3周的时间做需求分析和数据库设计,只用了不到一周的时间编写程序开始时真的不知道该怎么做,仓库管理系统到底要创建哪些表,表里到底要有哪些数据项,这些都很模糊于是就找别人的设计作参考,按着设计要求一步一步的设计需求分析真的很重要,也不容易,比编程还难在需求设计阶段,把系统的功能勾画出来,分析系统的数据字典、数据流向,画出E-R图,根据E-R图数据库设计关系模型,这样一步步下来,自己对仓库管理系统有更多的了解,对后面的程序编程也明朗了在数据库设计的时候也花了不少的时间,多次的在数据库关系模型、E-R图和数据字典之间循环修改,重复的修改完整性定义,优化表格在定义check完整时发现MySQL的check完整性定义失效,翻书发现原来MySQL对check的完整性定义还没有强化等数据关系模型最终确定了,才开始设计索引和触发子之后的编程就简单多了在数据库设计期间,我是在设计的过程中就去创建数据库,建表,所以当修改完整性定义和数据项时现得相当麻烦,因为有主键外键的完整性定义在修改时就不好做了最终结论,我该把数据库设计完后才去创建数据库创建完整性定义等等,还有一点是创建表时最好也把后面程序功能的需要考虑进来在这次数据库课程设计中真的学到不少仓库信息管理系统设备需求管理库存信息管理设备还库管理设备出库管理设备入库管理设备管理系统管理采购计划采购计划查询添加用户修改__设备信息退出系统设备信息查询设备入库入库信息查询设备出库出库信息查询设备还库还库信息查询库存量查询用户界面设计需求__数据结构与算法设计数据库设计体系结构设计模块设计实现与测试。