APP下载

基于SSH框架的冲印馆管理系统设计与实现

2016-12-22姜文波

软件导刊 2016年11期

姜文波

摘 要:数码相机的普及促进了数码冲印市场发展,数码冲印业务量剧增,但数码冲印管理方式大部分仍然采用人工管理,工作效率不高。因此,利用SSH集成框架建立冲印馆管理系统,设计并实现了数码影集管理、冲印订单管理、在线支付、冲印分店管理、投诉建议以及论坛管理模块等。系统应用实践表明,冲印馆管理系统提高了数码冲印实体店的管理效率和经济收益。

关键词关键词:数码冲印;J2EE平台;Struts框架;Spring框架;Hibernate框架

DOIDOI:10.11907/rjdk.161919

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2016)011011404

0 引言

近年来,我国大力倡导“实业+互联网”模式,将互联网平台和传统产业改造相结合。互联网产业不断向纵深领域推进,已经成为推进企业、社会、国家发展的重要力量[12]。现阶段,数码行业的快速发展和数码相机的不断普及,促进了数码冲印市场发展,数码冲印业务量剧增,但数码冲印管理方式大部分仍然采用人工管理,工作人员劳动强度大,工作效率不高,也容易出现差错。基于宽带网络与无线网络的普遍应用,本文利用SSH(Struts-Spring-Hibernate)[35]框架建立冲印馆管理系统,致力于打造“传统连锁+网络化”的数码冲印运营模式。

1 冲印馆管理系统分析

1.1 系统用例分析

系统功能需求分析是数码冲印相关资源管理的首要环节,也是系统运行的前提与基础。用例分析法属于软件行业需求分析中一种十分有效的方法,可准确获得用户的企业应用操作需求。冲印馆管理系统用例分析,包括会员用例、冲印分店经理用例以及系统管理员用例等。其中,会员用例包括管理数码影集、创建冲印订单、管理自己冲印订单、投诉与建议、参与论坛讨论等用例;冲印分店经理用例包括申请冲印分店、管理分店价格、管理分店冲印订单、处理建议、参与论坛讨论和回复等用例;系统管理员用例包括处理分店申请、管理所有冲印订单、管理冲印分店、管理会员、处理建议、论坛管理等用例。

1.2 系统核心业务操作流程分析

系统核心业务操作流程分析,利用会员操作序列图、冲印分店经理操作序列图以及系统管理员审核冲印分店申请序列图进行分析。限于篇幅,这里仅阐述会员创建数码冲印订单序列图、冲印分店经理处理冲印订单序列图、系统管理员审核冲印分店申请序列图等分析过程。

(1)会员创建数码冲印订单序列图分析。会员创建数码冲印订单,首先要经过登录验证;登录成功后,冲印馆管理系统显示会员操作菜单,会员点击创建数码冲印订单;系统显示冲印分店列表页面,会员选择冲印分店;系统显示建立订单页面,会员建立订单,输入订单描述信息;在冲印订单中添加相片,选择相片取片方式;最后点击提交按钮,完成发送冲印订单操作。

(2)冲印分店经理处理冲印订单序列图分析。冲印分店经理成功登录后,系统自动显示冲印分店经理操作菜单,冲印分店经理点击管理会员冲印订单操作链接;冲印分店经理可以浏览未处理冲印订单列表,下载冲印订单相片,发送到数码冲印部门冲印,并将冲印订单状态设置为“正在冲印”;冲印完成后,冲印分店经理根据会员选择的取片方式进行处理,并将冲印订单状态设置为“冲印完成,正在送相片”,或“冲印完成,请您取相片”。

(3)系统管理员审核冲印分店申请序列图分析。系统管理员登录系统后,在未审批分店申请页面,系统管理员根据分店经理姓名、所处地址、开店计划等信息,点击“同意”或“拒绝”按钮,完成同意或拒绝冲印分店申请操作。

2 冲印馆管理系统设计

2.1 系统功能模块设计

冲印馆管理系统功能模块结构包括注册登录、数码影集管理、冲印订单管理、在线支付、冲印分店管理、投诉建议以及论坛管理模块等,下面阐述各模块功能。

(1)注册登录模块。用户必须先注册,登录时通过验证后,方可使用冲印馆管理系统功能。

(2)数码影集管理模块。包括新建影集、修改影集、删除影集,可以在影集中上传或删除相片等。

