APP下载

基于J2EE的中药材库存管理系统的应用研究

2010-02-25

陕西科技大学学报 2010年5期
关键词:出库入库中药材

张 博

(亳州职业技术学院计算机系, 安徽 亳州 236800)

0 前言

J2EE架构是当前主流的架构之一,企业采用J2EE架构作为解决方案已经成为业界的发展趋势.J2EE体系结构提供中间层框架,可以满足高可用性、高可靠性以及可扩展性的应用需求.通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供了对现有应用程序集成的强有力支持,具备良好的部署应用,为用户提供了统一安全模型和灵活的事务处理控制.在J2EE应用中,Struts是一种非常优秀的MVC应用框架.如何开发出层次分明、结构清晰、可复用性的系统,是当前企业级开发的主要目标.Struts框架给我们实现这样的目标提供了一个很好的机会.

1 研究背景与意义

亳州地处安徽北部,气候和土壤适宜中药材的生长,自古以来就有中药材种植和交易的历史,交易量居全国四大药都之首,被誉为“中华药都”.亳州建有全国最大的中药材交易中心,年成交额100亿元以上,交易辐射全国30个省、市、自治区.在亳州已经取得GMP认证的中药企业已达到40余家,成为了全国最大的中药饮片生产基地,取得《药品经营许可证》的企业860余家,其中通过GSP认证的703家,直接从业人员达15万之众,基本涉及中药的种植、生产、加工、销售各领域.

由于中药材的保存时间、药物效果、对环境的要求等特殊特点,同时药材的品种不同,国家对中药材、成药的管理要求不同,因此和一般的商品相比较,对中药材的库存、流通和运输提出了更高的要求,其中库存又成为中药企业在生产过程中提高企业生产效率和控制药材损耗至关重要的环节.

通过对中国(亳州)中药材交易中心、华佗国药厂、新兴饮片厂等8家中药材相关企业的调查后发现,虽然大部分企业都使用了计算机进行库存管理,但是采用的方案都是市场上通用的进销存系统,这些通用系统虽然可以提高企业统计人员填写报表的速度,却没有针对中药企业的生产特点和管理模式进行优化,无法完全实现对药材的分类管理、仓储状态监测、出入库管理、网络在线查询等功能.

而由SUN公司提出的J2EE(Java2 Platform Enterprise Edition)架构,通过服务器组件的形式,将系统部件进行封装,提高了程序的重用性、扩展性和安全性,降低了开发过程中的成本,提高了系统的稳定性和可移植性,具有广泛的开发前景.

本文就如何利用基于Struts技术的J2EE平台,构建高效的中药库存管理系统进行了积极的尝试.

2 Struts框架的实现原理

2.1 Struts框架的基本原理

Struts实际上是基于JSP Model 2模式下的一种MVC框架.Struts的目标是希望分离Web程序的表示层、控制层和功能层,使程序员有更多的精力投入到后台的业务逻辑设计中去.

和其它的Java架构一样,Struts也是面向对象设计,它将MVC模式分离为显示逻辑和业务逻辑两部分.在Structs 框架中,模型由Javabeans或者EJB组件担当,控制器由Action和Actionservlet实现主要功能,视图由JSP文件组成.图1为Struts框架的实现原理图.

图 1 Struts框架原理图 图2 中药材库存管理系统的模型架构

2.2 Struts框架的优势

Struts框架使开发者在构建基于Java Servlet和JSP技术的Web应用时更加容易,为开发者提供了一个统一的标准框架.通过使用Struts作为基础,开发者能够更专注于应用程序的业务逻辑实现.具体来讲,Struts的优点有:

(1) Struts和Tomcat、Turbine等诸多Apache项目都属于是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制和联系.

(2)有丰富的Taglib可以使用.Struts的标记库Taglib,如能灵活运用,则能大大提高开发效率.

(3)页面导航.页面导航将是以后的重点发展方向,通过页面导航使得系统的实现逻辑更加清晰.

3 中药材库存管理系统的设计

3.1 模型设计

在Struts框架中,模型包含了业务实体和业务规则,同时负责访问持久化数据,所以在系统中要保持模型的相对独立性,将模型组件集中在一起,这样可以大大提高组件的可重用性.在中药材库存管理系统中,采用Model 2模型的实现原理,其模型架构如图2所示.

业务处理的流程如下:

(1)用户通过JSP页面,将表单数据提交到Servlet类.

(2)Servlet类从表单中获得数据.

(3)Servlet类通过从request中获得的表单数据,调用不同的业务逻辑JavaBean.

(4)JavaBean处理完业务逻辑后调用DAO数据库接口与中药材数据库进行数据交互.

(5)DAO通过数据传输类(DTO)把从数据库获得的数据返回给JavaBean,再传送给Servlet,最后由JSP页面将更新的数据显示给用户.

