基于WEB的智能仓库管理系统.doc

上传人:xin****828 文档编号:6669948 上传时间:2020-03-02 格式:DOC 页数:48 大小:1.09MB
返回 下载 相关 举报
基于WEB的智能仓库管理系统.doc_第1页
第1页 / 共48页
基于WEB的智能仓库管理系统.doc_第2页
第2页 / 共48页
基于WEB的智能仓库管理系统.doc_第3页
第3页 / 共48页
点击查看更多>>
资源描述
毕业设计报告(论文)题目: 基于web的智能仓库管理系统基于web的智能仓库管理系统摘 要本系统主要完成对仓库的库存管理,包括入库、出库、库存,员工信息,供应商信息以及密码管理等六个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。 本系统由四大模块构成,分别是:系统设置,单据填开,库存查询,报表导出。其中系统设置包括:管理员的增加,修改,删除,以及权限管理;仓库内货物的基本资料的增加,修改,删除;工人,客户等的基本资料的增加,修改,删除。单据填开模块包括:出库单,入库单,派工单,等单据的填开及作废操作。库存查询系统包括:库存情况的查询,各项明细的查询,工人工资的查询,以及按月,按季度,按年的报表导出功能。 该系统是对仓库的智能管理,并进行相应的采购管理、入库管理、出库管理、报表管理等一些仓库方面的管理。关键字:数据库 SQL语言 MyEclipse 数据库组件 仓库管理Intelligent Database SystemAbstractThesystemmainlyreferstowarehousingmanagement,whichincludesthefollowingfields:stockinandout,inventory,staffdata,suppliersdataandpasswordmanagement.Italsooffersthefunctionsasdatabrowse,adding,deleting,modificationandreport,etc.Itcontains3modules,systemmanagement,receiptsmanagementandinventoryquery.Systemmanagementmoduleisusedtoconductoperateradding,modification,deletingandauthoirtiesassignment,inaddition,inventory,staffandcustomerdataadding,modificationanddeleting;thesecondpartreferstostockinandout,receiptsfill-inandcancellation;thelastmodulecontendstowarehousingquery,staffsalaryquery,monthly,quarterly,yearlyreportqueryandexport.Asstatedpreviously,thesystemisanintelligentwarehousingmanagementsolution,whichincludes:purchasingmanagement,stockinandoutmanagement,reportmanagement,etc.Key words: database; SQL; Eclipse;Database module; Database management目 录第一章前 言11.1背景情况介绍11.2 系统整体设计2第二章 系统的总体设计32.1 模块32.1.1 模块划分32.1.2 功能概述32.2 实现技术62.2.1 jsp-extjs62.2.2 javabean及Hibernate62.2.3 Struts2、MVC和Spring72.2.4数据库MySQL102.2.5开发工具MyEclipse7.112第三章 系统分析133.1 可行性分析133.1.1 技术可行性133.1.2 运行可行性133.2 系统流程分析143.2.1 操作员登记(Operator表)143.2.2 系统登陆143.2.3 原料类型设置(material表等)153.2.4 原料(成品)入库(materialturnover表等)153.2.5 原料(成品)出库(materialturnover表等)153.2.6 派工单(working表等)163.2.7 单据作废163.2.8 明细查询163.2.9 报表导出17第四章 算法描述184.1 数据结构184.1.1 表结构设计184.1.3 程序结构图204.2 系统流程图224.2.1 原料入库224.2.2 原料出库224.2.3 成品入库234.2.4 成品出库234.2.5 派工单244.3 部分实现算法244.3.1 权限算法244.3.2 分页算法244.3.3 验证算法254.3.4 预警算法254.4 算法分析254.4.1 正确性254.4.2 可读性254.4.3 健壮性254.4.4 效率与低存储量需求25第五章 系统实现265.1 前台jsp-extjs265.1.1 设计与实现思路265.1.2 实现部分275.1.3 代码部分305.2 javabean及Hibernate325.2.1 设计思路325.2.2 实现部分325.2.3 代码部分335.3 Struts2、MVC和Spring355.3.1 设计与实现思路355.3.2 代码部分355.4 数据库MySQL395.4.1 设计及实现思路395.4.2 代码部分395.5 开发工具MyEclipse7.1395.5.1 工具选择395.5.2 界面截图40第六章 测试及性能分析416.1 测试416.1.1 测试用例416.1.2 测试结果416.2 性能分析42第七章 结束语43致 谢44参考文献45第一章 前 言1.1 背景情况介绍这是一个互联网的时代,所有企业都面临着互联网浪潮的强力冲击,电子商务无论从技术实现还是社会大背景都日益成熟。企业对企业之间的信息化如何解决?企业电子商务如何实现?这些都是摆在企业企业管理者和信息部门负责人面前实实在在的问题。借助于信息技术手段的创新,规范业务流程,强化仓库管理,对于企业信息化来说是一次良好契机。在计算机的应用日益普及的今天,在计算机软件渐渐成为生活一部分的时代,在现代企业仓库物流需要电子化管理的现在,一个基于web的智能仓库管理系统呼之欲出。这个系统,既可以减轻仓库管理员的工作负担,又能企业更好的掌握库存情况,及时调整营销战略,取得更大利益。智能仓库管理系统,是当代企业运作体系中,不可或缺的一部分,也是整个企业管理软件家族中,举足轻重的一员。从70年代开始,计算机技术开始应用到物流领域。 随着物流市场和物流信息化的发展,物流软件市场也应运而生并迅速发展起来,国内外出现了一大批物流软件供应商和物流软件。“物流软件作为管理软件,较其它应用软件呈现先进性、高效性、可靠性和安全性等特点;较其它管理软件,如ERP(Enterprise Resource Planning),具有以下特点:实施风险小,实施迅速;效益显著、见效快。根据仓库管理软件结构分类,就目前仓库管理软件所使用的应用范围来说,仓库管理包括如下几个子系统:WMS(Warehouse Management System,仓库管理系统)、TMS(Transportation Management System,运输管理系统。OMS(Order Management System,定单管理系统)、SMS(Service Management System,服务管理系统)。其中,WMS主要提供了一整套仓库业务以及作业管理系统。通过仓库管理系统可以实现库位分配自动化和智能化;提高仓库作业效率和速度,提供准确的库存信息,并使之与实际库存变化同步。在研究过程中,我发现,国内及国外对于仓库的管理系统软件不在少数,但是具备智能化的就寥寥无几,有些仓库管理软件功能强大,但不实用;有些实用,但是软件界面不够友好;有些界面华丽,但是性能不够稳定。所以,现实应用需要编写一套,实用,界面友好,性能稳定的智能仓库管理系统。操作本系统的客户并不是专业的计算机从业人员,他们对于软件的初步认识就是,外观,所以,我在jsp技术上选择了比较动态,美观大方的extjs系统架构,该架构对于用户的提示友好,性能强大,动态性好,充分满足前台页面的实际需求。而一款软件有一件漂亮的外衣还是不够的,他还需要强大的内心,这个内心就是Spring,他的骨架就是Struts2,他的血液就是Hibernate。这样组成的软件才能成为一款优秀的智能仓库管理系统。1.2 系统整体设计本文主要对智能仓库管理系统整个开发过程和开发方式做大体的介绍。该系统主要采用MVC 模式把系统分成view层,model层,control层,视图层采用AJAX的EXTJS框架,模型层使用了JAVABEAN,控制层采用了Spring+Struts2。本系统是基于WEB的B/S架构,动态性能比较高,而且采用了AJAX-EXTJS+JSP+JAVABEAN+Spring+Struts2+Hibernate技术,数据库采用MySql5.5进行开发的。智能仓库管理系统的核心是入库、库存和出库三者之间的联系,每一个表的修改都将联动的影响其它的表,当完成入库或出库操作时系统会自动地完成库存的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。第二章 系统的总体设计2.1 模块2.1.1 模块划分本系统由四大模块构成,分别是:系统设置,单据填开,库存查询,报表导出。其中:系统设置包括:管理员的增加,修改,删除,以及权限管理;仓库内货物的基本资料的增加,修改,删除;工人,客户等的基本资料的增加,修改,删除。单据填开模块包括:出库单,入库单,派工单,等单据的填开及作废操作。库存查询系统包括:库存情况的查询,各项明细的查询,工人工资的查询,正在加工产品查询等。报表导出模块包括:按月,按季度,按年的报表导出功能。2.1.2 功能概述系统功能划分和描述如下(如图2-1所示):A.系统设置A.1操作员管理 A.2工资标准管理A.3原料类型管理 A.4成品类型管理A.5工人资料设置 A.6客户资料管理B单据填开B.1原料入库单 B.2原料出库单B.3成品入库单 B.4成品出库单(送货单)B.5派工单 B.6单据作废C明细查询C.1原料库存查询 C.2成品库存查询C.3原料出入明细查询 C.4成品出入明细查询C.5工人工资查询 C.6正在加工产品查询D报表导出D.1原料库存月报表 D.2原料库存季报表D.3原料库存年报表 D.4成品库存月报表D.5成品库存季报表 D.6成品库存年报表D.7工人工资月报表统首先进入登录界面,登录时系统会根据登陆的账号自动确认用户所拥有的权限。登录成功后,根据不同的目的进行不同的操作,超级管理员能操作所有的功能,一般管理员能操作除权限管理外的功能,采购员能操作查看和入库功能,出库员能操作查看和出库的功能,一般观察者只能操作查看功能。系统设置单据填开明细查询报表导出基于web智能仓库管理系统操作员管理工资标准设置原料类型设置成品类型设置工人资料设置客户资料设置原料库存月报原料库存季报原料库存年表成品库存月报成品库存季报成品库存年报工人工资月报原料入库单原料出库单成品入库单成品出库单派工单单据作废原料库存查询成品库存查询原料进出查询成品进出查询工人工资查询正在加工查询图2-1系统结构连接图2.2 实现技术2.2.1 jsp-extjsJSP(Java Server Pages)是由Sun Microsystems 公司倡导、多家公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展。3JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。 ext是一个强大的js类库,以前是基于YAHOO-UI,现在已经完全独立了,主要包括data,widget,form,grid,dd,menu,其中最强大的是grid了,编程思想是基于面向对象编程(oop),扩展性相当的好。可以自己写扩展。自己定义命名空间.web应用可能类库太大。不过您可以根据需要按需加载您想要的类库就可以了。主要包括三个大的文件ext-all.css,ext-base.js,ext-all.js(包括所有的类库,您可以根据需要进行删减。官方网站提供这一接口),在引用ext类库的时候。这三个文件必不可少。它提供了丰富的,非常漂亮的外观体验,成为众多界面层开发人员的追捧!其核心的组件基本覆盖了我们构建富客户端的常用的组件。2.2.2 javabean及HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。4Hibernate对象关系映射提供延迟的与非延迟的对象初始化。非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。这有时会导致成百的(如果不是成千的话)select语句在读取对象的时候执行。这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了。当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因此失去了本想在ORM工具中获得的便利。2.2.3 Struts2、MVC和Spring模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。5MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。很多VB,Delphi等RAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。6 CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。直到基于J2EE的JSP Model 2问世时才得以改观。7 它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能JSP Model 1 与 JSP Model 2。如图2-2所示:图2-2 MVC组件模型的关系和功能图图2-3 Struts2流程示意图当接收到一个httprequest请求时, Interceptor会做一些拦截或者初始化的工作。当外部的httpservletrequest请求到来时,它会被初始到servlet容器中, 并传递给一个标准的过滤器链,而ActionContextCleanUp在集成插件方面非常有用。Other filters(SitMesh,etc)调用FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper,它将会将控制权限交给ActionProxy。ActionProxy将会通过ConfigurationManager来查找配置struts.xml。下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前),一旦action返回,会查找相应的Result。Result类型可以是 jsp或者freeMark 等。这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序)响应的返回是通过我们在web.xml中配置的过滤器,如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocalActionContext,如果ActionContextCleanUp不使用,则将会去清理sreadlocals。如图5-9所示。8Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 2轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。2.2.4数据库MySQL1.使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 3.为多种编程语言提供了API。这些编程语言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 4.支持多线程,充分利用CPU资源 5.优化的SQL查询算法,有效地提高查询速度 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 8.提供用于管理、检查、优化数据库操作的管理工具 9.可以处理拥有上千万条记录的大型数据库(1)减少数据的重复(Redundancy can be reduced)当在一个非数据库系统当中,每一个应用程序都有属于他们自己的文件,由于无法有系统建立的数据,因此常常会造成存储数据的重复与浪费。例如:在一家公司当中,人事管理程序与工资管理程序或许都会使用到职员与部门的信息或文件,而我们可以运用数据库的方法,把这两个文件整理起来,以减少多余的数据,过度地占用存储空间。(2)避免数据的不一致(Inconsistency can avoid)本项的特色,可以说是延伸前项的一个特点,要说明这样的一个现象,我们可以从下面这个实例来看:若是在同一家公司当中,职员甲在策划部门工作,且职员甲的记录同时被存放在数据库的两个地方,而数据库管理系统却没有对这样重要的情况加以控制,当其中一条数据库被修改时,便会造成数据的不一致,但是,对于一个健全的数据库管理系统而言,将会对这样的情况加以控制,但有时并不需要刻意消除这种情形,应当视该数据库的需求与效率来决定。 (3)数据共享(Data shared)对于数据共享的意义,并不是只有针对数据库设计的应用程序,可以使用数据库中的数据,对于其他撰写好的应用程序,同样可以对相同数据库当中的数据进行处理,进而达到数据共享的目的。(4)强化数据的标准化(Standard can be enforced)由数据库管理系统,对数据做出统筹性的管理,对于数据的格式与一些存储上的标准进行控制,如此一来,对于不同的环境的数据交换(Data Interchange)上将有很大的帮助,也能提高数据处理的效率。(5)实践安全性的管理(Security restriction can be applied)通过对数据库完整的权限控制,数据库管理者可以确认所有可供用户存取数据的合法途径渠道,并且可以事先对一些较重要或关键性的数据进行安全检查,以确保数据存取时,能够将任何不当损毁的情形降至最低。(6)完整性的维护(Integrity can be maintained)所谓完整性的问题,就是要确认某条数据在数据库当中,是正确无误的。正如(2)所述,若是无法控制数据的不一致性,便会产生完整性不足的问题,所以,我们会发现,当数据重复性高的时候,数据不完整的情形也会增加,当然,若是数据库的功能完整,将会大大地提高数据完整性,也会增加数据库的维护能力与维护简便性。(7)需求冲突会获得平衡(Conflicting requirements can be balance)在一个较大型的企业当中,用户不同的需求,往往会造成系统或数据库在设计上的困扰,但是一个合适的数据库系统,可以通过数据库管理员的管理,将会有效地整理各方面的信息,对于一些较重要的应用程序,可以适时地提供较快速的数据存取方法与格式,以平衡多个用户在需求上的冲突。92.2.5开发工具MyEclipse7.1MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。 在结构上,MyEclipse的特征可以被分为7类: 1. JavaEE模型 2. WEB开发工具 3. EJB开发工具 4. 应用程序服务器的连接器 5. JavaEE项目部署服务 6. 数据库服务 7. MyEclipse整合帮助 对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。10 简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。第三章 系统分析3.1 可行性分析3.1.1 技术可行性1.java是种跨平台的语言,具有多种优势,其面向对象的特点非常符合本系统的要求,所以选择java作为开发语言。2.同时,B/S架构很好的解决了客户端的问题,用户只要有浏览器就能使用该系统,不需要进行升级(浏览器版本升级除外),所有业务功能均由服务器完成。3.在局域网中可以联动,同时兼具安全性。4.Hibernate对JDBC的封装是十分到位的,由于本系统对于数据的批量处理要求不是特别的高,而对多表联动查询有较高需求,Hibernate的延迟加载功能非常符合系统要求。15.Mysql是一个经过大多数用户认可的可靠的数据库,其性能完全能够满足本系统的设计需求,其免费的特性,使得系统的版权问题得以解决。6.Spring+ struts2的模式架构,是稳定,安全,高效的,配置方便,以后系统维护与升级留有更大空间,是本系统的不二选择。27.MyEclipse作为一款强大的开发软件,已经成熟,并且得到业界承认,是开发系统时,不可或缺的重要工具。综上所述,本系统采用java作为开发平台,使用MyEclipse作为开发工具,采用B/S作为架构,Mysql作为数据库,所用技术有:Hibernate,Spring ,struts2。3.1.2 运行可行性本系统对于系统的要求不是非常高,一般企业的pc机完全可以自由使用本软件,故,运行可行性非常高。用户界面:本系统完全使用AJAX的EXTJS设计界面,使界面与桌面系统基本一致用户上手十分容易。1) 硬件接口:本系统不需要硬件接口进行支撑。2) 软件接口:本系统运用Myeclipse+ Dreamweaver+Spket+Tomcat服务器开发,在Windows操作平台下运行。3) 故障处理:a) 内部故障处理:在开发阶段可以随即修改数据库里的相应内容。b)外部故障处理:对编辑的程序进行重装时,第一次装载认为错,修改,第二次,在需求调用时出错,有错误提示,重试。3.2 系统流程分析以下是对仓库管理系统基本功能的说明,它们将作为后面软件功能模块创建的基本依据。3.2.1 操作员登记(Operator表)功能用途:登记或设置工作人员的身份标识、密码、操作权限等个人信息。操作权归属:拥有系统设置权限的操作员。主要数据: 操作员ID、姓名、密码、权限、备注等内容。基本操作:添加记录、删除记录、更新数据、设置权限。所在位置:系统设置模块。其他说明:拥有该权限的操作员可以修改登陆名和密码及权限,但是操作员ID将不能修改,因为操作员ID为主键,对应数据库表Operator。权限限制为0-15的整数。详细权限算法将在第四章描述。3.2.2 系统登陆功能用途:系统安全通道。这是信息系统最常使用的安全防范机制。操作权归属:需要进入系统的所有人员。输入数据:用户名、密码。返回数据:权限。内部操作数据:判断输入数据的合法性。基本操作:登录信息输入、确定登录、取消登录。所在位置:系统启动过程中的系统登录对话框。其他说明:系统登录的过程也就是对工作人员是否进行过合法登记,而进行的身份验证的过程。由此可以防止非法用户进入系统。3.2.3 原料类型设置(material表等)功能用途:登记或设置原料类别标识、说明。使原料能够分类管理,以方便物品的检索。操作权归属:拥有系统设置权限的操作员。输入数据:原料ID、原料名称、原料类型、说明等内容。基本操作:添加记录、删除记录、更新数据。所在位置:系统设置模块。其他说明:原料类型的设置,可以对原料进行一定的修改。 (成品类型设置,工人工资设置,客户资料设置,工资标准设置与原料类型设置类似,在此不再赘述)3.2.4 原料(成品)入库(materialturnover表等)功能用途:进行原料(成品)入库处理操作。操作权归属:具有单据填开权限的操作员显示数据:单据号、原料(成品)名称、单价、说明、库存量等。输入数据:单据号、原料(成品)名称、单价、客户名称、说明等。基本操作:启动原料(成品)入库处理。所在位置:单据填开模块其他说明:成品入库可能为两种情况:生产成功直接进入成品库,另一种是采购成品进行入库。 3.2.5 原料(成品)出库(materialturnover表等)功能用途:进行原料(成品)出库处理操作。操作权归属:具有单据填开权限的操作员显示数据:单据号、原料(成品)名称、单价、说明、库存量等。输入数据:单据号、原料(成品)名称、单价、客户名称、说明等。基本操作:启动原料(成品)出库处理。所在位置:单据填开模块其他说明:需要判断库存是否满足要求,达到一定值时进行警告。这里没有运用页面判断,而是通过后台action进行判断,具体设计情况,见第五章。3.2.6 派工单(working表等)功能用途:进行派工单处理操作。操作权归属:具有单据填开权限的操作员显示数据:单据号、原料(成品)名称、单价、客户、工人、工资标准等。输入数据:单据号、原料(成品)名称、单价、客户、工人、工资标准等。基本操作:启动派工单处理。所在位置:单据填开模块其他说明:派工单是原料出库单及工人工作单的集合,进行完该操作后,进入正在加工环节,待加工完成后,原料转换为一定成品入成品库,为生产模式入库。 3.2.7 单据作废功能用途:进行单据作废处理操作。操作权归属:具有单据填开权限的操作员显示数据:单据号、原料(成品)名称、单价、说明、库存量等。输入数据:单据号。基本操作:启动单据作废处理。所在位置:单据填开模块其他说明:单据作废时将数据库中相应数据进行修改,并注意数据是否合法,如作废入库单时,库存是否满足数量等判断。 3.2.8 明细查询功能用途:查询原料与成品等具体情况。操作权归属:具有明细查询权限的操作员 主要数据:原料ID,原料类型,原料数量,出入库单据号等具体数据。 基本操作:通过树形搜索按所需要的值范围查询库存,明细等情况。所在位置:明细查询模块其他说明:本查询具有数据库设置主键索引,分页器效率高,查询采用模糊查询方式,并且采用参数形式进行搜索,防止js注入或sql注入入侵,提高系统安全性。 3.2.9 报表导出功能用途:汇总并导出相关信息。操作权归属:具有报表导出权限的操作员 输入数据:汇总日期范围、汇总方式。汇总数据:原料(成品)ID原料(成品)名称、进库量进库价值、出库量出库价值、单据信息等。基本操作:选取日期范围、汇总方式。所在位置:报表导出模块其他说明:汇总统计是一种含有更复杂计算的特殊查询操作。例如:求总和、求平均值等。为方便查看汇总结果,本系统考虑提供月报表、季报表,年报表等三种汇总结果显示方式。第四章 算法描述4.1 数据结构4.1.1 表结构设计图4-1 表结构1图4-2 表结构2表结构设计思路:1, 根据需求,确定每个对象的属性,及对象间关系,包括(1:1,1:N,M:N等)2, 考虑系统效率,修改表结构,使其满足第二,第三范式,追求效率与数据冗余量的最优化组合,同时设计索引的位置及个数。3, 将一个多对多关系拆分成两个一对多关系,设计中间表,设计主外键,在此需要说明的是,本系统并没有使用数据库的数据依赖,而是使用程序在进行操作时进行同步,这样做出于以下考虑:本系统并未完全修善完毕,时常需要修改表结构,使用数据库依赖会使修改表结构变得异常复杂,牵一发而动全身,而数据库依赖对于性能上消耗也比较多,对于部分适当提高效率的冗余无法处理,所以权衡再三,并没有对表关系进行数据库层依赖,而是依靠代码进行控制。4.1.3 程序结构图图4-6 jar包示意图如图4-6,本系统采用的java EE 5的主体框架,jdk版本是1.6版本,这个版本相对是目前比较稳定的jdk版本之一,图上所示是jre包,系Myeclipse自带,而扩展后使用的是jdk1.6版本。Hibernate版本则是3.2版,而本项目还使用了Hibernate的扩展包,使项目对数据库的操作更加灵活。SQL文件是用于存放sql脚本的文件,包括建表,表结构修改等一系列对数据库的操作。图4-7 jsp页面结构图及配置文件图如图4-7所示,css包用来存放css样式表文件,而image包用来存放系统图片,本系统采用的extjs2.0作为页面框架,Spring与Struts2作为整个系统框架,图上所示的.xml文件均为Spring系统配置文件,分别用来配置action,定时器,dao,服务,以及基本配置等信息。Spring拥有强大的自动注入bean的功能,在本项目及后期扩展时,表现出强大的控制能力。图4-8 整体结构图如图4-8所示,这部分是程序代码部分的展示。分为两大部分,base.common部分和mirrors.user部分组成,包含dao文件,dao实现文件,service接口文件,service实现文件,action文件,bean实体类文件(包含实体对应的hbm.xml映射文件),以及util工具包类。.properties文件则为配置文件,为以后系统进行国际化以及参数修改做准备。Struts.xml为struts的配置文件,主要用于配置action。4.2 系统流程图4.2.1 原料入库填写入库单 合法性判断 对数据库进行操作 返回结果1,判断输入是否合法2,若不合法,返回失败信息 3,合法,写入原料进出明细表 4,修改原料库数据 5,返回成功提示4.2.2 原料出库填写出库单 合法性判断 对数据库进行操作 返回结果1,判断输入是否合法2,若不合法,返回失败信息 3,合法,写入原料进出明细表 4,修改原料库数据 5,返回成功提示4.2.3 成品入库填写出库单 合法性判断 对数据库进行操作 返回结果1,判断输入是否合法2,若不合法,返回失败信息 3,合法,写入成品进出明细表 4,修改成品库数据 5,返回成功提示4.2.4 成品出库填写出库单 合法性判断 对数据库进行操作 返回结果1,判断输入是否合法2,若不合法,返回失败信息 3,合法,写入成品进出明细表 4,修改成品库数据 5,返回成功提示4.2.5 派工单填写派工单 合法性判断 对数据库进行操作 返回结果1,判断输入是否合法2,若不合法,返回失败信息 3,合法,写入原料进出明细表 及加工表 4,修改原料库数据 5,返回成功提示对于系统流程的设计,是基于需求,综合考量之后得出的,既满足了需求,又兼顾三层系统的灵活性,以及安全稳定性。4.3 部分实现算法4.3.1 权限算法本系统的权限算法是:模块1:1 模块2:2 模块3:4 模块4:8无权限则权限字段为0值,拥有的权限进行相加,最小为1,最大为15,如拥有模块1,3的权限的操作员,其权限值为1+4=5。在登陆时通过判断不同的权限数值,则可以判断该操作员所拥有的权限,这种算法利用了2的次方倍设置权限值,可以保证每种权限组合不重复,易判断。4.3.2 分页算法分页算法的核心是分批对数据库进行查询,并不一次性取出全部数据进入前台,通过max,pageZise等参数的设置,可以灵活设置其页数信息,通过rownum参数对数据进行查询。4.3.3 验证算法输入数据的合法性验证主要是通过正则表达式进行判断,在前台extjs界面有表单提交前判断,在后台写入数据库前也有一层数据类型长度等一系列判断。4.3.4 预警算法在系统中拥有定时器功能,可以在设定好的时间进行自动汇总运算,将数量不足的库存商品进行预警,提示用户进行补充,将出库量大数据进行显示,提示用户产品销售情况,充分提现系统智能性。4.4 算法分析4.4.1 正确性程序对于典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果。本程序在前台页面中就加入了大量数据合法性的判断,各种典型、苛刻而带有刁难性的数据都不能通过合法性验证,只有正确的数据方能进入后台进行处理,而为了保证程序的可移植性,在后台action处理数据之前,也加入了相应的正确性判断,这样做的好处是:如果有非法数据可以通过前台进入后台,亦可进行拦截,为后期webService接口调用方法也提供了正确性保障。4.4.2 可读性程序代码中包含大量中文注释,在对表,类,参数等数据进行命名时,严格遵照命名规则进行命名,使的程序可读性强,通过方法名及注释,可以容易的判断方法作用及实现方法。本程序代码格式规范,代码简洁易懂,为后期维护打下坚实基础。4.4.3 健壮性当输入数据非法时,能够适当地做出反应或者进行处理,而不会产生莫名其妙的结果,前台及action都会进行非法数据判断,当出现断电,数据库链接异常等无法控制异常时,程序使用了try catch方法,将异常类型反馈给客户,并不会报404或500错误在界面上。4.4.4 效率与低存储量需求 本程序在效率与低存储方面一直在寻找最优话结果,对于反复查询的数据,采用适当冗余方式,减少多表联立对性能的影响。而考虑到并发性需求,本程序限定只能打开三个面板,防止死锁等现象发生。数据锁方面,使用乐观锁进行处理。第五章 系统实现5.1 前台jsp-extjs5.1.1 设计与实现思路1,extjs技术选择extjs2.0作为系统前台实现部分的技术,主要原因是其界面美观,大方,动态效果华丽,是一套真正的ria开发框架,甚至可以实现桌面应用一样的强大功能。本身代码质量极高,而且是高度的面向对象设计。而jquery只是一个工具库,实现比较简单,相对容易。Extjs在功能强大的同时,其本身也过于庞大复杂,实现时代码相对复杂的多。经过对比,本系统选择了功能强大,实现部分较复杂的extjs框架。2,界面布局本系统采用如图5-6布局,分菜单栏和主界面。两个模块均能进行收放,动态性强,菜单则采用extjs的独特树型结构,灵活性高,安全性强。3,美工设计美工部分的设计采用extjs默认的标准蓝色作为主要界面颜色,同时本系统具有换皮肤颜色功能,可以将皮肤替换为各种其他效果,如图5-7。换肤功能的实现思想是通过点击换肤内容,触发换肤方法,将原先默认css样式表文件替换为新的样式表文件,同步刷新,皮肤效果更换成功。4,数据验证出于安全性及高效性考虑,本系统在前台录入数据时,加入网页验证,如图5-3,提示界面友好,没有使用常见的警告框方式,充分考虑用户感受。在进行删除等破坏性操作时,询问用户,进行确定,防止误删情况发生。5,表格设计在设计显示表格时,系统的表格显示动态性强,每列列宽可以自由移动,列的内容及顺序也可以自由调整,数据可以按每列进行升序及降序排列。这里需要说明的是,由于extjs默认的排序不支持拼音顺序的排序,本系统运用以下方法使系统支持按照拼音顺序对中文进行排序,如图5-1。图5-1 支持中文排序方法5.1.2 实现部分页面实现如下图:图5-2 登陆界面图5-3 错误提示信息图5-4 新增窗口图5-5 修改窗口图5-6 主界面图5-7 主界面更换皮肤图5-8 查询界面5.1.3 代码部分由于源代码过长,这里只是简要贴出主要代码,具体代码可见项目光盘中的源码区域。登陆界面代码如下: function login() loginForm.form.submit( clientValidation:true,/进行客户端验证 waitMsg:正在登录系统请稍后,/提示信息 waitTitle:提示,/标题 url:loginAction.action, method:GET,/请求方式 success:function(form,action)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!