(3)冲印订单管理模块。会员选择冲印馆后,可以建立冲印订单,在冲印订单中上传会员电脑或手机中的相片,也可以从会员自己影集中选取相片;待冲印的相片添加结束后,选择适合自己的取片方式,提交冲印订单,并选择适合的支付方式结算费用;会员可以管理自己的冲印订单,查看冲印订单处理状态。冲印分店经理可以处理会员冲印订单,下载会员冲印订单中的相片。管理人员(系统管理员)可以浏览、检查冲印分店订单处理情况。

(4)在线支付模块。系统具备多种支付选择功能,会员可以选择支付宝、网上银行等方式进行结算。

(5)冲印分店管理模块。用户可以申请成为冲印馆的分店经理,管理员可以对冲印分店申请进行审核,批准或拒绝申请,也可以对冲印馆管理系统会员及冲印分店经理进行管理。冲印分店获得批准后,冲印分店经理可以根据所处区域情况和节日特点,管理自己冲印店的价格和优惠促销措施等。

(6)投诉建议模块。会员遇到冲印不及时、取照片时冲印分店服务态度不好等情况,可以向系统管理人员投诉,管理人员调查、处理后给予答复。

(7)数码冲印论坛模块。会员、冲印分店经理、系统管理人员等用户可以在论坛上发帖、回帖,交流数码冲印相关心得等。

2.2 系统技术架构

通过对软件行业流行的技术框架进行分析,结合冲印馆管理系统需求分析,冲印馆管理系统技术架构决定采用SSH集成框架。图1为冲印馆管理系统技术架构。

冲印馆管理系统根据职责划分可以分为4层,包括视图层、控制层、持久层、业务层。每层都具备独特职责,不能将某一层职能同其它层进行混合、叠加。每层之间应该彼此隔离,但容许通过集成框架内部机制和组件接口在层间实现通信。

(1)数据持久层采用Hibernate技术,由冲印分店信息实体类Branch类、影集信息实体类Series类、相片信息实体类Figure类、冲印订单信息实体类Bill类、冲印分店价格信息实体类Rate类等持久化类与IBranchDao类、BranchDao类、ISerieslDao类、SerieslDao类、IFigureDao类、FigureDao类、IRateDao类、RateDao类、IBillDao类、BillDao类等数据访问对象(DAO)构成。采用Hibernate技术,便于项目组成员采用面向对象的思想设计与编写,同时也隐藏了特定的数据库特点及数码冲印分店、影集、相片等数据表及表中字段,解决了相关数据操作的硬编码在复用性方面的缺陷。

(2)业务逻辑层由Spring支持,实现了冲印馆管理业务逻辑组件。影集管理SeriesService类、冲印订单管理BillService类、相片管理FigureService类、冲印分店价格管理RateService类等业务逻辑组件通过DAO组件查询和存储业务数据。Spring的IoC容器实现业务逻辑组件与DAO组件(接口类和接口实现类)的统一管理、事务处理以及缓冲连接池管理。

(3)系统视图层和控制层,结合JSP页面文件与Struts框架的TagLib库,运用ActionServlet将操作请求(*.do形式)映射到相应的影集管理SeriesAction类、冲印订单管理BillAction类、冲印分店价格管理RateAction类、冲印分店管理BranchAction类、相片管理FigureAction类等业务控制类,并由这部分业务控制类利用SeriesService类、BillService类等业务逻辑组件进行处理,然后按照执行结果跳转至相应页面。

2.3 系统数据库设计

(1)数据库服务器选择。SQL Server 2016中包括了实时业务运营分析、移动设备中的可视化管理、内设高级分析、新颖的安全管理技术以及混合云方案。所以,冲印馆管理系统选择SQL Server 2016作为数据库服务器。

(2)数据表结构。通过对冲印馆管理系统的需求分析,特别是对所需业务的数据分析,设计了数码冲印分店数据表、影集数据表、相片数据表、冲印分店价格数据表、会员冲印订单数据表、会员数据表、论坛数据表、投诉建议数据表等。

3 冲印馆管理系统模块实现

3.1 系统辅助类编写

3.1.1 系统公共类编写

系统公共类包括ActionForm类、压缩文件Compressor类、获取系统时间的PrintingDate类等。其中,ActionForm类包括冲印分店BranchForm类、影集SeriesForm类、相片RateForm类、冲印订单BillForm类等;压缩文件Compressor类对影集中的相片进行压缩,主要利用递归压缩方法完成,参数是压缩包输出流、需要压缩的文件及压缩路径;获取系统时间的PrintingDate类利用Date类来编写,并利用DateFormat类完成时间格式化工作。

3.1.2 Hibernate层实现