3.2 业务实体设计

业务实体在系统中表现为实体域的对象,在数据库中表现为关系数据.在进行数据库开发的准备工作中需要将中药材的类别确定下来.参考《中国药典》2005版中药材分类方法,结合亳州药材市场的常见药材种类,在本系统中,将药材分为3大类:

(1)植物类药材:主要包括根茎类、果实子仁类、全草类、菌藻类四小类,如图3所示.

图3 植物类药材

(2)动物类药材.

(3)其他(矿石)类.

根据以上的分类方法,建立中药材数据库的分类表如表1~表6所示.

表1 根茎类索引表

表2 果实子仁类索引表

表3 全草类索引表

表4 菌藻类索引表

表5 动物类索引表

表6 其他(矿石)类索引表

在中药材库存管理系统中,业务实体包括:用户账号(Account)、客户账号、药材入库单(Storage invoices)、药材出库单(OutStock invoices)、药材订单(Herbal Order)、库存药材(Stock Herbal).

3.3 系统功能设计

本系统主要完成药材库库存的相关功能,包括生成入(出)库单、库存药材清单、完善的数据汇总功能、药材查询功能及数据库的维护功能.在上述实体关系图的分析基础上,需要进行具体数据分析和网络数据库查询的设计.为完成这些功能,设计了如下模块:

(1)用户认证模块,完成系统安全检查维护和用户授权工作. 用户输入用户名和密码,提交给后台服务器进行验证,通过与用户表中的数据进行比对,允许合法用户登录成功;否则给出出错处理.

(2)入库、出库模块,进行药材入(出)库操作.入库时,收集入库信息,包括入库的药材种类、产地、规格、数量等信息,分别导入数据库中的不同表中,同时打印入库单.出库时,用户首先进行库存药材的查询,获得当前库存情况.然后,输入准备出库药材的数据,与数据库中的相关表中数据进行比对,如满足药材出库条件则允许出库,并打印出库单.

图4 系统功能图

(3)查询模块,实现比较完善的库存药材查询功能. 用户可以输入药材的种类、产地、规格、批次,了解实时的库存情况,同时输入时间段条件,能够获得相应的入出库操作明细表.

(4)统计模块,结合设计情况,进行库存数据的统计. 用户输入需要统计的时间段、药材种类、产地等条件,系统可以统计出本时间段的入库表、出库表、实时库存等数据.

(5) 数据维护模块,维护系统数据,进行数据备份、数据导入/ 导出和数据恢复功能. 在用户误操作或者是其他原因导致系统崩溃的时候,能够进行数据的恢复,同时定期进行数据备份,允许用户在权限范围内进行数据的的导入/导出工作.

本系统的功能实现图如图4所示.

4 中药库存管理系统的实现

4.1 用户登录

在struts-config.xml中有代码1:

path=“stock/LoginForm”

type=“org.herblstock.web.struts.action.DoNothingAction”

validate=“false”

这个Action没有name属性,也就是它没有与之相关联的ActionForm.它的作用就是将请求转发到/WEB-INF/jsp/struts/LoginForm.jsp页面上.处理登录操作的功能由LoginAction来完成.

4.2 药材入库

该模块主要实现中药材的入库操作.模块的输入项主要包括:登药材的编号、名称、类别、数量、所属公司、入库的时间等.当用户输入数据后,系统将数据读入数据库中,同时将入库信息添加到入库信息表中,并更新库存表中的数据.

4.3 药材出库

出库模块主要实现中药材的出库操作.当用户进行出库操作前,首先要了解当前的库存情况,因此在本系统中增加了一个当前库存状态的查询功能.在输入出库的药材名称、发送公司和规格后就可以查看所查询的药材实时库存情况.

当满足出库条件的时候,打印出库单,同时更新出库数据表;若不满足出库条件,则要求用户更改出库订单.

4.4 库存药材查询与浏览

查询模块包括出入库数据、药材库存数据统计的查询.

查询功能页面提供4个可选择方法:按药材分类查询、按药材产地查询、按药材属性查询、按客户类别查询.用户选择自己想要进入的页面即可.这里以按药材属性查询为例介绍一下查询过程的具体实现.

按药材属性查询的界面提供药材分类目录.目录的每个节点显示药材名称和类别,用户点击节点,将显示该类药材下的具体规格.

本模块主要是采用SQL查询语言进行编程,通过查询模块可以随时查到当前选中的药材在仓库内的库存情况以及相关报表,本系统使用WebLogic Server的JDBC实现数据库操作.

JDBC对数据库的访问分为3个方面:一是通过JDBC将数据存储在数据库中,二是使用JDBC更新数据库中的数据;三是使用JDBC查询数据库中的数据.

在这里,以使用JDBC查询数据为例讨论JDBC数据库的访问.

在WebLogic Server中,使用JDBC查询数据的过程分为5步,如下:

