版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/毕业设计(论文)题目:基于JavaEE的仓库管理系统成都电子机械高等专科学校二〇〇八年六月论文摘要随着经济的不断繁荣以与加入WTO后市场环境的变化,对企业的生产经营提出了更高的要求,企业必须综合利用各种先进制造技术,在网络与信息技术的支持下,改进现在的生产经营模式和组织结构,才能在市场竞争中赢得更多的份额。随着企业规模的扩大,仓库管理系统将发挥越来越重要的作用。高效方便的仓库管理系统,可以为生产经营提供坚强的后盾和有力的支持。仓库管理系统主要提供一个仓库业务与其作业管理的信息存储和检索系统。通过入库管理、出库管理、报表生成管理、仓库人员管理、仓库位置信息管理等功能模块来实现仓库的综合管理。本论文以标准的仓库管理模式为蓝本,基于JavaEE开发出一个可以用于一般单位的仓库管理系统,实现了仓库管理的高效性与安全性。本系统可以方便快捷地实现库管理中的货物登记、出库入库、库房管理等操作,使企业的仓库管理井井有条,为企业的健康发展创造良好的条件。关键词:仓库管理系统,JavaEE,模块化设计,软件工程AbstractWiththecontinuouseconomicprosperityandaccessiontotheWTOafterthemarketenvironmentchanges,theproductionandoperationofenterpriseshavesethigherrequirements,enterprisesmustcomprehensiveutilizationofadvancedmanufacturingtechnology,theInternetandinformationtechnology,improvingtheexistingproductionBusinessmodelandorganizationalstructure,inordertowinmoremarketcompetitionintheshare.Withtheexpansionofbusinessscale,warehousemanagementsystemwillplayanincreasinglyimportantrole.Facilitatetheefficientwarehousemanagementsystem,canprovideastrongproductionandmanagementbackingandstrongsupport.Warehousemanagementsystemtoprovideamajorwarehouseoperationsanditsoperationsmanagementinformationstorageandretrievalsystem.Throughstoragemanagement,tothemanagement,reportgenerationmanagement,storagemanagement,storagelocationinformationmanagementmoduletoachieveintegratedmanagementofthewarehouse.Thispapertothewarehousemanagementstandardsbasedonthemodel,basedontheJavaEEcanbeusedtodevelopaunitofGeneralwarehousemanagementsystem,warehousemanagementtoachievetheefficiencyandsecurity.Thissystemcanquicklyandeasilyachievethemanagementofgoodsregisteredtothestockandthetreasurymanagementoperation,theenterprisestoragemanagementorderly,forthehealthydevelopmentofenterprisestocreategoodconditions.KeyWords:Warehousemanagementsystem,JavaEE,modulardesign,softwareengineering目录论文摘要目录一、引言………………………1.1仓库管理系统的背景与意义…………1.2JavaEE简介…………1.3本文的主要工作………二、相关技术介绍…………2.1JavaEE相头原理与技术简介………2.1.1Servlet…………2.1.2JSP简介…………2.1.3EJB………………2.2Struts…………………2.2.1STRUTS的由来和发展…………2.2.2MVC简介…………2.2.3Struts优缺点…………………2.2.4Struts的工程流程……………2.3Hibernate……………三、系统分析与设计…………3.1引言……………………3.2系统分析………………3.2.1系统可行性研究…………………3.2.2系统使用环境……………………3.2.3系统需求分析……………………1.系统功能概述……………………2.货物入库和出库的管理…………3.出库入库记录的查询与报表……4.货物信息的管理…………………5.其它信息的管理…………………3.3系统功能设计…………四、数据库设计………………4.1引言……………………4.2E-R图…………………4.3数据表…………………五、系统界面与功能实现……………………5.1页面流程图……………5.2创建系统登陆模块……………………5.2.1系统登陆模块的功能……………5.2.2设计登陆窗口……………………5.3创建主窗口模块………5.3.1主窗口模块的功能………………5.3.2主窗口的设计………5.4仓库人员管理模块……………………5.4.1仓库人员管理模块的功能………5.5入库模块的实现………5.5.1入库模块的功能…………………5.6出库模块的实现……………………5.6.1出库模块的功能…………………5.7移库模块的实现……………………5.7.1移库模块的功能…………………5.8盘点模块的实现……………………5.8.1盘点模块的功能…………………5.9仓库设置模块的实现………………5.9.1仓库设置模块的功能……………5.10计量单位设置模块的实现…………5.10.1计量单位设置模块的功能……5.11部门信息设置模块的实现…………5.11.1部门信息设置模块的功能……5.12操作类型设置模块的实现…………5.12.1操作类型设置模块的功能……5.13期初设置模块的实现………………5.13.1期初设置模块的功能…………5.14货物存储信息查询模块的实现……5.14.1货物存储信息查询模块的功能与布局………5.15帮助模块的实现5.15.1帮助模块的功能与布局………六、Hibernate设计…………6.1Hibernate简介……………………6.2Hibernate生成…………………… 6.6.3Hibernate的映射文件和类的生成………………… 6. 6.七、总结………………………参考文献………………………一、引言1.1仓库管理系统的背景与意义随着企业规模的扩大,管理信息系统也发挥越来越重要的作用。作为企业管理信息系统关键组成部分的仓库管理系统的应用给企业带来巨大的效益。采用仓库管理系统将使企业改变其传统的手工记录模式,应用数据库技术使海量数据的存储与处理成为很方便的事情,这样可大幅缩短主要业务流程的处理时间,提高对市场的响应能力。“物流服务最初起源于军事上的运用”,“物流”这一概念起源于二战期间的美国,英文称之为Logistics或者PhysicalDistribution,前者的使用率更高一些。物流一词最早被描述为泛指军队运输、补给和屯驻,后来被广泛用来描述商品实体的物理性流通活动,成为流通经济学中的术语。物流(Logistic)到目前还没有一个统一的定义,综合各种物流的定义可以得出,物流是有形物品从出发点到最终消费点的流动存储活动,具体包括运输、保管、包装、装卸、搬运、流通加工与信息处理,从职能上可以分为:供应物流、生成物流、销售物流、回收物流和废弃物流五个职能。从70年代开始,计算机技术开始应用到物流领域。随着物流市场和物流信息化的发展,物流软件市场也应运而生并迅速发展起来,国内外出现了一大批物流软件供应商和物流软件。“物流软件作为管理软件,较其它应用软件呈现先进性、高效性、可靠性和安全性等特点;较其它管理软件,如ERP(EnterpriseResourcePlanning),具有以下特点:实施风险小,实施迅速;效益显著、见效快。根据物流软件结构分类,就目前物流软件所使用的应用范围来说,物流软件包括如下几个子系统:WMS(WarehouseManagementSystem,仓库管理系统)、TMS(TransportationManagementSystem,运输管理系统。OMS(OrderManagementSystem,定单管理系统)、SMS(ServiceManagementSystem,服务管理系统)。其中,WMS主要提供了一整套仓库业务以与作业管理系统。通过仓库管理系统可以实现库位分配自动化和智能化;提高仓库作业效率和速度,提供准确的库存信息,并使之与实际库存变化同步。根据中国物流与采购联合会统计,2001年,中国与物流相关的年总支出为19000亿元人民币,物流成本占GDP的比重为20%左右。我国企业的物流支出成本约占总成本的30%,而国外企业的物流支出成本仅为7%。物流成本的巨大差距,抵消了我国企业在原材料和人工上的成本优势,降低了我国企业的竞争力。国内的很多企业,由于信息的记录、收集、汇总、处理分析还处于比较低的水平,记录中信息分散、格式随意、应用单一,收集中不与时、不全面、不完善、保留不科学,汇总时口径不一、主题多元、结果不一,处理分析方法落后、效率低下、只有短期,难以支持趋势等。仓库管理系统是通过入库业务、出库业务、库存调拨、库存调整,结合批次管理、物料对应、库存盘点、质检管理、实时库存管理等功能综合运用的管理系统,对库存业务的物流和成本管理全过程进行有效控制和跟踪,实现完善的企业仓库信息管理。仓库管理系统的投入,将使仓库的管理更加正规化,为产品的出入库管理部门和销售部门提供了方便,降低了仓库的损耗。企业可以对售出的产品进行跟踪服务,同时也免去了销售人员按以往惯例亲自前往用户处去核实货物情况的麻烦,提高了办事效率,节省了费用,而且还避免了不必要的业务纠纷,维护了企业长期与用户建立的良好信誉。1.2JavaEE简介企业级多层应用系统的开发一直面临着重大挑战。开发商和广大程序员一直在努力推动和殷切期待一个成熟的、标准的企业级应用平台来简化和规范企业级应用系统的开发和部署。Java技术的出现,尤其是J2EE(Java2PlatformEnterpriseEdition)平台的推出正是这种努力的结果,也使得企业级应用系统的开发由此变得更加快速和方便。需要指出的是,J2EE本身是一个标准,它为不同厂商创建平台产品提供了标准,使不同J2EE平台产品之间的交互成为可能。SUN与其合作方将J2EE1.5改名为JavaEE5,但是其架构跟改名前的J2EE没有区别。只是通过增强一些技术使得我们更快、更容易、更简单地开发企业应用程序1.3本文的主要工作本论文以标准的仓库管理模式为蓝本,根据软件工程的理论,开发出基于JavaEE的适用于中小单的位仓库管理系统。论文首先研究了系统开发的可行性,然后进行了需求分析,并将需求分析以文档的形式反馈给用户,并和用户进行交流进一步确认需求,然后根据需求分析采用了结构化分析方法进行了系统分析设计,并进行了数据库的建模工作,根据模型构建了数据库。后台数据库采用MYSQL完成。基于开放的开发架构JavaEE,实现了系统登录模块、主窗口模块、仓库人员管理模块、入库模块、出库模块、入库报表生成模块、出库报表生成模块等。最后对全文进行了总结,对今后的工作提出了展望。二、相关技术介绍2.1JavaEE相关原理与技术简介JavaEE规范定义了一个完善的应用组件技术框架,作为企业级应用系统基本构造模块的组件就是建立在这个框架之上。从简单的Web应用到复杂的分布式企业级应用,几乎所有的业务应用,都可以在此技术框架基础上构造。本文中使用的组件技术主要有三种类型:JSP网页、servlet和EnterpriseJavaBean。ServletServlet是一些用来扩展Web服务器功能的Web组件,它基于请求/响应机制。Servlet从客户端(例如Web浏览器)获得请求,然后,将响应结果返回客户端。Servlet的这种特点使它非常适合于Web应用。Servlet和EJB组件的区别在于EJB组件所提供的服务器端组件特性并不能全部适用于Servlet,Servlet更适合于处理简单的请求/响应任务,而且它不需要应用服务器所提供的复杂服务的支持。2.1.JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。它虽然还未成型,但是它必将和J2EE(Java2EnterpriseEdition)一起发展。JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Javaclass、Servlet、Applets和WebServer,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起.2.1.3EJB(EnterpriseJavaBeans)是J2EE平台的核心,也是J2EE得到业界广泛关注和支持的主要原因。我们知道,J2EE的一个主要目标就是简化企业级多层应用系统的开发,使得程序员将主要精力放在业务逻辑的开发上。EJB正是基于这种思想的服务器端技术,它本身也是一种规范,该规范定义了一个可重用的组件框架来实现分布式的、面向对象的业务逻辑。EJB的核心思想是将业务逻辑与底层的系统逻辑分开,使开发者只需关心业务逻辑,而由EJB容器实现目录服务、事务处理、持久性、安全性等底层系统逻辑。根据功能不同,规范中定义了三种EnterpriseJvavaBean:会话Bean(SessionBean)、实体Bean(EntityBean)和消息驱动Bean(Message-DrivenBean)。会话Bean分为无状态和有状态两种。一般无状态的会话Bean模拟商业逻辑,比如计算价格等。有状态的会话Bean通常模拟一个客户会话,它会临时保存客户信息,根据客户要求调用其它Bean来存取数据。两种会话Bean都不保存状态信息或者数据,当客户断开连接或者服务器关闭时,会话Bean也就随之消失。一个会话Bean的典型例子是网站上的购物车。实体Bean模拟业务数据,它表示一个数据存储,可以是状态信息或者数据库中的一条记录。实体Bean在客户断开连接或者服务器关闭后,仍有服务保证其数据得以保存。消息驱动Bean在行为上很象会话Bean。不同的就是仅在需要向这些Bean发送消息时才调用消息驱动Bean,比如在需要的时候发送用户确认信息等。2.2Struts2.2Struts框架工具是Apache基金会Jakarta项目中推出的一个子项目。Struts在英文中是支架、支撑的意思,这也体现出Struts在开发Web应用程序过程所起到的重要作用,Struts为Web应用提供了通用的框架,让开发人员可以把主要精力集中在如何解决实际业务问题上,与此同时Struts框架也允许开发人员根据实际需要进行扩展和定制,从而可以更好的适应用户的需求。采用Struts可以简化遵循MVC设计模式的Web应用的开发工作,很好地实现代码重用,使开发人员从一些繁琐的工作中解脱出来,快速开发能够充分发挥JSP/Servlet优点、并具有强可扩展性的Web应用。总之,Struts的出现使得Web应用的开发过程大大简化,从而能够缩短开发周期、提高开发效率。Struts架构一经推出,即受到Java开发群体的广泛重视,从2004年开始逐渐升温,并日渐成为Java创建Web应用开发的最流行的框架工具,在目前JavaWeb程序员的招聘要求中,几乎都提出了对Struts的要求,精通Struts架构已经成为JavaWeb程序员必备的技能。2.2模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。1、模型(Model)模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.2、视图(View)视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。3、控制器(controller)控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。MVC式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂与难以维护。很多VB,Delphi等RAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。直到基于J2EE的JSPModel2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能JSPModel1与JSPModel2图1-3-1图1-3-2图1-3-3JSPModel2SUN在JSP出现早期制定了两种规范,称为Model1和Model2。虽然Model2在一定程度上实现了MVC,但是它的应用用并不尽如人意model2容易使系统出现多个Controller,并且对页面导航的处理比较复杂,有些人觉得model2仍不够好,于是CraigR.McClanahan2000年5月提交了一个WEBframework给JavaCommunity.这就是后来的Struts。2001年7月,Struts1.0,正式发布。该项目也成为了ApacheJakarta的子项目之一Struts实质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑2.2.优点:Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。缺点:Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式。2.2下图是Struts的工作流程,所有的请求都提交给ActionServlet来处理。图1-3-ActionServlet是一个FrontController,它是一个标准的Servlet,它将request转发给RequestProcessor来处理,ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息RequestProcessor根据提交过来的url,如*.do,从ActionMapping中得到相应的ActionForn和Action。然后将request的参数对应到ActionForm中,进行form验证。如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionFoward。ActionFoward是对mapping中一个foward的包装,对应于一个urlActionForm使用了ViewHelper模式,是对HTML中form的一个封装。其中包含有validate方法,用于验证form数据的有效性。ActionForm是一个符合JavaBean规范的类,所有的属性都应满足get和set对应。对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form。这样可以更灵活的扩展程序。ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors。在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误。Action是用于执行业务逻辑的RequsestHandler。每个Action都只建立一个instance。Action不是线程安全的,所以不应该在Action中访问特定资源。一般来说,应改使用BusinessDelegate模式来对Businesstier进行访问以解除耦合。Struts提供了多种Action供选择使用。普通的Action只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种任务。如insert,update等。LookupDispatchAction可以根据提交表单按钮的名称来执行函数。2.3HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。三、系统分析与设计3.1引言在设计软件系统之前,首先必须确定用户究竟要求软件系统完成什么任务,所以分析阶段的基本任务是了解用户的需求,并将用户的需求用书面形式表达出来。这个阶段还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。系统分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。在全面客观的系统分析的基础上,根据用户提出的系统功能进行相应的功能设计。3.2系统分析3.2.1系统可行性研究1.技术可行性
根据客户提出的系统功能、性能与实现系统的各项约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。本系统基于JavaEE架构,采用了较为成熟的开发模式。前端用Struts1.2,业务逻辑采用EJB3.0的无状态会话Bean,持久映像层采用hibernate1.3模式,应用服务器使用了使用最广泛的BEAWeblogicServer。
2.经济可行性
估算新系统的成本效益分析,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用,估计新系统将获得的效益,估算开发成本是否回高于项目预期的全部经费。并且,分析系统开发是否会对其它产品或利润带来一定影响。
(1)支出:
·基础投资:
硬件设备:PC机
软件设备:WINDOWS2000、BEAWeblogicServer10
·其它一次性支出:软件设计和开发费用
·经常性支出:软件维护费用、软件使用费用。
(2)效益:
系统的效益可以从经济效益和社会效益两方面考虑。对于仓库管理系统则应着重分析其社会效益。例如,系统投入运行后可以使仓库管理实现科学化、规范化。曾强了工作人员对仓库管理能力、提高了工作效率。
3.运行可行性
新系统的研制和开发是充分得考虑工作人员对仓库的易于管理,管理者方便查询设备信息效率。从而能完全满足使用者的要求。
4.法律可行性
新系统的研制和开发,将不会侵犯他人、集体和国家的利益,不会违反国家政策和法律。3.2.2系统使用环境本系统的使用的最低配置要求:硬件环境:服务器:CPU:2.4G或以上;内存:1GRAM或以上;硬盘:80G或以上;客户端:CPU:1G;内存:64MB以上内存或更高;硬盘:20G或以上软件开发环境:操作系统:WindowsXPorWindows2000server;所用工具:MyEclipse6.0,BEAWeblogicServer10;数据库:MYSQL;软件运行环境:操作系统:WindowsXPorWindows2000server;应用服务器:BEAWeblogicServer10;数据库:MYSQL。3.2.3系统需求分析1.系统功能概述库存管理货物管理员工管理仓库管理系统编码设置出库操作移库操作盘点信息录入入库操作期初设置计量单位设置部门设置操作类型设置仓库设置货物信息查询货物信息查询货物信息录入删除用户查询用户添加用户基础数据库存管理货物管理员工管理仓库管理系统编码设置出库操作移库操作盘点信息录入入库操作期初设置计量单位设置部门设置操作类型设置仓库设置货物信息查询货物信息查询货物信息录入删除用户查询用户添加用户基础数据2.货物入库和出库的管理仓库是用来存放货物的,货物进入仓库要进行登记记录,货物从仓库出库也要进行登记记录,这是仓库管理的主要内容。货物进入仓库,从入库申请的人员向执行货物入库的仓库保管员提交货物开始。入库申请人向仓库管理员提交货物和入库申请单,入库申请单记录本次入库的货物名称、数量、提交货物的单位、执行提交货物的人员以与货物注意事项等信息。库管依据送货人员提供的入库申请单对待入库货物进行检查。若待入库货物与入库申请单信息一致,则允许入库;若不一致,则禁止入库,请提交货物的单位重新出具入库申请单。对允许入库的货物,执行库管要对货物的信息进行登记,这些信息包括入库货物名称、入库数量、入库时间、送货入库人员的信息、执行货物入库的执行人。进行登记后,将货物存入仓库。货物存入仓库后,执行入库操作的库管给提出入库申请的入库人员开具入库单,入库流程结束。货物从仓库中出库,是从需求货物的出库单位出库人员向执行出库操作的库管提交出库申请开始的。首先,出库人员向库管提交出库申请单。出库申请记录申请出库的货物名称、申请出库的数量、申请出库的单位、执行出库申请的人员等信息。执行出库的库管首先对出库单的真伪进行检验。对有效的出库单,依据其要求出库的货物名称查找仓库库存货物的信息和此货物的库存数量。如果有此货物,并且其库存数量满足出库申请单的数量,则执行出库操作的库管保存出库申请单并进行出库登记。在出库登记中,执行库管要记录出库货物的名称、出库数量、出库后剩余数量、出库时间、货物去向、出库的仓库、执行出库的库管名称等信息。进行出库登记后,将货物出库。出库结束后,执行库管给提出出库申请的出库人员开具出库单,出库流程结束。3.出库入库记录的查询与报表仓库的管理人员要对仓库存储的货物信息、入库记录和出库记录等与时掌握,这样才能与时了解仓库的运行现状,才有可能会使仓库处在良好的运行状态。所以,一般仓库管理过程中要能提供仓库的入库、出库记录的查询功能,并且能够将出库、入库记录生成报表,供管理人员使用,所以,对入库、出库记录的查询并将这些信息生成报表是仓库管理系统的重要功能之一。4.货物信息的管理仓库要存放货物,关于这些货物本身的信息,对货物的正常存储是非常重要的,例如,哪些货物需要防潮,哪些货物需要轻搬轻放等,所以,对货物本身的信息的登记、管理是仓库管理的重要内容。5.其他信息的管理除了以上提到的一些功能外,仓库管理系统还应该能对一些其他的信息进行管理。例如,对每个仓库来说,都有一些存储位置用来存放货物,仓库管理过程中包括对这些存储位置进行的管理;每个仓库都有一些仓库管理员,对这些仓库管理员的管理也是仓库管理系统的功能之一。3.3系统功能设计根据仓库管理系统的一般需求,设计了如下一些功能模块:1.仓库管理人员的管理模块此功能模块方便对人员的管理以与数据安全性,如(新增员工)。2.货物信息管理模块此模块提供了货物基础数据的录入、货物信息查询等功能,方便与时了解库存信息。3.入库功能模块入库功能是仓库管理系统的基本功能之一。入库功能主要是实现登记入库记录的功能。这些信息应包括入库单据信息、入库数量和入库时间信息、执行入库操作的操作员信息和货物存放仓库的信息等。入库登记功能产生货物的入库记录,为以后进行入库货物的查询和生成报表以与出库操作产生操作数据,供管理人员掌握仓库内存储的货物情况。4.出库功能模块出库功能是仓库管理系统的基本功能之二。出库功能主要是实现登记出库货物信息的功能。这些出库记录包括出库申请单据信息、出库数量和出库时间信息、执行出库操作的库管信息和货物剩余信息等。出库功能依据入库登记功能产生的入库记录产生货物的出库记录,将出库记录存入系统,为以后的出库记录查询以与掌握仓库货物存储情况作基础。5.盘点功能模块此模块通过定期对仓库信息做清点,有效的了解了货物的流通情况和仓库货物的损耗情况。方便对货物信息的管理。6.移库功能模块此模块是针对货物在内部进行调动的详细记载,从而对库存信息达到更方便的管理。四、数据库设计4.1引言数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,即数据库就是相关信息的集合。本章从E-R模型的分析设计为切入点,重点介绍了数据库的设计。根据仓库管理系统的功能,将其E-R图转化为个数据库表,为系统的实现奠定了基础。4.2E-R图实体联系图1:实体联系图2:实体联系图3:实体联系图4:4.3数据表1.仓库表(WH)列名数据类型长度允许空默认值说明whIDchar4仓库编号Namevarchar20仓库名whPersonvarchar10负责人whAddrvarchar100仓库地址2.货物信息表(GDMESS)列名数据类型长度允许空默认值说明goodsIDchar8货物编号goodsNamevarchar30货物名称shortNamevarchar20NULL货物简称goodsClassvarchar10货物种类goodsStdvarchar20货物规格型号Pricedouble8货物单价Weightdouble8NULL单位重量Volumedouble8NULL单位体积unitIDchar8计量单位Vendorvarchar20默任供应商lowQuantityint8最低库存量highQuantityint8最高库存量safeQuantityint8安全库存whIDchar8仓库编号highPricedouble8最高进价lowPricedouble8最低售价Buildervarchar10建档人modiPersonvarchar10NULL更改人modiTimedatetime8NULL更改时间nowQuantityint8当前数量checkCycleint8盘点周期lastCleckTimedatetime8NULL上次盘点时间3.货物存储表GDST列名数据类型长度允许空默认值说明goodsIDchar8货物编号whIDcahr8仓库编号Quantityint8数量4.操作类型表OPST列名数据类型长度允许空默认值说明opeTypeIDchar8操作类型编码opeTypeNavarchar20操作类型名称5.库存记录主表MSTOCK列名数据类型长度允许空默认值说明Codechar8单据号opeTypeIDchar8操作类型vouchTypechar8单据类型whIDchar8仓库编号Departchar20所属部门Clerkvarchar20NULL业务员Operatorvarchar20操作员opTimedatetime8时间Vendorvarchar20NULL供应商Customervarchar20NULL客户Summdouble10合计金额orderCodechar8NULL定货单号receiveCodechar8NULL收货单号invoiceCodechar8发票号dispatchCodechar8NULL发货单号Memovarchar100NULL备注6.库存记录明细表STOCK列名数据类型长度允许空默认值说明Codechar8单据号goodsIDchar8货物编号Unitchar8计量单位Pricedouble8货物单价Quantityint8货物数量7.盘点表MCHECK列名数据类型长度允许空默认值说明CVCodechar8盘点单号CheckDatedatetime8盘点日期checkPersonvarchar20盘点人whIDchar8仓库编号Opprovervarchar20批准人Makervarchar20制单人8.盘点明细表CHECKVOUCHS列名数据类型长度允许空默认值说明CVCodechar8盘点单号goodsIDchar8货物编号bookQuantityint8帐面数量actQuantityint8实际数量checkDatedatetime8盘点日期adjQuantityint8调整数量actualWastedouble8实际损耗率allowWastedouble8合理损耗率Reasonvarchar100NULL损耗原因9.计量单位表UNIT列名数量类型长度允许空默认值说明unitIDchar8计量单位编号unitNamevarchar8计量单位名称10.部门表DEPT列名数量类型长度允许空默认值说明deptCodechar8部门编号deptNamevarchar20部门名称Depacint8NULL总人数11.员工表EMP列名数量类型长度允许空默认值说明empCodechar8员工号empNamevarchar20员工姓名empSexchar2NULL性别Passwordvarchar20‘123密码empTelvarchar15联系方式Memovarchar100NULL备注12.移库表MOVESTOCK列名数量类型长度允许空默认值说明autoidint8记录号goodesidvarchar20货物编号sourcechar20源仓库targetchar20目的仓库unitchar20计量单位quantityint8数量opDatedatetime8NULL移库时间operatorvarchar20NULL操作员五、系统界面与功能实现此系统是基于JAVAEE的库存管理系统。它主要包括三大模块,基础数据、库存操作还有帮助。基础数据用于设计一些基础项目,库存操作是对应的入库出库一类对库存所作的操作,帮助是对整个系统的简单介绍。此系统是以MyEclipse6.0为平台,在Struts1.2框架上用JSP页面来实现的一个库存管理。5.1页面流程图图(一)图(二)图(三)5.2创建系统登陆模块5.2用户通过此登陆模块,可登陆到系统的内部,从而进行所需的操作。同时,它能用来校验用户是否属于该部门,是即应有对应的工号跟密码,不是便不能登陆进入。设计登陆窗口userLogin.jsp:实现用户登陆在struts-config.xml中新建此页面后,建form跟action,同时建立转向,便会在它的source里建对应的form跟forward以与action:<form-beanname="userLoginForm"type="edu.cec.web.struts.form.UserLoginForm"/><forwardname="userLogin"path="/userLogin.jsp"/><actionattribute="userLoginForm"input="/userLogin.jsp"name="userLoginForm"path="/userLogin"scope="request"type="edu.cec.web.struts.action.UserLoginAction"><forwardname="failed"path="/userLogin.jsp"/><forwardname="success"path="/index.jsp"/></action>5.3创建主窗口模块5.3.1主窗口模块,是一个容器式的窗体,它包容了系统的所有分模块,系统运行时,在里面操作。5.4仓库人员管理模块5.4.此模块是用于管理此部门人员的,由增加用户跟查询用户构成。增加的是此部门新进人员的资料,查询是用来显示他们的最基本信息的。5.5入库模块的实现5.5.当某种已有物品进货后,就需要在此输入库存记录信息,并同时输入相应货物入库信息,并加入到库存中。5.6出库模块的实现5.6.1当库存中某种需要出库的时候,就需要在此输入库存记录信息,并同时输入相应货物出库信息,并保存到相应数据表中。5.7移库模块的实现5.7.1当某个仓库内在不足,或者两个库存均有某一商品,并且其中一个仓库有足够空间存储所有的时候,便要进行移库操作。并将操作的过程放置到对应的数据表中。5.8盘点模块的实现5.8.1当每个月的盘点时间到后,需要对数据库中的货物数量跟实际的相比对,如果数量不对就要查清原因,并进行相应处理。以使货物信息明了。5.9仓库设置模块的实现5.9.当新增加仓库时,在这里输入即可将新增的仓库信息保存到数据库。5.10计量单位设置模块的实现5.10.1当新增加计量单位时,在这里输入即可将新增的计量单位信息保存到数据库。5.11部门信息设置模块的实现5.11.1当新增加部门时,在这里输入即可将新增的部门信息保存到数据库。5.12操作类型设置模块的实现5.12.1当新增加操作类型时,在这里输入即可将新增的部门信息保存到数据库。5.13期初设置模块的实现5.13.1用于设置货物存储的一些信息的。与入出库等操作均有关。5.14货物存储信息查询模块的实现5.14.1用于查询货物存储表里的信息,即在入出库后对应的操作的部分展示。如果某货物在此表中不存在,也就不存在其它对此货物的库存操作。5.15帮助模块的实现5.15.是对系统内各个模块的功能与操作流程的描述。让刚进入的用户能很快掌握此系统。六、Hibernate的设计 6.1Hibernate简介 Hibernate是非常优秀、成熟的ORMapping框架,它提供了强大的对象和关系数据库映射以与查询功能。它的主要功能就是操作数据库(以对象的形式操作数据库)。操作数据库使用SQL语句。通过一个类的操作来代表数据库中的操作,就是用类的方法来代替SQL语句。只注重类的设计,把SQL语句隐藏起来。映射关系: 数据库定义HBM映射POJO类数据库定义HBM映射POJO类 POJO类:POJO在Hibernate语义中理解为数据库表所对应的DomainObject。这里的POJO就是所谓的“PlainOrdinaryJavaObject”,字面上来讲就是无格式普通Java对象,简单的可以理解为一个不包含逻辑代码的值对象(ValueObject简称VO)。POJO类中只包含setter和getter方法类。 HBM映射:描述类和表之间的关系。6.2Hibernate生成 6. 6.3Hibernate的映射文件和类的生成6. 以cangkums数据库中的表为checkvouchs列子 在连接好的窗口中找到cangkums中的表checkvouchs。把表checkvouchs拖到Hibernate.cfg.xml页面的Mappings窗口中, NEXT——》NEXT——》 主键选择assigned,assignde的意思是由用户自行管理。注意:就是类名一般和表名一致,但是类名第一个字母要大写,好区分类名和表名。Hibernate.cfg.xml对Hibernate环境配置的,包括使用数据库式数据源。<hibernate-configuration> <session-factory> <propertyname="connection.username">root</property> <propertyname="connection.url"> jdbc:mysql://localhost:3306/cangkums?useUnicode=true&characterEncoding=GBK </property> <propertyname="dialect"> org.hibernate.dialect.MySQLDialect </property> <propertyname="file"> local_mysql </property> <propertyname="connection.driver_class"> com.mysql.jdbc.Driver </property> <propertyname="connection.password"></property> <mappingresource="Dept.hbm.xml"/> <mappingresource="EMP.hbm.xml"/> <mappingresource="Gdmess.hbm.xml"/> <mappingresource="Gdst.hbm.xml"/> <mappingresource="Mcheck.hbm.xml"/> <mappingresource="Mstock.hbm.xml"/> <mappingresource="Opst.hbm.xml"/> <mappingresource="Stock.hbm.xml"/> <mappingresource="WH.hbm.xml"/> <mappingresource="Checkvouchs.hbm.xml"/> <mappingresource="Unit.hbm.xml"/> <mappingresource="Movestock.hbm.xml"/> </session-factory></hibernate-configuration>最后生成checkvouchs.hbm.xml、checkvouchs.java、checkvouchsDAO.java、checkvouchsID.java、AbstractCheckvouchs.java、AbstractCheckvouchsId.java文件。checkvouchs.hbm.xml是描述类和表之间关系的文件<hibernate-mapping><classname="edu.cec.hibernate.Checkvouchs"table="checkvouchs"catalog="cangkums"><composite-idname="id"class="edu.cec.hibernate.CheckvouchsId"><key-propertyname="cvCode"type="java.lang.String"><columnname="cvCode"length="8"/></key-property><key-propertyname="goodsId"type="java.lang.String"><columnname="goodsID"length="8"/></key-property></composite-id><propertyname="bookQuantity"type="java.lang.Integer"><columnname="bookQuantity"not-null="true"/></property><propertyname="actQuantity"type="java.lang.Integer"><columnname="actQuantity"not-null="true"/></property><propertyname="checkDate"type="java.util.Date"><columnname="checkDate"length="19"not-null="true"/></property><propertyname="adjQuantity"type="java.lang.Integer"><columnname="adjQuantity"/></property><propertyname="actuallWaste"type="java.lang.Double"><columnname="actuallWaste"precision="22"scale="0"/></property><propertyname="allowWaste"type="java.lang.Double"><columnname="allowWaste"precision="22"scale="0"/></property><propertyname="reason"type="java.lang.String"><columnname="reason"length="100"/></property></class></hibernate-mapping>6.3AbstractCheckvouchs.java生成的POJO类。publicabstractclassAbstractCheckvouchsimplementsjava.io.Serializable{ //Fields privateCheckvouchsIdid; privateIntegerbookQuantity; privateIntegeractQuantity; privateDatecheckDate; privateIntegeradjQuantity; privateDoubleactuallWaste; privateDoubleallowWaste; privateStringreason; //Constructors /**defaultconstructor*/ publicAbstractCheckvouchs(){ } /**minimalconstructor*/ publicAbstractCheckvouchs(CheckvouchsIdid,IntegerbookQuantity, IntegeractQuantity,DatecheckDate){ this.id=id; this.bookQuantity=bookQuantity; this.actQuantity=actQuantity; this.checkDate=checkDate; } /**fullconstructor*/ publicAbstractCheckvouchs(CheckvouchsIdid,IntegerbookQuantity, IntegeractQuantity,DatecheckDate,IntegeradjQuantity, DoubleactuallWaste,DoubleallowWaste,Stringreason){ this.id=id; this.bookQuantity=bookQuantity; this.actQuantity=actQuantity; this.checkDate=checkDate; this.adjQuantity=adjQuantity; this.actuallWaste=actuallWaste; this.allowWaste=allowWaste; this.reason=reason; } //Propertyaccessors publicCheckvouchsIdgetId(){ returnthis.id; } publicvoidsetId(CheckvouchsIdid){ this.id=id; } publicIntegergetBookQuantity(){ returnthis.bookQuantity; } publicvoidsetBookQuantity(IntegerbookQuantity){ this.bookQuantity=bookQuantity; } publicIntegergetActQuantity(){ returnthis.actQuantity; } publicvoidsetActQuantity(IntegeractQuantity){ this.actQuantity=actQuantity; } publicDategetCheckDate(){ returnthis.checkDate; } publicvoidsetCheckDate(DatecheckDate){ this.checkDate=checkDate; } publicIntegergetAdjQuantity(){ returnthis.adjQuantity; } publicvoidsetAdjQuantity(IntegeradjQuantity){ this.adjQuantity=adjQuantity; } publicDoublegetActuallWaste(){ returnthis.actuallWaste; } publicvoidsetActuallWaste(DoubleactuallWaste){ this.actuallWaste=actuallWaste; } publicDoublegetAllowWaste(){ returnthis.allowWaste; } publicvoidsetAllowWaste(DoubleallowWaste){ this.allowWaste=allowWaste; } publicStringgetReason(){ returnthis.reason; } publicvoidsetReason(Stringreason){ this.reason=reason; }}AbstractCheckvouchsId.javapublicabstractclassAbstractCheckvouchsIdimplementsjava.io.Serializable{ //Fields privateStringcvCode; privateStringgoodsId; //Constructors /**defaultconstructor*/ publicAbstractCheckvouchsId(){ } /**fullconstructor*/ publicAbstractCheckvouchsId(StringcvCode,StringgoodsId){ this.cvCode=cvCode; this.goodsId=goodsId; } //Propertyaccessors publicStringgetCvCode(){ returnthis.cvCode; } publicvoidsetCvCode(StringcvCode){ this.cvCode=cvCode; } publicStringgetGoodsId(){ returnthis.goodsId; } publicvoidsetGoodsId(StringgoodsId){ this.goodsId=goodsId; } publicbooleanequals(Objectother){ if((this==other)) returntrue; if((other==null)) returnfalse; if(!(otherinstanceofAbstractCheckvouchsId)) returnfalse; AbstractCheckvouchsIdcastOther=(AbstractCheckvouchsId)other; return((this.getCvCode()==castOther.getCvCode())||(this .getCvCode()!=null &&castOther.getCvCode()!=null&&this.getCvCode().equals( castOther.getCvCode()))) &&(this.getGoodsId()==castOther.getGoodsId())||(this.getGoodsId()!=null&castOther.getGoodsId()!=null&&this.getGoodsId() .equals(castOther.getGoodsId()))); } publicinthashCode(){ intresult=17; result=37*result +(getCvCode()==null?0:this.getCvCode().hashCode()); result=37*result +(getGoodsId()==null?0:this.getGoodsId().hashCode()); returnresult; }}checkvouchs.javapackageedu.cec.hibernate;importjava.util.Date;/***Checkvouchsentity.**@authorMyEclipsePersistenceTools*/publicclassCheckvouchsextendsAbstractCheckvouchsimplements java.io.Serializable{ //Constructors /**defaultconstructor*/ publicCheckvouchs(){ } /**minimalconstructor*/ publicCheckvouchs(CheckvouchsIdid,IntegerbookQuantity,IntegeractQuantity,DatecheckDate){ super(id,bookQuantity,actQuantity,checkDate); } /**fullconstructor*/ publicCheckvouchs(CheckvouchsIdid,IntegerbookQuantity,IntegeractQuantity,DatecheckDate,IntegeradjQuantity,DoubleactuallWaste,DoubleallowWaste,Stringreason){ super(id,bookQuantity,actQuantity,checkDate,adjQuantity,actuallWaste,allowWaste,reason); }}checkvouchsDAO.java生成了一些方法如:publicclassCheckvouchsDAOextendsBaseHibernateDAO{privatestaticfinalLoglog=LogFactory.getLog(CheckvouchsDAO.class); publicvoidsave(CheckvouchstransientInstance){ log.debug("savingCheckvouchsinstance"); try{ getSession().save(transientInstance); log.debug("savesuccessful"); }catch(RuntimeExceptionre){ log.error("savefailed",re); throwre; } } publicvoiddelete(CheckvouchspersistentInstance){ log.debug("deletingCheckvouchsinstance"); try{ getSession().delete(persistentInstance); log.debug("deletesuccessful"); }catch(RuntimeExceptionre){ log.error("deletefailed",re); throwre; } } publi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 隧道窑课程设计与环境
- 非标设备课程设计
- 电网课程设计题目
- 课程设计题目圆垫圈
- 城市垃圾课程设计
- 项目管理课程设计项目
- 迎春花课程设计
- 税法与实务课程设计
- 幼儿园雪崩主题课程设计
- 2024-2025年度幼儿园教师课程设计培训计划
- 山东省潍坊市2024-2025学年高三上学期期末 地理试题(无答案)
- 劳动法培训课件
- 2024年建筑施工安全工作计划(3篇)
- 2024届九省联考英语试题(含答案解析、MP3及录音稿)
- 仓库消防知识安全培训
- 从事专业与所学专业不一致专业技术人员申报职称岗位任职合格证明附件6
- 我国房屋建筑模板技术的研究综述
- 人教版小学三年级上册数学竖式笔算练习题
- 航天科工集团在线测评题
- 山东省潍坊新2025届高三语文第一学期期末经典试题含解析
- 医院三基考核试题(康复理疗科)
评论
0/150
提交评论