ERP仓库管理系统课设报告_第1页
ERP仓库管理系统课设报告_第2页
ERP仓库管理系统课设报告_第3页
ERP仓库管理系统课设报告_第4页
ERP仓库管理系统课设报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

上海应用技术学院课程设计2014~2015学年第一学期设计题目仓库信息管理系统院(系)计算机科学与信息工程专业计算机科学与技术班级学号学生姓名设计时间指导教师提交日期

概述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)库存种类的细分(物料编码)物料编码:编码结构和企业管理方式有关系,生产型企业建议结构是物料性质+分类+材质+仓库+流水号+补码。物料性质,一般指成品、半成品、原材料;分类,就是常规物料分类;材质,仓库,这个仓储有关总之,物料编码应该尽可能细化。库存物品的分类,库存管理是企业物资流通管理的核心,是为生产、销售等活动而发生的物料接收、发放以及存储管理等一系列管理活动。库存物料按完成情况分类可分为:原材料——采购部门从供应商那里采购来的,准备投入生产加工的物料。在制品——正在加工或等待加工的物料。产成品——已经完工的最终产品,就是企业生产出来准备销售的产品。库存物料按价值划分——ABC分类ABC分类法是库存控制的基本方法之一,并广泛应用于库存控制、生产控制、质量控制及其他许多管理问题。ABC分类法的基本概念如下。A类物品(高值):总价值占库存总值70%-80%的相对少数物品。通常为物品的15%-20%。B类物品(中值):总价值占库存总值的15%-20%。物品数居中,通常占物品的30%-40%。C类物品(低值):库存总价值小,只占5%-10%。这是物品的大多数,通常占60%-70%。2)库存与其他模块的联系物料需求计划(MRP)的计算,需要考虑现有库存、在单量(在途PO和生产在制),举个例子:生产1个A,需要2个a,3个b,这是BOM。现在接到客户订单需要100个A,现有的状况是库存有50个a,产线正在生产的A有20个(无对应客户订单),已经发出PO尚未收料的b有100个,则,MRP运算结果是生产计划80个A,采购计划2*80-50=110个a,3*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数据库管理系统。该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。经分析,本库存管理系统选用VisualC#.NET来设计界面,选用SQLServer2005来建立后台数据库。功能结构图仓库信息管理系统仓库信息管理系统设备需求管理库存信息管理设备还库管理设备出库管理设备入库管理设备需求管理库存信息管理设备还库管理设备出库管理设备入库管理设备管理系统管理采购计划采购计划查询添加用户修改密码设备信息退出系统设备信息查询设备入库入库信息查询设备出库出库信息查询设备还库还库信息查询库存量查询采购计划采购计划查询添加用户修改密码设备信息退出系统设备信息查询设备入库入库信息查询设备出库出库信息查询设备还库还库信息查询库存量查询安全性要求和完整性要求1)安全性要求系统安全性要求至少达到TCSEC(TDI)的C1级。即只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。实行用户标识与鉴别,具有数据备份和日志审计功能。本系统中共分为三类不同的用户,分别具有不同的权限2)完整性要求每个关系中都至少要有一个主键,并且都有一个聚集索引(ClusteredIndex)。关系与关系之间通过主外键关联。定义属性上的约束条件,定义触发器。2.4系统的开发及功能描述1)开发方法的选择信息系统的开发是一项比较复杂的工作,因此我们必须选用科学有效的开发方法。本系统的开发采用了生命周期法。在系统设计时遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,则通过在系统的使用及对系统了解的不断加深中,对某一部分或几部分进行重新分析、设计、实施,使系统逐步完善。2)系统功能描述及系统安全性本库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。在管理内容上,它的主要功能包括:进货管理:进行填写货品信息,货品采购入库,入库单据的填写和修改最低库存量。出货管理:进行货品出库,出货单据的填写和获取采购员信息。信息查询:货品信息查询,库存信息查询,入库、出库单据查询,日报表、月报表查询。统计报表:完整的日报表、月报表统计查询功能,每张单据每次业务金额都可以清楚地反映。系统管理:身份验证,修改本人密码,注册用户,修改删除用户。总体设计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-已用库存-仓库已用存储容量数值型6>0:仓库非空=0:空仓库<0:不允许库存总量-仓库总存储容量数值型6>0:物资存量=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数据流图本系统的顶层数据流图细化后的数据流图货物入库信息管理细化货物出库信息管理细化4.系统详细设计4.1概念结构设计1)库存实体E-R图:2)入库实体E-R图:3)出库实体E-R图:4)部门需求实体E-R图:5)还库实体E-R图:6)计划采购实体E-R图:7)实体和实体之间的关系图如图所示:仓库管理E-R图如图所示4.2系统数据库设计4.2.1关系模型设计仓库表storehouseNO.字段名代码类型约束1仓库号stoIDChar(3)主键2已用库存Used_volumeSmallint非空,默认0,unsigned,<=All_volume3库存总量All_volumeSmallint非空,默认10000,unsigned4负责人principalVarchar(20)非空5电话号码stoTELVarchar(15)零件表partsNO.字段名代码类型约束1设备号parIDChar(7)主键2名称partVarchar(20)非空3规格specChar(10)4单价priceDecimal(6,2)非空,默认0,unsigned5计量单位mensurationChar(4)非空,默认“元”6描述descriptionText供应商supplierNO.字段名代码类型约束1编号supIDChar(3)主键2供应商supNameVarchar(20)非空3电话号码supTELVarchar(15)非空4地址addressText部门表deptNO.字段名代码类型约束1部门号depIDChar(3)主键2名称depNameVarchar(20)非空3电话depTELVarchar(15)库存表storageNO.字段名代码类型约束1仓库号stoIDChar(3)主键,与storehouse表中的stoID外键关联,级联删除、更新2设备号parIDChar(7)主键,与parts表中的parID外键关联,级联删除、更新3现有存量Now_volumeSmallint非空,默认0,>=Min_volume,<=Max_volume4最小存量Min_volumeSmallint非空,默认0,unsigned5最大存量Max_volumeSmallint非空,默认0,unsigned供应表supplyNO.字段名代码类型约束1供应商号supIDChar(3)主键,与supplier表中的supID外键关联,级联删除、更新2设备号parIDChar(7)主键,与parts表中的parID外键关联,级联删除、更新3供应量supVolumeSmallint非空,默认0,unsigned4供应时间supDateTimestamp非空部门需求表demandNO.字段名代码类型约束1设备号parIDChar(7)主键,与parts表中的parID外键关联,级联删除、更新2部门号depIDChar(3)主键,与dept表中的depID外键关联,级联更新、删除3需求数量demVolumeSmallint非空,默认0,unsigned4开始时间startTimeTimestamp非空5结束时间endTimeTimestamp非空设备归还表restoreNO.字段名代码类型约束0编号resIDSmallint主键,AUTO_INCREMENT1仓库号stoIDChar(3)主键,与storehouse表中的stoID外键关联,级联删除、更新2零件号parIDChar(7)主键,与parts表中的parID外键关联,级联更新、删除3部门号depIDChar(3)主键,与dept表中的depID外键关联,级联更新、删除4归还数量resVolumeSmallint非空,默认0,unsigned5经手人cmakerVarchar(20)非空6归还者returnerVarchar(20)非空7归还时间resDateTimestamp非空零部件采购计划表stockNO.字段名代码类型约束1设备号parIDChar(7)主键,与parts表中的parID外键关联,级联更新、删除2采购量stoVolumeSmallint非空,默认0,unsigned3供应商号supIDChar(3)与supplier表中的supID外键关联4采购时间stoDateTimestamp主键5采购员buyerVarchar(20)入库表warehousingNO.字段名代码类型约束0编号inIDSmallint主键,AUTO_INCREMENT1仓库号stoIDChar(3)主键,与storehouse表中的stoID外键关联,级联删除、更新2供应商号supIDChar(3)非空,与supplier表中的supID外键关联3设备号parIDChar(7)主键,与parts表中的parID外键关联,级联更新、删除4入库数量inVolumeSmallint非空,默认0,unsigned5经手人cmakerVarchar(20)非空6入库时间inDateTimestamp非空,默认当前时间出库表stockoutNO.字段名代码类型约束0编号outIDsmallint主键,,AUTO_INCREMENT1仓库号stoIDChar(3)主键,与storehouse表中的stoID外键关联,级联删除、更新2设备号parIDChar(7)主键,与parts表中的parID外键关联,级联更新、删除3出库数量outVolumeSmallint非空,默认0,unsigned4使用者userVarchar(20)非空5经手人cmakerVarchar(20)非空6领取人receiptorVarchar(20)非空7出库时间outDateTimestamp非空,默认当前时间4.2.2用户子模式设计仓库信息视图storehouse_viewNO.字段名代码类型备注1仓库号stoIDChar(3)连storehouse表2已用库存Used_volumeInt连storehouse表3库存总量All_volumeInt连storehouse表4负责人principalVarchar(20)连storehouse表6电话号码stoTELVarchar(15)连storehouse表设备件库存视图parts_storage_viewNO.字段名代码类型备注1仓库号stoIDChar(3)连storage表2设备号parIDChar(7)连parts表3名称partVarchar(20)连parts表4规格specChar(10)连parts表5单价priceDecimal(6,2)连parts表6计量单位mensurationChar(4)连parts表7现有存量Now_volumeSmallint连storage表8最小存量Min_volumeSmallint连storage表9最大存量Max_volumeSmallint连storage表设备入库视图warehousing_viewNO.字段名代码类型备注0仓库号stoIDChar(3)连warehousing表1设备号parIDChar(7)连parts表,更新warehousing表的parID项2供应商号supIDChar(3)连supplier表3供应商supNameVarchar(20)连supplier表4电话supTELVarchar(15)连supplier表5设备名partVarchar(20)连parts表NO.字段名代码类型备注6规格specChar(10)连parts表7单价priceDecimal(6,2)连parts表8计量单位mensurationChar(4)连parts表9入库数量inVolumeSmallint连warehousing表,更新parts_storage_view视图的Now_volume项10描述descriptionText连parts表11经手人cmakerVarchar(20)连warehousing表12入库时间inDateTimestamp连warehousing表设备出库视图stockout_viewNO.字段名代码类型备注0仓库号stoIDChar(3)连stockout表1设备号parIDChar(7)连parts表,更新stockout表的parID项2出库数量outVolumeSmallint连stockout表,更新storage表的now_volume3使用单位userVarchar(20)连stockout表4经手人cmakerVarchar(20)连stockout表5领取人receiptorVarchar(20)连stockout表6出库时间outDateTimestamp连stockout表零部件计划采购视图stock_viewNO.字段名代码类型备注1设备号parIDChar(7)连stock表2采购量stoVolumeSmallint连stock表3供应商号supIDChar(3)连supplier表,更新stock表的supName4电话supTELVarchar(15)连supplier表NO.字段名代码类型备注5价格priceDecimal(6,2)连parts表6计量单位mensurationChar(4)连parts表7规格specChar(10)连parts表8采购时间stoDateTimestamp连stock表9采购员buyerVarchar(20)连stock表部门需求视图demand_viewNO.字段名代码类型备注1设备号parIDChar(7)连demand表2部门号depIDChar(3)连demand表3需求数量demVolumeSmallint连demand表4开始时间startTimeTimestamp连demand表5结束时间endTimeTimestamp连demand表供应商零件供应视图supply_viewNO.字段名代码类型备注1供应商号supIDChar(3)连supplier表2设备号parIDChar(7)连supply表3单价priceDecimal(6,2)连parts表4计量单位mensurationChar(4)连parts表5规格specChar(10)连parts表6供应量supVolumeSmallint连supply表7供应时间supDateTimestamp连supply表8电话supTELVarchar(15)连supplier表设备归还入库视图restore_viewNO.字段名代码类型备注0仓库号stoIDChar(3)连restore表1设备号parIDChar(7)连restore表2部门号depIDChar(3)连restore表3归还数量resVolumeSmallint连restore表4经手人cmakerVarchar(20)连restore表5归还者returnerVarchar(20)连restore表6归还时间resDateTimestamp连restore表4.2.3数据库物理设计1)建立索引,各表索引设计如下:表名索引字段索引类型零件零件号聚集索引零件名非聚集索引供应商供应商号聚集索引供应商名非聚集索引部门部门号聚集索引部门名非聚集索引库存零件号非聚集索引供应供应商号非聚集索引零件号非聚集索引供应时间聚集索引部门需求零件号非聚集索引部门号非聚集索引开始时间非聚集索引结束时间非聚集索引零件归还归还时间聚集索引零件号非聚集索引部门号非聚集索引零件采购零件号非聚集索引采购时间聚集索引零件入库入库时间聚集索引零件号非聚集索引零件出库出库时间聚集索引零件号非聚集索引2)确定数据的存放位置 该数据库的数据文件都存放在MySQL的安装目录的WINDOWS-RQV4LBM\数据库\storage文件夹下.确定系统配置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_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"max_connections=447query_cache_size=12Mtable_cache=128tmp_table_size=8Mthread_cache_size=4myisam_max_sort_file_size=100Gmyisam_max_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各功能模块及界面设计4.3.1本系统的主要功能如下表所示:不同的用户类型具有不同的功能。Inf用户类型:注销、登录、退出、信息查询;Dba用户类型:系统管理、仓库管理;Sys用户类型:系统管理、仓库管理、备份恢复。正确登录系统,选择程序菜单上的菜单项进入相应的功能窗体进行操作。4.3.2系统管理界面4.3.3设备管理界面4.3.4设备入库管理界面4.3.5设备出库管理界面4.3.6设备还库管理界面4.3.7库存信息界面4.3.8设备需求界面4.3.9关键代码1)添加用户并分配权限 publicAddUser() //Windows窗体设计器支持所必需的 InitializeComponent(); //TODO:在InitializeComponent调用后添加任何构造函数代码 ///<summary> ///清理所有正在使用的资源。 ///</summary> protectedoverridevoidDispose(booldisposing) if(disposing) if(components!=null) components.Dispose(); base.Dispose(disposing);privatevoidenter_button_Click(objectsender,System.EventArgse) if(textID.Text.Trim()==string.Empty)//判断用户ID是否输入 MessageBox.Show("请输入用户ID或密码"); return; NewID=this.textID.Text.Trim(); if(textPwd.Text.Trim()==string.Empty)//判断用户密码是否输入 MessageBox.Show("请输入用户ID或密码"); return; NewPwd=this.textPwd.Text.Trim(); if(boGrp.SelectedItem.Equals("1-经理人员"))//选择权限 NewGrp="1"; else if(boGrp.SelectedItem.Equals("2-仓库管理员")) NewGrp="2"; else NewGrp="3"; SqlConnectionmyConn=null; SqlTransactionUserInsertTra=null; DataSetUserInfoSet=newDataSet(); try myConn=newSqlConnection("server=.;Trusted_Connection=yes;user=sa;pwd=1;database=storage");//建立连接 AddAdapter.SelectCommand.Connection=myConn; AddAdapter.SelectCommand.CommandText="SELECT*FROMLonInFrmWHEREUserID='"+NewID+"'"; myConn.Open(); AddAdapter.Fill(UserInfoSet,"UserInfo");//填充数据集 if(UserInfoSet.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.Add(NewUserInfoRow); AddAdapter.SelectCommand.Connection=myConn; AddAdapter.InsertCommand.Connection=myConn; AddAdapter.UpdateCommand.Connection=myConn; AddAdapter.InsertCommand.Transaction=UserInsertTra; this.AddAdapter.Update(UserInfoSet.Tables["UserInfo"]);//更新数据集 UserInsertTra.Commit(); MessageBox.Show("OK"); catch(Exceptionex) if(UserInsertTra!=null) UserInsertTra.Rollback(); MessageBox.Show(ex.Message); privatevoidesc_button_Click(objectsender,System.EventArgse)//退出操作 this.Close();2)修改密码privateSystem.ComponentModel.Containercomponents=null; publicPwdUpdate() //Windows窗体设计器支持所必需的 InitializeComponent(); //TODO:在InitializeComponent调用后添加任何构造函数代码 ///<summary> ///清理所有正在使用的资源。 ///</summary> protectedoverridevoidDispose(booldisposing) if(disposing) if(components!=null) components.Dispose(); base.Dispose(disposing);privatevoidsure_button_Click(objectsender,System.EventArgse) if(textID.Text.Trim()!=string.Empty)//判断是否输入了ID userID=textID.Text.Trim(); else MessageBox.Show("此字段不能为空!"); return; if(textPwdOld.Text.Trim()!=string.Empty)//判断是否输入了原有密码 passWord=textPwdOld.Text.Trim(); else MessageBox.Show("此字段不能为空!"); return; if(textPwdNew1.Text.Trim()!=string.Empty)//判断是否输入了新密码 NewPassWord1=textPwdNew1.Text.Trim(); else MessageBox.Show("此字段不能为空!"); return; if(textPwdNew2.Text.Trim()!=string.Empty)//判断是否再次输入了新密码 NewPassWord2=textPwdNew2.Text.Trim(); else MessageBox.Show("此字段不能为空!"); return; SqlConnectionmyConn=null; SqlTransactionUserInsertTra=null; DataSetUserInfoSet=newDataSet(); if(NewPassWord1==NewPassWord2)//强制两次输入新密码必须相同 try myConn=newSqlConnection("server=.;Trusted_Connection=yes;user=sa;pwd=1;database=storage");//连接字符串 myConn.Open(); PwdAdapter.SelectCommand.CommandText="SELECT*FROMLonInFrmWHEREUserID='"+userID+"'"; PwdAdapter.SelectCommand.Connection=myConn; PwdAdapter.Fill(UserInfoSet,"UserInfoTab"); if(UserInfoSet.Tables["UserInfoTab"]==null||UserInfoSet.Tables["UserInfoTab"].Rows.Count==0)//判断用户是否存在 MessageBox.Show("Userisnotexist"); this.textID.Focus(); this.textID.Select(0,this.textID.Text.Length); return; if(UserInfoSet.Tables["UserInfoTab"].Rows[0]["PassWord"].ToString().Trim()!=passWord)//用户原有密码输入错误 MessageBox.Show("PassWordError!"); this.textPwdOld.Focus(); this.textPwdOld.Select(0,this.textPwdOld.Text.Length); return; UserInfoSet.Tables["UserInfoTab"].Rows[0]["PassWord"]=NewPassWord1;//更新密码 UserInsertTra=myConn.BeginTransaction(); PwdAdapter.UpdateCommand.Connection=myConn; PwdAdapter.UpdateCommand.Transaction=UserInsertTra; PwdAdapter.Update(UserInfoSet.Tables[0]); UserInsertTra.Commit(); MessageBox.Show("OK"); catch(Exceptionex) UserInsertTra.Rollback(); MessageBox.Show(ex.Message); finally if(myConn.State!=ConnectionState.Closed)//关闭数据库 myConn.Close(); privatevoidesc_button_Click(objectsender,System.EventArgse) this.Close();3)主程序publicclassMainFrm:System.Windows.Forms.Form privateSystem.Windows.Forms.MainMenumainMenu1; privateSystem.Windows.Forms.MenuItemmenuItem1; privateSystem.Windows.Forms.MenuItemmenuItem2; privateSystem.Windows.Forms.MenuItemmenuItem3; privateSystem.Windows.Forms.MenuItemmenuItem4; privateSystem.Windows.Forms.MenuItemmenuItem5; privateSystem.Windows.Forms.MenuItemmenuItem6; privateSystem.Windows.Forms.MenuItemmenuItem7; privateSystem.Windows.Forms.MenuItemmenuItem8; privateSystem.Windows.Forms.MenuItemmenuItem9; privateSystem.Windows.Forms.MenuItemmenuItem10; privateSystem.Windows.Forms.MenuItemmenuItem11; privateSystem.Windows.Forms.MenuItemmenuItem12; privateSystem.Windows.Forms.MenuItemmenuItem13; privateSystem.Windows.Forms.MenuItemmenuItem19; privateSystem.Windows.Forms.MenuItemmenuItem21; privateSystem.Windows.Forms.MenuItemmenuItem14; privateSystem.Windows.Forms.MenuItemmenuItem15; privateSystem.Windows.Forms.MenuItemmenuItem20; privateSystem.Windows.Forms.MenuItemmenuItem16; privateSystem.Windows.Forms.MenuItemmenuItem17; privateSystem.Windows.Forms.MenuItemmenuItem18; privateSystem.Windows.Forms.StatusBarstatusBar1; ///<summary> ///必需的设计器变量。 ///</summary> privateSystem.ComponentModel.Containercomponents=null; publicMainFrm() //Windows窗体设计器支持所必需的 InitializeComponent(); //TODO:在InitializeComponent调用后添加任何构造函数代码 ///<summary> ///清理所有正在使用的资源。 ///</summary> protectedoverridevoidDispose(booldisposing) if(disposing) if(components!=null) components.Dispose(); base.Dispose(disposing);staticvoidMain()//主程序 LongInFormLonInForm=newLongInForm(); LonInForm.ShowDialog(); if(LongInForm.lfstate==true) Application.Run(newMainFrm()); privatevoidmenuItem2_Click(objectsender,System.EventArgse)//添加用户 if(this.checkExist("AddUser")==true) return; AddUsernewFrm=newAddUser(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem3_Click(objectsender,System.EventArgse)//系统用户修改密码 if(this.checkExist("PwdUpdate")==true) return; PwdUpdatenewFrm=newPwdUpdate(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem4_Click(objectsender,System.EventArgse)//退出系统 if(MessageBox.Show("确实要退出系统吗","询问",MessageBoxButtons.YesNo)==DialogResult.Yes) this.Close(); privatevoidmenuItem6_Click(objectsender,System.EventArgse)//入库管理 if(this.checkExist("InStorage")==true) return; InStoragenewFrm=newInStorage(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem7_Click(objectsender,System.EventArgse)//入库信息查询 if(this.checkExist("SelInStg")==true) return; SelInStgnewFrm=newSelInStg(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem9_Click(objectsender,System.EventArgse)//出库管理 if(this.checkExist("OutStorage")==true) return; OutStoragenewFrm=newOutStorage(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem10_Click(objectsender,System.EventArgse)//出库信息查询 if(this.checkExist("SelOutStg")==true) return; SelOutStgnewFrm=newSelOutStg(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem12_Click(objectsender,System.EventArgse)//还库管理 if(this.checkExist("ReturnStg")==true) return; ReturnStgnewFrm=newReturnStg(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem13_Click(objectsender,System.EventArgse)//还库信息查询 if(this.checkExist("SelReturn")==true) return; SelReturnnewFrm=newSelReturn(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem15_Click(objectsender,System.EventArgse)//设备代码管理 if(this.checkExist("FaclityNum")==true) return; FaclityNumnewFrm=newFaclityNum(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem20_Click(objectsender,System.EventArgse)//设备代码查询 if(this.checkExist("SelFacNum")==true) return; SelFacNumnewFrm=newSelFacNum(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem17_Click(objectsender,System.EventArgse)//生成采购计划 if(this.checkExist("buyFrm")==true) return; buyFrmnewFrm=newbuyFrm(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem18_Click(objectsender,System.EventArgse)//采购计划查询 if(this.checkExist("SelBuy")==true) return; SelBuynewFrm=newSelBuy(); newFrm.MdiParent=this; newFrm.Show(); privatevoidmenuItem21_Click(objectsender,System.EventArgse)//采购计划查询 if(this.checkExist("SelDriveInfo")==true) return; SelDriveInfonewFrm=newSelDriveInfo(); newFrm.MdiParent=this; newFrm.Show(); privateboolcheckExist(stringchildFrmName)//验证子窗体是否存在 foreach(FormchildFrminthis.MdiChildren) if(childFrm.Name==childFrmName) if(childFrm.WindowState==FormWindowState.Minimized) childFrm.WindowState=FormWindowState.Normal;

温馨提示

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

评论

0/150

提交评论