基于Servlet的CRM客户关系管理系统

简介: 基于Servlet的CRM客户关系管理系统

1.需求分析

客户是公司最宝贵的资源,为了更好的发掘老客户的价值,并开发更多新客户,公司实施客户关系管理系统。系统的功能是:通过这个系统完成对员工基本信息、客户基本信息、交往信息、客户服务信息的充分共享和规范化管理;通过对销售机会、客户开发过程的追踪和记录,提高新客户的开发能力;在客户将要流失时系统及时预警,以便销售人员及时采取措施,降低损失。

客户服务水平的高低决定着公司的核心竞争力。该客户关系管理系统提供一个客户服务在线平台,使客户服务处理过程中的相关人员可以在线完成服务的处理和记录工作。

1.1 功能需求分析

功能需求分析目的是为了对每一个模块和模块内每一个小的功能点进行规划和设计,为之后的开发打好信息基础做好准备。根据对收集的用户问询馈意见,需要对系统的前端和后台进行总体布局设计。

本客户关系管理系统,旨在为所有用户提供如下功能:

(1)需要对企业信息进行统一管理,以提升公司的管理规范,对人员信息管理更加规范;

(2)当企业用户发掘下新客户时,需要将客户录入系统并将客户联系人进行管理,方便后续跟踪拜访客户;

(3)当企业员工对客户进行拜访后,需将拜访信息录入系统,方便管理自己对客户的跟踪情况;也方便系统提示自己下次拜访客户时间,根据每次拜访记录可分析客户的目前状态等;

(4)根据系统现有数据呈现可视化统计图,图文并茂呈现出结果,使管理者可清晰看到自己感兴趣的数据。

1.2 用户需求分析

CRM系统是指利用信息化手段将客户、拜访记录等做一个管理,从而提升工作效率、业绩及其公司管理水平。因此,开发客户关系管理系统,首先需要明确现阶段整个系统需要实现的功能。本系统主要是企业用户进行使用。

用户登录后,可以进行客户管理、联系人管理、拜访客户、统计查看操作。

(1)用户登录

用户输入正确的用户名、密码的用户才能登陆成功并自动取得获得授予的对应访问权限,退出登录应移出用户状态。

(2)用户功能

·客户管理

对客户信息进行进行增、删、改、查操作。

·联系人管理

对联系人进行增、删、改、查操作。

·拜访跟踪

对已录入客户进行拜访跟踪信息记录、查询。

·统计

按照来源、行业等对信息进行可视化统计展示。

2.E-R图与关系模式设计

2.1 E-R图

2.1.1 实体分析描述

从用户角度来说,数据库的需求主要体现在对数据库表的增删改查。因此,数据库结构需同时满足两个要素:输入、输出。在进行数据设计时,首先需收集数据,然后分析数据结构,最后处理数据。根据本系统的需求,设计以下主要的数据项和数据结构:

(1)用户实体:用户id、用户账号、用户名称、用户密码、用户状态。

(2)联系人实体:联系人编号、联系人姓名、客户id、联系人性别、联系人办公电话、联系人手机、联系人邮箱、联系人qq、联系人职位、联系人备注。

(3)客户实体:客户编号、客户名称(公司名称)、客户信息来源、客户所属行业、客户级别、固定电话、移动电话。

(4)客户详情实体:客户编号、客户地区、客户邮政编码、客户联系地址、客户传真、客户网址、客户营业执照注册号、企业法人、客户注册资金、开户银行及账号、客户资质图片、客户简介。

(5)数据字典实体:数据字典id、数据字典类别代码、数据字典类别名称、数据字典项目名称、数据字典项目、排序字段、状态、备注。

2.1.2 实体E-R图

用户实体如图1.1所示。

图1.1 用户实体

联系人实体如图1.2所示。

图1.2 联系人实体

客户实体如图1.3所示。

图1.3 客户实体

客户详情实体如图1.4所示。

图1.4 客户详情实体

2.1.3 整体E-R图

图1.5 整体E-R图

2.2关系模式

关系模式:用户信息(用户id、用户账号、用户名称、用户密码、用户状态)

模式判定:用户信息∈2NF,且每个非主属性都不传递函数依赖于员工信息的主关系键,所以用户信息∈3NF