Hibernate层包括冲印馆管理系统实体类及相应的Hibernate映射文件。与数码冲印分店数据表、影集数据表、相片数据表、冲印分店价格数据表、会员冲印订单数据表、会员数据表、论坛数据表、投诉建议数据表等关系型数据表对应的JAVA实体类、映射文件关系如表1所示。

Branch.hbm.xml、Series.hbm.xml等Hibernate映射文件是冲印分店Branch、影集Series等实体对象同冲印分店数据表tb_branch、影集数据表tb_series等关系型数据表之间彼此转换的关键依据。

3.2 会员操作模块实现

3.2.1 会员影集管理

(1)影集管理业务控制器。影集管理模块业务控制器SeriesAction类继承自Struts框架的分发类DispatchAction,在其中编写增加影集、显示影集列表、删除影集、显示会员自己影集列表、修改影集、查看一个影集所有相片列表方法等业务方法。

(2)影集管理模块业务逻辑类。影集管理模块业务逻辑类SeriesService类通过配置文件接受影集管理业务控制器SeriesAction类的调用,并通过影集管理模块DAO类完成影集相关操作。

(3)影集管理模块DAO类。影集管理模块DAO类包括接口类ISeriesDAO类及其实现类SeriesDAO类。接口类ISeriesDAO类声明增加影集、更新影集、删除影集、获得影集列表、获得该会员影集列表以及获得某一个影集的方法等;SeriesDAO类实现了接口类ISeriesDAO类中声明的方法,利用Spring框架集成的HibernateTemplate类实现。

在会员管理自己影集功能的实现过程中,通过DAO组件,可实现业务逻辑层SeriesService类和影集数据表tb_series交互功能的分离,避免业务逻辑SeriesService类与数据持久层出现过度耦合。

3.2.2 会员数码冲印订单管理

数码冲印订单管理模块包括业务控制类BillAction类、业务逻辑类BillService类、DAO类,其中包括增加相片、提交冲印订单、初始化上传相片、按照会员标识获得冲印订单列表、取消冲印订单、确认冲印订单、选择冲印馆分店、查看冲印订单所有相片列表、显示相片、下载相片等业务方法。图2为会员提交数码冲印订单程序执行流程图。

在图2中,系统角色是会员,对象包括会员提交数码冲印订单的JSP页面bill_addinit.jsp、业务控制器BillAction类、DAO层接口类IBillDAO类、提交数码冲印订单成功后的JSP页面bill_add_ok.jsp等。会员在提交数码冲印订单页面上填写、选择冲印订单相关信息,单击“提交”按钮,Struts框架的核心控制器ActionServlet将请求交给业务控制器BillAction处理,通过Spring IoC机制调用BillService类addBill()方法,再通过Spring IoC机制调用IBillDAO类addBill()方法,然后返回成功标识,最后核心业务控制器ActionServlet通过配置文件调用操作成功页面bill_add_ok.jsp文件。

3.2.3 在线支付模块实现

在线支付模块实现包括支付宝支付和银行支付两部分:

(1)支付宝支付。会员在确认数码冲印订单后,点击支付宝支付,页面转到支付宝支付页面,在该页面文件中根据数码订单编号、订单总额以及会员支付宝账号和支付宝安全校验码生成参数,然后调用支付宝应用程序对此部分参数进行签名、处理,最后转到支付结束后的成功页面。

(2)银行支付。会员在确认数码冲印订单后,点击具体银行支付超链接,转到银行支付页面,在该页面文件中根据数码订单编号、订单总额生成选择的银行接口参数,对这些参数进行签名、编码处理,完成支付。

3.3 冲印分店经营管理模块实现

3.3.1 分店价格管理

在价格管理模块业务控制器RateAction类中编写增加价格、更新价格、删除某条价格、获得价格列表、获得某冲印分店价格列表等方法,价格管理模块业务逻辑类RateService类接受业务控制器RateAction类调用,通过价格管理模块DAO层IRateDAO接口类执行。

3.3.2 Spring框架IoC机制应用

在冲印分店经理管理自己分店价格功能的实现过程中,对功能组件所依赖特性的控制通过配置文件反转。Sring的IoC机制将组件间的控制权调用从程序代码换成IoC容器,也即是说,冲印分店经理管理功能组件间依赖关系由IoC容器在程序运行期间决定,由IoC容器动态地把业务逻辑类RateService类和IRateDAO接口类及其实现类RateDAO类依赖关系注入组件中,主要为了解耦功能组件间关系。图3是Spring IoC机制在该功能中的应用示意图。

