前言:想要寫出一篇引人入勝的文章?我們特意為您整理了S2SH框架系統(tǒng)庫(kù)存管理論文范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。
1相關(guān)技術(shù)簡(jiǎn)介
Spring是一個(gè)開源的控制反轉(zhuǎn)(InversionofControl,IOC)和面向切面(AOP)的容器框架,它的主要目的是簡(jiǎn)化企業(yè)開發(fā)。控制反轉(zhuǎn):應(yīng)用程序本身不提供依賴對(duì)象的創(chuàng)建和維護(hù),外部容器提供依賴對(duì)象的創(chuàng)建和維護(hù)。即控制權(quán)從應(yīng)用程序轉(zhuǎn)移到外部容器,也就是控制權(quán)的轉(zhuǎn)移。Spring的優(yōu)點(diǎn)有:
(1)降低組間之間的耦合度。
(2)開發(fā)人員可以使用容器提供的服務(wù),如:事物管理服務(wù),消息服務(wù)等,JSM服務(wù),持久化服務(wù)。
(3)Spring提供了單例模式,程序員可以不編寫實(shí)現(xiàn)代碼,并且可以提高程序的開發(fā)效率。
(4)Spring提供了AOP技術(shù),可以實(shí)現(xiàn)攔截,監(jiān)控等功能。
(5)Spring提供了許多類,開發(fā)人員可以加快對(duì)應(yīng)用程序的開發(fā),如JdbcTemplate.
(6)Spring可以集成其他的主流框架。例如Struts2,Hibernate等。
2基于s2sh的庫(kù)存管理系統(tǒng)的設(shè)計(jì)
2.1需求分析
要求對(duì)材料、標(biāo)準(zhǔn)件、元器件、零組件、外購(gòu)件等與生產(chǎn)相關(guān)的各類數(shù)據(jù)的資源統(tǒng)一管理;實(shí)現(xiàn)電子記賬,擺脫手工的管理模式;同時(shí)支持多種生產(chǎn)模式并存下的庫(kù)存業(yè)務(wù)。實(shí)現(xiàn)按批次管理庫(kù)存物料,記錄出入庫(kù)產(chǎn)品信息,并為檢驗(yàn)人員提供到貨檢驗(yàn)、庫(kù)存區(qū)域檢驗(yàn)、出庫(kù)檢驗(yàn)等功能。改善企業(yè)運(yùn)行規(guī)則和思維模式的配套服務(wù),有效地提高庫(kù)存管理效能。實(shí)現(xiàn)從物流決策、業(yè)務(wù)流程的全程信息化,對(duì)物流過(guò)程進(jìn)行嚴(yán)格和科學(xué)的管理,實(shí)現(xiàn)企業(yè)收益的最大化。
2.2系統(tǒng)的功能分析
系統(tǒng)包括五個(gè)功能模塊:系統(tǒng)管理,基礎(chǔ)數(shù)據(jù)管理,臺(tái)賬管理,出入庫(kù)管理,盤點(diǎn)管理。
2.2.1系統(tǒng)管理
(1)系統(tǒng)權(quán)限管理
為了系統(tǒng)安全考慮,給用戶分配一些角色,使用戶只能訪問(wèn)自己被授權(quán)的資源,禁止訪問(wèn)其它角色的資源,可以最大限度地保證系統(tǒng)的安全、數(shù)據(jù)的安全。允許超級(jí)管理員添加和刪除用戶,查看員工的相關(guān)信息。
(2)系統(tǒng)設(shè)置
主要是對(duì)系統(tǒng)應(yīng)用的功能和權(quán)限等配置文件進(jìn)行定義,包括配置文件的定義,配置文件系統(tǒng)值管理,配置文件用戶值管理。
2.2.2基礎(chǔ)數(shù)據(jù)管理
(1)庫(kù)房定義
將物理上的實(shí)際庫(kù)房映射到系統(tǒng)中的邏輯庫(kù)房,設(shè)置庫(kù)房的屬性、所屬部門、庫(kù)房名稱、庫(kù)房代碼、庫(kù)房類型及所屬部門等。
(2)庫(kù)位定義
用于確定某個(gè)庫(kù)房中包含多少庫(kù)位,以及每個(gè)庫(kù)位的庫(kù)位類型。系統(tǒng)中提供了固定庫(kù)位和靈活庫(kù)位兩種定義方式,主要信息有:庫(kù)房號(hào)、庫(kù)位號(hào)、庫(kù)位類型、物料號(hào)、有效性等。
2.2.3臺(tái)賬管理
(1)庫(kù)存臺(tái)賬查詢
可以按庫(kù)房、事務(wù)類型、登賬日期、物料等條件查詢出入庫(kù)流水信息。系統(tǒng)支持匯總查詢和明細(xì)查詢兩種方式。
(2)出入庫(kù)調(diào)整
當(dāng)出入庫(kù)登記完成后,如果本期還沒(méi)有進(jìn)行庫(kù)存結(jié)轉(zhuǎn),可以通過(guò)此模塊撤銷出入庫(kù)登記操作,系統(tǒng)將恢復(fù)庫(kù)存數(shù)據(jù)以及原始單據(jù)數(shù)據(jù),工作人員可重新進(jìn)行業(yè)務(wù)處理。系統(tǒng)記載出入庫(kù)調(diào)整日志并且能夠查詢。
2.2.4出入庫(kù)管理
(1)采購(gòu)入庫(kù)管理
對(duì)于成品件,到貨登記后先進(jìn)行檢驗(yàn),檢驗(yàn)合格的,保管員將產(chǎn)品上架,登記三期,確認(rèn)入生產(chǎn)庫(kù);除了成品外的其它器件,采購(gòu)到貨之后先入待驗(yàn)庫(kù)房,待驗(yàn)保管員根據(jù)站臺(tái)維護(hù)的到貨信息,清點(diǎn)數(shù)量、核對(duì)單據(jù)等信息。如果相關(guān)信息正確,接收材料入待驗(yàn)庫(kù),維護(hù)入庫(kù)數(shù)量、庫(kù)位等信息。
(2)配套批料
①庫(kù)房計(jì)劃員在審批批次配套領(lǐng)料單時(shí),需要平衡各使用單位的配套情況,在確保均衡生產(chǎn)的情況下,應(yīng)該合理分配庫(kù)存資源,審批各使用單位的領(lǐng)料單。
②計(jì)劃員批料時(shí)選擇領(lǐng)用車間、批次、庫(kù)存臺(tái)賬等信息,批料確定后,系統(tǒng)生成批料編號(hào),庫(kù)存的資源被占用,雖然庫(kù)存數(shù)量并不會(huì)減少,但是其他配套單已經(jīng)不能使用這些資源。
③系統(tǒng)可以設(shè)置庫(kù)存占用期限參數(shù),如果占用超期后則自動(dòng)取消配套,恢復(fù)庫(kù)存可使用狀態(tài)。
④同時(shí)系統(tǒng)還可以提供對(duì)被占用庫(kù)存資源的查詢功能,方便工作人員及時(shí)查詢庫(kù)存資源占用情況,避免庫(kù)存資源被長(zhǎng)期占用而不能有效利用。
2.2.5盤點(diǎn)管理
(1)盤點(diǎn)結(jié)果錄入
保管員根據(jù)盤點(diǎn)清單清點(diǎn)庫(kù)房的物資,并且將清點(diǎn)結(jié)果錄入到系統(tǒng)中,輸入界面與盤點(diǎn)清單一致,保管員只需輸入盤點(diǎn)數(shù)量即可。對(duì)于賬物相符的盤點(diǎn)記錄,可以解除臺(tái)賬凍結(jié)狀態(tài);對(duì)于賬物不符的盤點(diǎn)記錄需要提交財(cái)務(wù)人員審核。
(2)盤盈盤虧調(diào)整
可以對(duì)盤點(diǎn)結(jié)果進(jìn)行調(diào)平處理,系統(tǒng)更新當(dāng)前庫(kù)存數(shù)量為實(shí)物數(shù)量,同時(shí)生成出入庫(kù)流水賬EXCEL文件,并將調(diào)整結(jié)果提交給財(cái)務(wù)人員。
3庫(kù)存管理系統(tǒng)平臺(tái)關(guān)鍵技術(shù)的實(shí)現(xiàn)
3.1Web層的實(shí)現(xiàn)
這一層的關(guān)鍵技術(shù)點(diǎn)主要是把Spring和Struts2集成,在導(dǎo)入的所有jar包中必須包含一個(gè)jar包(即struts-spring-plugin-2.x.x.jar),用于Struts2集成Spring的插件。首先要在web.xml中配置,先對(duì)Spring容器實(shí)例化,再把Struts2的框架啟動(dòng)代碼寫到web.xml中,通過(guò)filter來(lái)啟動(dòng)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.a(chǎn)pache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>新建一個(gè)struts.xml,設(shè)置一個(gè)常量struts.objectFactory的作用是使用Spring這個(gè)對(duì)象工廠類替換掉Struts2默認(rèn)的對(duì)象工廠類,也就是說(shuō)由Spring來(lái)創(chuàng)建和維護(hù)action。在action類中class屬性原先由Struts2創(chuàng)建,現(xiàn)在由Spring創(chuàng)建,格式是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業(yè)務(wù)層的實(shí)現(xiàn)
首先在productService.java中聲明一些方法(添加,顯示列表,刪除,更新等),這也就是我們常說(shuō)的DAO接口。publicinterfaceProductService{publicvoidaddProduct(Productp);publicList<Product>showProduct();publicvoidupdateProduct(Productp);publicvoiddelProduct(java.io.Serializableid);}然后在Spring中配置一個(gè)productServiceimp對(duì)象,讓Spring來(lái)接管它,體現(xiàn)出Spring對(duì)bean的管理和維護(hù)。其spring.xml的配置如下:<!--配置會(huì)話工廠--><beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.OracleDialecthibernate.generate_statistics=true</value></property></bean><!--配置productServiceimp對(duì)象--><beanid="productService"class="cn.mao.service.productService"><propertyname="sessionFactory"ref="sessionFactory"/></bean>在productServiceimp中實(shí)現(xiàn)dao的方法,把Spring注入到sessionFactory,可以更好的管理,使項(xiàng)目開發(fā)簡(jiǎn)單。在productServiceimp里設(shè)置sessionFactory的get和set方法,前邊已經(jīng)在spring.xml配置了相關(guān)bean,可以直接使用這個(gè)對(duì)象而不用再新建一個(gè)對(duì)象。部分實(shí)現(xiàn)代碼如下:PublicclassProductServiceimpimplementsProduct-Service{privateSessionFactorysessionFactory;publicSessionFactorygetSessionFactory(){returnsessionFactory;}publicvoidsetSessionFactory(SessionFactorysessionFactory){this.sessionFactory=sessionFactory;}publicvoidaddProduct(Productp){Sessionsession=sessionFactory.openSession();……}
3.3持久層的實(shí)現(xiàn)
這一層關(guān)鍵技術(shù)是Hibernate和Spring集成。用掃描加注釋的方式把bean交給Spring管理,可以加快開發(fā)速度。其spring.xml的配置如下:<!--配置數(shù)據(jù)源--><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><!--配置事務(wù)管理--><beanid="tx"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><tx:annotation-driventransaction-manager="tx"/>不但cn.mao這個(gè)包會(huì)掃描到,而且只要是以cn.mao開頭的包都會(huì)掃描到。Spring需要接管Hibernate的事務(wù)管理服務(wù),打開Hibernate的事務(wù)實(shí)際上操作的是Spring的事務(wù),是基于注解的方式配置事務(wù)的。雖然本文采用oracle數(shù)據(jù)庫(kù),但是要更換其它數(shù)據(jù)源非常的方便,例如:mysql,sqlserver,不需要大范圍的更換代碼。
4結(jié)語(yǔ)
本文以某公司的庫(kù)存管理系統(tǒng)為例,研究并實(shí)現(xiàn)了基于MVC模式S2SH框架的庫(kù)存管理系統(tǒng)。并實(shí)現(xiàn)了Spring和Struts2的向上集成,Spring和Hibernate向下整合,實(shí)現(xiàn)了松耦合的軟件框架。彌補(bǔ)了Struts2在管理和持久化層面上的不足,體現(xiàn)了Hibernate在持久層面上的優(yōu)勢(shì),也表現(xiàn)出Spring在集成和管理其它框架中的核心地位。三大框架的集成,達(dá)到優(yōu)勢(shì)互補(bǔ),提高了系統(tǒng)的可維護(hù)性和擴(kuò)展性。
作者:申斌 李利民 單位:中北大學(xué)計(jì)算機(jī)與控制工程學(xué)院 山西汾西重工有限責(zé)任公司