0第1章引言1.1选题的目的和意义随着经济全球化的推进与中国金融业改革的不断深化,人们的生活消费方式也有了显著的变化,最明显的就是人们随身携带的不再是大量的现金,而是一张张小而轻巧的信用卡。信用卡(CreditCard)作为非现金交易付款方式,以其便于携带、使用方便、交易安全等优点,在欧美国家得到了普遍地使用。本世纪初,信用卡开始在中国流行,近几年来得到了迅速的发展,据统计,截至2008年6月30日,中国信用卡发行量已猛增到1.22亿张。目前,多数商业银行都推出了信用卡业务,随着发卡量的增加,如何提高信用卡管理与结算效率并将信用卡管理人员从繁杂的手工劳动中解放出来,成为一个迫切需要解决的问题。在这样的背景之下,“软酷网”卓越实验室研发六部经过分析研究,选择了“信用卡管理系统”作为实训项目。该系统采用便于使用与维护的B/S开发模式,这样信用卡管理人员只需要通过浏览器便可在银行内网中进行各项管理操作,同时还采用了基于MVC(Model-View-Controller)的Struts+Spring+Hiberate框架进行软件的开发,能够很好的实现模型与表示层的分离,由控制器来进行业务流程控制,符合J2EEWeb应用系统开发的基本要求,也有利于软件后期的升级与维护。1.2信用卡管理系统的发展状况近年来,随着网络技术和金融业的不断发展,各商业银行越来越注重信用卡业务的开拓,因此对信用卡管理提出了更高的要求。改变原有的管理模式,运用先进的手段进行管理,已经成为现在信用卡管理的必然选择。这样,各种针对信用卡管理的应用软件不断涌现,并且经历了从单机版到网络版的转化。网络信用卡管理软件的发展更加有力地提高了信用卡管理水平,借助金融业网络信用体系构建信用卡管理系统,可以合理利用Internet的网络资源和Web跨平台的数据访问能力,通过网络来进行交易记账、结算及存取款,信用卡用户们可以通过浏览器来直接参与信用卡的管理。同时,信用卡系统的管理人员可以很方便地获取及时、准确、全面的数据和相关信息,将银行卡部员工从繁琐的手工劳动中解放出来,提高生产率,进而从整体上提高了信用卡管理的水平。然而信用卡管理系统的设计也不能一劳永逸,由于各商业银行经营理念的不1同、结算体系的不同及信用评估的不同,而各不相同,没有统一的标准,也很难建立一个统一的标准,系统的适用性、通用性很难实现。所以,现在信用卡软件的开发设计在向各种流行的设计模式靠拢提高系统的可移植性和可扩展性的同时,还要考虑到自身信用卡管理的特点,以便更好地满足信用卡管理的需求。1.3论文研究内容当前计算机技术越来越趋于成熟,各种设计思想不断涌现,MVC成为适用于各种大型Web应用的构架技术。它的目的就说最大限度地降低系统各部分之间地耦合度,提高系统的可扩展性,提高代码的重用率[1]。基于MVC的J2EE技术的应用更是广泛,本文这里也主要采用Struts框架来实现上述技术,并以此作为信用卡管理子系统的技术解决方案。本文的主要工作如下:(1)详细介绍了MVC开发模式的设计思想,分析了两种常见的JSPModel的优缺点,并介绍了实现MVC设计思想的Struts框架,并分析了Struts的工作流程,以及Struts开发的优势。(2)以MVC模型为设计思想,运用Struts框架来实现信用卡管理系统的开发设计。本文采用当前比较流行和便捷的B/S模式开发模式,采用Struts框架来实现系统表现层与业务层的分离,更加有利于系统的开发与维护。进一步在系统的业务实现层和数据库之间加入了数据持久层,使得系统对数据库的访问实现面向对象的设计。简单介绍了数据持久化技术以及本文实现数据库持久层的工具Hibernate持久化框架。(3)对信用卡系统进行总体的分析,对信用卡管理中主要业务进行了分析,并进一步确定了系统的技术构架。以客户管理子模块为例,说明系统开发设计的流程和具体的业务实现。介绍了贯穿表现层、业务层、持久层的Spring框架,作为一个依赖注入的容器,对Struts与Hibernate实施监控的同时,且可以做安全、日志工作。1.4论文结构本文主要研究在J2EE平台下基于MVC设计模式开发信用卡管理软件WEB2应用程序的相关技术,在传统的WEB应用程序开发的基础上,对基本的设计模式进行了改进,采用三层开发模式来降低系统各个模块之间的耦合性,并通过一个具体模块的实现来说明各个层次的设计和实现。全文共分为五章:第1章,引言。介绍了信用卡管理软件的发展现状,并进一步分析了该类软件开发过程中存在的问题;第2章,信用卡系统总体设计分析。概括分析说明了信用卡管理的主要业务,在了解用户需求的基础上,设计了系统的总体功能模块,采用了UML语言对系统进行建模;第3章,系统研发技术。阐述了MVC设计模式以及常见的JSP设计模式,并介绍了Struts这个用来实现MVC设计思想的开源项目,另外还对引入的数据持久技术和本文实现这种技术的Hibernate持久框架做了介绍,也对整合前两个框架实现依赖注入与切面编程的Spring做了简要介绍;第4章,客户管理子系统的设计与实现。通过对该模块的实现,来体现整个设计思想,并介绍了本文实践项目的一些亮点与独到之处;第5章,系统评价。主要从系统安全和性能特点两方面来介绍;第6章,总结语。总结整个设计,并说明不足及进一步改善的方向。3第2章信用卡管理系统总体分析2.1系统简介信用卡管理系统是集账户管理、信用卡管理、用户信息维护、报表信息管理为一体的业各系统,具有灵活的应用架构、费用结构和产品定义,在系统、机构、产品、客户、账户、交易等各个层面均实现参数化,是一个以客户为中心的多产品、多账户、多卡综合应用系统。2.2信用卡管理系统的总体功能框架信用卡管理系统主要实现银行信用卡和客户间交易的记账和管理功能。信用卡管理涉及到的内容很多,但从大体上来看,它的主要业务可以归纳为四个部分:账户管理、信用卡管理、报表管理、系统管理;主要面对三类用户:银行普通员工、银行部门经理、系统管理员。信用卡管理系统的总体功能框架如图2.1所示。图2.1信用卡管理系统功能结构图2.3系统的开发原则(1)可延展性和包容性系统应具有较好的可延展性和包容性。系统的可延展性应包括能够很好的兼4容已有的系统和能够在今后一段时间内实现对系统软硬件扩展,能有效地保护已有的投资,系统易于扩充升级,既要满足当前业务的需求,又能随时进行扩展和维护。(2)系统简洁,易使用、易维护系统的设计符合日常办公运作的需求,功能不仅要实用,还应该简单易学,具有比较友好的用户界面,易于扩充。整个开发设计层次简单明了,便于管理,易于扩充。(3)为员工,经理提供良好的信息服务系统对信用卡信息进行了合理的布局,以便于提供优质、高效的业务管理和事务处理,是系统用户对信用卡账户进行维护,完成信用卡交易记账和管理(4)可靠运行,安全保密在该系统的开发过程中,将通过身份认证,权限检查,来解决信用卡管理系统的安全性、保密性问题,确保系统的有效和安全运行。2.4系统功能概述信用卡管理系统不仅要管理信用卡使用的各个环节:如开卡到记账、存取款的业务活动,还要管理所涉及到的各种对象和资源:如管理员、系统用户、账户、信用卡等;同时信用卡管理系统还要提供相应的算法来结算账单。其中客户管理模块主要的业务功能实现,将在以下进行相关的介绍。(1)客户开户申请管理子模块客户提交开户申请表,进行合法性验证,交给银行员工审核,如果审核通过,将客户信息填入客户信息表,并为客户开通信用卡服务所需的账号,客户开户管理子模块的业务流程如图2.2所示。5图2.2客户开户管理子模块业务流程示意图(2)账户信息维护子模块通过对开户客户的消费、取现、透支等交易记录统计,银行员工修改相应账户的信用额度,同时完成账户的销户工作。该模块的业务流程如图2.3所示。图2.3账户信息维护子模块业务流程示意图(3)取款管理子模块取款管理子模块主要完成取款申请、取款合法性验证、自动完成取款额与可6用额、信用额度的核对等,最大限度的实现取款的自动化。该模块的业务流程如图2.4所示。图2.4取款管理子模块业务流程示意图图2.5账单管理子模块业务流程示意图(4)账单管理子模块7账单管理是信用卡管理中很重要的一部分。该模块主要列出客户交易账单的信息,并对每月账单进行相应的结算,以便客户进行查询与打印。该模块的业务流程如图2.5所示。(5)报表管理子模块报表管理是信用卡管理中只针对银行经理一个模块。通过查看报表,银行经理可以了解银行开户、户头信用额、信用卡透支的现状及其发展趋势,清晰的把握信用卡业务的发展脉络,制定出相应的发展策略。该模块的业务流程如图2.6所示。图2.6报表管理子模块业务流程示意图以上描述了客户管理、报表管理的大致功能及其数据流图,而信用卡的管理及系统管理,其业务流程与客户管理开户与信息维护的流程大致相似,因此这里不做过多介绍。2.5系统技术构架本系统采用了先进的设计理念和一些主流的技术。系统采用基于MVC的8J2EE技术和Web技术来实现的。传统的Web技术平台是一个三层结构。如图2.6所示。图2.7WEB三层结构示意图目前,Web技术都是通过Http来实现客户端和服务器的通讯的,对于简单的HTML静态文本来说,Http是一个很好的选择。但Http却不能很好地应用于复杂的业务处理,因为当用Http进行通讯时,必须以Web服务器作为中介。然而当同一时刻客户访问量过大时,Web服务器则将成为整个系统的瓶颈。而基于MVC的J2EE技术能很好地解决以上问题。根据项目需求分析,确定本系统必须具备的性能有:(1)具有良好的交互性:工作内容中有相当大的部分是人机交互,这就要求系统的交互性要强,从而满足需求。(2)具有较好的可扩展性:工作的内容和形式具有多变性,从而要求系统具有良好的可扩展性。(3)良好的可维护性:系统投入使用后,主要是由管理员承担系统维护的工作,维护人员不定期变动,这就要求系统的可维护性强。(4)较好的跨平台性:用户可能使用各种不同的操作系统,而且为了适应今后可能的变化,系统应具有较好的跨平台性。一个典型的J2EE应用能很好地满足以上的性能要求,它至少包括表现层、业务层、数据持久层和数据库服务器四个部分。在开发信用卡管理软件组件模板时,本文采用Struts来实现信用卡系统的表现层,数据持久层选择了ORMappingTools(Hibernate),业务逻辑层则用普通Java对象,把Struts和Hibernate这两种在业内比较推崇的开源技术相结合[2],并引入Spring依赖注入,使用JavaBean9代替EJB,进一步整合前两个框架,提升了项目开发的效率和易维护性。这样也相应地扩展了传统Web的三层体系结构,本文开发的系统体系架构如图2.8所示。图2.8信用卡管理系统技术结构图这种设计使服务器端和数据服务端可以根据系统的需求进行配置,为系统结构提供极大的灵活性和收缩性。采用该多层结构技术的另一个优势是“瘦”客户端的设计和实现。主程序和主要的业务功能模块都放在应用服务器上,客户端只需安装浏览器就可以在本地运行。本信用卡系统设计中,客户端为浏览器,中间层以Tomcat作为应用服务器支持业务逻辑的处理,以MySQLServer5.0作为数据库服务平台。10第3章系统平台与技术3.1MVC设计模式3.1.1MVC模式的介绍随着Web开发的不断发展和需要,MVC模式被推荐并成为Sun公司J2EE平台的设计模式,并且在应用中受到越来越多的开发者的欢迎。Model-View-Controller原来是XeroxPARC在八十年代为编程语Smalltalk-80发明的一种应用程序的框架结构,至今已被广泛使用。该框架结构支持三层结构的类:表现应用程序状态层、屏幕表现层和控制流层,因此这三层被称为模式(Model)、视图(View)和控制器(Controller)。MVC是可以满足那些需要为同样的数据提供多个视图的应用程序的开发需要,在开发与用户界面相关,特别是对用户界面要求较复杂的相关的应用程序时,可以很好地以不同的方式来显示同一数