本科计算机系毕设论文_第1页
本科计算机系毕设论文_第2页
本科计算机系毕设论文_第3页
本科计算机系毕设论文_第4页
本科计算机系毕设论文_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1.1研究背景物流管理包括生产过程的一系列物料移动以及产品和运输,物流管理作为供应链管理的重要组成部分,是集现代运输、信息网络、仓储管理、产品后道加工、营销策划等诸多业务技术门类于一体的一门多学科、多领域的综合管理学科。良好的物流管理可以大大降低企业的成本,物流领域甚至被称之为经济增长的“黑暗大陆”,是继劳动力、资源之后的第三利润源泉。早在20世纪六七十年代,物流在美国、日本、德国等发达国家就受到高度重视,特别是近年来随着计算机网络和通信技术的快速发展,有力地推进了物流系统的发展,基本上形成了自动化、信息化、智能化、规模化的现代物流模式。在我国,受经济等条件的制约,物流业起步较晚,目前仍处于规模较小、技术相对比较落后的局面,已经不能适应网络经济的发展。本论文所属的项目课题是:开发出一个物流管理系统,以便能够建立一个先进、高效、精细、灵活、开放、集成和安全的物流管理平台,为烟草现代物流体系建立良好的信息化基础,满足商业公司的物流管理对信息化的需求。而本论文的主要内容是物流管理系统中仓储管理模块的设计与实现。以前的仓库管理都是人的手工操作,入库和出库都是在账本上进行登记,这样不但耗费了大量的人力物力和财力,而且容易出错。并且现在的仓库作业和库存控制作业已十分多样化、复杂化,靠人工去记忆处理已十分困难。如果不能保证正确的进货、验收、质量保证及发货,就会导致浪费时间,产生库存,延迟交货,增加成本,以致失去为客户服务的机会。使用计算机控制的物流管理系统对仓库进行管理,既能节省人员开支,又不容易出现错误,能极大的提高劳动生产率。现代企业物流应具备的特点如下:(1)信息化电子商务下的物流系统存在三种信息流,即需求信息、供应信息、共享信息,物流信息化是电子商务的必然要求。这主要表现为物流信息的商品化、物流信息收集的数据化和代码化、物流信息处理的电子化、物流信息传递的标准化和实时化、物流信息存储的数字化等。(2)自动化美国、日本、德国等发达国家物流配送业发展起步早,自动化和信息化水平都很高,自动化立体仓库发展也比较成熟,基本上实现了存储自动化、识别条码化、管理计算机化。物流自动化的设施非常多,如条码/语音/射频自动识别系统、巷道堆垛机、自动分拣系统、自动导向车、货物自动跟踪系统、自动输送系统等,但在我国由于物流业起步较晚以及投资较低,物流自动化水平还相对比较落后(3)计算机网络化物流配送中心与供应商、生产商、下游客户等通过Internet网络有机地连接在一起,基于Web或EDI进行信息和数据交换。计算机网络化的发展为物流网络化提供了良好的外部环境,物流网络化是物流信息化的必然,是电子商务下物流活动的主要特征之一。(4)智能化物流管理是一项复杂的系统工程,物流作业过程涉及大量的运筹和决策问题,如最优库存水平的确定、存储货位的分配、巷道堆垛机和自动导向车的运行轨迹和作业控制、运输资源的优化配置、入出库物资的调度管理、货物的自动分拣技术、物流配送中心的经营管理与决策以及运送物资的货物跟踪技术等。(5)敏捷性“以客户为中心”是IT时代驾驭市场的根本,敏捷性是衡量企业竞争能力的一项重要指标,这就要求企业必须具备从原材料供应、生产过程、物料流动到产品配送的敏捷的物流系统。1.2研究目的与意义对于项目而言物流信息系统是现代物流系统的核心和灵魂,而且国家局关于行业现代物流建设的意见中也明确指出要以物流信息化带动物流现代化,因此,物流管理信息系统的设计目的也就是整个现代物流系统建设的目标,即“提高服务质量、提高物流效率、降低物流成本”。对于我个人而言我利用这次毕业设计的机会,认真设计。把大学四年来学到的内容尽量融入到毕业设计中。通过几个月来在东软公司的实习,以及项目经理和老师的指导下,让我掌握了以下几点:1.了解烟草物流-数字化仓储系统的流程;2.提高javaweb开发的能力;3.提高数据库开发的能力;4.深入理解框架结构的原理,达到熟练运用的目的5.理解了部门的开发环境以及开发工具和要求;6.培养团队合作的意识和能力。研究内容在我的毕业设计中,采用了Eclipse作为开发工具,和大家共同开发一套烟草物流信息系统的数字化仓储管理模块,此模块实现的是现实中出入货物的管理。即当货物要入库时,首先生成要生成一张入库单据,写有你要入库的货物信息,然后就要对你所要入库的货物进行储位分配,即给它一个储位进行存储,然后进入记账管理,进行确认,将货物录入库存表中。当出库时也会生成一张库存表,把你想要的货物和数据写出来,然后进入储位分配,查找是否有满足条件的货物的储位出货,找到后即可分配储位,然后进入记账管理,进行确认,修改库存表。所以整个系统分为个模块,登陆,菜单,入库单,入库上架(对应的储位分配),入库记账,出库单,出库下架(对应的储位分配),出库记账。而我主要负责登陆,入库单,出库下架,出库记账模块的开发。入库单模块就是入库单据的新建,修改,删除,查看的操作;出库下架模块就是对出示和已分配状态的出库单据进行的储位的分配(即出货的位置的分配)。出库记账就是对库存表的数量进行修改2相关技术概述及开发平台2.1网络架构B/S模式本系统中采用B/S结构B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)[1]。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。传统的两层C/S结构实际上是一种“胖客户机(FatClient)”,“瘦服务器(ThinServer)”的网络计算模式,而三层C/S结构则是一种“瘦客户机(ThinClient)”,“胖服务器(FatServer)”的网络计算模式。目前,流行的趋势是客户机应更“瘦”服务器更“胖”,有些三层C/S系统己实现了客户端的零代码编程,这就是基于www的数据库应用系统,它采用统一的浏览器作为用户界面,形成浏览器--Web服务器--数据库服务器的结构,这种结构就是通常所说的B/S结构,B/S结构是一种以Web技术为基础的新型的网络管理信息系统平台模式,B/S结构把传统两层C/S中的服务器部分分解为Web服务器和数据库服务器,从而构成一个三层结构的客户服务器体系。实质上,客户机与web服务器之间类似于终端和主机的模式,而web服务器与数据库服务器之间类似于C/S模式。图2.1显示出了B/S结构。用户用户WEB服务器数据库服务器图B/S结构图B/S结构的网络计算模式,可以用如下公式表示:B/S网络计算模式=多浏览器十单Web服务器十多数据库服务器+动态计算B/S模式的优点与不足相对两层C/S模式,B/S模式具有以下优点:1)开放的标准C/S所采用的标准只要在内部统一即可,它的应用往往是专用的。B/S所采用的TCP/1尸(TransferControlProtoCol/InternetProtocol,传输控制协议/网际协议)、HTTP(HyperTeXtTransferProrocol,超文本传输协议)等标准都是开放的、非专用的,是经过标准化组织所确定的而非单一厂商所制定,保证了其应用的通用性和跨平台性。同时,标准化使得B/S模式可直接接入Internet,具有良好的扩展性、伸缩性,可从不同厂家选择设备和服务。2)分布计算的基础结构多层的B/S应用可以更充分的利用系统资源,在大型的联机应用中,数据库面临的客户数量是非常庞大的,使用传统的客户/服务器模式可能根本无法胜任。例如,可能有上千客户机在同时运行,需要访问数据库。如果它们的请求都直接传递到数据库服务器上,就必须要有非常强大的硬件支持。通过中间层的缓冲,连接数据库的用户数。虽然增加了应用服务层,并不会使系统的性能和可靠性降低。因为在动态分布式计算系统中,客户端程序不必要确切指出应用服务的网络地址,如果应用服务器超负荷,通过统一的管理程序调度将请求转移到其他应用服务器上来消除瓶颈。3)较低的开发和维护成本C/S的应用必须开发出专用的客户端软件,无论是安装、配置还是升级都需要在所有的客户机上实施,极大地浪费了人力和物力。B/S的应用只需在客户端装有通用的浏览器即可,维护和升级工作都在服务器端进行,不需对客户端进行任何改变,故而大大降低了开发和维护的成本。4)使用简单,界面友好C/S用户的界面是由客户端软件所决定的,其使用的方法和界面各不相同,每推广一个C/S系统都要求用户从头学起,难以使用。B/S用户的界面都统一在浏览器上,浏览器易于使用、界面友好,不须再学习使用其它的软件,一劳永逸的解决了用户的使用问题。5)系统灵活C/S系统的各模块中有一部分需改变就要关联到其它模块的变动,使系统很难升级。B/S系统的三部分模块各自相对独立,其中一部分模块改变时,其它模块不受影响,应用的增加、删减、更新不影响用户个数和执行环境,系统改变变得非常容易,且可以用不同厂家的产品来组成性能更佳的系统。6)保障系统的安全性在C/S系统中由于客户机直接与数据库进行连接,用户可以很轻易的改变服务器上的数据,无法保证系统的安全性。B/S系统在客户机与数据库服务器之间增加了一层Web服务器,使两者不再直接相连,通过对中间层的用户编程可实现更加健全、灵活的安全机制。客户机无法直接对数据库操纵,有效地防止用户的非法入侵。7)信息共享度高C/S系统使用专用的客户端软件,其数据格式为专用格式文件。B/S系统使用HTML(HyperTextMarkupLanguage,超文本标记语言),HTML是数据格式的一个开放标准,目前大多数流行的软件均支持HTML,使得Browser可访问多种格式文件。8)广域网支持C/S是建立在局域网的基础上的,C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S是建立在广域网的基础上的,不必是专门的网络硬件环境,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。所以,在B/S模式下,用户端只需有通用的浏览器,如Netscape或Explore,便代替了形形色色的各种应用软件。服务器则为Web服务器,浏览器和服务器之间通过TCP/IP这一通讯协议进行连接。浏览器发出数据请求,由web服务器向后台取出数据并计算,将计算结果返回给浏览器。由于用户端所用软件只是一个简单的浏览器,用户基本上无需培训,用户端软件也无需维护;软件的升级与修改只在服务器端进行,对用户透明;服务器与浏览器可处于不同的操作系统平台。虽然B/S模式存在许多C/S模式无法比拟的优点,但在实际的应用过程中仍然有许多问题:1)WEB技术在应用的过程中暴露了越来越多的安全问题。MIS管理的业务管理工作中的所有数据,随着系统向Internet的扩展,本来出现在系统内部的安全问题也被放大到整个Internet上。因此WEB技术的安全性问题限制了基于WEB的B/S模式的MIS的发展。2)大量计算问题一般将业务逻辑层放置在WEB服务器上,当运行大量计算或长事务处理时严重的影响了系统的工作效率,使得用户不得不靠不断增加硬件投资提高WEB服务器的性能和数量。3)很难实现全部管理功能。由于WWW技术的局限性,MIS很难完全利用B/S模式实现,现有的B/S模式的MIS也多是仅实现了部分的管理功能。2.2Struts实现MVC框架Struts简介Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。早期Smalltalk程序语言便采用了MVC(Model-View-Controller)模式(Patterns)以增加程序代码弹性,MVC模式将程序代码整理切割为三部份,Model部分是业务与应用领域(Businessdomain)相关逻辑、管理状态之对象,Controller部分接收来自View所输入的资料并与Model部分互动,是业务流程控制(FlowControl)之处,View部分则负责展现资料、接收使用者输入资料。在Java应用中,JFC/Swing、AWT、JSP皆是可用作View之技术规格,而JavaBean与EnterpriseJavaBean规格则可用于Model程序代码,一旦应用程序以MVC模式加以适当之分割,Model部分程序代码可在不同使用者接口外观之应用程序中重复使用。随着Struts技术的流行,国外大多数公司已不再单纯的使用Jsp+servlet+javabean来开发自己的项目,而是首先选择一个优秀的框架,而Struts是其最好的选择。随着Struts技术的版本升级,技术不断完善和可扩展性增强等,使其功能越来越强大。Struts技术现已成为基于MVC模式的Web应用最经典框架。Struts有如下的主要功能[2]:1.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。2.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。3.提供了一系列实用对象:XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。Struts项目的目标是为创建Javaweb应用提供一个开放源代码的framework。Strutsframework的内核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各种JakartaCommons包的标准技术的灵活的控制层。Struts提供了它自身的控制器组件,并整合了其他技术,以提供模型和视图。对于模型,同大多数的第三方软件包一样,如Hibernate,iBATIS,或者ObjectRelationalBridge,Struts能够和标准数据连接技术相结合,如JDBC和EJB。对于视图,Struts与JavaServerPages协同工作,包含JSTL和JSF。Struts优点Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EEMVC实现方式,如果你的系统准备采用J2EEMVC架构,那么,不妨考虑一下Struts。Struts工作原理:图Struts的基本结构Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展[3]。2.2.4Struts如果需要写一个非常简单的应用,而且页面也很少,那么应该考虑“Model1”,仅使用serverpages。但是,如果要开发一个比较复杂的应用,页面非常多,日后需要经常维护,那么Struts不失为一种明智之选。另外,如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。JAVA语言简介Java语言是目前为止推广最快的计算机语言,从开始设计到广泛流行不过5年,Java语启的迅猛发展得益于它与www的成功结合,但是Java语言最初不是针对WWW,而是准备用于消费类电子产品,由于SUN公司未能将这些产品推向市场,Java语言几乎夭折;1994年WWW从字符界面发展到图形界面,SUN公司的创始人之一Bi11yJoy介入Java开发小组(Green小组),将Java语言定位到WWW上,才使Java语言真正焕发了生机,在极短的时间内流行起来。Java语言的主要特点有[4]:l)简单。Java由C++衍生而来,基本概念、程序结构和语言风格和C++十分类似,而且抛弃了其中一些不是绝对必要的功能,比如头文件、预处理器、指针等,并通过垃圾自动收集器简化了内存管理。Java语言是完全面向对象的程序设计语言,除了数值、布尔和字符三个基本数据类型外,其它所有类型都是对象,Java的程序代码全部以类的形式组织。2)机器无关的字节码编译。Java程序经过编译后生成的是与平台无关的字节码(.class文件),然后字节码由Java虚拟机解释执行。3)结构中立。为了做到不依赖于任何具体的系统,Java语言环境提供了许多用于访问底层操作系统功能的类组成的包,程序使用这些包,可以保证在所有支持Java的平台上正确运行。4)安全性。内存的分配及布局是在程序运行时由Java虚拟机决定的,并且采用了字节码验证机制,虚拟机对任何引入的字节码进行验证。Java语言还有一些其它优点,诸如支持语言及多线程、自动内存管理、出色的错误处理、分布性、动态性,相对于解释执行而言Java的执行速度是很快的,而且Java语言提供了及时编译,即在执行前将Java程序编译为本地机器代码,提高了执行速度,但这些机器代码具有平台相关性,可移植性差。Java运行系统一般由以下几个部分组成:类装配器、字节码验证器、解释器、代码生成器、运行支持库。Java运行系统执行字节码的过程可以分为三步:代码的装入、代码的验证和代码的执行。代码的装入由类装配器完成,它将一个类放在自己独立的名字空间,除了通过符号引用其它类外,该类不能影响其它类所在的空间。装入了所有需要的类后,运行系统就可以确定整个可执行程序的内存布局,然后由字节码验证器对代码进行安全检查,通过安全检查后,字节码可以提交运行了。运行方式有两种:1、即时编译方式,将字节码转换为本地机器代码,然后执行机器代码。2、解释执行,由解释器通过每次翻译并执行一小段代码来完成Java字节码程序的所有操作。JSP语言简介基于浏览器客户端的应用程序,比传统的基于客户机/服务器的应用程序的好处之一,就是几乎没有限制的客户端访问和极其简化的应用程序部署和管理(要更新一个应用程序,管理人员只需要更改一个基于服务器的程序,而不是成千上万的安装在客户端的应用程序)。这样,软件工业正迅速地向建造基于浏览器客户端的多层次应用程序迈进[5]。这些快速增长的、精巧的基于WEB的应用程序要求开发技术上得以改进。静态HTML对于显示相对静态的内容是不错的选择,然而,新的挑战却在于创建交互的基于WEB的应用程序,也就是,在这些程序中,页面的内容是基于用户的请求或者系统的状态,而不是预先定义的文字[6]。对于这个问题,一个早期的解决方案是使用CGI-BIN取接口:开发人员需要编写与接口相关的单独的程序,以及基于WEB的应用程序,后者通过WEB服务器来调用前者。这个方案存在严重的扩展性问--每个新的CGI都要求在服务器上新增一个进程。如果多个用户并发地访问该程序,这些进程将消耗该WEB服务器所有的可用资源,并且系统性能降低到极其低下的地步。某些WEB服务器供应商已经尝试通过为他们的服务器提供“插件”和API来简化WEB应用程序的开发[7]。这些解决方案是与特定的WEB服务器相关的,不能解决跨多个供应商的解决方案的问题。例如,微软的ActiveserverPagesTM(ASP)技术,虽然使得在Web页面上创建动态内容更加容易,但是ASP也只能工作在微软的IIS和PersonalWEBServer上[8]。虽然还存在其他的解决方案,但是都不能使一个普通的页面设计者能够轻易地掌握。JSP有许多优点[9],如:l)应用平台广。几乎可以运行所有平台,只要该平台提供了Java虚拟机。2)代码执行的高效性。代码只在第一次运行时被编译一次,以后每次执行时都不用编译。3)可移植性好。JSP是基于Java语言的。继承Java的一切特性,在一种平台的机器上编写的JSP代码,只要做很少的变动,就可原封不动地在另一种平台的机器上编译通过。4)JSP技术可以和JavaBean结合使用,使用JavaBean节省很多时间。5)强大的数据库技术。JSP与数据库的连接非常方便,通过Java语言的JDBC技术,可以和任何与JDBC兼容的数据库建立连接,使用JSP能访问如Oracle,Sybase,MSSQLServer等主流数据。DB2简介DB2是IBM公司的产品,起源于SystemR和SystemR*。他支持从PC到UNIX,从中小型机到大型机;从IBM到非IBM(HP及SUNUNIX系统等)各种操作平台。他既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行。其中服务平台可以是OS/400,AIX,OS/2,HP-UNIX,SUN-Solaris等操作系统,客户机平台可以是OS/2或Windows,Dos,AIX,HP-UX,SUNSolaris等操作系统。DB2数据库核心又称作DB2公共服务器,采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能[10]。DB2核心数据库的特色[11]:l)支持面向对象的编程DB2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。可以建立用户数据类型和用户自定义函数。2)支持多媒体应用程序DB2支持大二分对象(BLOB),允许在数据库中存取二进制大对象和文本大对象。其中,二进制大对象可以用来存储多媒体对象。3)备份和恢复能力4)支持存储过程和触发器,用户可以在建表时显示的定义复杂的完整性规则5)支持的硅SQL查询6)支持异构分布式数据库访问7)支持数据复制开发平台本次开发使用的开发平台为:WinXP+Eclipse.26+DB2v82.0JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。JDK由一个标准类库和一组建立测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JavaAPI包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,JavaAPI的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现[12]。本系统开发用的是jdk_0版本。Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成[13]。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。在Tomcat中,应用程序的部署很简单,只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可[14]。Eclipse最初是IBM的一个软件产品,前期投入了4000万美金。2001年11月,IBM宣布将其捐给开放源码组织E。目前Eclipse的市场占有率已经超过了Borland公司的JBuilder,成为Java开发平台中的主流。Eclipse的设计思想是:一切皆为插件。除了内核外,其他每样东西都是作为插件来实现的。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。Eclipse平台是一个具有一组强大服务的框架,这些服务支持插件,比如Java开发环境插件(JDT)、插件开发环境(PDE)和其他的第三方插件(Newtool)。它由几个主要的部分构成:平台运行库、工作区、工作台、团队支持和帮助平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。工作台为Eclipse提供用户界面。它是使用标准窗口工具包(SWT)和一个更高级的API(JFace)来构建的;SWT是Java的Swing/AWTGUIAPI的非标准替代者,JFace则建立在SWT基础上,提供用户界面组件。SWT已被证明是Eclipse最具争议的部分。SWT比Swing或SWT更紧密地映射到底层操作系统的本机图形功能,这不仅使得SWT更快速,而且使得Java程序具有更像本机应用程序的外观和感觉。使用这个新的GUIAPI可能会限制Eclipse工作台的可移植性,不过针对大多数流行操作系统的SWT移植版本已经可用。Eclipse对SWT的使用只会影响Eclipse自身的可移植性——使用Eclipse构建的任何Java应用程序都不会受到影响,除非它们使用SWT而不是使用Swing/AWT。团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所使用的任何版本控制系统(如果有的话)交互。大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。帮助组件具有与Eclipse平台本身相当的可扩展能力。与插件向Eclipse添加功能相同,帮助提供一个附加的导航结构,允许工具以HTML文件的形式添加文档。3系统的分析与设计3.1需求分析客户的要求是入库时首先生成入库单,然后进行储位分配,让客户知道来的货物应该放到哪里去,然后进行记账,让货物放入到库存中;出库时生成出库单,然后进行储位分配,让客户知道应该去哪里取货物,然后进行记账,修改库存。真个系统就可分为入库管理和出库管理两大模块,两个模块的数据基本对等相同的。而我们就在主表中设置一个标志位置DIRECTION(1为入库,-1为出库),让他们公用所有的表的[15]。为了区分每个小模块所涉及到的表的不同,就在主表中又加入了状态标识(0为初始,1为已下架或已下架,2为以记账),在入/出库单模块中能够看到所有状态的单据,而只能对状态为初始的单据进行操作,而新建的单据状态都为初始;在出库下架/入库上架模块中只显示状态为初始和已下架或者已下架的单据,当对状态为初始的单据进行储位分配后,就会将其状态修改为已下架或者已上架;在记账页面只能显示已下架或者已上架的单据,对其进行记账后将其状态修改为已记账。下面就从入库管理来讲表的需求分析,首先入库第一步就是入库单的生成,此单据上应该包括一个唯一标识,我们使用序列生成一个ROW_ID,还有单据编号也是唯一的,还要包括一些,总金额,总数量,业务日期等属性。此时,一张单据上肯定会出现对应了不只一种商品的信息。所以我们要有一个专门的细表来存放单据上的商品信息,当然要和此张单据对应,此处我们就在细表中设置了一个MOVE_ID属性,他对应着这张单据主表信息中的ROW_ID,另外,细表中也有单据编号的属性可以对照主表中的单据编号来识别,每种商品的唯一识别即为它的商品编码,为了便于维护和修改,就专门建立了一张商品表,来存放商品编码和名称。另外,还有张销售类型的维护表,存放着销售类型的名称和销售类型的编码,有了这些,入库单的模块实现就算都可以进行了。下一步就是储位分配,即给每种商品分配一个放的地方。首先要想分配储位肯定要有张储位表,来存储着储位的名称和唯一标识ROW_ID,和一些相关信息,另外我们要记录每次分配储位的动作就要生成一张储位分配表,记录着每种商品所要进入的储位的相关信息。它应该和入库单的单据相关联,此处就在储位分配表中同样设立了一个MOVE_ID来对应主表的ROW_ID,以此来关联。而作为出库的储位地点和入库的储位地点,分别对应为FROM_ID和TO_ID,即从哪里出库和放置到哪里。到了记账模块就是将储位分配表中的信息,对应的加到库存表中,即通过储位ID来关联,库存表就是储位的库存情况。记账就是修改储位的现有数量。本次项目中每个储位只能对应一种商品。有了这些表就可以进行下面的模块需求分析了。首先在入库单模块,我们肯定要有一个显示主表单据的列表页面,然后我们要进行入库单据的新建,删除,修改的操作,所以这些按钮和对应的页面是必须的,另外在生成了入库单,主页面只显示了主表中一些关于单据的主要信息,要想看到细表中每种要入库的详细信息,还要有个查看按钮来实现对整个表单的总体查看。而且在添加,删除,修改时,都要锁定事物,将主表和细表的信息一起添加和删除完毕,再生成新事物。而每个页面都从主列表页面点击按钮进入,所以,在每个进入的页面还要有返回按钮来返回主列表页面。下面就是储位分配页面,首先也得有一个列表页面,列出所有状态为初始和已分配的单据主表信息,然后要有个储位分配页面,在入库时,储位名称要以下拉框的样式实现,其中放有每个商品可以入库的储位(即空储位,和容量还可以放的储位),而且当选中储位时,储位中的剩余容量要对应的显示到输入框中,而且每行的数量单位都是要对应商品的单位,当储位分配完成时,要对主表的状态位进行修改,改为1即已分配状态。此模块还应该设有对已经分配过的单据的查询功能,因为客户需要看的到已分配过的单据是否满足要求,从而进行相应的调整(重新分配)。记账页面其实只是做了个显示状态为已分配的单据的列表页面,做一个确认按钮,将其记录入库就完成了,如果出库时,库存被修改为0,则删除此库存信息。出库对应的和入库管理是一样的,只有在出库下架进行储位分配时,此时的储位分配页面中储位名称所要满足的条件是放有此种商品的储位名称。有了这些,我们就可以进行下面的具体的实现与设计了。系统模块设计3.2本系统开发使用的是B/S三层结构,所以不必要专门写相应的客户端,用户通过普通的IE浏览器就可以实现对系统的访问。3.Web服务器业务逻辑控制主要由三部分组成:入库管理、出库管理和用户管理。现分别介绍如下:(1)入库管理入库管理模块可以分为三部分:入库单、入库上架、入库记账。具体的功能结构如下:入库单功能:1.商品录入。2.对已经录入但未上架或记账的商品信息进行修改。3.删除错误的商品信息。4.查看商品详细信息。入库上架功能:1.对刚录入的商品进行储位分配。2.查看已上架的商品储位分配情况。入库记账功能:1.对已上架并实际存入储位的商品进行记账。2.查看已分配储位但并未记账的商品。(2)出库管理出库管理模块可以分为三部分:出库单、出库下架、出库记账。具体的功能结构如下:出库单功能:1.商品录入。2.对已经录入但未下架或记账的商品信息进行修改。3.删除错误的商品信息。4.查看商品详细信息。出库下架功能:1.对刚录入的商品进行储位分配。2.查看已下架的商品储位分配情况。出库记账功能:1.对已下架并存入储位的商品进行记账。2.查看已存入储位但并未记账的商品。(3)用户管理用户管理功能:1.新建用户。2.修改用户详细信息。3.删除用户。4.查看用户详细信息。数据库服务器本系统采用集中式数据库模式。大家通过写好的JDBC驱动并连接DB2数据库中对应模式的数据,其中也有写好的函数等等。4系统的实现系统从登陆页面进入,写入用户名,密码,校验好进入菜单页面,页面使用FRAM框架结构,左边是菜单选项栏,右边是显示栏,点击对应的模块名称,右边显示对应的模块。4.1系统流程图图系统流程图图4.1给出了整个系统的流程图。4.2各个功能模块的简介登陆页面登陆页面将输入用户名和密码与数据库用户表进行匹配,如登入成功后,记录该用户登陆时间、对数据的所有操作以及操作时间。系统菜单登陆页面将输入用户名和密码与数据库用户表进行匹配,如登入成功后,记录该用户登陆时间、对数据的所有操作以及操作时间。入库单入库单具有新建、修改、删除、查看等功能,打开入库单页面后可以查看所有入库商品清单主表以及细表信息,可以实现商品录入功能(即新建功能)。修改和删除只可以对状态为初始的数据操作。入库上架入库上架具有储位分配和查看功能,打开入库上架页面有可以查看状态为初始和已上架的入库商品清单,储位分配按钮只对初始状态的商品进行分配储位。储位分配结束点击保存,商品状态变为已上架。查看按钮只可以查看已上架数据。入库记账入库记账具有确认和查看功能,打开入库记账页面可以查看状态为已上架的所有主表信息以及细表信息,点击确认之后,再点击记账,分配储位的容量变为原来的容量减去分配数量。出库单出库单具有新建、修改、删除、查看等功能,打开出库单页面后可以查看所有出库商品清单主表以及细表信息,可以实现商品出库功能(即新建功能)。修改和删除只可以对状态为初始的数据操作。出库下架出库下架具有储位分配和查看功能,打开出库下架页面有可以查看状态为初始和已上架的入库商品清单,储位分配按钮只对初始状态的商品清单进行操作,选择具有该商品的储位。储位分配结束点击保存,商品状态变为已下架。查看按钮只可以查看已下架数据。出库记账出库记账具有确认和查看功能,打开出库记账页面可以查看状态为已记账的所有主表信息以及细表信息,点击确认之后,再点击记账,分配储位的现有数量变为原来的现有数量减去分配数量。同时商品数量减去分配数量。用户管理用户维护具有新建、修改、删除、查看等功能,打开用户维护页面后可以查看数据库所有用户表信息,可以实现用户新增功能(即新建功能)。查看可以看到用户详细信息,可以对用户详细信息进行修改操作,可以删除用户。4.3表的分析与设计wm_movement主表作用:存储单据的主要信息。约束条件:主键为ROW_ID,唯一性约束为BILL_NO,NOTNULL为ROW_ID,CREATED_BY,CREATED_TIME,LAST_UPD_BY,LAST_UPD_TIME,MODIFICATION_NUM,BILL_NO,MOVING_TYPE_ID,STATUS。个别字段解释:MOVEING_TYPE_ID对应AD_LOV_CODE表中的LOV_CODE共3位,2开头为出库类型,1开头为入库类型,STATUS为状态标志为0为初始,1为已上架/已下架,2为已记账。名称类型含义ROW_IDBIGINT'ROW_ID:系统字段。',CREATED_BYBIGINT'创建人:系统字段。',CREATED_TIMETIMESTAMP'创建时间:系统字段。',LAST_UPD_BYBIGINT'修改人:系统字段。',LAST_UPD_TIMETIMESTAMP'修改时间:系统字段。',MODIFICATION_NUMINTEGER'修改次数:系统字段。',BILL_NOVARCHAR(32)'单据编号:标识一个单据的编码。',MOVING_TYPE_IDBIGINT'出库/入库类型'COMPANY_IDBIGINT,'公司ID',LOCATION_IDBIGINT,'物流中心ID',CONSIGNOR_IDBIGINT,'收货来源ID',DIRECTIONINTEGER,'1入库,-1出库,0仓库内部的业务,如库存冻结、破损烟的登记等等。',DESTINATIONBIGINT,'出库(出库或者移出等)货物将要到达的存储地点。',ORIGIN_NOVARCHAR(32),'原始单据号',CONTRACT_NOVARCHAR(32),'采购合同号码,用于商业到货入库。',PERMIT_NOVARCHAR(32),'准运证号',INVOICE_NOVARCHAR(32),'发票号',BUSINESS_DATEDATE,'业务日期',TOTAL_QTYDECIMAL(22,7),'合计数量(万支)',AMOUNTDECIMAL(22,7),'金额(元)',STATUSCHARACTER(1)'状态',REMARKSVARCHAR(400)'备注:单据的说明,如破损原因。':图4.2wm_movement主表实例wm_mov_detail细表作用:具体到品牌的单据明细记录。约束条件:主键为ROW_ID,唯一性约束为(PRODUCT_ID与BILL_NO)共同组合,NOTNULL的除了主表中系统字段和主表中相同的字段外还有PRODUCT_ID和MOVE_ID。个别字段解释:主表中的ROW_ID是细表中的MOVE_ID,即为细表的外键。名称类型含义ROW_IDBIGINT'ROW_ID:系统字段。',CREATED_BYBIGINT'创建人:系统字段。',CREATED_TIMETIMESTAMP'创建时间:系统字段。',LAST_UPD_BYBIGINT'修改人:系统字段。',LAST_UPD_TIMETIMESTAMP'修改时间:系统字段。',MODIFICATION_NUMINTEGER'修改次数:系统字段。',BILL_NOVARCHAR(32)'单据编号:标识一个单据的编码。',MOVE_IDBIGINT'移动ID',PRODUCT_IDBIGINT'物品ID',PRODUCT_CODEVARCHAR(32),'商品代码',PRODUCT_DESCVARCHAR(50),'商品名称',QUANTITYDECIMAL(22,7),'从业务单据获取(或者输入),业务单据上的数量。',UNITVARCHAR(32),'计量单位',QTY_UDECIMAL(22,7),'从业务单据获取(或者输入),对应于计量单位的数量。',PRICEDECIMAL(22,7),'对应于计量单位的单价。',AMOUNTDECIMAL(22,7)'金额(元)'图给出了wm_mov_detail表实例:图4.3wm_mov_detail表实例wm_bin_inventory库存表作用:详细的库存记录,具体到每张订单。约束条件:主键为ROW_ID,唯一性约束是(WH_ID,CONSIGNOR_ID,PRODUCT_ID,BIN_ID)组合,NOTNULL的又包括WH_ID,CONSIGNOR_ID,BIN_ID。名称类型含义ROW_IDBIGINT'ROW_ID:系统字段。'CREATED_BYBIGINT'创建人:系统字段。'CREATED_TIMETIMESTAMP'创建时间:系统字段。'LAST_UPD_BYBIGINT'修改人:系统字段。'LAST_UPD_TIMETIMESTAMP'修改时间:系统字段。'MODIFICATION_NUMINTEGER'修改次数:系统字段。'COMPANY_IDBIGINT'物流企业标识'WH_IDBIGINT'仓库'BIN_IDBIGINT'储位'CONSIGNOR_IDBIGINT'物权所有者,自有物流则与公司标识相同。'PRODUCT_IDBIGINT'商品ID'PRODUCT_CODEVARCHAR(32),'商品编码'DATE_INDATE,'该批次卷烟进入储位的时间。',SUPPLIER_IDBIGINT,'该批次卷烟的供货商。',QUANTDECIMAL(22,7),'数量'AMOUNTDECIMAL(22,7)'进货成本金额。'图4.4给出了wm_bin_inventory表实例:图4.4wm_bin_inventory表实例wm_wh_bin_allocate储位分配表作用:具体到品种储位的详细作业内容,主要用于储位分配操作。是储位库存变动的事务记录。约束条件:主键为ROW_ID。名称类型含义ROW_IDBIGINT'ROW_ID:系统字段。',CREATED_BYBIGINT'创建人:系统字段。',CREATED_TIMETIMESTAMP'创建时间:系统字段。',LAST_UPD_BYBIGINT'修改人:系统字段。',LAST_UPD_TIMETIMESTAMP'修改时间:系统字段。',MODIFICATION_NUMINTEGER'修改次数:系统字段。',MOVE_IDBIGINT,'库存移动_ID',BILL_NOVARCHAR(32),'单据编号:标识一个单据的编码。',COMPANY_IDBIGINT'物流企业标识',LOCATION_IDBIGINT'仓储地点标识',WH_IDBIGINT'仓库标识',CONSIGNOR_IDBIGINT'物权所有者,自有物流则与公司标识相同。',PRODUCT_IDBIGINT'商品标识',PRODUCT_CODEVARCHAR(32),'商品代码',DIRECTIONINTEGER,'移动方向:1上架,-1下架,0库内移动。',FROM_BINBIGINT,'源储位:系统分配的提取物品的储位,在移动时则是移出储位。当作业类型是转储时使用。',TO_BINBIGINT,'分配储位:系统分配的存放物品的储位,在移动时则是移入储位。',QUANTITYDECIMAL(22,7),'数量(万支)',UNITVARCHAR(32),'计量单位',QTY_UDECIMAL(22,7),'从业务单据获取(或者输入),对应于计量单位的数量。',PRODUCT_DESCVARCHAR(256)'商品名称'图4.5给出了wm_wh_bin_allocate表实例:图4.5wm_wh_bin_allocate表实例wm_bin储位表作用:仓库中可以寻址的最小空间—储位的信息约束条件:主键为ROW_ID,个别字段说明:其ROW_ID对应库存表中的BIN_ID,还对应了出未分配表中的FROM_ID和TO_ID。名称类型含义ROW_IDBIGINT'ROW_ID:CREATED_BYBIGINT'创建人:CREATED_TIMETIMESTAMP'创建时间:LAST_UPD_BYBIGINT'修改人:LAST_UPD_TIMETIMESTAMP'修改时间:MODIFICATION_NUMINTEGER'修改次数:COMPANY_IDBIGINT'公司标识',LOCATION_IDBIGINT'存储地点',WH_IDBIGINT'仓库ID',AREA_IDBIGINT'存储区ID',BIN_CODEVARCHAR(32)'储位编码',BIN_DESCVARCHAR(50),'储位名称',REMARKSVARCHAR(400),'备注',STATUSCHARACTER(1)'状态:0有效,1为无效CAPACITYDECIMAL(22,7)'容量'图4.6给出了wm_bin表实例:图4.6wm_bin表实例4.3.6作用:保存员工列表,系统用户信息。约束条件:ROW_ID为主键。名称类型含义ROW_IDBIGINT'ROW_ID:系统字段。',CREATED_BYBIGINT'创建人:系统字段。',CREATED_TIMETIMESTAMP'创建时间:系统字段。',LAST_UPD_BYBIGINT'修改人:系统字段。',LAST_UPD_TIMETIMESTAMP'修改时间:系统字段。',MODIFICATION_NUMINTEGER'修改次数:系统字段。',USER_CODEVARCHAR(32)'工号:员工代码',USER_NAMEVARCHAR(255)'姓名',PASSWORDVARCHAR(32),'密码',PASSWORDCONFIRMVARCHAR(32),'确认密码',ADDRVARCHAR(255),'地址',TELVARCHAR(32),'电话',SEXVARCHAR(32),'性别',IDCARDVARCHAR(32),'身份证号',COMPANYIDBIGINT'公司标识',DEPTIDBIGINT'部门标识',BIRTHDAYDATE,'出生日期',EMAILVARCHAR(255),'邮件地址',DEGREEBIGINT,'学历',DUTYBIGINT'职务',PLACEBIGINT'岗位',图4.7给出了ad_user表实例:图4.7ad_user表实例4.3.7ad_lov_code作用:用来保存入库出库类型的表,便于以后更改。其中LOV_CODE对应主表的MOVING_TYPE_ID图4.8给出了ad_lov_code表实例:图4.8ad_lov_code表实例4.3.8md_productcatalog商品作用:保存着商品名称和其对应的商品编号。便于入库出库使用。图4.9给出了md_productatalog表实例:图4.9md_productatalog表实例4.3.9team_sequence作用:生成一个初始为1,每次递增1,最大为999999的序列startwith1incrementby1maxvalue999999minvalue1;数据池连接的实现数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态地对池中的连接进行申请,使用,释放。对于多于连接池中连接数的并发请求,应在请求队列中排队等待。并且应用程序可根据池中连接的使用率,动态增加或减少池中的连接数。连接池技术尽可能多地重用了消耗内存的资源,大大节省了内存,提高了服务器的服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量,使用情况等。首先要在context.xml中写如如下代码:<Resourcename="jdbc/SqlDB"auth="Container"scope="Shareable"type="javax.sql.DataSource"username="db2adminpassword="db2admin"driverClassName="com.ibm.db2.jcc.DB2Driver"url="jdbc:db2://:50000/DB_TEAM:currentSchema=LMS;currentPath=orafun,sysibm,sysfun,lms;"maxActive="8"maxIdle="4"/>这里等于在Tomcat服务器下配置数据库的连接池,然后写了一个DbOperater类,在类中static中写入下面的代码[16]static{ContextinitCtx=null;try{initCtx=newInitialContext();ContextenvCtx=(Context)initCtx.lookup("java:comp/env");//查找:返回目录总的一个对象dataSource=(DataSource)envCtx.lookup("jdbc/SqlDB");//Connectionconn=ds.getConnection();}catch(NamingExceptione1){e1.printStackTrace();}每次只要是调用含有DbOperater类初始化的函数,就会开启数据库的连接。而在工程中,只在登陆时生成DbOperater对象,即包含初始化,就打开了数据库的连接,后面直接调用DbOperater中所写的SQL执行语句即可,不必在开启数据库连接,减少了数据库的开销。出库下架模块的实现出库下架分为包括3个页面,分别为主列表页面,出库下架页面和明细查询页面在主列表页面。.1出库下架-浏览页面.1.1功能出库下架-浏览页面显示的是状态为初始或已下架的单据信息(单据编号,日期,相关单号,出库类型,状态,总数量)。列表页面的每行数据都有一单选按钮,要进行操

温馨提示

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

评论

0/150

提交评论