基于SSH架构的DRP分销管理系统-毕业设计.doc_第1页
基于SSH架构的DRP分销管理系统-毕业设计.doc_第2页
基于SSH架构的DRP分销管理系统-毕业设计.doc_第3页
基于SSH架构的DRP分销管理系统-毕业设计.doc_第4页
基于SSH架构的DRP分销管理系统-毕业设计.doc_第5页
免费预览已结束,剩余46页可下载查看

下载本文档

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

文档简介

毕 业 设 计 论文题目 基于 SSH 架构的 DRP 分销管理系统 摘 要 在目前市场竞争的驱动下 随着企业不断壮大 其分销网络规模也随之不断扩大 传 统的分销管理模式已经不再适用 本设计的重点是通过计算机的软件管理系统对企业的 营销网络 进行统一的管理 以提高效率 本 DRP Distribution Resource Planning 分销管理系统是针对一般的医药企业分 销管理的实际需要 通过具体的需求分析 而设计出来的 本系统以 RUP Rational Unified Process 开发流程为指导 采用 SSH Struts Spring Hibernate 架构进行设计和开发 采用 MyEclipse 作为主要的开发工具 MySQL 作为后台数据库 论文主要描述 DRP 分 销管理系统的 RUP 开发流程 分别从需求分析和系统分析 系统设计 详细设计与系 统实现以及测试这几个阶段进行描述 在整个流程中采用 UML 工具对系统进行辅助的 分析和设计 本系统还适当地使用 WEB 2 0 技术 Ajax 用异步传输的技术来增强用 户的使用体验 关键词 DRP 分销管理系统 SSH Ajax 目目 录录 1 绪 论 1 1 1 课题研究意义 1 1 2 课题现状与发展趋势 2 1 3 论文的组织结构 3 2 DRP 分销管理与信息化 4 2 1 DRP 分销管理系统的概念 4 2 2 DRP 分销管理与传统分销管理的区别 4 2 3 DRP 分销管理与信息化 4 2 4 DRP 分销管理系统的主要特点及其作用 5 3 SSH 架构 6 3 1 STRUTS 6 3 1 1 基本原理 6 3 1 2 工作流程 7 3 2 HIBERNATE 8 3 2 1 O R 映射框架 8 3 2 2 核心接口 9 3 3 SPRING 10 3 3 1 最常用的特性 10 3 3 2 控制反转与依赖注入 11 3 4 SPRING与 HIBERNATE的集成 11 3 5 SPRING与 STRUTS的集成 11 3 6 由 SPRING封装的过滤器 12 3 7 SSH 架构的配置与环境的搭建 12 4 系统分析 14 4 1 RUP 开发流程 14 4 2 UML 统一建模语言 14 4 3 需求分析 15 4 4 系统分析 15 5 系统设计 18 5 1 总体设计 18 5 1 1 模块设计 18 5 1 2 Web 应用程序的设计 18 5 1 3 数据库设计 19 5 2 详细设计 22 5 2 1 用户类及其管理接口 22 5 2 2 分销商类及其管理接口 24 5 2 3 物料类及其管理接口 26 5 2 4 核算期间类及其管理接口 27 5 2 5 流向单类及其管理接口 27 6 系统实现 29 6 1 开发工具与环境 29 6 2 主要代码设计 29 6 3 具体实现 31 6 3 1 Hibernate 应用 31 6 3 2 Spring 应用 32 6 3 3 Struts 应用 33 6 4 FILTER应用 35 6 5 开源组件的应用 36 6 6 AJAX技术的应用 37 6 7 系统测试 38 6 7 1 系统登录 38 6 7 2 测试各功能 39 总 结 44 参考文献 46 英文摘要 47 致 谢 48 仲恺农业工程学院毕业论文 设计 成绩评定表 49 1 1 绪 论 1 1 课题研究意义 随着计算机和网络的普及 信息技术以非常快的速度发展着 加上激烈的市场竞争 各行各业都需要统一管理 运用信息技术将企业营销管理中的三大流 物流 资金流 信息流 通过计算机的软件管理系统无缝连接起来 可以更好地进行统一的管理 随着 时代的发展 信息时代已经到来 我们需要研究如何借助信息技术来方便我们的工作 这是信息时代的特点 随着企业销售规模的扩大 对异地物流和资金流的管理难度就越来越大 大部分企 业采用人海技术来解决此类问题 从总部派驻大量人员到各地 但实际上问题并没有得 到解决 手工统计销售数据速度慢 容易出错 财物经常不符 造成汇总数据不及时 不准确 销售过程缺乏有效监督 应收账款回收控制差 造成大量死账呆账 却无法及 时追究相关人员责任 有些甚至就无法找出责任人 最终造成企业在商品流通领域成本 剧增 物价居高不下 而且企业的生产 市场决策缺乏准确的量化依据 造成企业资源 的大量浪费 许多企业的分销成本已经超过生产成本和产品开发成本 成为企业总体运 行成本的最大的构成要素 1 企业财务管理的当务之急就是要解决分销成本的控制问题 建立扩充销售体系 有效管理分公司和分销商等等 针对这个当务之急 DRP 系统就是 一种很好的解决方案 DRP Distribution Resource Planning 分销资源计划 系统对 分销链上的销售订单 财务管理 库存管理 客户关系管理 物流管理等方面进行有效 控制 很好地解决这一问题 1 因此课题的研究意义在于如何更好地设计和实现 DRP 系 统 研究此课题可以对大学期间所学的理论知识进行一次全面且系统的综合运用 在这 次毕业设计中 开发的 DRP 分销管理系统 是针对一般的医药企业分销管理的实际情况 而设计出来 虽然它的业务流程相对来说比较多和复杂 但是一些比较基础的业务逻辑 还是比较容易理解的 适合用来做毕业设计 况且 此毕业设计对基础模块进行需求分 析 难度合适 对知识方面的要求 正好是大学四年来知识的融会贯通和扩充 由于题 目范围不小 但题目的主旨明确 在系统分析和设计方面 可以使用软件工程的知识 分别进行需求分析 系统设计 详细设计和系统实现 由于本系统打算采用 Java 作为 开发语言 MySQL 数据库作为后台 以 JSP 的形式作界面 这可以体现所学的数据库原 理与大型数据库应用 JSP 动态网页设计和 Java 程序设计这些课程知识的综合应用 而 2 在详细设计中 还应用到数据结构方面的知识 和面向对象程序设计的思想等等 在这 次毕业设计中 将大学所学的理论知识全面地综合起来 融会贯通 根据已有的理论知 识进行设计 采用 Spring Struts Hibernate 流行架构实现本 DRP 系统 从中能积累到 不少的软件开发经验 1 2 课题现状与发展趋势 由于目前市场竞争的日趋激烈 传统的分销管理已经不适应于目前的信息时代 在 传统的分销管理下 往往企业规模越做越大 利润却不能随着规模扩大而上升 反而出现 下降甚至亏损的现象 国内传统的分销管理的具体现状如下 1 企业销售规模越大 对异地物流和资金流的管理难度也就越大 传统的定时传真和 电话报送各种报表的方式 数据严重滞后 市场反应迟缓 办公费用居高不下 2 销售管理随意性大 过程缺乏有效监督 造成大量死帐呆帐 却无法及时追究 流通 成本居高不下 有的甚至超过生产成本和产品开发成本 3 促销活动管理粗放 效果难以分析统计 4 各分公司从自身利益出发截留资金 无法对应收账款进行集中掌控 5 经常出现库存积压而客户缺货的现象 而到旺季 仓库缺货非常严重 导致无法按时 交货 被违约重罚 6 现有的财务系统 金税系统 销售系统均独立运行 形成数据孤岛 导致大量信息重 复录入 7 企业的生产 市场决策缺乏准确的量化依据 无法为管理层提供正确的决策信息 造 成企业资源的大量浪费 1 通过分析国内的企业分销管理的现状 不难发现传统的分销管理在企业中存在明显 的不足 主要表现为 随着企业不断壮大 分销网络规模也随之不断扩大 采用传统分 销管理 突显出来的问题比较多 而且往往企业规模越做越大 利润却不能随着规模扩 大而上升 反而出现下降甚至亏损的现象 1 目前以及未来的分销管理系统发展趋势是 采用 DRP 系统 DRP 系统是以生意流程优化为基础 以销售与库存综合控制管理为核心的采购 库 存 销售 促销管理 财务以及企业决策分析功能于一体的高度智能化的企业分销业务 解决方案 是针对生产企业供应链后端强化管理的高效工具 2 当今分销管理模式面临的新型发展趋势的变化在于 销售渠道的扁平化 3 分销商角色的转换 分销价值链的紧密集成 高度实时性的分销过程管理 1 3 论文的组织结构 论文首先介绍课题研究的意义 课题的现状 包括国内现状和国外现状 通过国 内的现状与国外比较 突出目前市场竞争的日趋激烈使传统的分销管理已经不适应目前 的信息时代 同时还介绍课题未来的发展趋势 论文的第二部分介绍 DRP 分销管理与信息化 着重阐述 DRP 分销管理的概念 比较 DRP 分销管理与传统分销管理的差异 分析 DRP 分销管理与信息化的关系 以及 DRP 分 销管理系统的特点与作用 论文的第三部分对 SSH 架构进行介绍 介绍 Struts Spring Hibernate 框架的好 处以及如何集成这三个框架对系统进行设计和开发 论文的第四部分结合统一建模语言 UML 及其工具对 DRP 分销管理系统进行需求分析 和系统分析 确定系统该完成什么样的功能 论文的第五部分进行系统设计 介绍系统的模块设计 Web 应用程序和数据库的设 计 以及进行详细设计 介绍领域模型和业务逻辑的具体设计 论文的第六部分描述本系统的具体实现 以本系统一个流程的实现为例进行说明 描述过滤器 Filter 开源组件和 Ajax 技术的应用 并且针对 DRP 分销系统的需求 对 各功能模块进行功能测试 论文的最后对 DRP 分销管理系统进行系统评价和总结 4 2 DRP 分销管理与信息化 2 1 DRP 分销管理系统的概念 DRP Distribution Resource Planning 分销资源计划是管理企业分销网络的系统 目的 是使企业具有对订单和供货具有快速反应和持续补充库存的能力 并对企业的物流和资 金进行全面的管理和控制 从而缩短企业的供应链 为企业节省成本 为管理层提供全 面的信息流 分销资源管理系统可以实现企业的业务部 分公司 配送中心 代理商 分销商 仓库 销售代表 售后服务及内部销售部门通过网络的有机结合 同时为包括总部在内 的各级机构提供进销存管理 可以极大提高各级渠道的管理水平 同时实现多点的库存 管理 分销资源管理系统可以帮助企业实现销售业务规范化 计划化 高效化管理 利用 互联网来管理自己的销售业务和销售渠道的信息化应用系统 分销资源管理系统能使企 业各销售分支机构通过互联网与公司总部实时连接 保证数据的及时性和信息的共享 为企业管理分布于各地的销售网点 提供一个低成本 操作简便的销售管理解决方案 3 2 2 DRP 分销管理与传统分销管理的区别 在目前市场竞争的驱动下 随着企业不断壮大 分销网络规模也随之不断扩大 采 用人海战术从总部派驻大量人员到各地 依靠传统的手工统计 通常会汇总不及时 账物 经常不符 缺乏有效监督 造成大量死帐呆帐 却无法及时追究 往往企业规模越做越大 利润却不能随着规模扩大而上升 反而出现下降甚至亏损的现象 因此 需要加强分销管 理和决策能力 准确掌握相关信息 控制管理和销售费用 是庞大分销网络面临的重大问 题 1 针对这种重大问题 DRP 系统就是一种很好的解决方案 DRP 系统融合先进的管理思想 结合企业的实际情况 抓住物流 资金流 信息流 三条主线 优化企业流程 为企业管理层提供最佳的企业管理手段 DRP 作为对企业的 分销资源进行计划与控制的一种先进管理思想和方法 它在周密的计划下 统一物流 信息流和资金流 有效利用各种资源 控制资金占用 缩短产品供应周期 降低分销成 本和企业经营风险 实现企业整体化的一种管理模式 2 3 DRP 分销管理与信息化 随着计算机和网络的普及 信息技术以非常快的速度在发展着 信息时代已经到来 5 DRP 系统以一种新的模式 借助信息化互联网的延伸性及便利性 使商务过程不再受时 间 地点和人员的限制 企业的工作效率和业务范围都得到有效的提高 企业也可以在 兼容互联网时代现有业务模式和现有基础设施的情况下 迅速构建 b2b 电子商务的平台 扩展现有业务和销售能力 实现零风险库存 大大降低分销成本 提高周转效率 确保 获得领先一步的竞争优势 DRP 利用新型的 IT 技术 解决企业信息畅通流动的问题 实现庞大多层的分销网 络以扁平化的信息流方式沟通管理 准确考核分支机构和经销商的销售状况 计划完成 状况 费用支出状况 实际库存状况 客户状况 减少应收账款的风险 成为诸多企业 突破困境的关键 4 2 4 DRP 分销管理系统的主要特点及其作用 DRP 分销管理系统可以对整个企业分销渠道进行有效管理 如总部 大区 分公司 办事处 经销商 代理商等 其管理的主要对象是订单 库存 货物配送 财务往来等 方面 主要有以下特点和作用 1 采用 DRP 系统改变逐级报表汇报的落后方式 各级管理人员根据权限查看实时数 据 加快信息收集速度 减轻员工工作量 避免经营风险 2 通过业务流程再造 优化组织结构和运作流程 业务流程的监督和控制 避免人为 管理上的随意性 使业务规范有序 3 库存数量按客户订货量进行动态分配 通过赠品计算 补损计算及手工调整最大限 度的减少库存 实现缺货时最大化分配 剩货时最小化库存 4 业务与财务系统集成为一个信息平台 实现物流 信息流 资金流的统一整合 有 效利用各种资源 控制资金占用情况 5 建立客户信用控制机制 对客户进行信誉区间和信誉额度的双重管理 全面掌握来 往客户的拖欠情况 及时对停订客户进行准确的处理 严格控制销售费用 减少渠 道营销费用 加强对应收账款的控制 6 产品统一分配就近调拨 优化了物流配送方式 降低了产品过期带来的损失 减少 了库存占用资金 加快了物流 资金流的周转速度 7 实时按照单品 产品分类 地域 分销机构等进行统计 汇总数据 为企业调整生产 计划 产品市场策略等提供更加准确的决策依据 综上所述 DRP 分销管理系统的主要特点与作用在于 对分销链上的销售订单 财 务管理 库存管理 客户关系管理 物流管理等方面进行有效控制 是以生意流程优化 6 为基础 以销售与库存综合控制管理为核心的采购 库存 销售 促销管理 财务以及 企业决策分析功能于一体的高度智能化的企业分销业务解决方案 是针对生产企业供应 链后端强化管理的高效工具 3 SSH 架构 本 DRP 分销管理系统选取 SSH 架构来设计和开发 是因为整合 Struts Hibernate 和 Spring 这三个当前流行的 Java Web 开源框架 可以构建出灵活 易于扩展的多层 Web 应用程序 多层架构将显示 业务运算 数据库等功能完全分离 杜绝彼此的耦合 与影响 从而实现松耦合和良好的可维护性 这三大框架分别属于这三层 展现层 业务逻辑层 持久化层 如图 1 所示 IoC 展现层 Presentation Layer WebWork Struts Action FormBean 配 置文件 模版页面 业务逻辑层 Business Layer Spring IoC容器 AOP Hibernate的支持 事务管理 持久化层 Datasource Layer HIbernate 映射文件 Hibernate 接口 DAO模式 IoC Domain Model Business Objects 图 1 三层架构图 3 1 Struts Struts 是目前比较成熟的 Web 开发框架 它是在 JSP Model2 的基础上实现的一个经 典 MVC 框架 3 1 1 基本原理 Struts 的模型部分包含 JavaBean 和 EJB 组件 控制器由 ActionServlet 和 Action 组成 视图部分包含 JSP 和 Struts 客户化标签 下面分别介绍 Struts 的 ActionForm Bean Struts 的初始化流程和 Struts 相应客户请求的工作流程 Struts 框架结构如图 2 所 示 7 Web 服务器 控制器 ActionServlet 调用业务逻辑 Action 视图 JSP JavaBean EJB 模型 HTTP 请求Request 分发Dispatch 转向Forward HTTP 响应Response struts 配置文件 Struts config xml 获取数据 客户端 浏览器 Servlet JSP 容器 图 2 Struts 框架结构图 ActionForm Bean 是一种 JavaBean 它除了具有一些普通 JavaBean 的常规方法外 还 包含一些用于验证 HTML 表单数据以及将其属性重新设置为默认值的特殊方法 Struts 框架利用 ActionForm Bean 来进行 View 组件和 Controller 组件之间表单数据的传递 Struts 框架把 View 组件接收到的表单数据保存在 ActionForm Bean 中 并把它传递给 Controller 组件 而 Controller 组件可以对 ActionForm Bean 中的数据进行修改 5 JSP 文件使用 Struts 标签或 JSTL 标签读取修改后的 ActionForm Bean 的信息 重新设置 HTML 表单 如图 3 所示 View 组件 Controller 组件 ActionForm Bean 包含用户输入的数据 ActionForm Bean 包含修改后的数据 图 3 ActionForm Bean 3 1 2 工作流程 1 Struts 框架的初始化流程 在 Web 应用启动时会加载并初始化控制器 ActionServlet 而 ActionServlet 从 struts config xml 文件中读取配置信息 把它们存放到 ActionMapping 对象中 这就是 Struts 8 框架的初始化的整个过程 2 Struts 框架响应客户请求的工作流程 1 判断 ActionMapping 实例是否存在 如果实例不存在 则创建一个 ActionMapping 对象 它包含把请求转发给哪个 Action 的信息 2 判断 ActionForm 实例是否存在 如果实例不存在 则创建一个 ActionForm 对象 并把客户提交的表单数据保存到 ActionForm 对象中 3 根据配置信息决定是否需要表单验证 如果需要验证 就调用 ActionForm 的 validate 方法 4 如果 ActionForm 的 validate 方法返回 null 或返回一个不包含 ActionMessage 的 ActionErrors 对象 则表示表单验证成功 如果 ActionForm 的 validate 方法返回一 个或多个 ActionError 的 ActionErrors 对象 则表示表单验证失败 将直接把请求转 发给包含客户提交表单的 JSP 组件 在这种情况下 不会再创建 Action 对象并调用 Action 的 execute 方法 5 ActionServlet 根据配置信息决定将请求转发给哪个 Action 如果相应的 Action 实例 不存在 就先创建这个实例 然后调用其 execute 方法 6 Action 的 execute 方法返回一个 ActionForward 对象 ActionServlet 再把客户请求转 发给 ActionForward 对象指向的 JSP 组件 7 ActionForward 对象指向的 JSP 组件生成动态网页 返回给客户 3 2 Hibernate Hibernate 是目前流行的 ORM 框架 它的轻量级 ORM 模型逐步确立了在 Java 对象 关系映射架构中的领导地位 而且它的许多设计还被 J2EE 标准组织吸纳成为 EJB 3 0 规范的标准 5 3 2 1 O R 映射框架 面向对象的开发方法是当今企业级应用开发环境中的主流开发方法 关系数据库是 企业级应用环境中永久存放数据的主流数据存储系统 O R 映射框架正是在这两种不同 的模型之间建立关联 为利用面向对象的思想来操作关系型数据而提供接口 其中 Hibernate 就是主流的 O R 映射框架之一 O R 映射 即对象关系映射 Object Relational Mapping 简称 ORM 是一种为了 解决面向对象与关系数据库的互不匹配现象的技术 简单的说 ORM 是通过使用描述 对象和数据库之间映射的元数据 将 Java 程序中的对象自动持久化到关系数据库中 9 本质上就是将数据从一种形式转换为另外一种形式 Java 对象与数据库的关联关系如 图 4 所示 关系型数据库 持久化实体对象 Persistent Objects 应用程序 业务逻辑操作 Hibernate Session接口 Hibernate API 图 4 O R 关联关系图 3 2 2 核心接口 Hibernate 有以下几个核心的接口 如图 5 Lifecycle Validatable 业业务务逻逻辑辑层层 Interceptor UserType SessionTransactionQuery SessionFactory Configuration JNDIJDBCJTA Persist Class 持持久久化化层层 图 5 Hibernate 核心接口图 1 Configuration Configuration 类负责管理 Hibernate 的配置信息 它包括 Hibernate 运行的底层信 息 数据库的 URL 用户名 密码 JDBC 驱动类 数据库 Dialect 数据库连接池等 10 具体配置在每个 Hibernate 映射文件 hbm xml 中 2 SessionFactory 即会话工厂 是一个线程安全且不可变的缓存快照 它属于单一数据库编译过的映 射文件 它是 Session 的工厂 ConnectionProvider 的客户 它可能持有一个可选的数据 缓存 在进程级别或集群级别保存数据 这些数据能在事务中重用 它也可能持有事务 之间重用数据的缓存 3 Session 会话 即会话 是一个单线程 生命期短促的对象 它代表应用程序和持久化层之间的一 次对话 它封装一个 JDBC 连接 同时也是 Transaction 的工厂 它保存必需的持久化对 象的缓存 用于遍历对象图 或者通过标识符查找对象 4 Transaction 即事务 是一个可选的 生命期短促的单线程对象 应用程序用它来表示一批工作 的原子操作 原子性是指要么全做要么全不做 它是底层的 JDBC JTA 或者 CORBA 事务的抽象 一个 Session 在某些情况下可能跨越多个 Transaction 事务 5 Query 即查询接口 允许你在数据库上执行查询并控制查询如何执行 查询语句使用 HQL 或者本地数据库的 SQL 方言编写 其中 Hibernate 语言查询 Hibernate Query Language HQL 用面向对象的方式生成 SQL 以类和属性来代替表和数据列 支持多 态和各种关联 减少 SQL 的冗余 还支持所有的关系数据库操作 3 3 Spring Spring 也是一个优秀的 Web 开发框架 它是一个分层的架构 由 7 个模块组成 其 中比较重要的是核心容器模块 其他模块构建在这个核心容器之上 核心容器定义创建 配置和管理 Bean 的方式 它提供 Spring 框架的基本功能 其主要组件是 BeanFactory 它是工厂模式的实现 BeanFactory 通过使用反转控制 IOC 模式 将应用程序的配置 和依赖性规范与实际的应用程序代码分开 3 3 1 最常用的特性 创建对象 JavaBean 工厂 构建业务逻辑层 包括管理依赖关系 适应需求变更 创建数据访问对象 DAO 进行事务处理 11 3 3 2 控制反转与依赖注入 控制反转 Inversion of Control IoC 与依赖注入 Dependency Injection 由容器来管 理对象之间的依赖关系 而不是对象本身来管理 1 依赖注入的类型 构造器注入 通过类的构造方法注入依赖关系 设值方法注入 通过类的 setter 方法注入依赖关系 接口注入 不常用 定义一个注入接口 在需要注入的类中实现此接口 由于这种 方法具有侵入性 所以不常用 2 Spring 的依赖注入 Spring 是一个 Java Bean 容器 它维护着一系列 Java Bean 的实例 通过 Spring 所提 供的依赖注入的方法 我们可以管理这些 Java Bean 之间的引用关系 3 4 Spring 与 Hibernate 的集成 1 创建可以支持 Hibernate 的 DAO 对象 1 HibernateDaoSupport 这是 Spring 提供的集成 Hibernate 的基类 所有的 DAO 均需要继承它 从这个类中 可以获取 Hibernate 的各种核心接口 如 Session SessionFactory 等 2 HibernateTemplate HibernateTemplate 是 Spring 封装的 Hibernate 操作接口 类似于 Session 接口 可以 调用 HibernateDaoSupport 提供的 getHibernateTemplate 方法获取 HibernateTemplate 对 象 2 在 Spring 中声明 SessionFactory 指定 Hibernate 配置文件的路径所在即可 3 在 Spring 中配置事务管理 大多数的应用程序 事务管理被分配到业务逻辑方法上 即每个业务逻辑方法是一 个事务 所有的业务逻辑对象 均是普通的 POJO 简单的 Java 对象 在这些业务逻 辑对象上实现声明式的事务管理 使用 AOP 首先要定义一个事务管理器 然后定义 一个事务代理基类 3 5 Spring 与 Struts 的集成 1 修改 web xml 让 Tomcat 自动加载 Spring 所以需要增加下面的配置 12 contextConfigLocation WEB INF applicationContext xml classpath applicationContext xml org springframework web context ContextLoaderListener 2 修改 Struts 的 Action 类 将 Action 类的创建 交给 Spring 去管理 需要修改 Action 配置中 type 属性 由原来的 Action 类 改为 org springframework web struts DelegatingActionProxy 3 6 由 Spring 封装的过滤器 1 OpenSessionInViewFilter 此过滤器是为了避免 Hibernate 的懒加载异常而创建的解决方案 它是一个过滤器 能够让 Session 在请求解释完成之后再关闭 能够避免懒加载异常 只需在 web xml 文 件中配置即可 2 CharacterEncodingFilter 此过滤器是 Spring 提供了专门的针对 Encoding 的过滤器 只需在 web xml 文件中配 置即可 3 7 SSH 架构的配置与环境的搭建 在 MyEclipse 中 配置 SSH 架构以及搭建环境 有以下五个步骤 1 在使用创建工程之前 要先下载 hibernate 3 2 0 ga zip struts 1 2 9 bin zip spring framework 2 0 with dependencies zip beanutils 1 5 src zip jakarta taglibs standard current zip 将他们分别解压 放到相应的 文件夹中 2 启动 MyEclipse 在主菜单中选择 File New Project Web Project 弹出 New Web Project 对话框 在 Project Name 输入框中输入工程名 然后在 J2EE Specification Level 选择 J2EE 1 4 然后单击 finish 按钮完成新项目的创建 3 配置 Hibernate 在 Hibernate 的文件夹中将 hibernate3 jar 和 lib 目录下所有文 13 件 复制到新项目的 WEB INF 下的 lib 目录下 然后将 etc 目录下的 log4j properties 和 hibernate cfg xml 复制到新项目的 src 源文件目录下 并将 hibernate cfg xml 配置好 4 配置 Struts 在 Struts 的文件夹中将 webapps 目录下的 struts blank war 放到 tomcat 的 webapps 目录进行部署后 进入 struts blank 目录 将其 WEB INF 下的 lib 目录下的所有 jar 文件都复制到新项目的相同目录 将其 WEB INF 下的 web xml 和 struts config xml 复制到新项目的相同目录 将其 WEB INF 下的 src java 目录 下的 MessageResources properties 复制到新项目的 src 目录下 5 配置 Spring 在 Spring 的文件夹中将 dist 目录下的 spring jar 和 lib aspectj 目录下的 jar 文件 以及 lib dom4j 目录下的 jar 文件 都复制到新项目的 WEB INF 下的 lib 目录下 将其 sample jpetstore war WEB INF 目录下的 applicationContext xml 文件复制到新项目的 WEB INF 下 并在 web xml 配置好 Spring 的 context param 和 Listener 最后在新项目的 WEB INF 下的 lib 目录中删 除重复的 jar 包 14 4 系统分析 从系统分析开始 本设计就以 RUP Rational Unified Process 开发流程和 UML Unified Modeling Language 工具为指导 采用 SSH 架构设计和开发 DRP 分销管 理系统 4 1 RUP 开发流程 统一开发流程 RUP Rational Unified Process 它是目前最流行的一套项目开发 流程模式 其基本特征是通过多次迭代完成一个项目的开发 每次迭代都会带来项目整 体的递增 6 项目开发可以分为 4 个阶段 起始 Inception 细化 Elaboration 建造 Construction 和移交 transition 项目生命周期也分为四个阶段 如下 1 项目需求分析 需求分析阶段的活动包括定义潜在的角色 角色指使用系统的人 以及与系统相互 作用的软硬件环境 识别问题域中的对象和关系 以及基于需求规范说明的角色用例 use case 和详细描述用例 2 系统分析和设计 系统分析阶段是基于问题和用户需求的描述 建立现实世界的计算机实现模型 系 统设计是结合问题域的知识和目标系统的体系结构 求解域 将目标系统分解为子系 统 之后基于分析模型添加细节 完成系统设计 3 实现 实现又称编码或开发阶段 也就是将设计转换为特定的编程语言或硬件 同时保持 先进性 灵活性和可扩展性 在这个阶段 设计阶段的类被转换为使用面向对象编程语 言编制 不推荐使用过程语言 的实际代码 这一任务可能比较困难 也可能比较容易 主要取决于所使用的编程语言本身的能力 4 测试和维护 测试用于检验系统是否满足用户功能需求 以便增加用户对系统的信心 系统经过 测试后 整个开发流程告一段落 进入运行维护或新的功能扩展时期 4 2 UML 统一建模语言 UML Unified Modeling Language 是一种通用的可视化的面向对象建模语言 UML 是在著名的 Booch CMT 和 OOSE 方法基础上 统一面向对象的建模方法 消除建模 15 方法 消除建模差别 UML 的目标之一就是为开发团队提供标准通用的设计语言来开发 和构建计算机应用 UML 提出一套 IT 专业人员期待多年的统一的标准建模符号 通过使 用 UML 这些人员能够阅读和交流系统架构和设计规划 就像建筑工人多年来所使用 的建筑设计图一样 7 它适应以面向对象技术来描述任何类型的系统 而且适用于系统 开发的不同阶段 从需求规格描述直至系统完成后的测试和保护 UML 是一套可视化建模语言 由各种图来表达 图具体分为静态模型和动态模型两 大类 其中 静态模型包括用例图 类图 对象图 组件图 部署图 动态模型包括序 列图 协作图 状态图 行为图 4 3 需求分析 DRP Distribution Resource Planning 分销资源计划 系统对分销链上的销售订单 财务管理 库存管理 客户关系管理 物流管理等方面进行有效控制 能加强分销管理 和决策能力 准确掌握相关信息 控制管理和销售费用 经过具体的需求分析 得出本 DRP 分销管理的基础功能主要包括 分销库存管理 基础数据管理 系统管理 统计报表管理 总体用例图如图 6 所示 DRP 图 6 总体用例图 4 4 系统分析 以下采用面向对象的分析方法 对本系统的功能进行系统分析 1 分销库存管理 分销库存管理主要是物流的管理 主要功能是对物料的调拨和存销情况进行审核和监 16 控 实时了解物料的出入库情况和库存结余情况 并在每个会计期间内对物料进行盘盈 和盘亏处理 来调整库存达到帐实相符 从而更精确的监控分销商的库存情况 提供真 实准确的决策信息 流向单维护 选择供方分销商的代码和需方供销商的代码 并填写销售的物料和数量 的相关信息 可以添加流向单 选择供方分销商的代码和开始结束日期后 可以查询出 相应的流向单列表 并可对指定的流向单进行删除 2 基础数据管理 基础数据管理主要对基础数据进行管理 包括会计核算期间维护 物料维护 分销 商维护 1 会计核算期间维护 可以添加或修改会计核算的期间记录 包括核算年 核算月 开始时间和结束时间 2 物料维护 可以添加 删除 修改或查询物料的信息 并且可以上传物料的图片 用例如图 7 所示 图 7 物料维护用例图 3 分销商维护 以树状结构显示区域与分销商的关系 选中某个区域 可以添加 删 除 修改区域和添加分销商 选中某个分销商 可以修改 删除分销商 也可以查 看分销商的详细信息 用例如图 8 所示 17 图 8 分销商维护用例图 3 系统管理 系统管理主要是对用户进行管理 包括用户维护和修改密码 1 用户维护 可以添加 删除或修改用户的信息 2 修改密码 输入旧密码和新密码 可以修改密码 4 统计报表管理 统计报表管理是用报表统计对分销商级别的分布 选择分销区或分销省 可以用饼 图或柱状图 来统计出分销商级别的分布 18 5 系统设计 本系统是由 Web 服务器 数据库服务器和浏览器客户端组成的多层 web 计算机服务 系统 采用 Struts Spring Hibernate 架构 具有先进性 灵活性 可扩展性等特点 5 1 总体设计 5 1 1 模块设计 通过采用面向对象的思想对 DRP 系统进行分析 以及使用 UML 工具 分析出相关 的重要概念 得出以下模块设计图 如图 9 所示 DRP分销管理系统 基础数据管理 系统管理 分销库存管理 统计报表管理 分销商维护 会计核算期间维护 物料维护 用户维护 修改密码 分销商级别分布 流向单维护 图 9 总体模块设计图 5 1 2 Web 应用程序的设计 本项目采用 Struts Spring Hibernate 架构设计和开发 DRP 分销管理系统 在 Struts 框 架中 JSP 用于前端展现 ActionServlet 用于控制 Action 用于处理前端页面 JSP 发来 的请求 请求参数通过 ActionForm 进行传递 Action 在获得请求后通过调度业务系统 提供的 Spring service bean 业务逻辑作处理 最后将处理结果转发到相应的 JSP 进行展 现 Web 应用程序的组织结构可以分为 4 个部分 Web 应用跟目录下的 WEB INF jsp 目录 放置用于前端展现的 JSP 文件 Com lzf drp web action 放置处理请求的 Action Com lzf drp web form 放置所有的 ActionForm src 源文件目录 放置程序中用到的资源文件 MessageResources properties 19 5 1 3 数据库设计 1 ER 图 实体联系图 通过系统分析 得出用户分别与流向单 物料 分销商 终端客户 流向单与物料 分销商 终端客户 都是一对多的关系 而数据字典分别与物料 分销商 终端客户 也是一对多的关系 本系统的 ER 图 如图 10 所示 用户 流向单 管理 物料分销商终端客户 自定义数据 包含 库存管理 1 n nnn 1n n n 1 nn n 图 10 E R 图 2 关系模式 下划线的为关键字 通过理清各实体的属性和联系 得出以下关系模式 用户 用户编号 用户姓名 密码 联系电话 电子邮箱 建立时间 分销商 编号 父节点编号 名称 分销商编号 分销商等级 银行账号 联 系电话 邮政编码 是否叶子节点 是否分销商 物料 物料编号 物料名称 规格 型号 类别 单位 流向单 流向单编号 核算年 核算月 分销商编号 操作类型 录入时间 录入人 状态 流向单明细 编号 流向单编号 需方分销商编号 物料编号 数量 核算期间 编号 核算年 核算月 开始时间 结束时间 核算期状态 终端客户 编号 父节点编号 名称 终端客户编号 终端客户等级 联系电 话 联系人 地址 邮政编码 是否叶子节点 是否终端客户 自定义数据 编号 类型 名称 20 3 数据库表 通过以上的关系模式 可以设计出相应的数据库表 如下 表 1 用户表 t user 字段类型中文名主键 外键备注 user idvarchar 10 用户编号pkNot null user namevarchar 20 姓名Not null passwordvarchar 20 密码 contact telvarchar 30 联系电话 emailvarchar 30 电子邮箱 create datedatetime建立时间 表 2 分销商表 t client 字段类型中文名主键 外键备注 idint编号pkNot null 自增 pidint父节点编号Not null namevarchar 40 名称Not null client idvarchar 10 分销商编号 client levelchar 3 分销商等级fk bank acct novarchar 30 银行账号 contact telvarchar 20 联系电话 addressvarchar 50 地址 zip codevarchar 20 邮政编码 is leafchar 1 是否叶子节点default N is clientchar 1 是否分销商default N 表 3 物料表 t items 字段类型中文名主键 外键备注 item novarchar 10 物料编号pkNot null item namevarchar 30 物料名称Not null specvarchar 30 规格 patternvarchar 30 型号 categorychar 3 类别fkNot null unitchar 3 单位fkNot null 表 4 核算期间表 t fiscal year period 字段类型中文名主键 外键备注 idint编号pkNot null 自增 fiscal yearint核算年Not null fiscal periodtinyint核算月Not null begin datedatetime开始时间Not null 21 end datedatetime结束时间Not null period stschar 1 可用状态default N 表 5 流向单表 t flow card 字段类型中文名主键 外键备注 vou novarchar 16 流向单编号pkNot null fiscal yearint核算年Not null fiscal periodtinyint核算月Not null client idvarchar 10 分销商编号fkNot null opr typechar 1 操作类型Not null record datedatetime录入时间Not null record idvarchar 10 录入人fknot null vou stschar 1 状态default N 表 6 流向单明细表 t flow card detail 字段类型中文名主键 外键备注 idint编号pkNot null 自增 vou novarchar 16 流向单编号fkNot null aim idvarchar 10 需方客户编号fkNot null item novarchar 10 物料编号fkNot null qtydecimal 10 2 数量default 0 表 7 终端客户表 t temi client 字段类型中文名主键 外键备注 idint编号pkNot null 自增 pidint父节点编号Not null namevarchar 40 名称Not null temi idvarchar 20 终端客户编号 temi levelchar 3 终端客户等级fk contact telvarchar 18 联系电话 contactorvarchar 30 联系人 addressvarchar 50 地址 zip codevarchar 20 邮政编码 is leafchar 1 是否叶子节点default N is temi clientchar 1 是否终端客户default N 表 8 自定义数据表 t data dict 字段类型中文名主键 外键备注 idchar 3 编号pkNot null 自增 categoryvarchar 20 类型 namevarchar 30 名称 22 5 2 详细设计 在本系统中 采用将实体类和管理接口分离的设计方案 使类的职责明确地被划分 每一个数据库表都对应一个实体类 并且都有一个管理接口 其中实体类封装实体的各 个属性 管理接口封装实体的各项业务逻辑的操作 完成各种关于实体的功能 5 2 1 用户类及其管理接口 User 类 只包含用户的属性 以及 set get 方法 UserManager 接口 为外部提供 添加用户 删除用户 查询所有用户 用户登录 修改用户 修改密码等方法的访问接 口 用户表对应的用户类和用户管理接口 User 和 UserManager 的设计如图 11 图 11 User 和 UserManager 类图 用户登录 login String 先让用户输入用户名和密码 验证

温馨提示

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

评论

0/150

提交评论