(1)建立数据库连接.创建一个新的数据库连接,实现过程如代码2所示:

Connection myConn=null;

Try{

Context ctx=new initialContext();

Javax.sql.DataSource ds

=(javax.sql.DataSource)

Ctx.lookup(“example-dataSource-demopool”);

Java.sql.Connection myConn=ds.getConnection();

} Catch(SQL Exception sqle) {

}

这段代码首先查询WebLogic Server的JDBC服务,找到访问的数据源,然后创建一个java.sql.Connection类的实例,把ds.getConnection()方法返回的对象赋值给它.通过使用WebLogic Server定义的DataSource对象作为参数,调用getConnection()方法,可以获得数据库的配置信息.

(2)对数据库进行查询操作.Statement对象用于将SQL语句发送到数据库中,对数据库的查询操作由java.sql.Statement类完成.

首先,利用Connection类的createStatement()方法,创建Statement类的实例.代码如下:

Statement stmt=Con.createStatement();

这个代码将创建一个当前Statement对象实例:

Stmt.execute(“SELECT *FROM 数据库表名”);

ResultSet rs=stmt.getResultSet(); //返回查询结果

(3)读取查询结果. 调用ResultSet类的方法,读取其中的数据.ResultSet对象具有指向当前数据行的光标,光标会定位到第一个数据行的前面.Next()方法是将光标移动到下一行,当ResultSet对象到达整个数据表的最后一行时Next()方法返回false值,因此可以实现扫描整个查询结果.

(4)处理查询结果.

(5)释放数据库.查询结束之后,释放Statement 和Connection对象.

4.5 库存药材统计

在系统开发时,库存统计一般采用两种方法.一种是在数据库中建立库存表,当用户需要查询库存时,直接从数据库表中提取相应的信息,这种方法需要在每次入出库操作后立即更新库存表.另一种方法是不建立库存表,在用户需要查询时,立即在相对应的出入库记录中重新统计出结果.与第一种方法相比,这种方法不存在冗余的数据库表,虽然在统计时产生统计数据,但能够做到统计数据的准确及时.

本系统采用第二种方式进行库存药材的统计,这样可以保证库存药材的实时更新,库存统计时要涉及到库存汇总表、各种出入库表等.用户只要输入时间段、需要统计的库存药材、药材产地等系统就能统计出相应的上期库存、本期入库数据、本期出库数据、当前库存数据等.

5 结束语

本文讨论了基于Struts架构的中药库存管理系统的开发原理,深入阐述了基于J2EE平台的中药材库存管理系统的构建原理.对于建立在Struts架构下的具体实现方法进行了很好的尝试.在系统实现的过程中,将J2EE技术与本地的行业应用相结合,在中药材库存管理的应用中取得了很好的效果.

由于接触J2EE平台的应用时间不长以及自己的经验不足,本系统还存在着一些不足之处.例如对中药材的仓储细化方面的处理还不够准确,受现阶段研究条件和水平的限制,库存环境温度的自动化检测还不能很好实现等,这些都需要在今后的工作中进一步完善,同时要加强和本地的药材生产企业合作,改进系统的不足.

参考文献

[1]邱 哲,王俊标,马 斗. Struts Web设计与开发大全[M]. 北京: 清华大学出版社,2005.

[2]詹 森(Johnson,R), 赫 鲁(Hoeller.J).Expert one-on-one J2EE Development without EJB 中文版[M].北京:电子工业出版社,2005.

[3]阿 卢(Alur,Deepak).J2EE核心模式[M].北京:机械工业出版社,2005.

[4]杨中科.J2EE开发全程实录[M].北京:清华大学出版社, 2007.

[5]罗玉玲,封朋成,梁晓扬,等. J2EE应用开发详解[M]. 北京: 电子工业出版社,2009.

[6]张 博. 基于Struts的中药材库存管理系统的应用研究[D]. 上海:华东师范大学硕士学位论文,2007.

[7]张国梁. 基于Struts和Hibernate的J2EE Web应用的研究与实现[D]. 上海:华东师范大学硕士学位论,2007.

[8]Struts,an open-source MVC implementation[EB/OL]. http://www.ibm. com/developer works/library/j-struts/,Feb 2001.

[9]Struts,MVC 的一种开放源码实现[EB/OL]. http://www. ibm. com/ developerworks/cn/java/j-struts/,2001.

猜你喜欢

出库入库中药材
夏季中药材田间管理做好这五点
中药材促农增收
重磅!广东省“三旧”改造标图入库标准正式发布!
中国食品品牌库入库企业信息公示②
中国食品品牌库入库企业信息公示①
宋四清:种植中药材 托起致富梦
卷烟配货出库流程的优化与应用
散粮出库 加快腾仓
“出库费” 应由谁来付
DNA提取4种中药材方法的筛选