在冲印分店经理管理自己分店价格功能中使用IoC机制的主要优势是便于维护。因为将组件对象建立放在XML配置文件中定义,当项目组件编写人员需要换一个实现子类时则会很轻松,只需修改XML配置文件即可,甚至可以完成组件对象的热插拨。

3.3.3 分店订单管理

在冲印订单管理模块业务控制器BillAction类中编写获得冲印馆分店冲印订单、更新冲印订单状态、显示相片、查看冲印订单所有相片列表、下载相片等方法,业务逻辑类BillService类接受业务控制器BillAction类调用,通过冲印订单管理模块DAO层接口类IMemberbillDAO类及其实现类MemberbillDAO类执行相关操作。

在冲印馆管理系统中,通过Spring AOP机制定义事务管理。在数据库连接配置过程中,在Bean元素SeriesDAO、FigureDAO、RateDAO、BranchDAO等DAO层实现类中,分别定义class的值为TransactionProxyFactoryBean,定义property元素的值为transactionManager(事务管理)。所以,在利用SeriesDAO、FigureDAO、RateDAO、BranchDAO等DAO层实现类进行数据操作时,不必进行捕捉异常、事务回滚等编写工作。通过声明式方法,在XML配置文件中对事务管理进行配置,可降低冲印馆管理系统的开发复杂度,也使管理系统易于维护。

3.4 系统后台管理模块实现

3.4.1 冲印馆订单管理

在冲印订单管理业务控制器BillAction类中添加获得冲印订单列表的方法,在冲印订单管理业务逻辑类BillService类添加相应的业务逻辑处理方法,在DAO层接口类IMemberbillDAO类中编写查询所有冲印订单的方法,在MemberbillDAO类中实现接口类中声明的方法。

3.4.2 数码冲印分店管理模块类之间关系

为了更好地阐述数码冲印分店管理实现过程,利用类关系图来描述数码冲印分店管理模块各个类之间的关系。图4为数码冲印分店管理模块类关系图。

在图4中,业务逻辑类BranchService调用了DAO层IBranchDAO接口,BranchService则引入了Branch对象模型,BranchService类服从业务控制器BranchAction调用。其中,BranchService类调用的是IBranchDao接口,而不是调用IBranchDAO接口实现类。调用IBranchDAO接口而不关注其实现类BranchDAO类的好处,是项目组人员修改BranchDAO类时不必修改调用层(BranchService类)代码,降低了冲印馆管理系统的开发复杂性。

3.5 系统测试与应用效果

3.5.1 系统测试

经过测试,会员操作模块、冲印分店经营管理模块、系统管理模块等功能模块运转正常,各项功能正常使用,在不同浏览器中,界面都能正确、清晰地显示,冲印馆管理系统运转平稳,性能良好。

3.5.2 系统应用效果

经过部分数码冲印实体店的使用,数码冲印实体店经营人员普遍反映利用冲印馆管理系统可摆脱手工方式开票、记账的繁琐工作,提高冲印实体店的管理效率和经济收益。它不但适用于新兴的数码冲印店,也同样适合于传统照相馆。

4 结语

本文采用StrutsSpringHibernate集成框架技术与SQL Server2016数据库服务器技术设计与实现了冲印馆管理系统。该冲印馆管理系统是传统数码冲印行业与互联网技术的有机融合,促进了数码冲印经营方式的革新。在冲印管理系统功能方面,可满足会员、数码冲印分店经理、管理人员的操作需求,解决了市场上现有冲印系统功能不足的问题;在管理环节上,冲印管理系统可以在线下通过数码照片冲印设施,为会员提供高品质的冲印服务,并吸纳社会(或民间)机构参与;在支付方式上,会员可以通过支付宝、网上银行、现金等方式进行结算;在冲印管理系统技术架构方面,引入J2EE领域的Struts、Hibernate框架,并运用了DAO模式。该系统采用的技术路线,可供软件研发企业研发相关系统时参考。

参考文献:

[1] 韩彩云.基于MVC模式的J2EE开发框架研究[J].软件导刊,2015,14(2):126128.

[2] 王萱,李桥.基于J2EE的招商管理平台设计与实现[J].软件导刊,2015,14(11):109110.

[3] 孙丽军.基于HTML5和SSH框架的教学评价系统设计[J].软件导刊,2015,14(11):135136.

[4] 兰伟.基于SSH框架的精品课程网站设计与实现[J].软件导刊,2015,14(9):199201.

[5] 潘甜甜,李丹,王珊珊.基于SSH框架的设备租赁管理系统设计与实现[J].软件导刊,2015,14(1):9294.

(责任编辑:黄 健)