关系模式:联系人信息(联系人编号、联系人姓名、客户id、联系人性别、联系人办公电话、联系人手机、联系人邮箱、联系人qq、联系人职位、联系人备注)

模式判定:联系人信息∈2NF,且每个非主属性都不传递函数依赖于部门信息的主关系键,所以联系人信息∈3NF

关系模式:客户信息(客户编号、客户名称(公司名称)、客户信息来源、客户所属行业、客户级别、固定电话、移动电话)

模式判定:客户信息∈2NF,且每个非主属性都不传递函数依赖于工资信息的主关系键,所以客户信息∈3NF

关系模式:客户详情信息(客户编号、客户地区、客户邮政编码、客户联系地址、客户传真、客户网址、客户营业执照注册号、企业法人、客户注册资金、开户银行及账号、客户资质图片、客户简介)

模式判定:客户详情信息∈2NF,且每个非主属性都不传递函数依赖于考勤信息的主关系键,所以客户详情信息∈3NF

关系模式:数据字典信息(数据字典id、数据字典类别代码、数据字典类别名称、数据字典项目名称、数据字典项目、排序字段、状态、备注)

模式判定:数据字典信息∈2NF,且每个非主属性都不传递函数依赖于津贴信息的主关系键,所以数据字典信息∈3NF

关系模式:客户拜访信息(客户拜访id、客户id、用户id、拜访时间、拜访地址、拜访详情、下次拜访时间)

模式判定:客户拜访信息∈2NF,且每个非主属性都不传递函数依赖于津贴信息的主关系键,所以数据字典信息∈3NF

2.3 数据库表结构

表2.1 用户表sys_user

属性名

字段名

数据类型

长度

是否允许为空

是否主键

用户id

user_id

bigint

0

不允许

用户账号

user_code

varchar

32

允许

用户名称

user_name

varchar

64

允许

用户密码

user_password

varchar

32

允许

用户状态

user_state

varchar

2

允许

表2.2 联系人表cst_linkman

属性名

字段名

数据类型

长度

是否允许为空

是否主键

联系人编号

lkm_id

int

0

不允许

联系人姓名

lkm_name

varchar

16

允许

客户id

lkm_cust_id

bigint

16

允许

联系人性别

lkm_gender

varchar

0

允许

联系人办公电话

lkm_phone

varchar

16

允许

联系人手机

lkm_mobile

varchar

16

允许

联系人邮箱

lkm_email

varchar

16

允许

联系人qq

lkm_qq

varchar

16

允许

联系人职位

lkm_position

varchar

16

允许

联系人备注

lkm_memo

varchar

512

允许

表2.3 客户表cst_customer

属性名

字段名

数据类型

长度

是否允许为空

是否主键

客户编号

cust_id

int

0

不允许

客户名称(公司名称)

cust_name

varchar

32

允许

客户信息来源

cust_source

varchar

32

允许

客户所属行业

cust_industry

varchar

32

允许

客户级别

cust_level

varchar

32

允许

固定电话

cust_phone

varchar

32

允许

移动电话

cust_mobile

varchar

32

允许

表2.4 客户详情表cst_customer_detail

属性名

字段名

数据类型

长度

是否允许为空

是否主键

客户编号

cust_id

int

0

不允许

客户地区

cust_region

varchar

64

允许

客户邮政编码

cust_zip

varchar

16

允许

客户联系地址

cust_address

varchar

128

允许

客户传真

cust_fax

varchar

64

允许

客户网址

cust_website

varchar

128

允许

客户营业执照注册号

cust_licence

varchar

64

允许

企业法人

cust_corporation

varchar

64

允许

客户注册资金

cust_capital

bigint

0

允许

开户银行及账号

cust_bank

varchar

20

允许

客户资质图片

cust_pic

varchar

64

允许

客户简介

cust_memo

longtext

0

允许

表2.5 基础数据字典表base_dict

属性名

字段名

数据类型

长度

是否允许为空

是否主键

数据字典id

dict_id

int

0

不允许

数据字典类别代码

dict_type_code

varchar

32

允许

数据字典类别名称

dict_type_name

varchar

10

允许

数据字典项目名称

dict_item_name

varchar

64

允许

数据字典项目

dict_item_code

varchar

64

允许

排序字段

dict_sort

varchar

10

允许

状态

dict_enable

varchar

1

允许

备注

dict_memo

varchar

64

允许

表2.6 客户拜访表sale_visit

属性名

字段名

数据类型

长度

是否允许为空

是否主键

客户拜访id

visit_id

int

0

不允许

客户id

visit_cust_id

bigint

0

允许

用户id

visit_user_id

bigint

0

允许

拜访时间

visit_time

date

0

允许

拜访地址

visit_addr

varchar

128

允许

拜访详情

visit_detail

varchar

256

允许

下次拜访时间

visit_nexttime

date

0

允许

3.实现效果

(1)登录

(2) 系统主界面

(3)新增客户

(4)客户列表

(5)新增联系人

(6)联系人列表

(7) 新增客户拜访

(8)客户拜访列表

4.数据库核心

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for base_dict
-- ----------------------------
DROP TABLE IF EXISTS `base_dict`;
CREATE TABLE `base_dict`  (
  `dict_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据字典id(主键)',
  `dict_type_code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据字典类别代码',
  `dict_type_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据字典类别名称',
  `dict_item_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据字典项目名称',
  `dict_item_code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据字典项目(可为空)',
  `dict_sort` int(10) NULL DEFAULT NULL COMMENT '排序字段',
  `dict_enable` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '1:使用 0:停用',
  `dict_memo` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of base_dict
-- ----------------------------
INSERT INTO `base_dict` VALUES ('1', '001', '客户行业', '教育培训 ', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('10', '003', '公司性质', '民企', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('12', '004', '年营业额', '1-10万', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('13', '004', '年营业额', '10-20万', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('14', '004', '年营业额', '20-50万', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('15', '004', '年营业额', '50-100万', NULL, 4, '1', NULL);
INSERT INTO `base_dict` VALUES ('16', '004', '年营业额', '100-500万', NULL, 5, '1', NULL);
INSERT INTO `base_dict` VALUES ('17', '004', '年营业额', '500-1000万', NULL, 6, '1', NULL);
INSERT INTO `base_dict` VALUES ('18', '005', '客户状态', '基础客户', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('19', '005', '客户状态', '潜在客户', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('2', '001', '客户行业', '电子商务', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('20', '005', '客户状态', '成功客户', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('21', '005', '客户状态', '无效客户', NULL, 4, '1', NULL);
INSERT INTO `base_dict` VALUES ('22', '006', '客户级别', '普通客户', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('23', '006', '客户级别', 'VIP客户', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('24', '007', '商机状态', '意向客户', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('25', '007', '商机状态', '初步沟通', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('26', '007', '商机状态', '深度沟通', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('27', '007', '商机状态', '签订合同', NULL, 4, '1', NULL);
INSERT INTO `base_dict` VALUES ('3', '001', '客户行业', '对外贸易', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('30', '008', '商机类型', '新业务', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('31', '008', '商机类型', '现有业务', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('32', '009', '商机来源', '电话营销', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('33', '009', '商机来源', '网络营销', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('34', '009', '商机来源', '推广活动', NULL, 3, '1', NULL);
INSERT INTO `base_dict` VALUES ('4', '001', '客户行业', '酒店旅游', NULL, 4, '1', NULL);
INSERT INTO `base_dict` VALUES ('5', '001', '客户行业', '房地产', NULL, 5, '1', NULL);
INSERT INTO `base_dict` VALUES ('6', '002', '客户信息来源', '电话营销', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('7', '002', '客户信息来源', '网络营销', NULL, 2, '1', NULL);
INSERT INTO `base_dict` VALUES ('8', '003', '公司性质', '合资', NULL, 1, '1', NULL);
INSERT INTO `base_dict` VALUES ('9', '003', '公司性质', '国企', NULL, 2, '1', NULL);
SET FOREIGN_KEY_CHECKS = 1;

5.核心代码

public class BaseDao {
    //驱动
    private static String driver = "com.mysql.jdbc.Driver";
    //url
    private static String url = "jdbc:mysql://localhost:3306/crm?characterEncoding=utf-8";
    //用户名
    private static String username = "root";
    //密码
    private static String pwd = "root";
    /**
     * 创建连接
     * @return
     */
    public static Connection getConnection(){
        Connection connection=null;
        //加载驱动
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        //建立连接获取Connection对象
        try {
            connection= DriverManager.getConnection(url,username,pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
    /**
     * 关闭链接
     * @param connection
     * @param statement
     * @param resultSet
     */
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet){
        try {
            if(resultSet!=null){
                resultSet.close();
            }
            if(statement!=null){
                statement.close();
            }
            if (connection!=null){
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**
     * 执行增、删、改的方法
     * @param sql
     * @return
     */
    public static int execute(String sql){
        //获取链接
        Connection connection=getConnection();
        int flag=0;
        try {
            //创建Statement对象
            Statement statement=connection.createStatement();
            //执行sql语句
            flag=statement.executeUpdate(sql);
            //关闭链接
            closeAll(connection,statement,null);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }
    /*
      测试
     */
    public static void main(String[] args) {
        String sql = "SELECT * FROM `cm_cst`.`base_dict`  WHERE dict_id = 1";
        Connection connection = getConnection();
        Statement statement = null;
        try {
            statement= connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            while(resultSet.next()){
                String typename = resultSet.getString(3);
                System.out.println("类别名称"+typename);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


相关文章
|
25天前
|
机器学习/深度学习 人工智能 安全
精选CRM软件:顶级客户关系管理工具深度剖析
本文综合评测2024年顶级CRM工具,依据功能性、用户体验、集成能力、数据安全、客户支持及成本效益六大标准,深度剖析纷享销客、Salesforce、Microsoft Dynamics 365、用友CRM和SAP CRM等软件,为企业选型提供参考。
|
3月前
|
开发框架 人工智能 数据挖掘
2024年国产CRM软件排行榜:客户关系管理工具
CRM软件是企业数字化战略的核心,通过全渠道互动、客户细分和销售赋能提升竞争力。2024年,国产CRM软件凭借本土化优势、成本效益、政策支持和市场机会展现出强劲竞争力。销售易、白码CRM、悟空CRM、用友CRM、金蝶CRM、珍客CRM、八百客CRM和销帮帮CRM等名列前茅。选择CRM时需考虑本土化服务、技术兼容性和长期合作潜力等因素。随着国产CRM软件的崛起,企业应根据需求选择最适合的解决方案,实现客户关系管理和业务增长的优化。
|
3月前
|
搜索推荐
实现CRM与ERP系统无缝集成,优化客户关系管理
在当今竞争激烈的市场环境中,企业要想保持领先地位,必须高效地管理客户关系并优化内部资源。CRM(客户关系管理)系统与ERP(企业资源规划)系统的无缝集成,为企业提供了一种强大的工具,以实现这一目标
67 2
|
3月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
3月前
|
监控 搜索推荐 数据管理
crm客户管理系统来帮助企业管理和提高运营效率
crm系统帮助企业简化销售流程,提高工作效率。CRM 客户管理系统确实能够在多个方面帮助企业管理和提高运营效率,具体表现如下:
35 3
|
3月前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
39 0
|
4月前
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的客户关系管理(CRM)
【7月更文挑战第25天】 ERP系统中的客户关系管理(CRM)
383 3
|
3月前
|
数据挖掘 BI API
简单了解CRM与SaaS系统
本文介绍了CRM(客户关系管理系统)和SaaS(软件即服务)的概念、应用场景、两者之间的关系以及CRM接口的作用和设置流程,强调了SaaS模式为CRM系统提供了灵活、便捷、经济高效的使用方式,以及CRM接口在数据集成、自动化流程、功能扩展和数据分析方面的重要性。
114 0
|
4月前
|
存储 Python
在计算机管理系统工程中,我们利用计算机技术来构建、优化和管理各种系统,如企业资源规划(ERP)、客户关系管理(CRM)等。
。在计算机管理系统工程中,我们利用计算机技术来构建、优化和管理各种系统,如企业资源规划(ERP)、客户关系管理(CRM)等。
|
4月前
|
数据采集 存储 搜索推荐
CRM客户系统全解析:定义与企业应用
Zoho CRM是一个集成客户数据、销售流程、市场活动和客户服务的平台,助力企业提升效率和竞争力。它支持销售管理、客户细分及个性化营销,改善客户体验。系统在销售预测、客户档案管理和市场营销策略制定上发挥作用。然而,挑战包括系统集成、数据质量、员工培训和用户接纳。企业需克服这些挑战以确保CRM的有效运营。
70 2