资源描述
基于Web客户管理系统设计报告
一、系统需求分析
随着科学技术发展、经济水平提高、公司管理理念和一种新经济背景下营销理念,其核心是以客户为中心,以客户价值为导向手段协同管理思想和效率营销方式变化,加上一方面,诸多公司在信息化方面已经做了大量工作,收到了较好经济效益。另一方面,一种普遍现象是,在诸多公司,销售、营销和服务部门信息化限度越来 越不能适应业务发展需要,越来越多公司规定提高销售、营销和服务寻常业务自动化和科学化。这就为客户关系管理系统应运而生需求奠定了基本。
基于Web应用系统功能丰富、实用、灵活性,如何合理规划系统应用功能方案,开展以顾客流程体验为核心功能流程组织,从系统顾客使用角度出发,合理化功能流程,使系统以便、易用。通过对WEB客户关系系统考察、分析以及实际市场调查,并结合自己系统特色,拟定了系统当前及日后也许浮现功能需求:
(1)身份验证功能:销售经理和客户经理经超级管理员添加后将拥有自己独立账户每次登陆系统后台都将进行身份验证才干登陆对权限范畴内业务进行管理。
(2)栏目菜单管理:详细操作有新建、修改、删除栏目等功能。
(3)系统查询管理:信息查询是管理系统必不可少功能,在系统界面进行输入查询条件,查询出来信息可以进行查看详细,修改,删除操作。
另一方面,在以客户为中心,以客户价值为导向手段协同管理思想和效率营销方式进一步当代公司,使用客户关系管理系统管理公司寻常事务已成为当代公司最惯用一种方式,其中信息管理提供已经成为不可或缺一某些内容。建立客户信息管理系统有如下几点意义:
(1)提高服务质量:一种好客户管理系统,不但大大以便了客户,也提高了公司经营管理水平,迅速文档解决,也使得减少了整顿文档时间,清晰精确账单、数据表格,也是一种高档次享有。
(2)提高工作效率:严格数据检查可避免手工操作疏忽而导致错误,减轻职工工作压力,从而提高工作效率。
(3)全面理解客户信息:完备报表功能和查询功能使管理者可及时理解各部门营业状况,加强系统管理,有助于实现公司当代化,提高各项经济指标,为公司获得良好经济效益提供充分保证。
(4)完善公司内部管理机制:提供各种安全级别,保证各类数据不被无权过问人观看和操作,提高系统安全可靠性、维修性,保持系统精度和性能,使之经常处在良好技术状态,使公司充分发挥计算机管理能力、提高办公效率。
二、系统体系架构设计
系统建设核心在于其所使用架构。基于浏览器B/S架构则是当前WEB应用程序主流。它将大量数据解决工作交给服务器解决,无论是管理人员还是系统使用者都可以通过浏览器实现所有操作。这种方式长处是以便快捷,有助于系统更新和维护。图一为基于B/S三层体系构造图:
B/S(Browser/Server)构造即浏览器和服务器构造。它是随着Internet技术兴起,对C/S构造一种变化或者改进构造。在这种构造下,顾客工作界面是通过WWW浏览器来实现,很少某些事务逻辑在前端(Browser)实现,但是重要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier构造。对于B/S而言,开发、维护等几乎所有工作也都集中在服务器端,当公司对网络应用进行升级时,只需更新服务器端软件就可以,这减轻了异地顾客系统维护与升级成本。如果客户端软件系统升级比较频繁,那么B/S架构产品优势明显,所有升级操作只需要针对服务器进行,这对那些点多面广应用是很有价值,例如某些招聘网站就需要采用B/S模式,客户端分散,且应用简朴,只需要进行简朴浏览和少量信息录入。
1.B/S构造长处:
(1)具备分布性特点,可以随时随处进行查询、浏览等业务解决。
(2)业务扩展简朴以便,通过增长网页即可增长服务器功能。
(3)维护简朴以便,只需要变化网页,即可实现所有顾客同步更新。
2. 系统开发平台:
本系统选取开发平台是:WAMP(Windows/Apache/Mysql/PHP),Windows下Apache+Mysql+PHP,一组惯用来搭建动态网站或者服务器开源软件,自身都是各自独立程序,但是由于常被放在一起使用,拥有了越来越高兼容度,共同构成了一种强大Web应用程序平台。
当前有不少AMP(Apache\MySQL\PHP)集成软件,可以让咱们一次安装并设立好。这对于不熟悉AMP顾客来说,好处多多。使用AMP集成软件长处:
(1)可避免由于缺少AMP知识,而无法对的设立环境;
(2)可迅速安装并设立好AMP环境,让咱们直接开始真正感兴趣软件,如xoops;
(3)可以便搭建测试环境,对于测试“是AMP环境问题,还是XOOPS导致问题”很有协助,采用排除法即可。
三、数据库设计
(1)数据库开发平台选取:MySQL是一种开放源代码关系型数据库管理系统(RDBMS),MySQL数据库系统使用最惯用数据库管理语言--构造化查询语言(SQL)进行数据库管理。MySQL关系型数据库使用系统核心提供多线程机制提供完全多线程运营模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言编程接口(APIs),支持各种字段类型并且提供了完整操作符支持查询中SELECT和WHERE操作。
(2)管理工具:Navicat for MySQL是一套专为 MySQL 设计高性能数据库管理及开发工具。它可以用于任何版本 3.21 或以上 MySQL 数据库服务器,并支持大部份 MySQL 最新版本功能,涉及触发器、存储过程、函数、事件、视图、管理顾客等。涉及客户基本信息、服务信息、客户活动等信息。
客户表基本构造
序号
字段名
数据类型
大小
默认值
容许为空
唯一
主键
自增
描述
1
cust_no
char
17
否
是
是
否
客户编号
2
cust_name
varchar
100
否
是
否
否
客户名称
3
cust_region
money
11
是
否
否
否
地区
4
cust_manager_id
varchar
50
0
是
否
否
否
客户经理编号
5
cust_manager_name
Varchar
50
是
否
否
否
客户经理名字
6
cust_level
int
是
否
否
否
客户级别
7
cust_level_label
varchar
50
是
否
否
否
客户级别标签
8
cust_satisfy
int
是
否
否
否
客户满意度
9
cust_credit
int
是
否
否
否
客户信用度
10
cust_addr
varchar
300
是
否
否
否
客户地址
11
cust_zip
varchar
10
是
否
否
否
邮编
12
cust_tel
varchar
50
是
否
否
否
电话
13
cust_fax
varchar
50
是
否
否
否
传真
14
cust_website
varchar
50
是
否
否
否
网址
15
cust_licence_no
varchar
50
是
否
否
否
营业执照注册号
16
cust_chieftain
varchar
50
是
否
否
否
法人
17
cust_bankroll
bigint
是
否
否
否
注册资金
18
cust_turnover
bigint
是
否
否
否
年营业额
19
cust_bank
varchar
200
是
否
否
否
开户银行
20
cust_bank_account
varchar
50
是
否
否
否
银行账户
21
cust_local_tax_no
varchar
50
是
否
否
否
地税登记号
22
cust_national_tax_no
varchar
50
是
否
否
否
国税登记号
23
cust_status
varchar
2
是
否
否
否
客户状态
服务表基本构造
序号
字段名
数据类型
大小
默认值
容许为空
唯一
主键
自增
描述
1
svr_id
bigint
否
是
是
是
系统变量
2
svr_type
varchar
50
是
否
否
否
服务类型
3
svr_title
varchar
50
是
否
否
否
服务标题
4
svr_cust_no
varchar
17
是
否
否
否
服务客户编号
5
svr_cust_name
varchar
50
是
否
否
否
服务客户名称
6
svr_status
varchar
10
是
否
否
否
服务状态
7
svr_request
varchar
text
是
否
否
否
服务祈求
8
svr_create_id
bigint
是
否
否
否
创立者id
9
svr_create_by
varchar
50
是
否
否
否
创立人
10
svr_create_date
datetime
是
否
否
否
创立日期
11
svr_due_id
bigint
是
否
否
否
分派给id
12
svr_due_to
varchar
50
是
否
否
否
分派给谁
13
svr_due_date
datetime
是
否
否
否
分派时间
14
svr_deal
varchar
text
是
否
否
否
服务解决
15
svr_deal_id
bigint
是
否
否
否
解决人id
16
svr_deal_by
varchar
50
是
否
否
否
解决人
17
svr_deal_date
datetime
是
否
否
否
解决日期
18
svr_result
varchar
500
是
否
否
否
解决成果
19
svr_satisfy
int
是
否
否
否
满意度
客户活动表基本构造
序号
字段名
数据类型
大小
默认值
容许为空
唯一
主键
自增
描述
1
atv_id
bigint
否
是
是
是
活动编号
2
atv_cust_no
varchar
17
是
是
是
是
客户编号
3
atv_cust_name
varchar
50
是
否
否
否
客户名称
4
atv_date
datetime
是
否
否
否
活动日期
5
atv_place
varchar
200
是
否
否
否
活动地址
6
atv_title
varchar
500
是
否
否
否
活动主题
7
atv_desc
varchar
text
是
否
否
否
后期合伙状况
四、系统目录构造设计
图一
图二
其中:
子目录CSS用来存储所有层叠样式表,用来统一控制整个系统样式;
子目录JS用来存储系统中使用javascript代码;
子目录PIC用来存储系统中使用图片;
子目录database用来存储系统数据库备份;
文献add.php实现客户信息添加功能;
文献browse.php实现客户信息浏览功能;
文献edit.php实现客户信息编辑与修改功能;
文献delete.php实现客户信息删除功能;
文献search.php实现客户信息查询功能;
五、系统功能设计
本模块重要是对客户进行评价,涉及五个子模块。信息采集入库模块完毕各三级指标原始数据自动采集(通过正则匹配实现)与基本解决(计算各三级指标原始得分),并存入数据库。指标管理模块重要运用层次分析法计算拟定评价指标体系权重,并进行管理维护。
(1)浏览功能:数据库技术是实现动态网页技术必要手段,浏览者看到内容事实上就是数据库中数据。在进行页面显示时,浏览器将数据库内容进行了转换,数据库在此过程中起着一种中间媒介作用。数据库设计基本规定是保证数据完整性和一致性。
(2)查询功能:该主界面重要实现了整个系统操作功能调用操作,并且显示当前登录顾客名。在协助菜单中有对该系统操作阐明以及关于程序信息。系统还添加了一种系统时间,以便客户合理安排时间。
(3)添加功能:当有新顾客需要注册系统会员,其客户信息需要及时添加到系统中去以以便客户信息科学有效地管理,虽然更新等工作开展,因而作为客户信息管理系统添加客户信息功能非常重要,本系统固然也不例外,当要加入新客户信息时,咱们只要将有关客户信息填写完毕,重要涉及顾客ID、客户姓名、顾客性别、出生年月、备注等。
(4)删除功能:该功能重要是为了以便管理而设立,即有些客户已退出本系统,因而要将其有关信息从客户信息体统中删除,与修改客户信息相似,在删除之前要先进行搜索,当所找信息确认无误时,点击“删除”按钮就可以将信息删除了。
(5)修改功能:修改顾客信息功能重要是针对客户信息变动来设计,例如办公电话、邮箱、通讯地址变动,咱们都会重新进行登记,及时更新以便做好对客户信息有效管理。在实现该环节时候要先进行搜索,因而修改是对搜索功能延伸,搜索到了原先客户信息之后进行重新登记,然后点击“拟定”按钮就可以将客户信息进行保存了。
六、系统实现
1.登陆功能
使用者在浏览器中输入http://localhost:8080/CustomerRMS/login.action便可进入
图4.1
图4.2
public class LoginAction {
private String usrName;// 登陆账号
private String usrPassword;// 密码
private SysUserBiz subiz;
public String execute() throws Exception {
SysUser user = subiz.login(usrName,usrPassword);
if (user != null) {
ActionContext.getContext().getSession().put("user",user);
return "success";
} else {
return "error";
}}}
public class SysUserBiz {
public SysUser login(String usrName ,String usrPassword){
SysUser user=null;
String hql="select su from SysUser as su where su.usrName='"+usrName+"'and su.usrPassword='"+usrPassword+"'";
List list=sysuserDao.list(hql);
if(list!=null && list.size()>0){
user=(SysUser) list.get(0);
}
return user;}}
<action name="login" class="com.crms.action.LoginAction">
<result name="success">index.jsp</result>
<result name="error"> error.jsp</result>
</action>
2.查询功能
public class AssignSalesUserAction {
private long chcDueId;
private String chcDueTo;
private String chcDueDate;
private String chcStatus;
private SalesMBiz smbiz;
private SysUserBiz subiz;
private SalChance chance=new SalChance();
private SysUser user;
public String execute() throws Exception{
Date d = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
user=subiz.getSysUserById(chcDueId);
SalChance chancetemp=smbiz.getChanceById(chance.getChcId());
chancetemp.setChcDueId(chcDueId);
chancetemp.setChcDueTo(user.getUsrName());
chancetemp.setChcCreateDate(sf.format(d));
chancetemp.setChcStatus("已指派"); // "2" 为已指派
smbiz.updateChance(chancetemp);
return "success";
}
}
<action name="show" class="com.crms.action.ShowCstAction">
<!-- 跳转 -->
<result name="success" >sale/dev_detail.jsp</result>
</action>
3.添加功能
当有新顾客需要注册系统会员,其客户信息需要及时添加到系统中去以以便客户信息科学有效地管理,虽然更新等工作开展,因而作为客户信息管理系统添加客户信息功能非常重要,本系统固然也不例外,当要加入新客户信息时,咱们只要将有关客户信息填写完毕,重要涉及顾客ID、客户姓名、顾客性别、出生年月、备注等。
public class EditBasDictAction {
private Long dictId;
private String dictType;
private String dictItem;
private String dictValue;
private Boolean dictIsEditable;
private BasDict plan = new BasDict();
public String execute() throws Exception {
BasDict ddict = basbiz.getBasDictById(dictId);
ddict.setDictIsEditable(plan.getDictIsEditable());
ddict.setDictItem(plan.getDictItem());
ddict.setDictType(plan.getDictType());
ddict.setDictValue(plan.getDictValue());
basbiz.updateBasDict(ddict);
return "ww";}}
<action name="editbasdict" class="com.crms.action.EditBasDictAction">
<result name="ww" type="redirect">listbasdict.action?flag=1</result>
</action>
<s:if test="dictIsEditable==true">
<img onClick="to('showbasdict.action?dictId=<s:property value="dictId"/>');" title="编辑" src="images/bt_edit.gif" class="op_button" /></s:if>
4.删除功能
该功能重要是为了以便管理而设立,即有些客户已退出本系统,因而要将其有关信息从客户信息体统中删除,与修改客户信息相似,在删除之前要先进行搜索,当所找信息确认无误时,点击“删除”按钮就可以将信息删除了。
public class EditPasswordAction {
private Long usrId;
private SysUser user=new SysUser();
private String usrPassword1;
private String usrName;
public String execute()throws Exception{
SysUser user=(SysUser)ActionContext.getContext().getSession().get("user");
boolean flag = subiz.CheckPasswordByName(user.getUsrName(),usrPassword1);
HttpServletResponse rsp = ServletActionContext.getResponse();
rsp.setCharacterEncoding("gbk");
PrintWriter print = rsp.getWriter();
if(!flag){
print.write("<script>alert('旧口令不对的');window.location.href='editpassword.jsp'</script>");
}else{
user.setUsrPassword(usrPassword2);
subiz.updateUser(user);
print.write("<script>alert('口令修改成功');window.close();window.location.href='returnlogin.jsp'</script>");
}
return null;//由于是Ajax调用,不进行跳转
}}
5.修改功能
修改顾客信息功能重要是针对客户信息变动来设计,例如办公电话、邮箱、通讯地址变动,咱们都会重新进行登记,及时更新以便做好对客户信息有效管理。在实现该环节时候要先进行搜索,因而修改是对搜索功能延伸,搜索到了原先客户信息之后进行重新登记,然后点击“拟定”按钮就可以将客户信息进行保存了。
private ConnectionDao() {
}
public static Connection getConnection() throws Exception {
try {
Class.forName(DRIVER_CLASS);
Connection con = DriverManager.getConnection(DATABASE_URL,
USER_NAME,PASSWORD);
return con;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
展开阅读全文