S2SH框架系统库存管理论文
1相关技术简介
Spring是一个开源的控制反转(InversionofControl,IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。控制反转:应用程序本身不提供依赖对象的创建和维护,外部容器提供依赖对象的创建和维护。即控制权从应用程序转移到外部容器,也就是控制权的转移。Spring的优点有:
(1)降低组间之间的耦合度。
(2)开发人员可以使用容器提供的服务,如:事物管理服务,消息服务等,JSM服务,持久化服务。
(3)Spring提供了单例模式,程序员可以不编写实现代码,并且可以提高程序的开发效率。
(4)Spring提供了AOP技术,可以实现拦截,监控等功能。
(5)Spring提供了许多类,开发人员可以加快对应用程序的开发,如JdbcTemplate.
(6)Spring可以集成其他的主流框架。例如Struts2,Hibernate等。
2基于S2SH的库存管理系统的设计
2.1需求分析
要求对材料、标准件、元器件、零组件、外购件等与生产相关的各类数据的资源统一管理;实现电子记账,摆脱手工的管理模式;同时支持多种生产模式并存下的库存业务。实现按批次管理库存物料,记录出入库产品信息,并为检验人员提供到货检验、库存区域检验、出库检验等功能。改善企业运行规则和思维模式的配套服务,有效地提高库存管理效能。实现从物流决策、业务流程的全程信息化,对物流过程进行严格和科学的管理,实现企业收益的最大化。
2.2系统的功能分析
系统包括五个功能模块:系统管理,基础数据管理,台账管理,出入库管理,盘点管理。
2.2.1系统管理
(1)系统权限管理
为了系统安全考虑,给用户分配一些角色,使用户只能访问自己被授权的资源,禁止访问其它角色的资源,可以最大限度地保证系统的安全、数据的安全。允许超级管理员添加和删除用户,查看员工的相关信息。
(2)系统设置
主要是对系统应用的功能和权限等配置文件进行定义,包括配置文件的定义,配置文件系统值管理,配置文件用户值管理。
2.2.2基础数据管理
(1)库房定义
将物理上的实际库房映射到系统中的逻辑库房,设置库房的属性、所属部门、库房名称、库房代码、库房类型及所属部门等。
(2)库位定义
用于确定某个库房中包含多少库位,以及每个库位的库位类型。系统中提供了固定库位和灵活库位两种定义方式,主要信息有:库房号、库位号、库位类型、物料号、有效性等。
2.2.3台账管理
(1)库存台账查询
可以按库房、事务类型、登账日期、物料等条件查询出入库流水信息。系统支持汇总查询和明细查询两种方式。
(2)出入库调整
当出入库登记完成后,如果本期还没有进行库存结转,可以通过此模块撤销出入库登记操作,系统将恢复库存数据以及原始单据数据,工作人员可重新进行业务处理。系统记载出入库调整日志并且能够查询。
2.2.4出入库管理
(1)采购入库管理
对于成品件,到货登记后先进行检验,检验合格的,保管员将产品上架,登记三期,确认入生产库;除了成品外的其它器件,采购到货之后先入待验库房,待验保管员根据站台维护的到货信息,清点数量、核对单据等信息。如果相关信息正确,接收材料入待验库,维护入库数量、库位等信息。
(2)配套批料
①库房计划员在审批批次配套领料单时,需要平衡各使用单位的配套情况,在确保均衡生产的情况下,应该合理分配库存资源,审批各使用单位的领料单。
②计划员批料时选择领用车间、批次、库存台账等信息,批料确定后,系统生成批料编号,库存的资源被占用,虽然库存数量并不会减少,但是其他配套单已经不能使用这些资源。
③系统可以设置库存占用期限参数,如果占用超期后则自动取消配套,恢复库存可使用状态。
④同时系统还可以提供对被占用库存资源的查询功能,方便工作人员及时查询库存资源占用情况,避免库存资源被长期占用而不能有效利用。
2.2.5盘点管理
(1)盘点结果录入
保管员根据盘点清单清点库房的物资,并且将清点结果录入到系统中,输入界面与盘点清单一致,保管员只需输入盘点数量即可。对于账物相符的盘点记录,可以解除台账冻结状态;对于账物不符的盘点记录需要提交财务人员审核。
(2)盘盈盘亏调整
可以对盘点结果进行调平处理,系统更新当前库存数量为实物数量,同时生成出入库流水账EXCEL文件,并将调整结果提交给财务人员。
3库存管理系统平台关键技术的实现
3.1Web层的实现
这一层的关键技术点主要是把Spring和Struts2集成,在导入的所有jar包中必须包含一个jar包(即struts-spring-plugin-2.x.x.jar),用于Struts2集成Spring的插件。首先要在web.xml中配置,先对Spring容器实例化,再把Struts2的框架启动代码写到web.xml中,通过filter来启动Struts2框架。Web.xml的配置如下:<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></context-param><listener><listener-class>org.springframework.web.115context.ContextLoaderListener</listener-class></listener><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>新建一个struts.xml,设置一个常量struts.objectFactory的作用是使用Spring这个对象工厂类替换掉Struts2默认的对象工厂类,也就是说由Spring来创建和维护action。在action类中class属性原先由Struts2创建,现在由Spring创建,格式是class=“actionbean名称”。其struts.xml的配置如下:<constantname="struts.objectFactory"value="spring"/><packagename="product"namespace="/product"extends="struts-default"><actionname="list"class="productAction"><resultname="list">/WEB-INF/page/product.jsp</result></action></package>
3.2业务层的实现
首先在productService.java中声明一些方法(添加,显示列表,删除,更新等),这也就是我们常说的DAO接口。publicinterfaceProductService{publicvoidaddProduct(Productp);publicList<Product>showProduct();publicvoidupdateProduct(Productp);publicvoiddelProduct(java.io.Serializableid);}然后在Spring中配置一个productServiceimp对象,让Spring来接管它,体现出Spring对bean的管理和维护。其spring.xml的配置如下:<!--配置会话工厂--><beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.OracleDialecthibernate.generate_statistics=true</value></property></bean><!--配置productServiceimp对象--><beanid="productService"class="cn.mao.service.productService"><propertyname="sessionFactory"ref="sessionFactory"/></bean>在productServiceimp中实现dao的方法,把Spring注入到sessionFactory,可以更好的管理,使项目开发简单。在productServiceimp里设置sessionFactory的get和set方法,前边已经在spring.xml配置了相关bean,可以直接使用这个对象而不用再新建一个对象。部分实现代码如下:PublicclassProductServiceimpimplementsProduct-Service{privateSessionFactorysessionFactory;publicSessionFactorygetSessionFactory(){returnsessionFactory;}publicvoidsetSessionFactory(SessionFactorysessionFactory){this.sessionFactory=sessionFactory;}publicvoidaddProduct(Productp){Sessionsession=sessionFactory.openSession();……}
3.3持久层的实现
这一层关键技术是Hibernate和Spring集成。用扫描加注释的方式把bean交给Spring管理,可以加快开发速度。其spring.xml的配置如下:<!--配置数据源--><context:component-scanbase-package="cn.mao"/><beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><propertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"/><propertyname="url"value="jdbc:oracle:thin:@127.0.0.1:1521:test"/><propertyname="username"value="root"/><propertyname="password"value="mao"/></bean><!--配置事务管理--><beanid="tx"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><tx:annotation-driventransaction-manager="tx"/>不但cn.mao这个包会扫描到,而且只要是以cn.mao开头的包都会扫描到。Spring需要接管Hibernate的事务管理服务,打开Hibernate的事务实际上操作的是Spring的事务,是基于注解的方式配置事务的。虽然本文采用oracle数据库,但是要更换其它数据源非常的方便,例如:mysql,sqlserver,不需要大范围的更换代码。
4结语
本文以某公司的库存管理系统为例,研究并实现了基于MVC模式S2SH框架的库存管理系统。并实现了Spring和Struts2的向上集成,Spring和Hibernate向下整合,实现了松耦合的软件框架。弥补了Struts2在管理和持久化层面上的不足,体现了Hibernate在持久层面上的优势,也表现出Spring在集成和管理其它框架中的核心地位。三大框架的集成,达到优势互补,提高了系统的可维护性和扩展性。
作者:申斌 李利民 单位:中北大学计算机与控制工程学院 山西汾西重工有限责任公司
本文html链接: http://www.istpei.com/qkh/44283.html