点击下载源码

一、系统总体设计

(一)系统的设计 SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。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中定义了,ActionServlet会加载进来。 Spring负责业务层管理,即Service: Service为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。 Hibernate负责持久层,完成数据库的CRUD操作: Hibernate有一组hbm.xml文件和PO,是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。

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

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

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

1-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) 2.数据字典 数据字典是对于数据模型中的数据对象或者项目的描述的集合,这样做有利于程序员和其他需要参考的人。分析一个用户交换的对象系统的第一步就是去辨别每一个对象,以及它与其他对象之间的关系。这个过程称为数据建模,结果产生一个对象关系图。当每个数据对象和项目都给出了一个描述性的名字之后,它的关系再进行描述(或者是成为潜在描述关系的结构中的一部分),然后再描述数据的类型(例如文本还是图像,或者是二进制数值),列出所有可能预先定义的数值,以及提供简单的文字性描述。 保险业务管理系统设计共有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(“”); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } return null; } } 2.保险信息模块 管理员登录进去所显示的界面,如图5-4所示

5-4管理员界面

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

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

5-6 用户查看保险信息

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

5-7 用户个人订单列表

public List selProductList() {

Session session = sessionFactory.openSession();

String sql="select * from product_list";

Transaction tran = session.beginTransaction();

SQLQuery sq = session.createSQLQuery(sql);

List list = sq.list();

List plist = new ArrayList();

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;

}

}

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

5-8 个人用户赔偿列表

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

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

public List 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 list = sq.list(); List olist = new ArrayList(); 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 clist = orderListService.selOrderList(String.valueOf(ul.getUser_id()), “‘1’,‘2’,‘n’,‘9’”); session.put(“clist”, clist); return SUCCESS; } 4.用户信息模块 管理员登录管理员账号后,用户管理界面,如图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 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 passwo'"+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();

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: