客户管理管理系统.docx
《客户管理管理系统.docx》由会员分享,可在线阅读,更多相关《客户管理管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
客户管理管理系统
1引言
客户是公司最宝贵的资源,为了更好的发掘老客户的价值,并开发更多新客户,XX公司决定实施客户关系管理系统。
希望通过这个系统完成对客户基本信息、联系人信息、营销信息、客户服务信息的充分共享和规范化管理;希望通过对销售机会、客户开发过程的追踪和记录,提高新客户的开发能力;希望在客户将要流失时系统及时预警,以便销售人员及时采取措施,降低损失。
并希望系统提供相关图表,以便公司高层随时了解公司客户情况。
1.1研究背景
客户资源决定企业的核心竞争力[1]。
任何一家企业,有钱就可以买到最好的设备、尖端的技术,但却买不到强大的客户资源。
面对着竞争对手不断截留我们的客户,各企业商家所关心的不再局限于自身的产品质量、生产设备、员工的素质,更多的是关心自己的销售群体(客户群),关心他们的想法、需求、购买目的,并与客户建立好良好的、长期的客户关系,强化与客户的沟通,帮助企业留住老客户的同时,更好地拓展新客户,提升客户价值,从而全面提升企业竞争能力和盈利能力,为企业的发展壮大保驾护航。
客户管理系统,通过企业管理技术、电子商务和信息技术的高度集成,帮助企业在全球经济一体化的激烈市场竞争环境中,建立以市场、客户为中心的管理体系,有效管理企业与客户之间的关系,提高客户忠诚度,实现客户价值的最大化[2,3]。
从而提高企业的核心竞争力。
企业要想生存发展,就必须和与之息息相关的客户建立起良好的关系,不断发展新客户,以企业高质量的产品、优质的服务、良好的资信吸引新客户;经常维系与老客户的关系,以规范的客户管理方式、温馨的客户关怀、高效的客户服务来提升老客户的忠诚度。
由此,客户管理系统应运而生。
1.2技术平台
1.2.1MVC
MVC(Model-View-Controller)三层架构是一种经典的设计模式,它强制性地把应用程序的输入、处理和输出分开。
使用了MVC的应用程序被分成3个核心部件:
模型、视图、控制器。
它们各司其职,既分工明确又相互协作。
首先,控制器接受用户的请求,然后调用某个模型来处理用户的请求,在控制器的控制下,再将处理的结果交给某个视图进行格式化输出给用户。
1.2.2Struts
Struts是基于MVC的Web应用框架,具有组件的模块化、灵活性和重用性等优点。
在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制层由ActionServlet和Action来实现,视图由一组JSP文件和ActionFormBean组成。
1.2.3Hibernate
Hibernate是一个面向Java环境的对象/关系数据库映射工具,它不仅提供了从Java类到数据表之间的映射,还提供了数据查询和数据恢复机制。
与使用JDBC和SQL来手工操作数据库相比,使用Hibernate实现了持久层功能,通过使用Hibernate来封装底层的数据操作细节,为业务逻辑层提供了面向对象的API,它的意义:
(l)使代码重用性高,能够完成所有的数据访问操作;
(2)具有相对的独立性,底层数据库改变,只需要修改持久层代码,只要对上提供的API不变,则上层的业务逻辑层可以不用修改。
1.2.4Spring
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
1.3可行性分析
现行的CRM软件还处于起步阶段,功能模块结构不尽相同,但是其基本的需求是一样的,其主要技术需求应包括六个方面:
1.3.1信息分析能力
CRM有大量客户和潜在客户的信息,企业应该充分的利用这些信息进行分析,使得决策者掌握的信息更加完全,从而能及时的作出决策[4]。
良好的商业情报是企业成功的一半。
1.3.2对客户互动渠道进行集成的能力
对多渠道进行集成与CRM解决方案的功能部件的集成是同等重要的。
不管客户是与企业联系还是与销售人员联系,于客户互动都应该是无缝的、统一的、高效的[5]。
同一的渠道还能带来内部效益的提高。
1.3.3支持网络应用的能力
在支持企业内外的互动和业务处理方面,Web的作用越来越大,这使得CRM的网络功能越来越重要。
如,网络可以为电子商务渠道提供支持。
为了使客户和企业雇员都能方便应用CRM,需要提供标准化的网络浏览器,使得用户几乎不需训练就能使用系统。
另外,建设集中的信息仓库的能力,采用集中化的信息、实时的客户信息,可使各业务部门和功能模块间的信息能统一起来[6,7]。
2系统需求说明
2.1设计目标
本系统在设计时应满足以下目标:
采用人机对话的操作方式,界面友好、美观,信息查询灵活,数据库存储及时且安全可靠。
系统用于管理与客户相关的信息与活动,实现客户管理、营销管理、反馈管理等功能。
系统将最大限度地实现易维护性和易操作性。
保证系统运行稳定,且安全可靠。
2.2功能需求
基础信息管理:
管理客户的基础信息,增、删、查、改;
客户信息管理:
用户对客户详细信息进行管理,增、删、查、改;
联系人信息管理:
用户对联系人详细信息进行管理,增、删、查、改;
营销信息管理:
用户对销售机会和开发计划进行管理,增、删、查、改;
客户服务:
用户对客户反馈信息和客户投诉信息进行管理,增、删、查、改;
系统管理:
管理用户的信息,包括添加、修改、删除用户和对用户权限的管理。
图2.1系统功能结构图
2.3运行需求
2.3.1最低硬件环境
CPU:
主频1.8GHZ以上
内存:
512M
硬盘:
5G以上可用空间
2.3.2软件环境
操作系统:
WindowsXP
数据库平台:
SQLServer2000
Web服务器:
Tomcat5.5
集成开发环境:
MyEclipse7.0.1
Java环境:
JDK1.5
浏览器及分辨率要求:
IE5.0以上版本,最佳效果1024×768像素。
2.4安全需求
(1)只有特定的管理人员才能对系统的用户进行管理,才能对数据库进行维护和修改;
(2)每一个功能模块都有权限设置,进入之前需要有相应的权限;
(3)普通用户只能修改或删除受理人为自己的相应客户服务信息。
2.5其它需求
系统需要能够对客户构成和客户服务满意度的比例进行分析,以饼图形式表现出来。
2.6数据描述
2.6.1数据词典
用户信息表=ID号+用户名+密码+权限ID
权限信息表=ID号+权限名+基础信息模块权限+营销管理模块权限+客户信息管理模块权限+客户服务模块权限+统计分析模块权限+系统管理模块权限
客户信息表=ID号+客户名称+企业性质ID+企业类型ID+企业资信ID+客户级别ID+地址+所在省份+所在城市+邮编+法人代表+客户银行ID+银行卡号+公司电话+传真+主要联系人ID+客户状态+备注
联系人信息表=ID号+联系人姓名+客户ID+性别+职务+联系电话+住址+邮件地址+备注
客户反馈=ID号+反馈标题+客户ID+反馈内容+反馈日期+反馈受理人+客户满意度+反馈状态+备注
客户投诉=ID号+客户ID+投诉人+投诉主题+投诉内容+投诉日期+投诉受理人+处理办法+客户满意度+投诉状态+备注
销售机会=ID号+客户ID+机会名称+联系人ID+机会日期+机会来源+业务员+机会状态+备注
开发计划=ID号+机会ID+计划日期+业务员+计划状态+备注
2.6.2数据采集
用户信息记录、客户信息记录、营销信息记录、客户服务信息记录等。
2.6.3数据流图
本系统所涉及的数据流如图2.2、图2.3、图2.4和图2.5所示。
图2.2顶层数据流图
图2.30层数据流图
图2.41层数据流图
图2.52层数据流图
图2.6系统用例图
3系统设计
3.1系统架构
系统采用三层架构,即分为表示层、业务层、数据层,其中:
表示层:
作为用户的接口层,负责与整个系统交互。
业务层:
作为业务逻辑的封装层,负责接受用户请求,从数据层获取数据,并对数据进行处理,将处理结果交给表示层显示。
数据层:
作为数据的存储与维护层,负责数据的管理。
本系统数据层采用Hibernate框架来实现。
采用分层设计的体系架构,能够实现分离关注、松散耦合、逻辑复用和标准定义。
3.2数据库设计
3.2.1概念结构设计
本系统数据库采用SQLServer2000数据库,下面先使用实体关系图进行概念模型设计,客户关系管理系统的实体关系图如图3.1、图3.2、图3.3、图3.4、图3.5、图3.6、图3.7、图3.8和图3.9所示。
图3.1用户实体及其属性
图3.2权限实体及其属性
图3.3客户实体及其属性
图3.4客户反馈实体及其属性
图3.5客户投诉实体及其属性
图3.6联系人实体及其属性
图3.7销售机会实体及其属性
图3.8开发计划实体及其属性
图3.9客户关系管理系统实体关系图
3.2.2逻辑结构设计
根据客户关系管理系统中的数据信息特点,将数据的概念模型转换为关系模型。
其中主键以下划直线标注,外键以下划波浪线标注。
(1)用户(用户ID、用户名、密码、权限ID)
(2)权限(权限ID、权限名称、基础信息管理模块权限、营销管理模块权限、客户信息管理模块权限、客户服务模块权限、统计分析模块权限、系统管理模块权限)
(3)客户(客户ID、客户名称、企业性质ID、企业类型ID、企业资信ID、客户级别ID、地址、所在省份、所在城市、邮编、法人代表、客户银行ID、银行卡号、公司电话、传真、主要联系人ID、客户状态、备注)
(4)联系人(联系人ID、联系人姓名、客户ID、性别、职务、联系电话、住址、邮件地址、备注)
(5)客户反馈(反馈ID、反馈标题、客户ID、反馈内容、反馈日期、反馈受理人、客户满意度、反馈状态、备注)
(6)客户投诉(投诉ID、客户ID、投诉人、投诉主题、投诉内容、投诉日期、投诉受理人、处理办法、客户满意度、投诉状态、备注)
(7)销售机会(机会ID、客户ID、机会名称、联系人ID、机会日期、机会来源、业务员、机会状态、备注)
(8)开发计划(计划ID、机会ID、计划日期、业务员、计划状态、备注)
本系统设计的部分关系模式如下列表所示:
表3.1用户表
列名
数据类型
可否为空
说明
user_id
varchar2(30)
NOTNULL
PK
user_name
varchar2(30)
NOTNULL
用户名
user_pwd
varchar2(30)
NOTNULL
密码
right_id
varchar2(30)
NULL
权限(外键)
表3.2权限表
列名
数据类型
可否为空
说明
right_id
int
NOTNULL
PK
r_name
varchar2(30)
NOTNULL
权限名称
r_jcxx
varchar2
(2)
NOTNULL
基础信息管理模块权限
r_yxgl
varchar2
(2)
NOTNULL
营销管理模块权限
r_khxx
varchar2
(2)
NOTNULL
客户信息管理模块权限
r_khfw
varchar2
(2)
NOTNULL
客户服务模块权限
r_tjfx
varchar2
(2)
NOTNULL
统计分析模块权限
r_xtgl
varchar2
(2)
NOTNULL
系统管理模块权限
表3.3客户表
列名
数据类型
可否为空
说明
cust_id
int
NOTNULL
PK
cust_name
varchar2(50)
NOTNULL
客户名称
qyxz_id
varchar2(30)
NOTNULL
企业性质(FK)
qyzx_id
varchar2(30)
NOTNULL
企业资信(FK)
qylx_id
varchar2(30)
NOTNULL
企业类型(FK)
khjb_id
varchar2(30)
NOTNULL
客户级别(FK)
lxr_id
varchar2(30)
NOTNULL
主要联系人(FK)
cust_addr
varchar2(60)
NOTNULL
客户地址
cust_dh
varchar2(30)
NOTNULL
公司电话
表3.4联系人表
列名
数据类型
可否为空
说明
lxr_id
varchar2(30)
NOTNULL
PK
lxr_name
varchar2(30)
NOTNULL
联系人姓名
lxr_xb
varchar2
(2)
NOTNULL
性别
cust_id
varchar2(30)
NOTNULL
客户编号(FK)
lxr_dh
varchar2(20)
NOTNULL
联系电话
lxr_zw
varchar2(30)
NOTNULL
职位
lxr_bz
varchar2(30)
NULL
备注
表3.5客户反馈表
列名
数据类型
可否为空
说明
fk_id
varchar2(30)
NOTNULL
PK
fk_bt
varchar2(30)
NOTNULL
反馈标题
fk_nr
varchar2
(2)
NOTNULL
反馈内容
cust_id
varchar2(30)
NOTNULL
客户编号(FK)
fk_rq
varchar2(20)
NOTNULL
反馈日期
fk_slr
varchar2(20)
NOTNULL
受理人
fk_myd
varchar2(10)
NOTNULL
满意度
fk_status
varchar2(10)
NOTNULL
状态
fk_bz
varchar2(30)
NULL
备注
表3.6客户投诉表
列名
数据类型
可否为空
说明
ts_id
varchar2(30)
NOTNULL
PK
kh_id
varchar2(30)
NOTNULL
客户编号(FK)
ts_tsr
varchar2(20)
NOTNULL
投诉人
ts_zt
varchar2(50)
NOTNULL
投诉主题
ts_nr
varchar2(200)
NOTNULL
投诉内容
ts_slr
varchar2(20)
NOTNULL
受理人
ts_myd
varchar2(10)
NOTNULL
满意度
ts_status
varchar2(10)
NOTNULL
状态
ts_bz
varchar2(30)
NULL
备注
表3.7销售机会表
列名
数据类型
可否为空
说明
ch_id
varchar2(30)
NOTNULL
PK
kh_id
varchar2(30)
NOTNULL
客户编号(FK)
ch_mc
varchar2(50)
NOTNULL
机会名称
lxr_id
varchar2(30)
NOTNULL
联系人编号(FK)
ch_rq
varchar2(20)
NOTNULL
机会日期
ch_ly
varchar2(50)
NOTNULL
机会来源
ch_ywy
varchar2(20)
NOTNULL
业务员
ch_status
varchar2(10)
NOTNULL
状态
ch_bz
varchar2(30)
NULL
备注
表3.8开发计划表
列名
数据类型
可否为空
说明
pl_id
varchar2(30)
NOTNULL
PK
ch_id
varchar2(30)
NOTNULL
机会编号(FK)
pl_rq
varchar2(20)
NOTNULL
计划日期
pl_ywy
varchar2(20)
NOTNULL
业务员
pl_status
varchar2(10)
NOTNULL
状态
pl_bz
varchar2(30)
NULL
备注
4系统实现
4.1登录模块
登录页面直观地给出了系统的着重点是客户,管理你的客户就是管理你的财富。
图4.1给出了系统登录页面的运行效果图。
图4.1登录页面运行效果图
用户输入用户名和密码后,点击“登录”。
页面将表单信息提交给UserAction.java进行处理,UserAction通过自身的userCheck()方法对用户输入的用户名和密码的正确性进行检查,该方法的实现代码如下。
publicActionForwarduserCheck(ActionMappingactionMapping,
ActionFormactionForm,
HttpServletRequestservletRequest,
HttpServletResponseservletResponse){
UserFormuserForm=(UserForm)actionForm;
TbUserDAOdao=newTbUserDAO();
Stringname=servletRequest.getParameter("name");
Stringmm=servletRequest.getParameter("pwd");
if(dao.check(name)==null){
returnactionMapping.findForward("checkFail");
}
elseif(!
dao.check(name).getUserPwd().equals(mm)){
returnactionMapping.findForward("checkFail");
}
userForm.setUserItem(dao.check(name));
servletRequest.setAttribute("form",userForm);
returnactionMapping.findForward("checkSuccess");
}
4.2客户管理模块
4.2.1客户信息管理模块
客户信息管理模块作为客户管理模块的子模块,负责管理客户的详细信息,提供对客户信息的查看、添加、更新和删除等操作,方便用户更好地管理其客户信息。
用户通过正常登陆进入系统主页,点击主页上方导航栏中的“客户管理”(进入该模块前需要验证用户是否有操作该功能模块的权限),此时框架左页面显示客户管理模块的子菜单。
点击子菜单中的“客户信息管理”,系统通过超链接跳转到KhxxAction,并通过其中的khxxSelect()方法调用TbKhxxDAO.java的方法来访问数据库,逐行取出每一条客户信息。
相应代码如下所示。
publicActionForwardkhxxSelect(ActionMappingactionMapping,
ActionFormactionForm,
HttpServletRequesthttpServletRequest,
HttpServletResponsehttpServletResponse){
Listlist=null;//用于输出到页面的记录集合
inttotalRows;//记录总行数
TbKhxxDAOdao=newTbKhxxDAO();
totalRows=dao.getCount();
Pagepage=PageHelp.getPager(httpServletRequest,totalRows);
try{
list=dao.list(page.getPageSize(),page.getStartRow());
}catch(HibernateExceptionex){
}
httpServletRequest.setAttribute("page",page);
httpServletRequest.setAttribute("khxxlist",list);
returnactionMapping.findForward("khxxSelect");
}
系统响应后进入客户信息管理子模块,如图4.2所示。
图4.2客户信息管理
用户可以通过点击每一行的“查看客户全部信息”来浏览该客户的详细信息,如图4.3所示。
图4.3客户详细信息
在每个客户的详细信息页面的底部,可以通过点击“修改这个客户信息”来更新该客户的详细信息,如图4.4所示。
当修改客户详细信息时,输入的信息需符合规范。
系统使用了Ajax的一种校验框架来对输入数据进行校验。
例如公司的电话号码必须是number型的数据且长度符合要求,在Jsp页面中的部分代码如下。
">
请填写公司电话号码!
请输入有效的电话号码!