1、本 科 毕 业 论 文(设计)院 系 软件学院 题 目 物流配送管理系统之库房管理子模块的实现 学生姓名 臧宇灵 学号 071251204 年 级 2007级 专 业 软件工程 指导教师 职 称 论文提交日期 45南京大学软件学院本科毕业论文摘 要 目前大多数物流企业提供的主要服务还停留在传统的运输和仓库两大块业务上,仓库在物流中还占据着比较重要的地位。仓库管理对企业来说是一项繁琐复杂的工作,每天要处理大量的单据数据。这在一定程度上给企业造成了管理上的落后,以及经济上的损失。我们就根据上述在国内物流配送管理系统在企业应用普及时出现的各种问题,将用我们学到的知识,利用当前管理信息系统科学的、实用
2、的理论,开发一套基于JavaEE的物流配送管理系统。 技术上采用了JSP,CSS,SSH框架,AJAX。其重点在于对成熟框架的使用。整体开发中着重体现工程性。 物流配送管理系统项目整体覆盖了物流公司所需的基本业务,本人在项目中主要承担库房管理模块的开发实现,包括中心库房进出货,分站库房进出货以及退货管理。 论文共有五章。第1章为概论,第2章简要介绍了WEB开发技术,第3章描述了项目的整体情况,第4章是具体阐述WEB技术在项目中的使用,第5章为总结与展望。关键词:物流配送管理系统项目,库房管理系统项目,JSP,Struts,Spring,Hibernate,Ajax。Abstract Most
3、major services provided by logistics companies still remain in the traditional transport and warehouse two blocks of business, warehouse logistics also occupy a relatively important position. Warehouse management for enterprises is a cumbersome and complex work, to handle a large number of documents
4、 per day data. Which to some extent, it caused the backwardness of management, and economic losses to the enterprise . Under such condition, we will use the knowledge weve learned - the current management information systems science, theory and practical to develop a logistics and distribution manag
5、ement based on JavaEE System. Technology using JSP, CSS, SSH framework, AJAX. The focus is on the use of sophisticated framework. Logistics and distribution management system for the overall project covers the basic operations required for logistics companies. I am mainly responsible for development
6、 and realization of the Treasury, including the business of the center of the Treasury , the business of sub-stations and management of the returns. Paper consists of five chapters. Chapter 1 Introduction ,Chapter 2 briefly introduces the development of WEB Technology, Chapter 3 describes the overal
7、l situation of the project, Chapter 4 is specifically addressed the use of WEB technology in the project, Chapter 5 Summary and Outlook. Keywords:Logistics and distribution management system project, the Treasury Management System Project,JSP,Struts,Spring,Hibernate,Ajax。目 录摘 要IAbstractII目 录III第一章 概
8、述/绪论11.1 项目背景11.2 国内外WEB开发技术现状11.3 论文主要工作/组织结构2第二章 物流配送系统所采用WEB开发技术概述32.1 JSP技术32.2 Struts技术32.3 Spring技术52.4 Hibernate技术72.5 Ajax技术8第三章 库房管理子系统分析与设计113.1 物流配送系统流程简述113.2 库房管理子系统概述123.2.1主要业务流程图概览(摘选二个)123.2.2 场景与用例图133.2.3主要功能介绍133.2.4 系统设计概览153.2.5 数据库表设计概览16第四章 Web开发技术在库房管理子系统项目中的应用184.1JSP技术184.
9、1.1概述184.1.2 应用举例184.2 Struts技术194.2.1 概述194.2.2 Struts标签库的使用244.2.3 Action类一览264.2.4 Form类一览274.3 Spring技术274.3.1 概述274.3.2 Spring的配置314.3.3 Spring的使用:注入324.4 Hibernate技术334.4.1 概述334.4.2 Hibernate的配置344.4.3 POJO类及其对应配置文件354.4.4 Criteria,查询,删除,更新,增加364.5 Ajax技术374.5.1 概述374.5.2 一个简单的Ajax使用例子37第五章 总
10、结与展望395.1 物流配送管理系统项目总结395.2 库房管理子系统项目总结405.3 展望40参考文献41致谢42第一章 概述/绪论1.1 项目背景目前大多数物流企业提供的主要服务还停留在传统的运输和仓库两大块业务上,仓库在物流中还占据着比较重要的地位。仓库管理对企业来说是一项繁琐复杂的工作,每天要处理大量的单据数据。库管人员要花费大量人力物力和时间来做数据统计工作,而且很容易出错。比如说,有的企业单位的库存管理部分目前仍然为手工、半手工操作。从配送中心管理员办理入库登记开始,到调度中心领货出库办理手续为止,所有操作基本上都是由仓库管理人员笔写、手算再加上计算器完成。不仅会造成分工不明确,
11、流程模糊,而且过程繁琐,效率低下,再加上缺乏库存管理的一些基本手段(如库存状况统计),这在一定程度上给企业造成了管理上的落后,以及经济上的损失。我们就根据上述在国内物流配送管理系统在企业应用普及时出现的各种问题,将用我们学到的知识,利用当前管理信息系统科学的、实用的理论,开发一套基于JavaEE的物流配送管理系统。1.2 国内外WEB开发技术现状 目前,国内外信息化建设已经进入基于web应用为核心的阶段,java作为应用于网络的最好语言,前景无限看好。实施java的web项目需要掌握的技术如下:1)面向对象分析设计思想2)设计模式和框架结构3)网页脚本语言4)数据库5)应用服务器6)集成开发环
12、境具体趋势有:搭配可重复使用的组采用标签化页面开n-tier企业应用架构的支持开发工具1)数据库:SQL,ORACLE等2)web服务器:web服务器主要是针对于配置和部署,对目录的配置,调试3)集成开发环境:MyEclipse.1.3 论文主要工作/组织结构 论文共有五章。第1章为概论,第2章简要介绍了WEB开发技术,第3章描述了项目的整体情况,第4章是具体阐述WEB技术在项目中的使用,第5章为总结与展望。第二章 物流配送系统所采用WEB开发技术概述2.1 JSP技术JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术
13、标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JS
14、P网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返
15、回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。2.2 Struts技术 2000年5月,Struts框架由Craig McClannahan开发完成,现在作为Apache软件基金会的一个开源项目。Struts框架的推出,不仅极大地简化了当时的J2EE Web服务器端开发技术中的JSP和Servlet编程实现,而且也保证了应用系统是基于MVC架构而开发实现的;它不仅简化了J2EE Web编程模型
16、并提供了一种快速高效的构建Web应用程序的方法,同时它还产生了一个庞大的开源技术社区-Struts框架自诞生之日起,就获得了Apache Jakarta开源社区的普遍关注。Struts框架是开源框架; Struts框架中的各种组件都是标准的J2EE Web组件:它利用Servlet、JavaBean和JSP、定制标签库等Web组件以及XML等方面的技术来实现构建Web应用系统。 它同时也是基于MVC模式的Web应用最经典的框架:作为一个日渐成熟的优秀框架技术,Struts框架在构建基于MVC模式的J2EE Web应用系统有许多技术方面的优势。Struts框架的技术优点有:1) “填空”式的开发
17、实现应用系统2) 降低应用系统中的各个组件之间的耦合度3) 各个开发人员之间的分工明确4) 简化表示层页面的设计和实现下面对Struts框架的标签库进行简单的介绍。 Struts框架中的标签库主要是由Html、Bean、Logic和Tiles、Template等类型的标签库组成。Struts框架之所以提供这样丰富的标签库,其目的是使得Struts框架易于和JSP页面技术一起使用,并且减少甚至消除了编写额外功能标签的需要。1) Html标签库 Html标签库主要是用来生成标准的Html标签、显示页面中表单元素控件,并对表单进行数据包装,以及显示错误信息等。这些标签都封装在文件名为struts-h
18、tml.tld的标签库描述文件中。Struts标签库中的大部分标签都与普通的Html标签元素相对应,并且他们实现的功能与对应的Html标签元素相同,甚至提供更为强大的功能。2) Bean标签库 Bean标签主要是实现在JSP页面中管理各种JavaBean对象,利用该组标签可以访问已经存在的JavaBean对象及其成员属性,同时还包含用于定义新的JavaBean对象,访问现有的JavaBean对象、HTTP Cookies、HTTP Headers等方面数据的功能。对这些标签的定义信息都分装在文件名为struts-bean.tld的标签库描述文件中。3) Logic标签库 Logic标签库主要是
19、用来在JSP页面中控制流程,利用逻辑标签库中的标签,可以根据特定的逻辑条件来控制输出页面的内容或者循环遍历集合中的所有成员元素,从而能够大大地减少对Java脚本的使用量;Logic标签库中定义的各个标签能够执行条件逻辑、重复循环、转发(重定向)等功能,可以完全替代Java脚本。对这些标签的定义信息都封装在文件名为struts-logic.tld的标签库描述文件中。【1】2.3 Spring技术 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE 的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种
20、应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然 而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spr
21、ing中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring 框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型 地,Spring应用中的对象不依赖于Spring的特定类。 控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦 合。当应用了IoC,一个对象依赖的其
22、它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不 是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 面向切面Spring提供了面向切面编程的 丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只 实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于
23、一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。Spring的特点有:方便解
24、耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。 声明式事务的支持 在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。 方便程序的测试 可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,
25、测试不再是昂贵的操作,而是随手可做的事情。 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。 降低Java EE API的使用难度 Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。【2】 2.4 Hibernate技术 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进
26、行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口介绍:1)Configuration接口 Configuration对象用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来指定对象-关系映射文件的位置或者动态配置Hibernate的属性,然后创建S
27、eesionFactory实例。2) SessionFactory接口 一个SessionFactory实例应对应一个数据存储源,应用从SessionFactory中获得Session实例。SessionFactory有以下特点: 它是线程安全的。这意味着它的同一个实例可以被应用的多个线程共享。 它是重量级的。这意味着不能随意创建或销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建改实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例。之所以称SessionFactory是重量级的,是因为
28、它需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被工作单元读过的数据,将来其他工作单元可能会重用这些数据,因此这个缓存中的数据能够被所有工作单元共享。一个工作单元通常对应一个数据库事务。3) Session接口 Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。Session有以下特点: 不是线程安全的,因此在设计软件架构时,应避免多个线程共享同一
29、个Session实例。 Session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。Session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象。每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前工作单元访问。4) Transaction接口 Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层的事务接口包括:JDBC A
30、PIJTACORBA Hibernate应用可以通过一致的Transaction接口来声明事务边界,这有助于应用在不同的环境或容器中移植。5) Query和Criteria接口 Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL查询语句,HQL语句与SQL有些相似,但HQL是面向对象的,它引用类名及类的属性名,而不是表名和表字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口擅长于执行动态查询。【3】2.5 Ajax技术 AJAX 不是一种新的
31、编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。 通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。 AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。 AJAX 可使因特网应用程序更小、更快,更友好。是一种独立于 Web 服务器软件的浏览器技术。AJAX 基于下列 Web 标准: JavaScript XML H
32、TML CSS 在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。 Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。 不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。 通过 AJAX,因特网应用程序可以变得更完善,更友好。主要包含的技术 基于web标准(standards-based presentation)XHTML+CSS的表示; 使用 DOM(Document Object Model)进行动态显示及交互; 使用 XML 和 XSLT 进行数据交换及相关操作;
33、使用 XMLHttpRequest 进行异步数据查询、检索; 使用 JavaScript 将所有的东西绑定在一起。优点:更迅捷的响应速度传统的web应用允许用户填写表单(form), 当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分 HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得 多。 与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于 XML的web service
34、接口,并在客户端采用JavaScript处理来自服务器的响应。因此在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快 的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。 使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。 Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程
35、序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。缺点与其中一些问题的对应解决方案 对应用Ajax最主要的批评就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下 历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操 作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或 使用一个隐藏的IFRAM
36、E来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。) 一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。 进行Ajax开发时,网络
37、延迟即用户发出请求到服务器发出响应之间的间隔需要慎重考 虑。不给予用户明确的回应 ,没有恰当的预读数据 ,或者对XMLHttpRequest的不恰当处理,都会使用户感到延迟,这是用户不欲看到的,也是他们无法理解的。通常的解决方案是,使用一个可视化的 组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。 一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax。 用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事。 对串流媒体的支持没有FLASH、Java Applet好。【4】第三章 库房管理子系统分析与设计3.1 物流配送系统流程简述图
38、3.1 物流系统项目主流程一览1、 客服接收客户的配送要求生成订单;2、 调度中心根据订单 时生成货物调拨单(退货不生成货物调拨单);3、 中心库房接到货物调拨单后,将货物出库到相应的分站库房;4、 若退货,则分站接到任务单后可将任务分配给相关配送员;否则,则分站接到货物后将配送任务分配给相关的配送员; 5、 打印配送单,若非退货情况,则配送员到相应库房领货;配送员完成配送任务后,分站根据完成情况录入回执。3.2 库房管理子系统概述3.2.1主要业务流程图概览(摘选二个)图3.2 中心库房购货入库流程图图3.3 退货流程图3.2.2 场景与用例图图3.4 库房管理子系统用例图3.2.3主要功能
39、介绍中心库房购货入库:配送中心安排购货后,供应商将商品送至中心库房1、 中心库房管理员根据购货单进行入库处理 1)先定位购货单,显示购货单内容 2)把供应商送来的商品与购货单内容进行比较,填写实际到货数量 3)系统将当前时间作为进货时间 2、 将所有信息更新入数据库,更新库存可分配量、缺货单数据,填写中心库房流水表中心站库房调拨出库中心库房收到调拨单1、 中心库房管理员根据调拨单进行出库处理1)定位调拨单,比较调拨单内容与实际出库商品数量 2)系统将当前时间作为出库时间2、将原货物已分配量减去出库数量作为当前货物已分配量更新入数据库,更新订单和任务单状态为中心库房已出库,填写中心库房流水表3、
40、 根据实际出库商品产生验货单供分站比对分站库房调拨入库1、分站库房管理员定位验货单,2、分站库房收到中心库调拨过来的商品3、根据验货单比对实际商品,做入库操作4、记录实际入库商品数量,入库时间,更新分站库房库存量,更新订单和任务单状态为分站库房已到货领货管理1、分站库房管理员定位配送单2、根据配送员的配送单完成商品出库操作3、更新分站库房库存量,更新订单和任务但状态为已领货库存信息查询1、用户输入商品名、供应商名等条件进行查询2、系统返回结果:一级分类,二级分类,商品名,商品单价,计量单位,数量(可分配,已分配,退货),供应商退货登记当配送员从客户手中取回商品至分站库房后,找分站库房管理员作退
41、货入库登记1、根据客户姓名,退货任务单号,时间段定位退货任务单,查询到商品信息与实际商品进行比对2、做商品退货入库操作,修改退货任务单、退货订单状态为分站库房退货入库(完成),更新分站库房商品退货数量分站库房退货出库分站库房查询需退货的所有商品,将货物出库送往中心库房1、遍历所有需要退货的商品2、做商品退货出库操作,更新分站库房商品退货数量中心库房退货入库当货物从分站库房运输到中心库房后中心库房登记分站退货的商品,并进行入库处理,修改库存商品的退货量中心库房退货出库1、 根据供应商名、退货单号定位退货单,将退货商品退货出库给供应商2、 修改库存商品退货量,退货单状态为已退货3.2.4 系统设计
42、概览图3.5 库房管理系统概要设计总览图3.6 核心业务处理逻辑类图3.2.5 数据库表设计概览库存状态表 表3.1 库存状态表名称描述是否必添商品ID所存商品的标识是仓库ID所存仓库的标识是货架商品存在哪个货架上否可分配量商品的可分配库存量是已分配量商品已经分配了的库存量,等待运往分站是退货量退货数量是备注否中心库房流水表 表3.2 中心库房流水表名称描述是否必添商品ID所存商品的标识是商品数量是出库或入库出库/入库是时间出库或入库时间是备注否仓库信息表 表3.3 仓库信息表名称描述是否必添仓库ID仓库的标识是仓库名仓库的名称(中心库,XX分库)是地址仓库的地址是负责人名仓库管理员的名字是备
43、注否第四章 Web开发技术在库房管理子系统项目中的应用4.1JSP技术4.1.1概述 JSP技术是WEB项目的关键技术之一,用于构建前台页面。在库房管理子系统中,大量使用了JSP页面。下面简要例举几个。因JSP技术属于基础中的基础,故而本章较为简略。4.1.2 应用举例 图4.1 项目部分JSP页面一览以上是部分库房管理子系统JSP页面目录。图4.2 中心库房入库JSP页面部分图4.2 Struts技术4.2.1 概述库房管理子系统采用Struts技术背景及原因:在项目进行到概要设计的时候,划分出了如下类:CenterIn类概述CenterIn中心库房购货入库,接收用户所选取的商品条目,进行入
44、库处理 表4.1 CenterIn类功能定义序号功能点功能点详细内容1查询新购货物当用户点选查询按钮时,下方列表中显示出新购入等待入库的商品列表2商品入库当用户选择好商品,点击入库按钮,则所选货物入库,调用CenterService类的方法进行下一步处理3修改缺货单状态系统在商品入库后,将相应到货商品的缺货单状态改为已到货CenterOut类概述CenterOut中心库房调拨出库,根据调拨单,帮助用户完成商品的出库处理 表4.2 CenterOut类功能定义序号功能点功能点详细内容1显示所有调拨单信息用户点选浏览调拨单按钮,下方列表总显示出所有最近的调拨单信息2商品出库用户选择好相应调拨单,点击出库按钮,则调拨单中相应商品作出库操作,此时,调用CenterService类的方法进行下一步处理SubIn类概述SubIn分站库房调拨入库,比对验货单,将送到分站货物存入分站库房表4.3 SubIn类功能定义序号功能点功能点详细内容1显示新到商品用户点击显示新到商品按钮,下方列表中显示验货单,用户也可以输入验货单号(或任务单号),进行定位查询2分站库房入库选择好验货单条目后,用户点击入库,则调用SubService类进