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://m.35694.cn/qkh/44283.html