[计算机毕设]基于java的保险业务管理系统设计与实现(项目报告+答辩PPT+源代码+数据库)

项目说明报告

基于java的保险业务管理系统

    历经二十余年的高速发展,我国保险行业的市场竞争已经达到白热化的程度,在同一个城市往往有数十家主体参与保险业务的竞争。保险企业的竞争异常激烈,想要在现在这复杂多变的市场环境中跳出来,必须好好的进行业务的管理。广大保户在享受着竞争带来的实惠同时也变得更加挑剔,哪家保险公司能提供更好的服务往往成为其最终决定的关键因素。在这种环境下,越来越多的保险公司使用管理系统来提供更好的服务。目前保险公司的业务和管理信息平台,大多依从原来的内部开发思路搭建。一旦有新的应用要求,新开发出的系统又要考虑和以前系统的单独集成。而老系统的升级又会引发大量的系统更新和检测工作。因此一个好的系统对于企业是很重要的。

目录

一、    研究背景及意义..................................................................................................... 1

(一)    研究背景......................................................................................................... 1

(二)    行业背景......................................................................................................... 2

(三)    国内外现状..................................................................................................... 3

(四)    研究意义......................................................................................................... 4

二、    系统开发技术......................................................................................................... 5

(一)    系统开发工具.................................................................................................. 5

(二)    系统开发环境.................................................................................................. 9

三、    系统分析.............................................................................................................. 10

(一)    可行性分析.................................................................................................... 10

(二)    需求分析....................................................................................................... 12

四、    系统总体设计....................................................................................................... 14

(一)    系统的设计.................................................................................................... 14

(二)    系统结构设计................................................................................................ 16

(三)    数据库关系图................................................................................................ 16

(四)    系统用例图.................................................................................................... 17

五、    系统详细设计与实现............................................................................................ 19

(一)    系统详细设计................................................................................................ 19

(二)    模块实现....................................................................................................... 22

六、    系统测试.............................................................................................................. 29

致谢    36

七、    外文翻译.............................................................................................................. 37

科技增长的日新月异,由于不断进步的科学技术以及社会生产化的趋向扩大使得人类的科技水平大大增强,人类文明思想的富裕堪称越来越加强,思维的灵活加强速率呈超速加速。市场争抢日益严厉的趋势,使得人们对新闻的观念产生了根本性的变革。使新闻成为了继物资、动力后,文字被摆为与其并发的人类社会发育的第三大物资。

在计算机基本普及的今天,网络科技的发展使得在家办公变得不再陌生,几乎家家户户都有一台以上的网络设备。最新数据截至到2016年9月,中国网民规模达7.4亿,互联网普及率超过50%,由此可见因特网的传播率之高。显然,互联网已经渐渐地成为了我们生涯的一个区域,上网环节的日益美满,以及越来越增长的变换因特网技术,终于使得各类互联网应用技术根据需求被逐渐的开发。

到了如今社会,在面临损失和灾难的时候人们通常希望能够保证自己财产的安全,而且他们也想尽各种办法来避免生活中的一些损失,因此保险业务得以派上用场,从古至今,人们都拥有保险意识,人类社会一直以来就面临着自然灾害和意外的事件的困扰,人们在与大自然抗衡的时候,就萌生了对付意外事故和伤害的保险。我国的历任王朝都十分重视粮食的储存,被称为孔圣人的孔子就提出过“耕三余一”的思想颇具代表性。在国外,古埃及的石匠之间就有一种互助基金组织,该组织向每一位会员收取会费,假使有个别会员死灭,收到的费用就用来领取故去成员的死亡赔偿金,还有古代落马中不对里面的兵士结构,会用收取来的会费来抚慰死去战士的家属,这就是原始的保险雏形。现代保险发源于意大利,14世纪中叶出现了世界最古老的保险,是海上保险的雏形,此后,安全的作法迅速传播尽欧洲各个康吹,到了十七时代,伦敦已经成为了全球保险行业的大旨。在上海创设了华安合群保寿单位,这是国内首家华人资产人保险单位到了21世纪保险已成为人们生活不可或缺的一部分。各种各样的保险业务在现实生活中无处不在,已经成为人们正常生活不可或缺的一项业务。由于社会的发展、人们对保险意识增强因此保险业务的数量快速增加。但是保险公司为了确保公司业务可持续增长,公司因此来自己培养高效率和训练有素的销售队伍,并且在各个地区建立自己的分公司以用来扩展保险业务,以记录所有投保人的详细信息,但是直到目前为止,手工依然作为主要的纪录形式。

随着保险市场的逐渐增加,保险主体的市场已经逐渐完成。在1988年以前,只有中国人民保险公司在我国保险市场上经营。1988年以来,随着安平保险企业、太平洋保险公司的接踵创设,安全局势私家操作的款式被冲破。截至二零一一年终,国内国有中资、外国保险企业共一百五十八家。另外,保险中介介于保险机构之间或保险机构与投保人之间,专门从事保险中介服务,并从中遵章夺取回佣的企业和个人。部门也一直增长,截至二零一零年十二月底,我们国家保险市场上职业保险代购单位、安全经济企业和安全公共估算企业已经达到2461家左右,保险中介布局市场首先产生。

安全主要市场的多方位,有力地促进了保险企业管理意识的变化,使之逐步创立了服务思想、竞赛思想、利益思维和发育思维。安全市场的膨胀逐渐由量的转向质的升高。   

然而随着业务的扩展和参保人数的增多,所要记录的信息必然会越来越多,每天让员工从几千堆的以硬盘形式存储的数据文件中查找客户的信息,不但费时、低效而且枯燥乏味。由此,保险公司为了合理方便的管理处理客户信息、业务运  作信息,让客户、员工、管理员方便的拥有自己的权限并对自己的信息模块进行操作,借助一个现代化计算机技术建立一个高效的管理信息系统是关键。

保险是指将通过约定模式集合起来的本钱,用来补充被保护人的金钱利润的行业。

安全是指投资人根据合约,向客户领取安全金,客户对于合约的可能爆发的事项因其发生而造成的物业承担损失补偿赔偿金职责,或者当客户死灭、伤亡和达到合同约定的春秋、限期时经受支付安全费职责的行为。

安全市级是生意安全即双方签订安全合约的场合。它可以是集中的市集,也可以是疏散的没有性的市场。

按照保险标的的不同,保险可分为财产保险和人身保险两大类。

安全金钱是指以物业及其有关职责为安全性的的安全,包括金钱丢失保险、职责保险、守信保险、确保保险、农民保险等。它是财产及其相关利益为保险标的的一项赔偿性保险。

人身保险是用的生命和身段为安全性的的业务。当人们遭遇祸患或因生病、垂老以致遗失工作力气、残疾、死灭或年老下岗时,根据安全合约,客户对被保险人或得利者支付保险金钱或年终奖,以办理其因病、残、老、死所造成的金币缺失。

按照与投资人有没有直接相关关系,安全可变为原保险和二次保险。发生在保险人和投保人之间的安全举动,被叫为原保险。发生在保险人与保险人之间的保险行为,称之为二次保险。

  1. 国内现状

随着资产配置更加多元化,中国社会老龄化问题日益突出,巨大的保险需求仍是国内寿险保 费收入增长的原动力,因此预计未来一年国内寿险公司整体保费收入仍将增长,根据测算,预计 2017 年保费增速将达到 10%。保费的迅速增长也表明保险业务的快速增加,随之而来的管理问题以及工作效率的问题也被放大。

我国在加入世界贸易组织后组织后,国外的保险也对我国的业务产生了重大的影响,我国的保险业务开始体现出了国际化的特征,对中国保险行业的扩展有着很大的帮助,新的公司发展形势,对传统的保险业发展产生了很大的影响,是的对公司的能力要求产生了很大的增加,所以对保险的管理的依赖性就加强了很多,一个好的管理系统可以帮助公司脱颖而出,成为保险行业中的佼佼者。信息系统的好坏讲直接的影响到公司的发展。信息管理系统的好坏是未来保险公司想要在竞争中大白竞争对手的关键。

目前的通信结构已经无法越好地满足行业程序与处理措施高准侧的要求,不足国度衡量的准则以及领导指示各地根据地区的处境,创建自己的信息工程。有些地方的结构项目没有按照意图及标相关设计的要求,致使软件的多次开发;上网连接阻断;新闻系统搭建如今还没有准确的金钱源头,对于新闻系统的组建金钱明显不足;缺乏结构和精英上的能力确保。外界的安全中介组织在很多区域没有专业实际的外部经营部门。社会安全中介部门的计算器精英不足,这种情况严重约束着全部保险新闻体系的创建和发展。所以保险业务管理系统的设计的实现就显得十分重要了。

  1. 国外现状

由于临时的区域知识和新闻模板的沟通,及这些年的阐明、设计安全业务员软件经历的积聚,外国安全业务使用设施在数字模板的构建上有一定的优点,具体反映在这多个方面,首先,具有完美的数据词典。数据字典是整个应用系统的基础,它包括各种数据项 的分类和定义,是保险行业应用软件的基石。第二,数据取值标准化。全面的数据取值定义,是系统标准化的基础,保证了软件系统的整体性、一致性和可操作性。第三,数据实体及关系。在数据项的基础上,数据实体及关系是表达保险行业 知识的最有效方法,在信息系统模型中占有重要地位。

国外的很多系统已有20—30年的使用历史,积累了各种成功和失败的经验,这些是非常宝贵的资料,从整个应用系统发展看,应当是教训多于经验,这对我国保险公司管理系统进一步的开发具有很强的借鉴作用。特别在组织管理经验方面。所以我们十分有必要学习外国公司的管理方法。常言道—取其精华,去其糟粕。向他们好的一方面学习,同时也要去掉其中一些不好的东西。一个好的东西是值得我们学习的。学习好国外优秀的保险管理机制,可以使我们国内的保险行业发展的更加的优秀。一个好的股息机制可以促进我们变得越好。国外的软件行业相对于国内来说得话,发展的比较早,所以说他们的系统相对的也就比较完善一些,所以我们需要借鉴他们的优秀管理系统,才能使我们的保险行业发展的更加壮大。

众所周知,不论什么公司想要发展都在不同程度上依赖一定的技术和知识才能够更好的发展与生存。尤其是在如今这知识经济和信息经济的时代,现在企业之间的竞争更多的是在于知识获取和信息获取使用能力的竞争。所以对企业对信息资源的有效管理和及时获取是当今时代更似想要更好发展的前提。只有在信息处理方面采取了有效的措施,才能够使公司企业在激烈的竞争中长期处于不败之地。不论任何一个行业,对需要一个优秀的管理机制,这样的话才可以公司发展得更加的完善。古语云:工预善其事,必先利其器。这就是一个充分的代表,一个好的公司想要在负载的环境中脱颖而出,就必须拥有一个优秀的管理系统,而现在互联网技术已经得到了非常迅速的发展,于是就特别的有必要建立一个可以是现在web浏览器上的一个系统来进行公司保险业务的管理,由此我们的系统就应孕而生了。

通过本系统可以使保险业务的管理更加方便,用户和管理人员通过管理系统可以更加方便的进行保险的买入和对业务的管理,比传统的手工管理方便了好多。为管理人员提供方便条件。且系统运行稳定,数据安全可靠。在现代化管理中,计算机系统已经成为企业管理不可缺少的帮手。它的广泛应用已经成为现代化管理的重要标志。面对越来越多的信息资源和复杂的企业环境,相信企业有必要创建高效率的、实用性强的信息管理系统。这是现代化管理的必然趋势。因此很有必要开发一个管理系统来进行企业的业务管理。

保险管理系统的开发目的是使保险业务的管理模式从手工记录转变成信息管理,为管理人员提供方便条件。对保险业务的实际情况进行调研之后,进行详细的需求分析,对现有的管理模式进行改进,开发出一套新型的管理系统,从中领悟系统开发的思想,掌握系统开发的流程和方法。开发这个管理信息系统优势主要体现在,极大提高了保险公司工作人员的工作效率,大大减少了以往出入存流程繁琐,杂乱,周期长的弊端。借助计算机系统对数据处理的严密性等特有机制,在改善保险业务的数据管理方式,降低业务人员的劳动强度,提高劳动生产率等等方面,保险业务管理系统都起到了良好的效果。同时还能使得业务流程更加规范化,信息和数据的处理更加高效准确,能适应信息化的要求,能帮助工作人员利用计算机,快速方便的对信息和数据流进行管理、输入、输出、查找的所需操作,使杂乱的业务数据能够具体化,直观化、合理化等。

保险业务系统的实施的现实意义:

系统处理业务更高效 , 节约人力资源。

基本信息的全面设置、数据录入方便、快捷。

最大限度的实现了易维护性和易操作性。

系统运行稳定,数据安全可靠。

本系统主要是为了开发一个操作方便、使用快捷、处理高效的保险管理系统。因此,本系统是从人工操作容易产生错误、过程繁琐、工作效率不高,保密性差不足之处,对系统的可操作性、稳定性和实用性有一定的限制,并能安全地保存数据于数据库中来提高其系统的保密性。使其真正实现保险管理系统的安全化、规范化、科学化、信息化。最终使公司能够更好地管理保险业务。本系统是从人工操作容易产生错误、过程繁琐、工作效率不高,保密性差不足之处,对系统的可操作性、稳定性和实用性有一定的限制,并能安全地保存数据于数据库中来提高其系统的保密性。使其真正实现保险管理系统的安全化、规范化、科学化、信息化。

  1.  Jsp技术

JSP技术是开发Java Web应用程序的主要技术,全名为java server page,其根本是一个简化的Servlet设计。它是由Sun Microsystems在1996年开发的,和许多公司一起建立的一种动态网页技术标准。JSP是servlet技术的扩展,现在的版本是1.2(2.0版将很快定下来)。有人认为JSP是servlets的替代,但实际并不是这样的。Servlets和JSP是一起用于复杂的Web应用程序的。

JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp),而构成的JSP网页的程序片段可以控制数据库、对网页重新定向和发送E-mail等,从而满足建立动态网站所需要的功能。 简单来说JSP可用等式表示为:HTML+Java=JSP。JSP技术的运行原理为所有JSP页面,在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。主要采用JSP技术的原因在于它对客户浏览器的要求不高因为所有操作都是在服务器端执行,客户只接收传送结果,就算客户端的浏览器不支持Java,同样可以访问JSP网页。Web应用如果用JSP开发就能跨平台使用,在Linux和其他操作系统上都能运行。

JSP技术通过Java语言来编写类的标签来进行对网页的处理逻辑的封装使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。JSP将网页逻辑与设计的显示分离,支持可重用的基于组件的设计,使基于Web的程序开发变得简单容易。 JSP(Java Server Pages)技术支持的网页是动态的,将逻辑和servlet进行了分离。

而本系统采用JSP技术的原因也是基于相比较于其他技术JSP有很多优势: 

JSP代码跨平台, 即一次编写,处处运行 

众所周知,微软公司的产品都具有垄断性,产品的可移植性也很差,ASP也不例外,而相较而言,JSP就避免了这些问题,可以在很多平台上使用,更加平民化人性化。 

JSP组件跨平台 

JSP组件包括企业JavaBeans,JavaBeans或定制的JSP标签,跟代码一样都是可以跨平台可重用的。企业JavaBeans组件可以访问传统的数据库并能以分布式系统模式工作于Solaris,Linux,UNIX和Windows平台。

支持多种网页格式 

目前, JSP技术支持的网页格式没有特定的标准。一般来说,JSP技术既可以支持HTML/DHTML的传统浏览器文件格式,又适用于于无线通信设备如移动电话、PDA等设备进行网页预览的WML文件格式,还可以支持其他一些B2B电子商务网站应用的XML格式。

JSP标签可扩充性 

JSP标签技术与XML兼容,所以使得开发网页的制作者充分的利用此技术来降低了对脚本语言的依赖,使网页建设变得越发简单容易。

健壮性与安全性 

Java语言的存储管理具有健壮性,并且安全性更高,而JSP制作网页是基于Java语言的,因此也囊括了Java语言的优势。 

  1. SSH技术概述

 “SSH 组合框架”是Struts + Spring + Hibernate的缩写,“SSH组合框架”体现的是“强强联手、各司其职、协调互补”的团队协作精神。SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)。而负责控制Service生命周期的Struts框架会加大层与层之间的依赖性,也就是通常所说的耦合。大型Java Web 应用程序的开发具有代码繁琐过多,难于维护和扩展的缺点,而“SSH 组合框架”能够很好的实现业务分层,为该问题提供了很好的解决平台。[1]

1、Struts

最早的Java Web 程序全部使用JSP 实现, JSP 页面包含HTML 标签和Java 业务逻辑代码,使得整个JSP 页面显得过于繁琐复杂,并且难以维护,在系统出现问题时使得开发人员面对大批的代码束手无策。于是SUN 公司对Java Web 进行了规范,先推出模式1,在模式1中引入了JavaBean代码,以达到封装业务逻辑代码的目的,最终成功的将逻辑代码与JSP页面进行了分离,而模式1引入的JavaBean代码仍然存在对流程控制上的缺陷,由此在模式2中引入Servlet 技术,才将整个框架彻底分离为模型、视窗和控制器三部分,使得Java Web 应用开发更加规范化。之后推出模式2,Struts 2集结了组件的多重优点,同时也使得基于MVC 的Java Web应用程序的开发变的更加简单。Struts 2通过核心控制器Struts Prepare And Execute Filter(struts2.0.x到2.1.2版本的核心过滤器为FilterDispatcher,继2.1.3版本开始就改为truts Prepare And Execute Filter)和拦截器遵循一定模式更好的实现后台控制维护、前台表现和业务逻辑处理等多项功能。

Struts是用来做应用层的,它负责调用业务逻辑serivce层,从而控制了Service的生命周期。

2、Spring

服务器厂商对于很多技术支持没有进行统一,因此J2EE的应用缺少平台无关性,并且应用开发的效率低下,而Struts对逻辑service的调用会导致层与层之间的依赖性增强,发生耦合问题。这时Spring框架作为开源的中间件就起到了承上启下的作用,它控制Action对象(Strus中的)和Service类,使得两者关系变得松散,降低了层与层之间的依赖性来达到松散耦合的目的,这就是Spring的Ioc机制(控制反转和依赖注入)所起的作用。

Spring事实上充当了管理容器的角色,用来管理struts和hibernate之间的工作,作为管理者它在整个程序中充当了桥梁的角色,整个程序运行都需要通过这个桥梁,Spring致力于解决应用各层的方案,而不仅仅局限于一层。

可以说Spring的“一站式”功能贯穿表现层、业务层及持久层。但是Spring并没有取代整个框架而是与之完美的契合,就像一个服务者而不是霸占整个领域的统领者。Spring的核心技术是控制反转IOC 与AOP 代理机制,现在Spring使用基本的JavaBean就可以解决以前只能由EJB完成的事情,Spring 的用途并不局限于服务器端,从多方面角度来说,任何Java 应用都可以从Spring 中受益。                                                                        

3、Hibernate

现在对很多的多层体系结构的开发都有一个缺点就是单凭使用JDBC 对持久层进行分离非常困难,负责业务逻辑代码编写的程序员在与数据库交互时需要书写大量的SQL语句,并且必须密切关注数据库各表的结构关系,以确保其SQL 语句工作的正常。而引入Hibernate 这样的持久层中间件的话,就对JDBC做了一个良好的封装,业务逻辑层的开发人员面对的就是对象而不必关心数据表,这样有利于分工合作,并且降低了产品的不可移植性。任何使用JDBC 的场合都可引入Hibernate,既可以在Java Application中使用,也可以在Servlet/JSP 的Web 应用中使用。

4、整合

Struts 2 标签库处理视图层,Struts 2 的核心控制器与业务控制充当控制层,Hibernate 与各业务逻辑组件处理业务层事务,最后由Spring 统管Bean 资源,对整个应用的JavaBean实例资源进行统一管理与调度。三个开源框架相辅相成,对所有资源进行一个良好的运转,就像团队分工协作,任务明确,因此“SSH框架”的引入推动了J2EE的开发。

  1. B/S模式简介

HTTP

B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是通过浏览器来实现的。B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据析。B/S模式如图2-1所示

Browser浏览器

WEB服务器

  2-2  B/S模式图

  1. 1. MySQL数据库

任何程序的运行都需要数据库,这是网络开发过程中不可或缺的一部分,就像任何生物不管类别大小个头大小,它们生命的延续都需要心脏的跳动,同样的道理,无论程序大小,都需要数据库的支持。Web数据库一般为三层或多层体系结构,前端采用浏览器技术,通过中间件和服务器对数据库进行访问。

MySQL软件目前属于Oracle公司,由瑞典MySQL AB公司开发。以往的数据库都将数据集中存储在一个空间,就像一个大型仓库,因此容易造成数据过多冗余繁杂并且难以管理,而MySQL是一个关系型数据库管理系统,将数据分块保存于不同的表中,提高了数据的灵活性并且也解决了因为数据冗长而造成的运行速度过慢的问题。

MySQL软件由于其体积小、速度快、总体拥有成本低的,成为中小型网站开发的常用网络数据库,尤其是开放源码这一特点,用于访问数据库的SQL语言很普遍,使得很多企业更偏向于选择MySQL数据库。MySQL软件分为社区版和商业版,由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

MySQL规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)的缺陷无法与其他大型数据库例如Oracle、DB2、SQL Server等并驾齐驱,但也并不磨灭许多中小型网站对它的使用热情。“麻雀虽小,五脏俱全”,MySQL提供的功能已经足够满足一般的个人使用者和中小型企业,并且源码开放使得总拥有成本大大降低,使得它更加受到这些使用者的青睐。

  1. 2. MyEclipse IDE工具

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。

MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。

可行性分析是目前项目开发中必不可少的一项工作,具有决定性的意义。在一个项目开启之前,必须对项目进行全面科学的分析,从各个角度进行科学的研究,对自己的项目进行全面的分析。本项目主要是关于技术可行性、经济可行性、管理可行性和社会可行性进行研究。

可行性分析是在制定某一建设或科研项目之前,对该项目实施的可能性、有效性、技术方案及技术政策进行具体、深入、细致的技术论证和经济评价,以求确定一个在技术上合理、经济上合算的最优方案和最佳时机而写的书面报告。
  可行性研究报告主要内容是要求以全面、系统的分析为主要方法,经济效益为核心,围绕影响项目的各种因素,运用大量的数据资料论证拟建项目是否可行。对整个可行性研究提出综合分析评价,指出优缺点和建议。

  1. 技术可行性

本管理软件的开发工具为Myeclipse,前台页面使用JSP技术,后台数据库为MySQL

软件系统的实现使用了SSH框架来实现,使用该框架有很多的优点,SSH是典型的J2EE三层架构体现MVC思想,即将一个应用分成三个基本部分M(模型)、V(视图)和C(控制器)。那边与迅捷的开发出新的需求,降低开发成本。它还具有良好的可扩展性,而且SSH还具有良好的可维护性,使用该框架实现了视图、控制器与模型的彻底分离,并且可以使业务逻辑层与持久层的分离。

可以极大的提高可复用性,这样的话,不管前端怎样的变化,模型层只需要小小的变化即可。而且前端也不会随着数据库变化。还因为不同的层之间耦合度小,可以方便工作,大大提高了效率。控制层依赖于业务逻辑层,只与接口耦合,但绝不与任何具体的业务逻辑组件耦合;同样,业务逻辑层依赖于DAO层,也不会与任何 具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也不会改变。

通过使用SSH框架,配合数据库的连接,使此系统里的每个模块都能很好的实现。因此在技术上是可行的。

  1. 经济可行性

从经济可行性的角度出发,软件系统在开发过程中主要应该考虑的是怎样最大限度的节约成本,缩短软件的开发周期,用最小的投入取得最大的回报。该软件的实现是基于B/S架构的,B/S 架构即浏览器和服务器结构,在此结构下,用户的工作界面是通过浏览器实现此管理软件的一切操作基于WEB浏览器,很少的事务逻辑在前端实现,基本上主要的事物都是在服务器端实现,这样就大大简化了客户端电脑载荷,降低了用户的总体成本,减轻了系统维护与升级的成本和工作量,并且开发使用的软件直接安装在本机上,所以成本低廉且效率高,没有太多的经济负担。因此在经济上也是可行的。

  1. 管理可行性

本系统有管理员、客户两种角色。客户可以进行登陆用户账号,来进行下订单,申请赔付或者修改自己的信息。然而管理员可以通过登录管理员用户然后进行直接管理客户信息,并可以查看所有订单信息和赔偿信息,发挥了监督审查的作用,起到了监督管理的左右。因此在管理上是可行的。管理可行性是非常有用的,拥有一个好的管理可行性,系统的运行时是非常好的,十分有助于系统的完成。

  1. 社会可行性

当前的中国保险市场,是一个急速发展与变革的市场。保险行业 IT服务必须满足这种现状的要求。因此,他们对于IT服务的响应速度和服务质量有了更高的要求。

现阶段,我国经济环境诸多因素给保险业提出了新的要求。一方面,加入WTO后,外资保险公司的加盟对于我国保险业产生重大的影响 ,中国保险市场将呈现出国际化特征,有利于业务拓展;但是另一方面,新的市场发展形势 使得国内保险公司面临严峻考验,对于公司的经营运作能力提出了更高的要求。

现在,保险行业的特征决定了企业管理信息对保险公司尤为重要,公司的经营策略、业务运作、财务管理、分析决策无一不 建立在高质量信息管理的基础上。各家保险公司对于新险种开发、业务管理、自身风险管控以及服务水准提升等方面的要求 越来越强烈,这就要求其核心业务系统不能仅是对业务的简单支持,更重要的是到达支持、分析、管理、决策的层面。换句话说,保险信息系统的好坏将从根本上影响到保险公司的核心竞争力。

  1. 操作可行性

伴随着社会的不断发展,计算机的不断普及,越来越多的人已经可以熟练地掌握计算机的基本操作,本系统采用基于Windows的图形用户界面,通过web浏览器即可进行操作,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。整个保单管理系统采用友好的交互界面,简洁明了,不需要对数据库进行深入的了解便能轻松使用,无需对使用系统的人员进行培训。这样既减少投入成本又简化了操作环节。

软件需求分析是软件项目设计中非常重要的一部分。在软件工程的历史长河中,人们在很长一段时间里把需求分析当做是整个软件工程中的一个非常简单的步骤,但在过去十多年中越来越多的人逐渐认识到它是整个过程中最关键的一个过程。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。许多大型应用系统的失败,最后均归结到需求分析的失败:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。

需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计。需求分析在一个项目中是非常重要的,一个好的项目是离不开需求分析的,需求分析的好坏是一个项目成功须否的重要保证。所以一个项目的完成务必要做好需求分析环节,只有了解了需求之后,才能更好的进行业务逻辑的设定。这是一个项目完成的重中之重。我们要好好地完成需求分析。需求的好坏是一个设计完成的重要保障。需求分析做不好,后续工作就会出现很多的问题,就需要返工,导致效率的下降,所以我们有必要完善需求。

保险业务信息管理系统主要就是完成保险的下单,交费,申请赔偿,和对个人信息的管理等流程。其中可以分为客户部分和管理员部分。

  1. 客户部分

客户主要就是进行注册自己的用户之后,通过自己的用户账号的登录系统,然后进行查看各种保险信息,选择自己所要购买的保险类别,进行下订单操作,在发生了意外之后可以进行申请赔偿的操作,还可以进入自己的个人用户界面进行个人信息的修改。

其中客户部分的需求总共可以分为以下四部分:

查看/购买保险产品信息、查看/确认订单信息、查看/申请赔偿信息、管理个人信息。

(1)查看/购买保险产品信息

客户在可以看到当前出售的保险信息:保险的名称、保险费用、发布时间、保险内容,选择合适的保险后,可以添加到订单中。

(2)查看/确认订单信息

客户选择需要购买的保险后可以在订单列表中查看订单名称、订单金额订单时间、订单人、订单状态,决定后确认订单。

(3)查看/申请赔偿信息

客户可以在个人赔偿信息管理界面管理个人申请赔偿列表。客户可以在购买保险后,在保险内容生效时申请赔偿。

(4)管理个人信息

     通过个人信息管理面板客户管理个人注册信息:账号名、密码、姓名、年龄、电话、联系地址,客户可以在个人信息中修改自己的信息。

  1. 管理员部分

管理员在通过管理员用户登录之后,可以自己管理公司的保险列表下面的各类保险信息,其中包括增加和删除操作,还可以查看用户的订单选购情况,是否完成付款,另外还能够进行赔偿信息的管理,可以对用户申请的赔付选择同意或者不同意,最后还可以进行用户的管理操作,增加或者删除用户。管理员用户能够随意的管理用户,对用户的管理有着很大的帮助。

管理员的需求主要可以分为以下四个部分:保险信息管理、订单信息管理、赔偿信息管理、用户信息管理。

(1)保险信息管理

管理员在登录自己的管理员用户后,通过后台对保险信息管理进行新增或删除,从而完成自己对保险信息的管理。

(2)订单信息管理

管理员登录之后,进入订单管理界面之后,可以查看当前用户提交的所有的订单信息。

(3)赔偿信息管理

管理员可以查看用户提交的赔偿申请,根据实际的情况同意或者不同意用户的赔偿申请。

(4)用户信息管理

管理员可以在用户信息管理中维护所有客户的信息。包括增加删除用户,进行用户信息的管理。

SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。Ssh架构图,如图4-2所示

4-1  ssh架构图

系统总共分为三层:表现层,业务层,持久层。

 在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)ActionServlet接收到的Request委派给相应的Action处理

在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

Struts负责Web层:

ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页,在Struts-config.xml中定义了<action-mapping>,ActionServlet会加载进来。

Spring负责业务层管理,即Service:

Service为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。

Hibernate负责持久层,完成数据库的CRUD操作:

Hibernate有一组hbm.xml文件和PO,是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。

在Struts+Spring+Hibernate系统中,对象之间的调用流程如图4-2所示:           

4-2  流程图

  Struts——>Spring——>Hibernate
  JSP——>Action——>Service——>DAO——>Hibernate

关于对保险业务信息管理的调研,选择了利用SSH框架编写,mysql作为数据库来进行保险业务管理系统的设计本系统主要分为保险业务管理和后台管理两部分,其中保险业务管理可以进行查看/购买保险产品信息、查看/确认订单信息、查看/申请赔偿信息、管理个人信息。后台管理部分主要是管理员进行登录管理员用户,从而进行管理,而管理员的权限可分为保险信息管理、订单信息管理、赔偿信息管理、用户信息管理。具体的功能结构图如图4-3所示。

4-3  功能结构图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。对于任何数据库,都可以创建任意多个数据库关系图;每个数据库表都可以出现在任意数量的关系图中。这样,便可以创建不同的关系图使数据库的不同部分可视化,或强调设计的不同方面。例如,可以创建一个大型关系图来显示所有表和列,并且可以创建一个较小的关系图来显示所有表但不显示列。系统ER图如图4—3所示。

4-3系统E-R图

通过数据库关系图我们可以看出表与表之间的联系,主要可以分为user_list,order_list和product_list,每个表所含项目如下图所示

用例图是用来表现设计出来的某某系统可以用来干什么的图,用路途主要关注的是系统的外在表现,人与人之间的交互,以及人与系统的交互,系统和其它系统的交互。

用例图里面有三个基本元素:用例、关系、角色

角色(Actor):是用来描述系统里面有那些角色,不同的角色占用的系统功能是不一样的,用例图里的一个个小人就是表示的角色。

用例:用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。用例在用例图中用椭圆的圆圈来表示,在圆圈里用文字来描述该序列,一般用动词宾语来描述。

关系:就是用来用来描述角色与线条之间关系的,在用例图中用线条来表示。

线条是指角色与用例之间的线条,这些线条是用来联系角色(小人)和用例(圈圈)的,表示某某角色能“做”什么用例。

管理员用例图

管理员在整个管理系统中的权限主要包括保险信息管理,订单信息管理,赔偿信息管理,用户管理。其中保险信息管理主要包括查看新增保险信息和删除保险信息,订单信息管理包含查看订单信息,赔偿信息管理包含审批赔偿申请,用户管理主要包含查看新增用户和删除用户,管理员用例图如图4-4

4-4管理员用例图

客户的用例图:

客户是保险公司中最主要的资源。客户在登录自己的主业之后可以进行自己相关的权限操作,权限主要分为保险信息,订单信息,赔偿信息和个人信息管理四大模块,其中保险信息包括购买保险产品,订单信息包括确认取消订单信息,赔偿信息模块主要包括赔偿申请,个人信息管理模块用户可以修改和保存自己的个人信息。客户参与整个系统的用例图如图所示:

4-5客户用例图

保险业务管理系统设计共有3个数据字典,分别为:用户信息表(user_list),反馈评价信息表(product_list),软件信息表(order_list)。三个表底下分别有着不同的结构。

在普通用户的角度看起来,数据的逻辑关系模型就是一张简单的二维表,每一个表里面都保存着保险企业中涉及总体的业务的逻辑。该管理系统涉及到的主要实体及其属性如下:

  1. 数据库结构设计

用户信息表:user_list(主键、帐号、密码、姓名、性别、年龄、电话、地址、类型)

反馈评价信息表:product_list(主键、产品名称、产品内容、产品费用、发布时间)

软件信息表:order_list(主键、订单名称、订单金额、下单时间、下单人、下单人ID、订单状态、产品ID)

  1. 数据字典

数据字典是对于数据模型中的数据对象或者项目的描述的集合,这样做有利于程序员和其他需要参考的人。分析一个用户交换的对象系统的第一步就是去辨别每一个对象,以及它与其他对象之间的关系。这个过程称为数据建模,结果产生一个对象关系图。当每个数据对象和项目都给出了一个描述性的名字之后,它的关系再进行描述(或者是成为潜在描述关系的结构中的一部分),然后再描述数据的类型(例如文本还是图像,或者是二进制数值),列出所有可能预先定义的数值,以及提供简单的文字性描述。

保险业务管理系统设计共有3个数据字典,分别为:

1  user_list

属性名

存储代码

数据类型

长度

备注

主键

user_id

int

11

主键,唯一性

用户名

username

varchar

45

密码

password

varchar

45

姓名

name

varchar

45

性别

sex

varchar

45

年龄

age

varchar

45

电话

phone

varchar

45

地址

address

varchar

45

类型

type

varchar

45

用户信息表主要包括用户的个人信息,其中包含用户名(username),密码(password),姓名(name),性别(sex),年龄(age),电话(phone),地址(address)和类型(type)几大部分。

表 2  product_list表

属性名

存储代码

数据类型

长度

备注

主键

product_id

int

11

主键,唯一性

产品名称

product_name

varchar

100

产品内容

product_desc

varchar

2000

产品费用

product_cost

varchar

45

发布时间

product_time

varchar

45

反馈评价信息表包含了险种的详细描述信息,主要是保险单号。其中产品名称(product_name),产品内容(product_desc),产品费用(product_cost),发布时间(product_time)。主要是用来反馈产品的信息。这个表里包含的是所有的保险业务的信息,是用来保存保险产品的。里面所含的各项信息是保险产品的各个内容。

表 3  order_list表

属性名

存储代码

数据类型

长度

备注

主键

order_id

int

11

主键,唯一性

订单名称

order_name

varchar

100

订单金额

order_cost

varchar

45

下单时间

order_time

varchar

45

下单人

order_uname

varchar

45

下单人ID

order_uid

varchar

45

订单状态

order_state

varchar

45

产品ID

product_id

varchar

45

软件信息表主要是包括用户的订单信息,其中包含了订单名称(order_name),订单金额(order_cost),下单时间(order_time),下单人(order_uname),下单人ID(order_uid),订单状态(order_state),产品ID(product_id)。这些信息都是和用户有着紧要关系的。用户下了订单之后的状态都是显示在这个表里。这个表示整个系统的核心,所有的业务实现基本都在这个表里面,所以这个表很重要。

  1. 登录模块

所有用户输入帐号、密码后,即可凭正确的信息登录系统。如图5-1所示

5-1  登陆界面

如通过管理员账号进入管理员界面,如图5-2所示

5-2 管理员界面

由用户账号登录进入用户界面,如图5-3所示

                                   5-3用户界面

    不同身份,功能的权限也不同。

登录所需代码:

public String login(){

              UserList ul = userListService.login(userlist.getUsername(), userlist.getPassword(), "");

              if (ul.getUser_id() != 0) {

                     session.put("login", ul);

                     return SUCCESS;

              }else{

                     response.setContentType("text/html;charset=UTF-8");

            response.setCharacterEncoding("UTF-8");//防止弹出的信息出现乱码

           try {

                     PrintWriter out = response.getWriter();

                     out.print("<script>alert('用户名或密码错误!')</script>");

              out.print("<script>window.location.href='http://localhost:8080/InsuranceBusiness/Login.jsp'</script>");

                     out.flush();

            out.close();

           } catch (IOException e) {

                e.printStackTrace();

           }

           return null;

              }

       }

  1. 保险信息模块

管理员登录进去所显示的界面,如图5-4所示

5-4管理员界面

管理员可以在保险信息管理中查询、新增或者删除保险产品信息。如图5-5所示

5-5 增加保险界面

客户可以在保险列表中查看所有保险产品。如图5-6所示

                               5-6  用户查看保险信息

客户选择需要购买的保险后,加入订单信息中,用户可以在订单中确认或取消订单。如图5-7所示

5-7  用户个人订单列表

public List<ProductList> selProductList() {

           Session session = sessionFactory.openSession();

           String sql="select * from product_list";

           Transaction tran = session.beginTransaction();

           SQLQuery sq = session.createSQLQuery(sql);

           List<Object[]> list = sq.list();

           List<ProductList> plist = new ArrayList<ProductList>();

           for(Object[] obj : list){

              ProductList pl = new ProductList();

              pl.setProduct_id((Integer)obj[0]);

              pl.setProduct_name((String)obj[1]);

              pl.setProduct_desc((String)obj[2]);

              pl.setProduct_cost((String)obj[3]);

              pl.setProduct_time((String)obj[4]);

              plist.add(pl);

           }

           tran.commit();

           session.close();

           return plist;

    }

}

  1. 赔偿模块

客户确认购买保险后,可以申请赔偿。如图5-8所示

                        5-8 个人用户赔偿列表

管理员可以根据实际情况同意或者否决用户的赔偿申请,如图5-9所示。

    5-9管理员赔偿管理列表

public List<OrderList> selOrderList(String uid, String state) {

           Session session = sessionFactory.openSession();

           String sql="select * from order_list where order_uid = '"+uid+"' and order_state in ("+state+")";

           Transaction tran = session.beginTransaction();

           SQLQuery sq = session.createSQLQuery(sql);

           List<Object[]> list = sq.list();

           List<OrderList> olist = new ArrayList<OrderList>();

           for(Object[] obj : list){

              OrderList ol = new OrderList();

              ol.setOrder_id((Integer)obj[0]);

              ol.setOrder_name((String)obj[1]);

              ol.setOrder_cost((String)obj[2]);

              ol.setOrder_time((String)obj[3]);

              ol.setOrder_uname((String)obj[4]);

              ol.setOrder_uid((String)obj[5]);

              ol.setOrder_state((String)obj[6]);

              ol.setProduct_id((String)obj[7]);

              olist.add(ol);

           }

           tran.commit();

           session.close();

           return olist;

    }

public String selCompensateListByMe(){

           UserList ul = (UserList)session.get("login");

           List<OrderList> clist = orderListService.selOrderList(String.valueOf(ul.getUser_id()), "'1','2','n','9'");

           session.put("clist", clist);

           return SUCCESS;

    }

  1. 用户信息模块

管理员登录管理员账号后,用户管理界面,如图5-10所示。

                            5-10管理员用户管理界面

管理员可以修改用户的个人信息,如图5-11所示

5-11管理员修改用户信息界面

客户可以在个人信息管理中修改自己的信息,如图5-12所示

    5-12客户修改个人信息界面

增加更新用户

public UserList selUser(String uid) {

           Session session = sessionFactory.openSession();

           String sql="select * from user_list where user_id = '"+uid+"'";

           Transaction tran = session.beginTransaction();

           SQLQuery sq = session.createSQLQuery(sql);

           List<Object[]> list = sq.list();

           UserList ul = new UserList();

           for(Object[] obj : list){

              ul.setUser_id((Integer)obj[0]);

              ul.setUsername((String)obj[1]);

              ul.setPassword((String)obj[2]);

              ul.setName((String)obj[3]);

              ul.setSex((String)obj[4]);

              ul.setAge((String)obj[5]);

              ul.setPhone((String)obj[6]);

              ul.setAddress((String)obj[7]);

              ul.setType((String)obj[8]);

           }

           tran.commit();

           session.close();

           return ul;

    }

    public void updateUser(UserList ul) {

           Session session = sessionFactory.openSession();

           Transaction tran = session.beginTransaction();

           String sql = "update user_list set password = '"+ul.getPassword()+"', name = '"+ul.getName()+"', sex = '"+ul.getSex()+"', age = '"+ul.getAge()+"', phone = '"+ul.getPhone()+"', address = '"+ul.getAddress()+"', type = '"+ul.getType()+"' where user_id = '"+ul.getUser_id()+"'";

           session.createSQLQuery(sql).executeUpdate();

           tran.commit();

           session.close();

经过分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能遗留下许多错误和缺陷,如果不及时找出并改正,这个软件产品就可能会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。

系统测试,就是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正,是基于系统整体需求说明书的黑盒类测试,应复盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。

软件测试方法从测试人员角度看,可分为人工测试和机器测试。人工测试又称为代码复审。主要有三种方法:个人复查、走查、会审。机器测试分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。

下面对本系统进行测试,以检查系统能否正确完成各种操作,是否能够实现预期具有的功能。

登录测试,如图6-1所示

6-1登录测试

管理员测试:

赔偿信息管理测试,如图6-2所示

6-2赔偿信息管理测试

赔付成功如图6-3所示

6-3赔付测试

用户管理测试:

测试要点:新增用户 。

测试路径:填写的用户信息是否完整。

测试结果:填写完整,系统增加新的用户信息;填写不完整,提示输入完整的用户信息。如图6-4所示

6-4增加用户测试

修改用户信息,如图6-5所示。

6-5修改用户信息测试

删除用户,如图6-6所示

6-6删除用户测试

保险信息管理测试,如图6-7所示

                       6-7管理员保险信息管理测试

新增保险,如图6-8所示。

                                6-8新增保险测试

删除保险产品如图6-9所示。

                              6-9删除保险测试

订单信息管理测试,如图6-10所示。

                             6-10订单信息管理测试

客户:

 保险信息管理测试,如图6-11所示。

                             6-11用户保险管理测试

购买如图6-12测试

                             6-12保险购买测试

赔偿信息测试,如图6-13所示。

                             6-13赔偿信息测试

个人信息测试,如图6-14所示。

6-14个人信

参考文献

[1]    温涛.东软Java软件工程师实训项目教程;大连;东软电子出版社,2011.8

[2]    2016-2017年中国保险行业发展现状、发展趋势、发展前景分析

http://www.chyxx.com/industry/201611/471965.html

[3]    伍飞.冉文江.基于J2EE架构的SSH框架研究及应用[J];信息系统工程;2010.6

[4]    单晓光.Java Web开发技术的教学方法研究[J];黑龙江教育学院学报;2011.7

[5]    刘志成.Java程序设计实例教程;北京;人民邮电出版社;2010.8

[6]    李刚.Struts2权威指南——基于WebWork核心的MVC开发[M].北京:电子工业出版社,2007.

[7]    鲁霞.基于Struts_Spring_Hibernate架构的综合积分系统的研究与实现[D].成都:西南交通大学硕士学位论文,2008.

[8]    赵少卡.基于Struts+Spring+Hibernate架构的信息交流平台的设计与实现[J].计算机与现代化,2009(2):62-66.

[9]    黄志明.基于Spring+Struts+Hibernate的报备系统的设计与实现[J].电脑知识与技术,2008,4(Z2):40-41.

[10]   MySQL入门与精通教程

http://www.docin.com/p-167853642.html

[11]   网络数据库Mysql介绍

http://www.docin.com/p-60867610.html

[12]   曹大有.基于Struts和Spring框架技术的Web应用的开发过程[J].计算机应用与软件,2008,25(8):203-204.

[13]   夏昕.曹晓钢.深入浅出Hibernate[M]. 北京:电子工业出版社,2005.

[14]   夏昕.Spring开发指南[M].北京:电子工业出版社,2004.

[15]   O‘REILLY. Learning MySQL.2010

[16]   DEITEL Java How to Program, 2012

[17]   O‘REILLY JavaServer Pages (JSP) - From The O´Reilly Anthology, 2011

[18]   陈潇.在SQL Server使用触发器实现数据完整性[J].电脑知识与技术,2013(35)

[19]   姜锋.Web网站通信安全的优化方案[J].网络安全技术与应用,2015,(10):53,55.DOI:10.3969/j.issn.1009-6833.2015.10.035.

[20]   杨荻.保险行业BS架构信息管理系统设计与应用[J].计算机仿真,2010,27(6):342-345.DOI:10.3969/j.issn.1006-9348.2010.06.082.

[21]   马秀麟,衷克定,刘立超等.从大数据挖掘的视角分析学生评教的有效性[J].中国电化教育,2014,(10):78-84.DOI:10.3969/j.issn.1006-9860.2014.10.013.

[22]   杨伟斌.tomcat安装配置在高校web课堂中的应用研究[J].速读(下旬),2015,(9):309-309.

Struts简介

1  探讨Struts

本章深入探讨Struts 框架,以及它能给你的应用开发所带来的诸多好处。我们相信,一旦你也能“随便谈谈”web 架构和设计,你就可以很好的在你的应用中使用Struts。为了能对Struts 架构有个充分的全面印象,我们将总体介绍Struts 的控制流和它处理请求响应事件循环的方式。只有彻底理解这个处理原理才能最好的在应用中使用这个框架。选择一个web 应用框架不应该是个漫不经心的决定。很多人都可以使用这本书,特别是用这章的内容,来评价Struts 是否适合它们的项目。因此,我们在这章的最后部分将有一个关于Struts 优缺点的客观评价,并阐明其总体性能。Struts 设计来针对专业开发人员。为做出正确的决策,专业人员应该知晓工具的能力和限制。

2  为什么我们需要Struts

今天的web 应用基本上都是代表共同理念的关键组件。通常,开发团队需要在有限的时间里创建应用,然后它们不得不正确的构建,并能持续构建它。Java web 开发人员已经有一些工具可用来建立表现层,比如JavaServer Pages 和Velocity模板。也有一些机制来处理数据库—如JDBC 和Enterprise JavaBean (EJB)。但我们用什么来将它们集合在一起?我们已经有了型材和砖墙…还缺什么呢?

2.1  进入Struts

Struts 的核心是一个MVC 风格的控制器。Struts 控制器搭起了Model 和View 之间的桥梁。框架也包括开发人员想用来开发可伸缩的、先进的应用系统的其他组件。Struts 是一个“隐藏支柱”的集合,帮助开发人员将分散的材料,如数据库和页面,结合成一个整体的应用系统。

2.2  Struts控制器组件

Struts 控制器组件是一个可编程的组件集,允许开发人员定义它们的应用如何准确地和用户进行交互。这些组件在逻辑名称后面隐藏了令人讨厌的、繁琐的实现细节。开发人员可以一次性编写这些实现细节,然后转头考虑它们的应用应该做什么,而不是考虑应用应该如何做。用户通过超链接和HTML form 与Web 应用程序进行交互。超链接引导页面显示数据和其他内容,如文本和图像。表单通常通过一些定制动作向应用提交数据。Struts 提供了开发人员可用来定义超链接,表单,和定制动作这些交互的相关组件。我们已经使用这些组件在第1 章创建了一个入门程序。第3 章,我们还要用它们来创建另一个程序。然后,在第4 章,我们将讨论这些组件的详细配置。随后的章节,将详细讨论如何将每个组件以及如何用在你的程序之中。在第4 章,我们将展示如何在运行的程序上下文中使用这些组件。但是,因为这一章是架构性的总体介绍,所以我们继续介绍Struts的主要部件。

2.3  超链接

对应用开发人员来说,超链接是指向应用中某些资源的路径。这些资源可能是web 页面,或者是定制动作。超链接中也可以包含特殊的参数。在Struts 中,开发人员可以将超链接定义为一个ActionForward。这些对象都有个逻辑名称和一个path 属性。这使得开发人员可以设置path,然后通过名称来引用ActionForward。ActionForward 通常在一个XML 文件中定义,这个配置文件在Struts 启动时载入。Struts 使用XML 定义来创建Struts 配置,包括一个ActionForward的列表。可用来创建到欢迎页面链接的ActionForward 对象XML 元素看起来可能像:

<forward

name="welcome"

path="/pages/index.jsp"/>

这个元素事实上是创建了一个ActionForward JavaBean ,其name 属性设置为welcome,path 属性设置为/pages/index.jsp。JSP 页面和其它组件就可以引用这里定义的welcome 转发。Struts 框架将查找welcomeActionForward bean 并获取其path 属性以完成这个超链接。这样开发人员可以改变链接的目标而不用

变所有引用该链接的相关件。在很多Web 应用中,象这样的细节被硬编码到JSP 或Java code 中,使维护变得困难并且容易发生错误。在Struts 应用中,这些细节可以通过应用配置来改变,而不用触及到具体的页面和Java 类。

2.4  HTML表单

Web 协议,即HTTP 和HTML,提供了一个从表单中提交数据的机制,但却把数据的接收作为一个难题留给了开发人员。为此,Struts 框架提供了ActionForm 类。ActionForm设计来就是处理来自HTML 表单的输入:校验输入,重新显示表单以供用户进行修订(如果需要),以及伴随着相应的提示和错误信息。ActionForm 其实是具有一些用来来管理校验和修订循环的标准方法的JavaBean。Struts 自动匹配JavaBean 属性和HTML 表单控件的属性。开发者只需定义ActionForm 类,余下的就交给Struts 。

2.5  Custom actions

定制动作 HTML 表单使用action 参数来告诉浏览器将数据送到何处。Struts 框架提供相应的Action 来接收数据。框架会自动创建、组装、校验和最后处理Action 对象所对应的ActionForm。这样,Action 就可以直接从ActionForm bean 取得它需要的数据。比如下例:

public final class LogonAction extends Action {

public ActionForward perform(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws IOException, ServletException {

MyForm myForm = (MyForm) form;

// ...

return mapping.findForward("continue");

}

}

Action 根据返回到控制器的ActionForward 对象作出控制流的决定。这允许Action 选择一个逻辑名称,比如continue 或者cancel,而不是具体的系统路径。

为保证可扩展性,控制器也传递当前的请求和响应对象。实际上,Action 可以做所有JavaServlet 可以做的事情。ActionMapping在一个web 应用中,每个资源都必须通过URI 来进行引用。资源束括HTML 页面,JSP页面,和定制动作。为了给定制动作一个URI,或者说路径,Struts 框架提供了一个ActionMapping 对象。象ActionForward 和ActionForm 一样, ActionMapping 通常也在XML 配置文件中定义:

<action-mappings>

<action path="/logonSubmit"

type="app.LogonAction"

name="logonForm"

scope="request"

validate="true"

input="/pages/logon.jsp" />

</action-mappings>

这也允许将同一个Action 对象定义为不同的ActionMapping。例如,其中一个映射要求校验而另一个映射不要求校验。

2.6  ActionServlet

Struts ActionServlet 完全在幕后工作,它将其他组件绑定在一起。虽然它也可以子类化,但大多数Struts 1.0 的开发人员将ActionServlet 处理为一个黑盒:他们只是配置它,然后让它自己工作。在Struts 1.1 中,ActionServlet 是比较易于扩展的。第9 章将讨论Struts 1.1 ActionServlet新的扩展点和配置选项。

2.7  本地化

Web 应用也通过各种提示和信息与用户进行交互。Struts 组件均有内建的本地化特征,以便Struts 应用可以为国际化用户使用。我们在此书中贯穿使用本地化特征。

2.8  用Struts开发Web应用

要使用Struts 开发web 应用,开发人员将需要的超链接定义ActionForward,HTML 表单定义为ActionForm,定制的服务器端动作定义为Action 类。需要访问JDBC 和EJB 的开发人员也可通过Action 对象进行他们的工作。这样,表现层不需要和Model 层打交道。。Struts Action 对象将收集View 需要的数据,然后将它们转发到表现页面。Struts 提供JSP 标记库,它们将和JSP 页面一起使用,简化HTML 表单和访问Action 要转发的其它数据。其它表现机制,比如Velocity templates, 也可用来访问Struts 框架,以创建动态的web 页。

3  为什么需要框架

第1 章,我们介绍了应用框架,简短讨论了为什么框架很重要。但为了真正理解一个解决方案,我们需要了解问题所在。为web 开发应用虽然是值得的,但也要迎接各种挑战。让我们快速看看是什么使web 开发富有挑战。

3.1  Web—永无休止的修补

Web 开发者受到两种web 缺陷的影响。首先,我们希望使用浏览器作为客户端。其次,我们必须使用web 协议进行通讯。Web 浏览器通过HTTP 协议通信,并用HTML 显示页面。Web 浏览器发送HTTP 请求,并渲染和显示它收到的响应。在处理很少改变的预先编好的页面时,这是个很好的平台。但我们大多都是编写动态程序,页面针对不同的用户是不同的。虽然有一些现成的动态特征的手段,web 仍然受到HTTP/HTML 的制约。很不幸,这种状况现在并没有些许改变。Web 开发人员在想战胜挑战时必须首先看到这些缺陷。因为这对编写强壮的Web 应用有太多障碍,使用框架便显得至关重要,免得你的应用陷入无休止的工作和改进之中。在开发Web 应用时我们面临的挑战是很巨大的。但同时也是值得的。HTTP 协议和HTML客户端使所有的人都可以访问你的应用。没有其他哪个平台能声称这样。

3.2  Servlet 解决方案

如第一章所述,Java Servlet 平台[Sun, JST] 扮演了一个基本框架,为Java web 应用提供了大量的能力。Servlet 提供了一个处理HTTP 请求和确保响应的基本接口。它在HTTP 之上构建了一个“会话” 上下文,帮助跟踪应用程序的用户。当然它也提供其他的上下文,帮助应用传输数据到浏览器或者应用中的其他servlet。Java web 应用也具有对基本安全特性的统一访问,而这些安全特性在不同的服务器上的管理是不一样的。为了将这些内容集成在一起,Servlet 规范引入了一个容器来管理它们。容器也可以提供其他服务,比如作为一个JSP 的处理器。Servlet 容器可以包含它自己的web server,也可以简单的作为一个现有服务器的附属组件。对数据库访问,Java 应用在其建议中有另外一个通用的框架:JDBC。开发者可以编写标准的SQL 接口,而将烦人的细节留给适配器来处理。这使得可以很容易的改变数据库厂商,而不用重写源代码。为了取得远程服务器的高性能数据库访问,web 开发人员可以使用EJB 平台。大多数Java应用框架,包括Struts, 都可以和EJB 一起使用。

总之,这使得基于Servlet 的web 应用非常轻便,并相对易于编写和维护。Servlet 和JSP在编写应用中扮演了完全不同的角色。象Strtus 这样的Java web 应用框架就构架于Servlet 之上,给开发者提供一个无缝的集成环境。

3.3  Servlet 框架

大多数,不是全部,Java web 框架使用Sun Servlet 平台为基础。这些框架都绑定一些预制的servlet,你可以插入到你的应用中去。框架本身也包括一个类层次结构,这些类(或接口)你可以在你的应用中实现或者扩展。通常, 应用框架的目标是帮助你将你需要的数据从浏览器发出,进入到编程结构之中,这样你的应用就可以使用它—或者从编程结构中发出,进入到浏览器之中,这样你就可以看到。一些框架,如Turbine [ASF, Turbine],也提供helper 类来使用JDBC 数据库。其他框架,如Struts,则是模型中立的。它们既不阻碍数据库访问,也没有提供帮助。而某些框架, 如dbForms [dbForms],则专注于数据库访问,而将其它任务留给开发人员或者其他框架。

3.4  黑盒-白盒统一体

框架有时分为两极标有白盒和黑盒的统一体[Fayad]。白盒框架严重依赖于面向对象的语言的特征,如继承和动态绑定。黑盒框架则注重定义可插入组件的接口,然后基于这些接口提供基本的起始组件。接口和基本组件通常提供热点(hotspot)方法,这个方法可以直接使用或者重写后提供特别的行为。像许多正在使用的框架,Struts 使用混合的黑盒和白盒技术。但总体上,框架将偏向统一体的黑盒一端。黑盒框架通常依赖于设计模式。事实上,设计模式通常被用来作为框架的总体描述[Johnson]。为保持这个趋势,我们先介绍一下设计模式,以及它们是如何用在Struts框架之中。

4   MVC的演化

Smalltalk MVC 方案使用观察者通知模式。在这种模式下,每个视图注册为一个模型数据的观察者。然后模型可以通过发送消息给所有这册观察者,通知它们相关的改变。其为Smalltalk MVC 框架已经通用化了,他也可以将它应用到其他平台上面。

4.1  Model 2的出现

JSP 的意图是使创建动态页面更容易。JSP 首先是作为servlet 的替代引入的,还有就是MS的ASP。Servlet 的强大功能当作易于创建服务器页面的工具提供给开发者。但强大的功能伴随着巨大的责任。很多团队发现,如果他们一不小心,他们的项目就会因为纠缠如麻的页面变的容易崩溃。进一步的特性需要使用复杂的脚本程序。但脚本程序是非常难于重用的—除非你在页面间把代码“拷贝粘贴”。工具页面也可以包括进来,但它们很难被组织在一起,并且造成非常丑陋的“资源”树。有些东西会出错。很多开发人员很快意识到,JSP 和servlet 可以一起使用来部署web 应用。Servlet 可以应付控制流,而JSP 则可专注于讨厌的编写HTML 的任务。在这种情况下,结合使用JSP和servlet 开始被称为Model 2 (单独使用JSP 称为Model 1)。当然,从Sun 那里仍然没什么新东西... 而且很多人很快指出JSP Model 2 类似于经典的Model-View-Controller 架构。在很多场合,现在交互使用Model 2 和MVC 这两个词已经很平常了,虽然还有一些争论,即一个应用是否是MVC,以及是否支持经典的观察者通知模式。没有观察者通知的Model-View-Controller 有时被称为MVC2 或Web MVC。

4.2  应用层—视图之间的去耦合

许多分布式系统架构,包括web 应用,在视图进行状态查询的概念时退缩了。绝大多数情况下,远程应用是按层模式[POSA]设计的。基本上,层模式下,层内的对象可以和同一层或者相邻层的对象进行通信。在一个复杂应用中,这可以在添加组件时,防止依赖关系呈指数增长。在设计远程应用时,分层是一个核心模式。从MVC 上下文中,引入层模式将状态改变和状态查询的职责加于控制器之上,并伴随着改变通知。每个组件的主要职责并没有改变。流程有轻微改变,即查询状态和改变通知都必须通过控制器。另一个改变是,当视图,或者表现层需要渲染动态页面时,它使用从控制器传递的数据而不是直接来自于模型层。这种改变去除了View 和Model 的耦合,允许控制器选择数据和显示这些数据的视图。

5  Struts 控制流

因为web 应用是动态的,所以很难表现“一个真正固定的控制流”。取决于环境,不同的方式下有很多不同的事情发生—特别是在web 应用中。但是事情仍然有一个通用的秩序。如果你是个Struts,应用框架,甚至web 应用的新手,这些流程刚开始可能难以跟得上(理解)。亟待解决的各种问题不一定那么明显。我们将在本书中慢慢详细涉及。首先,在介绍树木之前我们先认识这片森林。你读完此书后,我们建议你再次回来,看看每一部分是如何切合进这个总图的。

5.1  Struts 是富有效率的吗

详细描述完Struts 处理流程后,你可能会想知道这些的花多长时间。通常,Struts 应该能提升大部分正确设计的Web 应用的性能。在本节中,我们检查一些关系到框架效率的特殊设计点。

Struts不仅是线程安全(thread-safe)而且是线程依赖(thread-dependent)的Struts 使用轻量的Action 对象,而不是各个单独的servlet,来对请求处理响应。Struts 实例化每个Action 类一次,并允许其他请求通过原有的对象线程化。这种核心策略节省了资源,并提供最大的吞吐性。一个正确设计的应用将通过使用一个单独的Action 来路由各种相关操作来发挥这种特征。ActionForm bean最小化子类代码并缩短子类层次。Struts 框架的一个关键点是可以从请求中自动组装ActionForm bean 。没有这个组件, 用户不得不自行编写代码并实例化来组装每个bean 类。小心使用反射机制会节省不少资源,资源是有限的,并允许它们更好的使用。

Struts 标签库提供通用功能,Struts 一起提供的bean 和logic 标记库符合大部分JSP 标记的需要。它们减少甚至消除了编写额外标签的需要。JSP 规范就包含了JSP 中的标签重用。使用相同的通用标签3 次比使用3 次不同的标签来的有效率。

Struts 组件对应用来说都是可重用的框架绑定的工具可以在大部分应用中使用。BeanUtil.populate 方法就是个例子。这个方法用来从HTTP 请求组装一个ActionForm Bean,但也可以用来从其它类型的映射中组装一个FormBean。重用组件可以减少开销和节省资源。

Struts本地化策略减少了大量冗余JSP通过允许本地化页面在运行时才获取,国际化应用可以为每种可能需要的语言只提供一个单独的页面。同时,相同的消息系统也可以用于处理错误信息。同一对象提供了双重用途。

Struts设计为一个开放架构Struts 组件设计来是可以被应用子类化的,以便可以提供其它的服务功能。这使得开发人员可以扩展存在的类而不是重新编写新类。而且,Struts 也和应用共享资源。这时开发人员可以使用存在的组件,而不用编写和实例化它们自己的类。

Struts是轻量型架构类似的框架也许提供数百个类和几十个包。整个Struts 框架由5 个标记库和5 个核心包组成。

Struts是标准兼容的Strtus 在许多运行标准组件的容器上都工作的非常之好。

Struts是开源的,具良好的文档,这意味着开发人员可以检查源代码,找出一些潜在的瓶颈。而且Struts 是模型中立的。因为Struts 并没有对后端模型做任何假定,一个应用可以按其最有效率的方式实现模型层。Struts Actions 可以调用一系列助手类来访问需要的数据。一旦数据被检索到,对JavaBean的依赖,使Struts 更容易保持值对象,这样来减少了大量的模型层调用。

参考资料

基于java的保险业务管理系统(项目报告+答辩PPT+源代码+数据库+截图+辅导视频)

基于java的保险业务管理系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是基于Java EE的高校学生体测管理系统设计实现答辩记录表: 一、选题背景与意义 1.选题背景 随着社会的进步和人们生活水平的提高,人们对健康的意识不断增强,体育锻炼已成为一种时尚和生活方式。高校作为一种重要的教育场所,对学生的体育锻炼和身体健康监测十分重视。因此,设计一个基于Java EE的高校学生体测管理系统,对学生的体测数据进行全面的管理和监测,是十分必要的。 2.选题意义 本系统可以帮助高校学生更好地了解自己的身体状况,掌握健康状况,及时调整自己的身体状况,以达到健康生活的目的。同时,通过数据的分析,可以帮助学校更好地了解学生的身体状况,为学生的身体健康提供参考和指导。 二、设计实现 1.系统架构 本系统采用B/S架构,前端使用HTML、CSS、JavaScript、JQuery等技术,后端使用Java EE技术,数据库采用MySQL。 2.系统模块 本系统包含管理员模块、教师模块和学生模块三个模块。 管理员模块:管理员可以对学生信息进行管理,包括增加、删除、修改、查询等操作。同时,管理员还可以对教师信息进行管理,包括增加、删除、修改、查询等操作。管理员还可以对系统进行设置,包括修改系统参数、备份数据库等操作。 教师模块:教师可以录入学生的体测数据,包括身高、体重、肺活量、50米跑、立定跳远等项目。同时,教师还可以对学生的体测数据进行查询和分析,为学生提供健康建议。 学生模块:学生可以查看自己的体测数据,并查看自己的健康建议和进一步的健康指导。 3.系统实现 本系统使用Eclipse作为开发工具,采用Struts2框架、Hibernate框架和Spring框架进行开发。同时,使用JSP页面作为前端页面,使用MySQL作为数据库。 三、系统测试与运行 本系统进行了各种测试,包括单元测试、集成测试和系统测试等。测试结果表明,本系统能够正常运行,能够满足各种需求。 四、总结与展望 经过本次的设计实现,本系统已经初步具备了一定的功能和可用性。但是,还有一些不足之处,需要进一步完善和改进。未来,我们将继续改进本系统,提高系统的性能和用户体验,为学生的身体健康保驾护航。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业课程设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值