基于SSM框架的客户经理信息管理系统开发与设计
嗨,我是射手座的程序媛,期待和大家更多的交流与学习,欢迎添加3512724768。
1.软件开发流程
软件的开发流程包括:问题的定义及规划、需求分析、软件设计、程序编码、软件测试五个阶段。
(1)问题的定义及规划:主要确定客户经理管理信息系统的开发目标及其可行性;
(2)需求分析:在确定开发可行性的情况下,对客户经理管理信息系统需要实现的各个功能进行详细需求分析;
(3)软件设计:对整个客户经理管理信息系统进行概要设计和详细设计以及功能逻辑设计,如系统框架设计、数据库设计、具体的属性设计等;
(4)程序编码:此阶段是将系统设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范,以保证程序的可读性、易维护性,提高程序的运行效率;
(5)软件测试:在客户经理管理信息系统设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
2.项目整体功能概要
整个项目具体实现了系统用户管理和学习园地管理模块的全部功能以及客户经理信息管理模块的部分功能。
系统用户管理模块,系统采用登录名和密码登录系统,登录系统时进行用户名和密码的验证。进入系统后点击用户管理模块,可实现系统用户信息的查看、添加、修改、启用禁用等功能。
学习园地管理模块,实现用户对学习资料信息的查看以及附件材料的上传和下载。
客户经理信息管理模块,包括客户经理信息综合维护和客户经理辅助信息维护。客户经理信息维护实现客户经理基本信息的查询和添加、删除、修改;客户经理辅助信息维护实现对证照列表模块的维护,包括证照列表信息的查询、添加、修改和删除。
3.项目实现
图1 用户管理分页查询功能-总览
图2 用户管理分页查询功能-条件查询
图3 用户管理添加功能-添加页面
图4用户管理添加功能
图5用户管理添加功能
图6用户管理修改功能-校验
图7用户管理修改功能-修改页面
图8用户管理修改功能-修改后返回列表
图9用户管理删除功能-删除后页面
图10用户管理删除功能
图11用户管理启用功能
图12用户管理启用功能
图13用户管理禁用功能
图14用户管理重置密码功能
图15学习园地模块修改功能-校验
图16学习园地模块修改功能-修改页面
图17学习园地模块修改功能-修改后返回列表页面
图18客户经理分页查询列表
图19客户经理信息修改页面
图20客户经理信息修改页面
图21修改成功后分页查询页面
图22客户经理信息修改页面-校验
图23客户经理辅助信息维护
图24客户经理辅助信息维护
图25客户经理辅助信息维护
4.技术总结
4.1 说明对系统逻辑结构设计的理解
逻辑结构设计是将概念结构设计阶段完成的概念模型,转换成能被选定的数据库管理系统(DBMS)支持的数据模型。这里主要将E-R模型转换为关系模型。 根据该系统最终的实现情况,最后的关系模型:
**系统用户表(**员工号、用户名、密码、性别、生日、Email、密码提示问题、问题答案、注册时间、最后登录时间、用户状态、角色)【主键:员工号】
学习园地资料表(资料编号、资料名称、资料类型、资料描述、存储路径、维护人、维护日期、是否公开)【主键:资料编号;外键:资料类型】
资料类型(类型编号、类型名称)【主键:类型编号】
客户经理表(员工号、姓名、性别、男女身份证号、出生年月、年龄、民族、政治面貌、学历、籍贯、照片、学位、毕业院校及专业、职务、专业技术职称、客户经理等级、所在单位、部门、业务条线、参加工作时间、入行时间、从事金融工作年限、客户经理从业年限累计学分、当年学分、退出时间、上年度考核结果、从业资格证书编号、从业资格证书发证时间、岗位证书编号、岗位证书发证时间、办公室电话、手机)【主键:员工号;外键:民族、政治面貌、学位、学历、专业技术职称、客户经理等级、客户经理状态】
民族(民族编号、民族名称)【主键:民族】
政治面貌(政治面貌编号、民族名称)【主键:民族】
学位(学位编号、民族名称)【主键:民族】
学历(学历编号、民族名称)【主键:民族】
专业技术职称(专业技术职称号、专业技术职称名称)【主键:民族】
客户经理等级(客户经理等级编号、客户经理等级名称)【主键:客户经理等级编号】
客户经理状态(状态编号、状态名称)【主键:状态编号】
证照列表(记录编号、客户经理编号、证件名称、证件类型、证件编号、发证单位、发证时间、失效时间、有效性、证书路径、作废标示、备注、维护日期、维护人)【主键:记录编号;外键:证件类型】
证件类型(类型编号、类型名称)【主键:类型编号】
4.2、对涉及到的数据库表及对表中数据所进行的处理说明
1.用户表:yc_member
用户ID(MEM_ID)为该用户表的主键,设置为int类型,不允许为空值;
用户密码(MEM_PASS)设置为默认值“1”,用来登陆时验证。
2.学习园地表:gzcrm_learn
资料ID(L_ID)为该学习园地表的主键,设置为int类型,不允许为空值;
该表中的资料类型(L_TYPE)为该学习园地表的外键,不允许为空值;
该表中的是否公开(ISPUBLIC)不允许为空值。
3.资料类型表:learn_type
类型ID(T_ID)为该资料类型表的主键,设置为int类型,不允许为空值。
4.客户经理信息表:gzcrm_cminfo
客户经理编号(CM_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;使用多个外键:民族、政治面貌、学位、学历、专业技术职称、客户经理等级、客户经理状态。
5.民族表:cm_nation
民族编号(NATION_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
6.政治面貌表:cm_political
政治面貌编号(P_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
7.学历表:cm_education
学历编号(EDUCATION_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
8.专业技术职称表:cm_professional_titles
专业技术职称编号(PROFESSIONAL_TITLES_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
9.学位表:cm_degree
学位编号(DEGREE_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
10.客户经理等级表:cm_level
客户经理等级编号(L_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
11.客户经理状态表:cm_status
客户经理状态编号(STATUS_ID)为该客户经理信息表的主键,设置为int类型,不允许为空值;
12.证照列表(gzcrm_certificate)
CM_KEY:该证照列表的主键,设置为int类型,不允许为空值;
CM_ID:客户经理编号,该证照列表的外键,设置为int类型;
certificate_type_id:证书类型编号,该证照列表的外键,设置为int类型。
13.证书类型表(certificate_type)
证书类型编号(certificate_type_id)为该证书类型表的主键,设置为int类型,不允许为空值。
4.3 开发过程中中主要有哪些处理过程会发生异常?
1.eclipse运行遇到出现错误;
原因:运行时路径出现错误/运行时Tomcat出现问题;
解决方法:修改路径、重启Tomcat或重新添加项目到Tomcat;
2.客户经理信息查询时,发生异常(如图):
原因:mapper文件出现错误SQL文编写时出现方法错误;
解决方法:修改路径、重启Tomcat或重新添加项目到Tomcat,修改mapper文件,如数据类型,字段名是否一致等问题。
3.登录系统时,无法登陆成功,出现404等问题;
原因:未启动Tomcat、数据库服务未启动或未连接、mapper文件错误,加载时出错等;
解决办法:连接数据库,开启服务,重启Tomcat,检查mapper文件;
4.4 在数据库设计阶段的使用的建模工具?
答:建模工具使用的是:PowerDesigner
4.5 用MyBatis访问Oracle/MySQL数据库主要过程是什么?通过示例说明访问过程?
答:用MyBatis访问MySQL数据库主要过程分为六步:
1.读取配置文件;
2.创建sqlSessionFactory;
3.开启sqlSession;
4.获取操作接口;
5.访问数据库;
6.关闭资源;
示例:用户登录系统
打开Tomcat运行该项目时,读取配置文件,创建sqlSessionFactory并开启sqlSession获取操作接口。系统界面输入登录名和密码,后台获取该信息,访问数据库进行数据查询,后台获取查询数据后,传输到客户端进入该系统,最后关闭资源。
4.6、开发过程中遇到的技术难点及解决办法?
1.在用户管理模块中,在用户编号为空时,姓名不为空时,无法进行条件查询;
a)原因:在数据转换时,无法将空值转换为int类型;
b)解决方法:在数据转换之前,先进行非空判断,如果为空时,则不进行数据转换,否则进行数据转换,如图:
2.在证照列表修改时,点击修改后无法获取到证照列表信息的值;
a)原因:无法通过传统的方式进行传值;
b)解决方法:在jsp页面运用ajax技术进行异步传值。
3.在修改或添加某条信息后,将此条信息显示在查询列表最上面;
a)解决方法:在数据库的表中添加两个字段create_time、update_time为timestamp类型,分别用于记录本条记录的创建时间和实时更新后的时间,在分页查询时,通过这两个字段进行排序。具体如下图:
4.条件查询后,最终查询出来的总条数随着查询出的数据的改变而改变;
a)解决方法:根据条件进行查询总数,如图:
5.通过数据库里两个表之间的联系,在查询页面上查询客户经理的编号获得客户经理的编号,如图:
6.客户经理辅助信息维护中证件列表与客户经理信息列表的关联,以及它们两个之间的逻辑关系:
a)解决方法:首先将修改或添加后的信息添加到数据库中,再在证照列表中根据该客户的证照信息通过select语句查询其该证照类型的有效的信息列,再在信息列中选择最近时间的一条信息返回。其中,返回信息分为两种,一种为该客户的证照信息对象,另一种为一个空对象。根据此返回的信息,进行该客户的证件信息更新,即完成客户信息中证件信息的实时更新,如图:
7.无法实现全选、复选;
a)解决方法:最初想法是根据表头的复选框是否被选中,更改表体中的复选框,使其更改为相反的状态。后来经过实践检验出逻辑不同,最终更改为传统方法:若被选中,则遍历循环更改表体中的所有复选框为选中状态;反之,为未选中状态;
8.在用户近期登陆后,在用户信息列表显示的最后登陆时间没有实时更新;
a)解决方法:通过在loginBean中增加last_time字段,获取用户最后登陆时间,同时更新数据库中用户表的最后一次登陆时间并显示到页面,如图:
4.7、系统开发过程中个人遵循了项目中规定的哪些开发规范?
1.对数据库、数据库对象如表、字段、主外键等的命名约定,类、结构体首字母大写,方法、参数、变量首字母小写;
2.命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;
3.各表之间相关列名尽量同名;
4.除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;
5.命名只能使用英文字母,不允许用汉语拼音数字和下划线;
6.注释风格:注释单独成行、放在语句前面;
7.对较为复杂的SQL语句加上注释,说明算法、功能;
8.语句的所有表名、字段名遵照数据字典的定义,系统保留字、内置函数名、保留字、所有脚本全部大写;
9.常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围;
10.样式规范:引用js文件,对整个系统进行规范的样式设置;
11.异常规范:区分稳定代码和非稳定代码;不能使用try catch包裹所有代码,
进行异常捕捉不能try catch中嵌套try catch,只在非稳定代码中加try catch。
4.8、本项目主要是用什么办法监控项目进度的?
答:本项目主要通过组内互相监督、项目进度检查等办法监控项目进度的;
作业任务项:登陆模块、用户管理模块的查询、增加、删除、修改功能、学习园地管理模块的查询、增加、删除、修改、文件的上传和下载功能、客户经理信息管理模块的修改功能、客户经理辅助信息模块的修改功能。
4.9、本项目开发中获得的经验和不足?
通过这一段时间的学习与研发,了解掌握了SSM框架项目的整个设计流程,基本完成了该信息管理系统,了解了项目内各模块之间的逻辑联系,学习到新的知识或技术,学会简单应用MySQL数据库,完成对创建其的基本操作,接触到自己的知识短板,ajax技术可实现异步传值等。在进行客户经理信息表之间的关联时,更加深刻的理解了项目是各模块相互关联的完整系统,同时意识到在进行项目开发前一定要理清模块间的逻辑,同时在修改过程中,会增加对项目逻辑的更深理解,使程序间的逻辑更加严谨,思路更加通畅。
同时,在整个项目开发过程中,我深刻意识到一个项目从设计到完善,团队间的有效沟通、合作是必不可少的,只有每个人明确知道自己的任务,及时沟通,才可良好的完成项目。
通过这次项目,在以后的学习与实践中,一定会根据项目获得的经验,进行学习。同时,积累经验以各方面提升自己的项目开发的能力,学会应用所学的知识,学会举一反三。
5.完整内容
报告以及代码、sql脚本文件
嗨,我是射手座的程序媛,期待和大家更多的交流与学习,欢迎添加3512724768。