供应链物流管理系统
摘 要
在当今高速发展的信息社会,现代物流行业突飞猛进发展,伴随着我国国民经济连续多年的高速增长,为现代物流发展创造了良好的条件。目前,我国各类物流企业有14万家左右,展望整个21世纪,可以说现代物流业还将有更大的发展。
在发达国家,物流理论促使物流实践快速发展。经济全球化及现代物流业发展的系统化、信息化、仓储运输的现代化和综合化等趋势,对我国物流业的发展提出了全方位的挑战。传统物流行业的操作模式已经不适应现代的物流行业,如何缩短物流过程,降低产品库存,加速对市场的反应,这是所有企业所面对的问题。本系统就是针对这些问题根据中小型企业的实际需求而开发的一套物流管理系统。系统的开发能够帮助企业实现对物流全过程的优化调度和动态控制,高效整合企业的物流业务,以全面提高经济效益和效率为目的,提供高效、实用、技术的物流管理系统和运营手段。
物流管理系统是集现代运输、仓储配送、搬运、调度、跟踪为一体的网络系统,系统的开发应用了Java Web 开发领域的Spring,Struts框架,实现了商品从原料供应商、制造商、分销商到零售商再到消费者的各个环节的有机结合。 关键词:物流管理系统,Java,Spring,Struts
II
Supply Chain Logistics Management System
ABSTRACT
In today's rapidly developing information society, rapid development of modern logistics industry, along with our national economy for many years of rapid growth, the development of modern logistics has created good conditions. At present, all kinds of logistics enterprises in China around 140 000 and look forward to the 21st century, it can be said of modern logistics industry will have greater development.
In developed countries, logistics theory to promote the rapid development of logistics practice. Economic globalization and the development of modern logistics systematic, information, storage and transportation such as the modernization and integration trends, the development of logistics industry in China made a comprehensive challenge. The traditional mode of operation of the logistics industry has not suited to the modern logistics industry, how to shorten the logistics process, reduce inventory, speed up the reaction of the market, this is the problem faced by all enterprises. The system is to address these issues according to the actual needs of SMEs developed a logistics management system. Systems to developing products that help companies achieve the optimal operation of the entire process of logistics and dynamic control, high efficiency integrated enterprise logistics business, in order to comprehensively improve the economic and efficiency Mudi, providing efficient, practical, technical logistics management systems and operating Shouduan.
Logistics Management System is a modern transportation, warehousing and distribution, transportation, scheduling and tracking system for the integrated network, system development and application of the Java Web development in the field of Spring, Struts framework, to achieve a product from raw material suppliers, manufacturers, distributors Business to retailers to consumers, the organic integration of all aspects.
KEY WORDS: Logistics Management,Java,Struts,Spring
III
目 录
摘 要 .................................................................... I ABSTRACT ................................................................ II 1 前言 ................................................................... 1
1.1 课题意义 .......................................................... 1 1.2 国内外研究现状 .................................................... 2 2 编程环境基础知识 ....................................................... 3
2.1 系统开发工具 ...................................................... 3
2.1.1 MyEclipse ................................................... 3 2.1.2 Tomcat ...................................................... 3 2.1.3 Oracle数据库 ................................................ 4 2.1.4 PLSQL Developer ............................................. 5 2.1.5 SI Object Browser ........................................... 6 2.2运行环境 .......................................................... 6
2.2.1硬件环境 ..................................................... 7 2.2.2软件环境 ..................................................... 7
3 开发技术简介 ........................................................... 8
3.1 Spring简介 ....................................................... 8
3.1.1 概述 ........................................................ 8 3.1.2为什么需要Spring ............................................ 9 3.1.3 Spring带给我们什么 .......................................... 9 3.1.4 Spring框架的好处 ........................................... 10 3.1.5 Spring能做什么? ........................................... 11 3.1.6 Spring的下载和安装 ......................................... 12 3.2 Struts简介 ...................................................... 13
3.2.1概述 ........................................................ 13 3.2.2 Struts流程 ................................................. 13 3.2.3 Struts的MVC模式 ........................................... 14 3.2.4 Struts1和Struts2的不同 .................................... 15
4 需求分析 .............................................................. 18
4.1系统设计目的 ..................................................... 18 4.2系统机能图 ....................................................... 18
IV
4.3系统功能描述 ..................................................... 19 4.4 系统预期目标 ..................................................... 19 5 概要设计 .............................................................. 20
5.1 系统模块划分 ..................................................... 20 5.2 系统流程图 ....................................................... 20 5.3 系统界面设计 ..................................................... 20
5.3.1 系统界面 ................................................... 21 5.3.2 系统主菜单界面 ............................................. 21 5.3.3 系统界面定义一览表 ......................................... 22 5.4 系统数据结构 ..................................................... 23 6 详细设计 .............................................................. 25
6.1 登录设计 ......................................................... 25 6.2 系统业务详单设计 ................................................. 25 6.3 业务详细设计 ..................................................... 26 7 测试 .................................................................. 28
7.1 登陆测试 ......................................................... 28
7.1.1 输入性验证 ................................................. 28 7.1.2 页面跳转 ................................................... 30 7.2 详细机能测试 ..................................................... 30
7.2.1 进货预定的录入 ............................................. 31 7.2.2进货预定的检索 .............................................. 32 7.2.3 进货预定数据的更新 ......................................... 32 7.2.3 进货预定数据的删除 ......................................... 33
致 谢 ................................................................... 34 参 考 文 献 ............................................................. 35 附录 部分源代码 ......................................................... 36
供应链物流管理系统 1
1 前言
1.1 课题意义
供应链物流,即第三方物流,它是在物流渠道中由中间商提供的服务,中间商以合
同的形式在一定期限内,提供企业所需的全部或部分物流服务。在美国,第三方物流业被认为尚处于产品生命周期的发展期;第三方物流在美国已深入民心,有高达58%的物流量是通过第三方业者完成的,且其需求仍在增长,而且33%的非第三方物流服务用户正积极考虑使用第三方物流服务,美国 72%的第三方物流服务用户认为他们有可能在三年内增加对第三方物流服务的运用。一些行业观察家已对市场的规模做出估计,整个美国第三方物流业的收人已从1994年的15 0亿美元增长到1996年的250亿美元,并有望在2000年突破500亿美元大关。目前的 250亿美元被认为占美国相关市场的6%,那意味着有相当于4200亿美元的市场规模。
在欧洲,尤其在英国,普遍认为第三方物流市场有一定的成熟程度。欧洲目前使用第三方物流服务的比例约为76%。研究表明,欧洲24%的非第三方物流服务用户正积极考虑使用第三方物流服务;欧洲62%的第三方物流服务用户认为他们有可能在三年内增加对第三方物流服务的运用。欧洲最近的潜在物流市场的规模估计约为9500亿美元。有资料显示,德国的物流市场总额为346亿美元,其中第三方物流企业的营业额为80多亿美元,占23.33%。在物流配送社会化程度最高的日本,第三方物流在整个物流市场的份额高达80%。
由此可见,全世界的第三方物流市场具有潜力大、渐进性和高增长率的持证。这种状况使第三方物流业拥有大量服务提供者,大多数第三方物流服务公司是以传统的物流业为起点而发展起来的,如仓储业、运输业、空运、海运、货运代理和企业内的物流部等,他们根据顾客的不同需要,通过提供各具特色的服务取得成功。美国目前有四百多个第三方物流供应商,其中大多数公司开始时并不是第三方物流服务公司,而是逐渐发展进入该行业的。
在供应链物流具有如此好的发展前景下,在当前信息化逐渐深入社会的每一个角落的形势下,一个功能完善的物流管理系统软件的研发就显得尤为重要了。
本课题设计的SLWMS就是一款特别适应于第三方物流企业物流仓储业务的智能化管理系统。该系统根据第三方仓储业务的特点,以支持货主企业对于其货物仓储管理的要求为主,对于各种不同货主的服务需求,通过设定规则全面管理物流仓储作业。也可适用于分销配送中心。它能使您在处理物流的核心配送和仓储环节时大幅度缩短作业时间和降低作业成本-自您收到作业指令到您将产品付运。实时的管理能有效加速您复杂的仓库作业执行速度,同时降低您作业中可能会出现的差错。对库存总量和输出单据的
陕西科技大学毕业设计说明书 2
有效管理更会令您在物流作业中受到事半功倍的效果。
1.2 国内外研究现状
作为物流业的新兴领域,第三方物流在国外的物流市场上已占据了相当可观的份量,欧洲目前使用第三方物流服务的比例约为76%,美国约为58%,日本约为80%;同时,欧州有24%、美国有33%的非第三方物流服务用户已积极考虑使用第三方物流;欧洲62%、美国72%的第三方物流服务用户认为他们有可能在未来几年内再增加对第三方物流服务的需求。美国IDC公司进行的一项供应链和物流管理服务研究表明:全球物流业务外包将平均每年增长17%。在美国,通过第三方物流进行业务的重组,物流成本从1980年占GDP的17.2%下降到了1997年的10.5%,再到2004年的7.5%。实践证明,第三方物流服务的营运成本和效率,远远优于企业自营物流。它可以帮助企业精干主业,减少库存,降低成本,提高核心业务的竞争力。因而,作为后发物流产业和物流市场大国,应树立新观念,立足于高起点,力争实现我国物流业跨越式发展。
然而根据调查同时也显示,40%的企业对于第三方物流表现出不满意。究其不满意的原因,80%归结于第三方物流无法对于企业客户的需求变化进行快速及时的响应。多方因素致使3PL无法及时快速响应2009年4月至7月间,博科资讯物流供应链研究中心研究人员实地走访了江浙沪三地100家第三方物流企业。经过调查研究,发现几大因素致使第三方物流无法及时响应客户变化需求。 (1)规模小,实力弱,服务功能不全。 (2)物流渠道不畅。
(3)人才匮乏,设施落后,管理水平低。
提升第三方物流水平迫在眉睫,我国第三方物流市场规模在600亿元~700亿元,不仅规模小,而且高度分散,在1万至1.5万家第三方物流企业中,没有一家企业能占到2%以上的市场份额,大多数物流公司只是局限在供应链功能的一小部分,无法满足客户的一体化物流服务需求。近几年,我国的第三方物流市场以每年16%~25%的速度增长。虽然我国物流行业发展很快,但目前我国第三方物流整体水平还比较低。
博科资讯董事长沈国康指出,由于大部分物流企业是从原来的储运业转型而来,大都未形成核心竞争力,企业的技术水平与管理水平不高,发展后劲不足。运用信息化手段提高第三方物流快速及时响应客户需求变化的能力,从而提高核心竞争力,是很多第三方物流企业应对市场竞争的必然选择。
信息化不应只针对局部供应链流程的信息化建设,而应通过信息化实现供应链的整合。供应链的信息化整合是要旗帜鲜明地贯彻供应链一体化的思想。通过“操作层”、“决策层”和“供应链电子商务层”这一结构清晰的框架,为第三方物流提供着眼于全面资源整合的信息化解决方案。这样才能从上至下解决第三方物流无法及时响应客户需求变化的硬伤,而不是隔鞋搔痒。
供应链物流管理系统 3
2 编程环境基础知识
2.1 系统开发工具
2.1.1 MyEclipse
MyEclipse企业级工作平台(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结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。本系统的开发运用了当前最新发布的版本MyEclipse8.5。 2.1.2 Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而
陕西科技大学毕业设计说明书 4
且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。 2.1.3 Oracle数据库
Oracle的关系数据库是世界第一个支持SQL语言的数据库。1977年,Lawrence J.Ellison领着一些同事成立了Oracle公司,他们的成功强力反击了那些说关系数据库无法成功商业化的说法。现在,Oracle公司的财产净值已经由当初的2000美元增值到了现在的年收入超过97亿美元。
Oracle的目标定位于高端工作站以及作为服务器的小型计算机。Oracle的路线同Sun微系统公司类似,都提出了网络计算机的概念。Oracle宣称自己是世界上首家百分之百进行基于互联网的企业软件的软件公司。
整个产品线包括:数据库、服务器、企业商务应用程序以及应用程序开发和决策支持工具。从Oracle首席执行官Ellison的发言可以看出Oracle对网络计算的信心,他说:“Oracle公司的成败依赖于互联网是否能够成为将来的主流计算方式,如果答案是‘是’,Oracle就赢了”。
Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore。2000年(99年6月到2000年5月)营业额达101亿美元,再创Oracle公司销售额历史新高,比去年增长了13亿美元,盈利增长61%,达到21亿美元。Oracle公司现有员工超过三万六千人,服务遍及全球145个国家。 Oracle公司拥有世界上唯一一个全面集成的电子商务套件Oracle Applications R11i,它能够自动化企业经营管理过程中的各个方面,深受用户的青睐,促使Oracle应用软件在2000财年第四季度的销售额达4.47亿美元,与 SAP公司的同期应用软件销售额3.52亿美
供应链物流管理系统 5
元相比,多出近1亿美元,这一事实表明,Oracle已经是世界最大的应用软件供应商。Oracle电子商务套件涵盖了企业经营管理过程中的方方面面,虽然它在不同的方面分别面对不同的竞争对手,而Oracle电子商务解决方案的核心优势就在于它的集成性和完整性,用户完全可以从Oracle公司获得任何所需要的应用功能,更重要的是,它们具有一致的基于Internet技术的应用体系结构,而如果用户想从其它厂商处获得Oracle电子商务所提供的完整功能,不仅需要从多家厂商分别购买不同的应用,而且需要另请咨询公司把这些不同的应用装配起来,还必须确保它们能够协同地工作。
先进的产品和高效率的企业运作,是Oracle公司利润得以继续增长的重要原因,一年前,Oracle公司确定了通过采用自身的Internet电子商务解决方案,实现每年节省10亿美元企业日常运作费用的目标,这一数据相当于将我们的年度利润率提高10%。
四年前电子商务在全球范围内还仅处于萌芽状态时,Oracle公司便前瞻性地作出了从领先的数据库厂商向以Internet计算为基础的完整的电子商务解决方案供应商转型的战略部署。这一前瞻性战略为Oracle带来了巨大的利益,今天,Oracle能够领先于竞争对手提供包括平台产品、应用产品和完善的服务在内的先进的、完整的、集成的电子商务解决方案,可以无缝集成供应链管理(SCM)、企业资源管理(ERP)、客户资源管理(CRM)和企业商业智能 (BI)和电子商务应用IP(Internet Pocurement)、Exchange、Portal-to-go等产品。Oracle从低端到高端的所有方案100%基于Internet应用体系结构,都可以通过Web安全、直接地访问,使企业能够通过Web完成包括报价、定单、支付、执行、服务等在内的企业业务过程的所有环节,帮助企业将现有业务内容快速转移到电子商务,迅速获得来自电子商务的高效益。
Oracle应用产品包括财务、供应链、制造、项目管理、人力资源和市场与销售等150多个模块,荣获多项世界大奖,现已被全球近7600多家企业所采用。由于在电子商务方面的杰出表现,Oracle公司在美国Mongan Stanley公司最新公布的权威性全球企业1000强中,从去年的第122名一跃成为第13名,成为全球第二大独立软件公司和最大的电子商务解决方案供应商。目前, Amazon和Dell等全球十个最大的Internet电子商务网站、全球十个最大的B-to-B网站中的九个、93%的上市.COM公司、65家“财富全球100强”企业均不约而同地采用Oracle电子商务解决方案。 2.1.4 PLSQL Developer
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C++、
码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。
陕西科技大学毕业设计说明书 6
Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的目的是联合数据库语言和过程语言。PL/SQL的基本单位叫做一个区段,由三个部份组成:一个申明部份,一个可运行部份,和排除-构建部分。 因为PL/SQL允许混合SQL申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL申明,没有PL/SQL,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加响应时间。PL/SQL区段只被编译一次并且以可运行的形式储存,以降低响应时间。 2.1.5 SI Object Browser
一款日本开发的oracle数据库软件,在对日外包界被广泛使用。目前在中文版已
有贩卖。 主要功能如下: Oracle对象的建立与管理
能简单地在GUI创建和管理数据库、视图等对象。 可以由专用的Grid直接编辑数据表中的数据。 此外还有将数据导出到EXCEL等功能。 高度的SQL执行功能 。
不仅仅能够通过GUI输入并执行SQL还能通过直接输入的方法。执行过的SQL会被记录,能简单地再次执行。
执行结果也会显示在spreadsheet上,方便查看。而且如有可能的话,也可以直接编辑显示的结果将其反应到数据库里。还可以将SELECT结果用EXCEL导出。 存储过程的开发 。
可以用screen editor做成PROCEDURE、FUNCTION等存储过程并进行编辑。还可以使用强有力的debug环境。具备以下功能:指出编译错误的发生场所、可以输入参数的执行窗口、显示执行时的错误、对应DBMS-OUTPUT Package等。 各种DBA信息的管理 。
还支持用户管理、数据库初始化参数的编辑、Session的跟踪、实绩统计的参照等DBA所必需的功能。
还可以在GUI上调用Oracle Export/Import工具。
2.2运行环境
供应链物流管理系统 7
2.2.1硬件环境
表2-1 硬件环境表
处理器: 硬盘: 内存: 显示器: 打印机: 其他: Pentium IV 以上(推荐) 20GB (以上) 1GB (以上) SVGA 1024 × 768 32 位真彩色 A4幅面打印机・标签打印机 CD-ROM,鼠标
2.2.2软件环境
表2-2 软件环境表
服务器端操作系统: 客户端操作系统: 数据库管理系统: 其它软件: 开发工具: 浏览器: Windows 2003 Server以上 支持IE6.0以上版本的Windows XP Professional等 Oracle10g以上 Microsoft Office 2000以上 MyEclipse 8.5、Tomcat6.0 IE 6.0
陕西科技大学毕业设计说明书 8
3 开发技术简介
3.1 Spring简介
3.1.1 概述
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转——Spring通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们
供应链物流管理系统 9
是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。 3.1.2为什么需要Spring
你可能正在想“Spring不过是另外一个的framework”。当已经有许多开放源代码(和专有) J2EE framework时,我们为什么还需要Spring Framework?
Spring是独特的,因为若干个原因:
(1)它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。
(2)Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
(3)它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
Spring对工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。
3.1.3 Spring带给我们什么
(1)方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 (2)AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
陕西科技大学毕业设计说明书 10
(3)声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。 (4)方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。 (5)方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
(6)降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。 (7)Java 源码是经典学习范例
Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。 3.1.4 Spring框架的好处
在我们进入细节以前,让我们看一下Spring可以给一个工程带来的一些好处: (1)Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题。
(2)Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。
(3)Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。 (4)Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。 (5)Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
供应链物流管理系统 11
(6)使用Spring构建的应用程序易于单元测试。
(7)Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
(8)Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。
(9)Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。
总结起来,Spring有如下优点: (a)低侵入式设计,代码污染极低。
(b)独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺。 (c)Spring的DI机制降低了业务对象替换的复杂性。
(d)Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。 3.1.5 Spring能做什么?
Spring提供许多功能,在此我将快速地依次展示其各个主要方面。
首先,让我们明确Spring范围。尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及。
Spring的主要目的是使J2EE易用和促进好编程习惯。
Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/R mapping层,对此,已有有好的解决办法如Hibernate和JDO。
Spring的目标是使已存在的技术更加易用。
例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。
Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地。在某些领域,例如轻量级的IoC容器和AOP框架,Spring有直
陕西科技大学毕业设计说明书 12
接的竞争,但是在这些领域还没有已经较为流行的解决方案。(Spring在这些区域是开路先锋。)
Spring也得益于内在的一致性。
所有的开发者都在唱同样的的赞歌,基础想法依然是Expert One-on-One J2EE设计与开发的那些。
并且我们已经能够使用一些主要的概念,例如倒置控制,来处理多个领域。 Spring在应用服务器之间是可移植的。
当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的应用服务器上的用户。 3.1.6 Spring的下载和安装
下载和安装Spring请按如下步骤进行。
(1)登录http://www.springframework.org/download站点,下载Spring的最新稳定版本。最新版本为Spring Framework 2.5.5.建议下载 spring-framework-2.5.5-with-dependencies.zip这个压缩包不仅包含Spring的开发包,而且包含Spring编译和运行所依赖的第三方类库。
下载地址:http://mesh.dl.sourceforge.net/sourceforge/springframework/spring-framework-2.5.5-with-dependencies.zip
解压缩下载到的压缩包,解压缩后的文件夹应用如下几个文件夹。
1) dist:该文件夹下放Spring的jar包,通常只需要Spring.jar文件即可。该
文件夹下还有一些类似spring-Xxx.jar的压缩包, 这些压缩包是spring.jar压缩包的子模块压缩包。除非确定整个J2EE应用只需要使用Spring的某一方面时,才考虑使用这中分模块压缩包。通常建议使用Spring.jar 2) docs:该文件夹下包含spring的相关文档、开发指南及API参考文档。 3) lib:该文件夹下包含spring编译和运行所依赖的第三方类库,该路径下的类
库并不是spring必需的,但如果需要使用第三方类库的支持,这里的类库就是必需要的。
4) samples:该文件夹下包含Spring的几个简单例子,可作为Spring入门学习的
案例。
5) src:该文件夹下包含Spring的全部源文件,如果开发过程中有地方无法把握,
可以参考该源文件,了解底层实现。 6) test:该文件夹下包含Spring的测试示例。 7) tiger:该路径下存放关于JDK的相关内容
供应链物流管理系统 13
8) 解压缩后的文件夹下,还包含一些关于Spring的License和项目相关文件 (2)将spring.jar复制到项目的CLASSPATH路径下,对于Web应用,将spring.jar文件复制到WEB-INF/lib路径下,该应用即可以利用Spring框架了。
(3)通常Spring的框架还依赖于其他一些jar文件,因此还须将lib下对应的包复制到WEB-INF/lib路径下,具体要复制哪些jar文件,取决于应用所需要使用的项目。通常需要复制cglib,dom4j,jakarta-commons,log4j等文件夹下的jar文件。 (4)为了编译java文件,可以找到Spring的基础类,将Spring.jar文件的路径添加到环境变量CLASSPATH中。当然,也可以使用ANT工具,但无须添加环境变量。如果使用Eclipse或者NetBeans等IDE时,也不需要设置环境变量。
3.2 Struts简介
3.2.1概述
Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。
Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,都试图开发自己的标记,Struts是一个很好的起点;关于页面导航,将是一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件(struts.config.xml),即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当新的开发者接手这个项目时,这种优势体现得更加明显。
3.2.2 Struts流程
服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。
以登陆为例:第一次进login.jsp会先实例化Form、把默认值(String默认为空字符串,整形默认为0)赋给表单元素。
输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示
陕西科技大学毕业设计说明书 14
验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法。
Struts处理请求的详细过程:
1) 客户端浏览器发送请求到ActionServlet,ActionServlet根据请求的路径和struts-config.xml的配置信息找到对应的Action Bean 和 Form Bean 。如发送请求http://hocalhost:8080/myweb/register.do到服器,
2) ActionServlet就会根据struts配置信息找path属性为“/register”的Action Be
an,于是找到RegisterAction,并得知RegisterAction的name属性为\"memberForm\于是找到MemberForm的实例(如果不存在则创建)。
3) 在确定将要调用的Action Bean 和 对应的Form Bean后,就将请求中的值填
充到Form Bean 中(Action可以不关联任何ActionForm,这一步是可选的)。在调用Action的execute方法之前,ActionServlet还要准备好ActionMapping 参数,ActionMapping中包含了该Action的配置信息。
4) 然后struts将请求分发至相应的 Action Bean 处理,ActionMapping参数,Ac
tionForm参数,request 和 response都作为参数传给处理请求的Action Bena 的 execute 方法。
5) Action 调用业务逻辑方法,得到返回值,并返回ActionForward对象。 6) 控制权重新回到 ActionServlet ,ActionServlet 很据 Action 返回的 ActionFor
ward 对象转发到相应的jsp 7) 处理结果返回给浏览器。 3.2.3 Struts的MVC模式
(1)模型
在Struts框架中,模型分为两个部分: 1) 系统的内部状态
2) 可以改变状态的操作(事务逻辑)
内部状态通常由一组ActinForm和 JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是具有持续的状态,或只在需要时才(从数据库)获得数据。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是Struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。
供应链物流管理系统 15
需要注意的是,我们应该将将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。 (2)视图
由JSP建立,Struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。 (3)控制器
Struts中,基本的控制器组件是ActionServlet类中的实例servlet,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。 3.2.4 Struts1和Struts2的不同
虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2
与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。
Apache Struts 2即是之前大家所熟知的WebWork 2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2。 (1)Action 类:
1) Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽
象类编程而不是接口。
2) Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选
和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
(2)线程模式:
1) Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一
个实例来处理所有的请求。单例策略限制了Struts1 Action能做的事,并且 要在开发时特别小心。Action资源必须是线程安全的或同步的。 2) Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实
陕西科技大学毕业设计说明书 16
际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
(3)Servlet 依赖:
1) Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpSer
vletRequest 和 HttpServletResponse 被传递给execute方法。
2) Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需
要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
(4)可测性:
1) 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这
使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
2) Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”
支持也使测试更容易。
(5)捕获输入:
1) Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基
类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
2) Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需
求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。
(6)表达式语言:
1) Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是
对集合和索引属性的支持很弱。
2) Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--\"Ob
ject-Graph Navigation Language\" (OGNL对象图导航语言).
(7)绑定值到页面(view):
1) Struts 1使用标准JSP机制把对象绑定到页面中来访问。
2) Struts 2 使用 \"ValueStack\"技术,使taglib能够访问值而不需要把你的页
供应链物流管理系统 17
面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
(8)类型转换:
1) Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Be
anutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
2) Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。 (9)校验:
1) Struts 1支持在ActionForm的validate方法中手动校验,或者通过Common
s Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
2) Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框
架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
(10)Action执行的控制:
1) Struts1支持每一个模块有单独的Request Processors(生命周期),但是模
块中的所有Action必须共享相同的生命周期。
2) Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建
不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
陕西科技大学毕业设计说明书 18
4 需求分析
4.1系统设计目的
在物流系统中,随着物流从原材料供应商到最终客户这样一个流动过程,资金流和信息流是伴随其中的。在整个供应链过程中,对商品、服务、供应链各参与方——供应商、制造商、分销商、服务商和各种物理位置如商店和仓库等的准确标识是信息采集的基础,通过网络系统可以有效的查询货物流动的信息。通过对物流管理系统的设计,使学生对编程有一个基本了解,能比较好的解决编程中的技术问题,使学生更好地把学到的知识与实际要求相结合。
物流仓储信息管理系统研究的内容涉及库存管理的全过程,包括入库、库存、拣货、出库、库存统计查询等等,通过系统的实现和使用,来提高物流企业的工作效率和最大限度地降低物流企业的运营成本。
4.2系统机能图
生产工厂 Internet 订单 入库预定 出货指示 网络贩卖 配送 供应链物流中心管理系统 生产指示 送货指示 库存/出库报告 配送 货物订单 货主 商场
图4-1 系统机能图
供应链物流管理系统 19
4.3系统功能描述
(1)货物入库上架管理:
1) 进行入库货物预定数据的登录,确认。准备入库的商品进行检验,并打印入
库用标签。
2) 根据入库用标签上提供的货架号,对货物进行上架操作。 (2)货物出库配送管理:
接受客户的货物订单,对库存货物进行出库预定计算,打印下架货物清单,根据打印清单进行货物分拣,包装,打印送货票和交货单,从仓库搬出货物。 (3)货物盘点管理:
根据委托客户的要求定期对仓库的货物进行清点,并报告差异情况,对库存货物的数量等情报进行更新。 (3)仓库货架管理:
1) 对库存货物所在的位置进行管理,货物移动,库存情况等的管理,提高货物
的保管效率。
2) 定期对货物的库存情况进行检查,及时给货主报告库存情况。 (3)工厂退货管理:
对入库检验或者从商场,用户来的不合格货物,要求返回重新加工的货物等进行退货处理。
(3)贩卖退货管理:
客户有退货的情况下,对货物进行检验,良品入库,不良品返回工厂。照一定顺序将物品堆放在货垛上)、移库(改变原有货物的推放货垛)。
4.4 系统预期目标
(1)用户操作直观,方便,界面友好; (2)系统使用功能齐全,可靠,稳定; (3)更快更稳定的执行指令,完成要求; (4)便于维护和修改。 (5)高效率的查询
陕西科技大学毕业设计说明书 20
5 概要设计
5.1 系统模块划分
经过较为详细的需求分析,将系统划分为7个模块,模块图如下:
SLWMSWEB物流管理系统 基本信息管理 进货入库管理 出货出库管理 库存管理 库存盘点 工厂退货 贩卖退货
图5-1系统模块图
5.2 系统流程图
图5-2系统流程图
5.3 系统界面设计
供应链物流管理系统 21
5.3.1 系统界面
5.3.2 系统主菜单界面
陕西科技大学毕业设计说明书 22
5.3.3 系统界面定义一览表
表5-1系统界面定义一览
No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 出货出库 进货入库 基本信息管理 分类 共通 机能ID S000000 S000100 S000001 S000101 S000102 S000103 S99M004 S99M005 S99M006 S99M008 S99M010 S99M011 S99M013 S99M015 S010100 S010101 S010200 S010201 S010300 S010301 R010100 R010200 S020100 S020101 S020200 S020201 S020202 S020300 S020301 机能名称 用户登录 主菜单 注销 商品编号检索 顾客编号检索 供货商编号检索 货架区域基本信息 货架行列基本信息 货架基本信息 货物基本信息 顾客基本信息 供货商基本信息 用户基本信息 货架设定管理 进货预定数据录入 进货预定数据一览 进货录入 进货实绩数据一览 上架保管录入 上架实绩一览 进货预定数据一览表 保管票 出货指示数据录入 出货指示数据一览 分拣预定一览 分拣指示一览表打印 分拣指示取消 出货商品检验处理 出货商品检验一览 供应链物流管理系统 23
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 贩卖退货 库存盘点 工厂退货 库存管理 S020400 S020401 R020200 R020300 S030100 S030200 S030201 S030300 S030301 R030100 S040100 S040101 S040200 R040100 S050100 S050101 R050100 S060100 S060101 S060200 R060100 R060200 装车检验 装车状况一览 分拣指示一览表 出货单 库存一览 货架移动 货架移动履历一览 库存调整 库存调整履历一览 库存一览表 工厂退货录入 工厂退货一览 工厂退货出库确定 工厂退货一览表 贩卖退货录入 贩卖退货一览 贩卖退货一览表 盘点指示数据录入 盘点状况一览 盘点调查表数据录入 盘点调查表 盘点差异一览表 5.4 系统数据结构
表5-2系统表结构定义一览
No. 1 2 3 4 5 6 7 8 表名称 货主基本信息 仓库基本信息 管理属性基本信息 货架区域基本信息 货架行列基本信息 货架基本信息 商品基本信息 顾客基本信息 表ID M001_OWNER M002_WAREHOUSE M003_MGT_ATTRI M004_AREA M005_ZONE M006_LOC M008_ITEM M010_CUSTOM 陕西科技大学毕业设计说明书 24
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 供货商基本信息 区分基本信息 用户基本信息 编号TBL 库存TBL 库存调整实绩TBL 出货指示TBL 出货指示明细TBL 出库预约TBL 出库预约错误TBL 分拣指示TBL 分拣指示明细TBL 出库预约工作表TBL 出货商品检验作业状况TBL 出货商品检验实绩TBL 装货箱TBL 装货箱明细TBL 交货单TBL 交货单明细TBL 进货预定信息TBL 进货实绩TBL 入库实绩TBL 保管TBL 结算实绩TBL 盘点调查表 用户登录履历TBL 货架移动履历TBL 工厂退货出货TBL 贩卖退货进货TBL M011_SUPPLIER M012_KBN M013_LOGIN_USER T001_GET_ID T002_STOCK T003_STOCK_ADJUST_JS T004_FORWARD_SIJI T005_FORWARD_SIJIM T006_MATCHING T007_MATCH_ERR T008_ORDER_PICKING_INFO T009_ORDER_PICKING_DETAIL T010_TMP_MATCH T012_ORDERCHECK T013_ORDERCHECK_JS T014_CARTON T015_CARTON_MEISAI T016_NOUHIN_LIST T017_NOUHIN_LIST_MEISAI T019_ARRIV_SCH T020_ARRIV_JS T021_STORE_JS T022_STORAGE T023_CLOSE_JS T027_EXAMINE T028_LOGON_HIST T031_MOVE_JS_HIST T032_RETURN_SHIP T033_RETURN_ARRIV
供应链物流管理系统 25
6 详细设计
6.1 登录设计
(1)初始化表示:
将顾客的编号,密码,信息栏清空。 顾客编号获得焦点。
1) 检查顾客编号及密码的录入:
如果有没有录入信息,显示错误信息,处理中断。 2) 在用户信息管理处检查用户密码,从数据库取得用户信息。 3) 若用户信息的密码同页面录入密码一致,将用户信息
4) 显示在session中,在履历信息里登录数据,跳转到主菜单页面,在登录履历表
里插入登录信息。
5) 若用户信息不存在或者密码不一致,在信息栏中显示“用户编号或者密码出现
错误”。
(3)按下清除按钮时清除页面录入内容,客人编号获得焦点。
(2)按下登录按钮:
6.2 系统业务详单设计
(1)初始显示
显示共同标题。
根据内部保存信息显示仓库名,货主名,用户名,系统日期。 1) 进货入库业务: 2) 出货出库业务:
进货预定信息一览 进货录入 入库录入
出货指示录入 出货指示一览 出库预约取消 分拣表打印
出货商品检验处理 出货商品检验一览
进货预定信息录入 进货实绩一览 入库实绩一览
3) 库存管理业务:
库存一览
货架移动履历一览 货架移动录入 库存调整
库存调整履历一览
(2)显示各个业务的菜单名。
出库预约结果一览
陕西科技大学毕业设计说明书 26
4) 基本信息管理: 商品基本信息 顾客基本信息 用户基本信息
设定货架
5) 盘点业务: 盘点指示录入 盘点调查表录入
6) 工厂退货业务:
工厂退货录 工厂退货一览 工厂退货出货确定
盘点状况一览
供货商基本信息
7) 贩卖退货业务: 贩卖退货录入 贩卖退货一览
(3)按下菜单按钮时,跳转到各自页面。 (4)按下退出登录按钮时
1) 显示确认信息:“是否真的要退出?”。
“是”的状况下,进行退出登录处理。 “不是”的状况下,停止退出登录处理。 2) 进行退出登录处理
更新用户登录履历。
6.3 业务详细设计
本系统业务繁多复杂,操作流程相似,限于篇幅,只对进货入库信息录入做详细描述如下: (1)初始显示
新增模式下:
进货预定日期显示为系统日期;
供货商编号,订货商号码,商品明细均显示为空值; 供货商编号获得焦点; 页面不显示进货管理ID; 设置登录按钮,清除按钮为可用; 设置删除按钮为不可用; 明细行固定显示为20行。
从进货预定信息一览页面开始的时,根据进货ID取得进货预定信息; 显示进货管理ID;
在基本信息栏和商品明细栏里显示进货预定信息; 将登录按钮删除按钮设置为可用。
修改模式下:
(2)按下供货商编号检索按钮时
供应链物流管理系统 27
跳转到供货商检索页面,将选择的供货商信息返到页面 跳转到商品检索页面,将选择的商品信息返回到选择按钮所在行 检查页面录入内容;
进货预定日期,供货商编号,订货商号码未录入的情况下,在信息栏显示“请录入商品明细行中,商品编号和预定数目为必填项目,若未录入,在信息栏中显示“请
(3)按下商品编号检索按钮时 (4)按下登录按钮时
XXXX”信息; 录入XXXX”;
必须检查供货商编号和商品编号的存在情况; 在商品明细行中必须有一行录入信息;
将供货商编号和订货商号码做为条件,检查进货预定信息TBL中数据的存在情况; 若存在显示信息“已经存在”若不存在,进行登录; 检查NG时,显示错误消息,错误项目获得焦点;
进货管理ID作为条件,检查进货实绩数据,若数据存在,出现错误,显示信息,处理中止;
数据登录:
正常登录时,将页面初始化。 异常中止时,在信息栏显示错误消息。
(5)按下删除按钮时
将进货管理ID作为条件,检查进货状况的数据:
设置进货录入数据不可删除; 检查NG的时候,显示错误信息。
(6)按下清除按钮时
删除时:
若正常删除完毕,将页面初始化;
若删除异常停止,在信息栏中显示错误消息。
(7)按下返回按钮时
跳转到主菜单页面。
陕西科技大学毕业设计说明书 28
7 测试
7.1 登陆测试
7.1.1 输入性验证 (1)、没有输入的情况下登录
供应链物流管理系统 29
(2)、只输入用户名的情况下登录:
(3)、只输入密码的情况下登录:
陕西科技大学毕业设计说明书 30
7.1.2 页面跳转
输入正确的情况下,页面正常跳转到主菜单界面:
7.2 详细机能测试
本系统机能繁多复杂,限于篇幅,只对进货预定的测试作出文档描述如下:
供应链物流管理系统 31
7.2.1 进货预定的录入
点击登录后:
陕西科技大学毕业设计说明书 32
7.2.2进货预定的检索
7.2.3 进货预定数据的更新
在上一个页面上选中检索到的数据后点击“详细”按钮到达数据详细页面:
供应链物流管理系统 33
将预定量和备注都由原来的20改为5后,点击更新,然后再检索并跳转到详细页面:
7.2.3 进货预定数据的删除
在当前页面上点击“删除”按钮:
陕西科技大学毕业设计说明书 34
致 谢
本毕业设计和论文的顺利完成,首先要感谢我的导师李勇老师自始至终的给予的帮助和支持,不管是在毕业设计的选题,论文的开题,还是在设计的思路上,李老师都给予了我悉心的教导和关怀。
感谢我的每一位老师和身边的同学们,在我的毕业设计进行遇到困难的时候,给予了我实时的帮助和建议。
感谢西安软件服务外包学院,让我学习到了软件设计行业的许多基础知识以及工作的方法和技巧,并顺利的在毕业前顺利签约工作,在毕业设计中也给予了我强有力的支持。
书到用时方恨少,在本次毕业设计和论文的完成作过程中,我深感自己的知识和技能还非常的欠缺。生命不息,学习不止,人生就是一个不断学习和完善的过程,敢问路在何方?路在脚下!
供应链物流管理系统 35
参 考 文 献
[1] 董千里.基于供应链管理的第三方物流战略研究[J],中国软科学,2000(10):34-38 [2] 王金霞,王耀球.供应链的形成及第三方物流[J],物流技术,2000,18(3):30-31. [3] 陈昊鹏.Java编程思想(第4版)[M].北京:机械工业出版社,2007:202-337. [4] Bruce Eckel.Thinking in Java (4th Edition)[M].America:Prentice Hall PTR,2006. [5] 孙鑫.Struts2深入详解[M].北京:电子工业出版社,2008:9787121068126. [6] 周伟.精通J2EE-Eclipse Struts Hibernate Spring整合应用案例[M].北京:人民邮电出版社,2006:169-234.
[7] Jeff Heaton.JSP Standard Tag Library Kick Start[M].Pearson Education,2002:167-196.
[8] Ivan Bayross.Java Server Programming for Professionals[M].Shroff Publishers and Distributors Pvt. Ltd.,2008:102-154.
[9] Damon Hougland.Essential JSP for Web Professionals[M].Prentice Hall PTR,2001:48-137.
[10] 董志鹏,刘新龙.Oracle 11g从入门到精髓[M].电子工业出版社,2007,2:22-25. [11] 陈凌云.精通Eclipse Web开发——JAVA体系结构 工具 框架及整合应用[M].北京:人民邮电出版社,2006:177-281.
[12] 刘晓华.JSP应用开发详解[M].北京:电子工业出版社,2007:498-524.
陕西科技大学毕业设计说明书 36
附录 部分源代码
1、顾客实体bean
package com.sust.cn.ljw.s000102;
import java.io.Serializable; import java.util.ArrayList; import java.util.List;
import jp.co.bbinc.cissst.common.DomainBase; /**
* 顾客编号检索的bean * @version 1.0 */
public class CustomListBean extends DomainBase implements Serializable {
/** * 顾客名称 */
private String customNm; /**
* 顾客编号 */
private String customCd; /**
* 版本标识 */
private static final long serialVersionUID = 1L;
供应链物流管理系统 37
/** * result set */
@SuppressWarnings(\"unchecked\") private List rowsList = new ArrayList(); /** * 行数量 */
private Integer returnRowCount = 0; /**
*空的构造方法 */
public CustomListBean() { /**
* @return 顾客编号 */
public String getCustomCd() { } /**
* @param customCd 顾客编号的设定 */
public void setCustomCd(String customCd) {
return customCd; /**
* 寄托者编号 */
private String ownerCd; /**
* 仓库编号 */
private String warehCd;
}
陕西科技大学毕业设计说明书 38
} /**
this.customCd = customCd;
* @return 顾客名称 */
public String getCustomNm() { } /**
* @param customNm 顾客名称的设定 */
public void setCustomNm(String customNm) { } /**
* @return 仓库编号 */
public String getWarehCd() { } /**
* @param warehCd 仓库编号的设定 */
public void setWarehCd(String warehCd) { } /**
* @return 行列表 */
@SuppressWarnings(\"unchecked\") public List getRowsList() { } /**
* @param rowsList 行列表
return rowsList; this.warehCd = warehCd; return warehCd;
this.customNm = customNm; return customNm;
供应链物流管理系统 39
}
*/
@SuppressWarnings(\"unchecked\") public void setRowsList(List rowsList) { } /**
* @return 结果件数 */
public Integer getReturnRowCount() { } /**
* @param returnRowCount 结果件数 */
public void setReturnRowCount(Integer returnRowCount) { } /**
* @return 寄托者编号 */
public String getOwnerCd() { } /**
* @param ownerCd 寄托者编号的设定 */
public void setOwnerCd(String ownerCd) { }
this.ownerCd = ownerCd; return ownerCd;
this.returnRowCount = returnRowCount; return returnRowCount; this.rowsList = rowsList;
2、顾客检索的dao
package com.sust.cn.ljw.s000102;
import java.sql.ResultSet; import java.sql.SQLException;
陕西科技大学毕业设计说明书 40
import java.util.ArrayList; import java.util.List;
import jp.co.bbinc.cissst.util.CommonHelper;
import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; /**
* 顾客编号检索的dao继承JdbcDaoSupport实现ICustomListSql接口 * @version 1.0 */
public class CustomListDao extends JdbcDaoSupport implements ICustomListSql {
if (!CommonHelper.isEmptyString(pWarehouseCd)) { }
if (!CommonHelper.isEmptyString(pOwnerCd)) {
vSql.append(\"
AND RTRIM(M010.M010_WAREH_CD) = '\"
+
/**
* 查询顾客的详细信息 * @param pCustomCd * @param pWarehouseCd * @param pOwnerCd * @param pStartIndex * @param pEndIndex
* @return List @SuppressWarnings(\"unchecked\") public List final int pStartIndex, final int pEndIndex) throws DataAccessException { pWarehouseCd,final String pOwnerCd, List pWarehouseCd + \"' \" ); 供应链物流管理系统 41 } vSql.append(\" AND RTRIM(M010.M010_OWNER_CD) = '\" + pOwnerCd + \"' \"); if (!CommonHelper.isEmptyString(pCustomCd)) { } vSql.append(\" vSql.append(\" vSql.append(\" vSql.append(\" vSql.append(\" //执行查询操作 customList = getJdbcTemplate().query(vSql.toString(), new RowMapper() { public Object mapRow(ResultSet pRs, int index) throws SQLException { } }); return customList; CustomListBean customBean = new CustomListBean(); customBean.setCustomCd(pRs.getString(\"M010_CUSTOM_CD\")); customBean.setCustomNm(pRs.getString(\"M010_CUSTOM_NM1\")); customBean.setTotalRows(pRs.getString(\"FOUND_ROWS\")); ORDER BY \"); M010.M010_CUSTOM_CD \"); ) RESULT )\"); ROW_NO >= '\" + pStartIndex + \"' \"); AND ROW_NO <= '\" + pEndIndex + \"' \"); vSql.append(\" AND RTRIM(M010.M010_CUSTOM_CD) LIKE '\" + pCustomCd + \"%' \"); } } vSql.append(\"WHERE \"); return customBean; 3、顾客检索的service package com.sust.cn.ljw.s000102; import java.util.List; /** * 顾客编号检索的service */ 陕西科技大学毕业设计说明书 42 public class CustomListService { } 4、顾客检索SQL文 /** * 顾客编号检索的dao,由spring进行管理 */ private CustomListDao customListDao; /** * @return 顾客编号检索的dao */ public CustomListDao getCustomListDao() { } /** * @param customListDao有spring进行注入 */ public void setCustomListDao(CustomListDao customListDao) { } /** * 查询顾客的详细信息 * @param customCd * @param warehCd * @param ownerCd * @param startIndex * @param endIndex * @return List */ @SuppressWarnings(\"unchecked\") public List searchCustomDetail(String customCd, String warehCd, String ownerCd, int } return customListDao.searchCustomDetail(customCd,warehCd, ownerCd, startIndex, this.customListDao = customListDao; return customListDao; startIndex, int endIndex) { endIndex); package com.sust.cn.ljw.s000102; 供应链物流管理系统 43 /** * 顾客编号检索SQL文 */ public interface ICustomListSql { } /** * 检索顾客信息 */ public final String SQL_SELECT_CUSTOM_DETAIL = new StringBuilder() .append(\"SELECT * FROM\") .append(\" (SELECT \") .append(\" COUNT(*) OVER () AS FOUND_ROWS,RESULT.*,ROWNUM AS .append(\"FROM \") .append(\" .append(\" (SELECT \") M010.M010_CUSTOM_CD, \") ROW_NO \") .append(\" M010.M010_CUSTOM_NM1 || ' ' || M010_CUSTOM_NM2 .append(\" .append(\" .append(\" .append(\" .toString(); FROM \") M010_CUSTOM M010 \") M010.M010_TRAN_KBN < '3' \") WHERE \") M010_CUSTOM_NM1\") } 因篇幅问题不能全部显示,请点此查看更多更全内容