目前仓库管理系统[1]有很多, 如SAP、Oracle、用友、金蝶、智邦国际等, 但较多此类系统均采用的是C/S模式, 虽然具有较强的事务处理能力, 能实现复杂的业务流程, 但是需要安装专门的客户端程序, 分布功能弱, 针对不具备网络条件的用户群体, 但不能够实现快速部署、安装和配置, 并且兼容性差。综上, C/S模式的系统更加适合一些大型的企业使用。我国有数量庞大的中小型企业及零售商, 针对这部分群体开发的仓库管理系统数量并不多, 故本次设计与实现的仓库管理系统采用B/S模式, 其具有分布性强, 客户端零维护, 只要有网络、浏览器, 就可以随时随地进行查询、浏览和处理业务的特点。故更加适合中小型企业及零售商使用。因此, 急需构建一个功能强大、可网上进行查询、管理和操作的仓库管理系统。本文介绍了一种仓库管理管理系统的设计方案, 为中小型企业及零售商的管理和发展提供有力支持。
Java EE是企业级应用标准开发平台, 基于该平台设计并开发了大量应用服务于各行各业[2]。Struts2、Hibernate和Spring是Java EE领域的三个开源框架, S2SH[3,4,5,6]是这三个框架的组合, 是最流行的Java EE 架构, 它能提升软件的可维护性和可复用性从而降低开发成本。
Struts 2是一个基于MVC设计模式的Web应用框架, 是在 Struts 1和Web Work的技术基础上进行了合并产生了全新的框架, 它采用拦截器的机制来处理用户的请求, 该设计使得业务逻辑控制器能够与ServletAPI完全脱离, 业务逻辑更像一个POJO (Plain Old Java Object, 普通的传统的Java对象) 。与Struts1比, 它支持更多的表现层 (JSP, Veloccity) , Action无需与Servlet API耦合, 测试更加容易, 可提高代码重用率, 具有更好的模块化和可扩展性, 适合团队协作开发大项目。
Spring是一个开源框架, 能解决企业应用开发的复杂性。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。它是一个轻量级的控制反转 (Io C) 和面向切面 (AOP) 的容器框架。应用Io C, 一个对象依赖的其它对象会通过被动的方式传递进来, 而不需要这个对象自己创建或者查找依赖对象。应用AOP, 可通过分离应用的业务逻辑与系统级服务进行内聚性的开发。Spring提高了一种对象管理方法, 有效的组织系统中间层对象, 是框架的完美“粘合剂”。
Hibernate是JDBC轻量级封装框架, 占用内存较少, 性能比较高, 可以帮助开发人员提高运行效率。可连接Java应用程序和关系型数据库, 能够建立对象模型和关系数据模型之间的映射, 是一种自动ORM (Object-Relation Mapping, 对象关系映射) 框架。
对仓库管理系统进行调研, 该系统主要使用人员有管理员、仓库管理员、采购员、销售员。系统管理员需要的功能有:管理员工、管理部门、管理权限、管理角色、管理系统菜单;仓库管理员要使用的功能有:货物入库、出库和查询报表等;采购员需要的功能有品牌管理、商品管理、采购订单管理、查看及时库存等;销售员需要的功能:客户管理、销售订单管理、查看及时库存、查看销售报表等。其中仓库管理员的用例图见图1。
对仓库管理需求进行分析、整合, 可设定本系统三部分包含的子模块有:业务模块、系统模块和报表模块, 其中业务模块有品牌管理、供应商管理、商品管理、客户管理、仓库管理、采购订单管理、销售出库单管理、采购入库单管理等功能。报表模块包括即时库存报表、订货报表、销售报表等功能。系统功能划分如图2所示。
考虑系统功能的特点、可定制和可拓展性等, 可将基于S2SH框架的系统划分为3层:表示层、业务逻辑层和数据持久层[7], Struts2用于MVC框架, Spring和Hibernate框架分别用于支持业务层和数据持久层。具体实现过程为:通过JSP页面实现表示层所有的交互, 完成请求的传送以及响应的接收, Action servlet接收用户请求, 并通过配置文件分给对应的Action进行处理。业务层提供容器组件来保证数据完整性, 业务层通过Spring Io C容器提供Model组件和DAO来完成业务逻辑。持久层用于处理对DAO组件请求的数据, 并返回处理结果。
针对医药销售、日用品零售等行业进行需求分析, 仓库管理系统中涉及到的实体主要有:员工、部门、权限、角色、系统菜单、品牌、货品、供应商、采购订单、采购订单明细、仓库、采购入库单、采购入库单明细、客户、销售出库单、销售出库单明细等, 可设计出对应的数据库实体表。货品模块中包含2个实体, 分别是品牌、货品, 它们之间存在相应关系, 品牌对应货品的关系是1对n的关系, 货品模块模型的E-R图, 如图4所示。
本系统使用PL/SQL developer、Eclipse4.5等开发软件, Web服务器采用Tomcat 7.x, 数据库为My SQL来实现。下面以基础货品功能为例作详细说明。
基础货品包括了品牌管理与货物管理, 品牌与货品为一对多的关系。品牌管理对应的java实体为Brand.java, 货品管理对应的java实体为Product.java, 当用户点击菜单中的“品牌管理”或“商品管理”按钮时, 会根据发出的不同url跳转到对应的action类, 并返回相应的list.jsp页面。用户可在对应的页面中看到目前所有的品牌或商品信息, 用户也可输入相应的条件进行条件搜索查询, 同时用户还可以对品牌与商品进行 “编辑”和“删除”操作。具体的展示页面如图5所示:
当用户点击进入“商品管理”时, 可将商品的缩率图进行放大, 查看商品的大图, 此操作主要通过show Modal Dialog插件实现, 对应的前端代码实现如下:
当用户在“商品管理”中点击“新增”或“编辑”操作时, 可以新增或编辑相应的商品, 在进入填写页面后会设计到商品图片的上传操作, 当涉及上传操作时, html中的<form>标签中的method属性必须是post, enctype属性必须是multipart/formdata, 此操作对应的前端代码实现如下:
对应的后端代码如下:
该仓库管理系统从需求到设计都充分考虑了中小企业和零售商货品管理、客户管理、出库入库、报表查询等需求, 基于Java web、采用S2SH框架, 充分考虑了仓库管理系统中功能的个性化和定制, 程序的拓展性和移植性。该系统已在某中型企业应用实施, 并取得了良好的效果。
标签: