## 一、项目简介
客户信息管理系统,基于SSM实现的客户信息管理系统
## 二、技术实现
后台框架:Spring、SpringMVC、MyBatis
UI界面:JSP、jQuery 、BootStrap
数据库:MySQL
## 三、系统功能
该客户信息管理系统以实际运用为开发背景,采用Eclipse开发工具,Java开发语言,使用JSP设计页面,Tomcat服务器作为Web服务器,数据的存储使用MySQL数据库,从而保证系统的稳定性。系统设计按标准化、规范化、分层设计、构件化进行相关功能的实现。
本系统主要分为三种角色,分别是:管理员、客户经理、营销主管,其功能如下:
1.管理员
主要功能包括:员工信息管理、产品信息管理、客户信息管理、服务信息管理、交易信息管理、客户来源管理、支付方式管理、产品类型管理、职位信息管理、服务类型管理、客户等级管理、客户开发进度管理。
2.客户经理
主要功能包括:产品信息管理、客户信息管理、服务信息管理、交易信息管理、基础信息查询。
3.营销主管
主要功能包括:员工信息管理、产品信息管理、客户信息管理、服务信息管理、交易信息管理、基础信息查询。
该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
1)系统登陆页面

2)员工信息管理

3)产品信息管理

4)客户信息管理

5)新增客户信息

6)客户信息分析

7)客户等级管理

## 四、环境搭建
运行环境:
- JDK 8
- Eclipse
- Tomcat 7
- MySQL 5.7
### 1. 安装JDK
安装文件:<img src="assets/image-20200222102529443.png" width="250px">
安装步骤:
1. 双击`jdk-8u171-windows-x64.exe`安装JDK
2. 出现提示时点击"下一步"即可
### 2. 安装Eclipse
安装文件:<img src="assets/image-20200222102110409.png" width="300px">
安装步骤:
1. 右击`eclipse-jee-luna-SR2-win32-x86_64.zip`解压到当前文件夹
2. 双击解压目录下的`eclipse.exe`
### 3. 安装Tomcat
安装文件:<img src="assets/image-20200222134224458.png" width="250px">
安装步骤:
1. 右击`apache-tomcat-7.0.93.zip`解压到当前文件夹
2. 将Tomcat关联到Eclipse中
### 4. 安装MySQL
安装文件:
- MySQL服务器 <img src="assets/image-20200222133308179.png" width="250px">
- MySQL客户端 <img src="assets/image-20200222134224457.png" width="250px">
安装步骤:
1. 双击`phpstudy_x64_8.1.1.3.exe`安装MySQL服务器
2. 双击` Navicat_Premium_11.0.8.exe `安装MySQL客户端
3. 使用Navicat连接MySQL服务器
## 五、部署项目
步骤:
1. 导入数据库脚本
2. 导入项目代码
3. 部署运行项目
## 六、项目演示
访问地址:http://localhost:8080/ssm_crm/
- 超级管理员:admin 密码:admin
- 客户经理:tom 密码:123
- 营销主管:jack 密码:123
# 基于SSM框架的现代化客户信息管理系统开发实践
## 一、项目概述
在数字化转型浪潮中,客户关系管理(CRM)系统已成为企业提升竞争力的核心工具。本文将介绍一个基于Spring+SpringMVC+MyBatis(SSM)框架的客户信息管理系统开发实践,项目采用经典三层架构设计,整合JSP、jQuery、Bootstrap等前端技术,构建了一个功能完善、操作便捷的企业级CRM解决方案。
## 二、技术选型分析
### 后端技术栈
- **核心框架**:Spring 4.3.x + SpringMVC 4.3.x
- **持久层**:MyBatis 3.4.x
- **事务管理**:Spring声明式事务
- **安全框架**:Spring Security(预留扩展接口)
- **日志系统**:Log4j 1.2.x
### 前端技术栈
- **视图层**:JSP 2.3 + JSTL 1.2
- **UI框架**:Bootstrap 3.3.7 + AdminLTE 2.4
- **交互增强**:jQuery 1.12.4 + jQuery Validation
- **图表展示**:ECharts 3.x(预留扩展接口)
### 开发环境
```
开发工具:Eclipse IDE for Java EE Developers (Luna SR2)
版本控制:SVN 1.8+
构建工具:Maven 3.3.9(项目预留配置)
服务器:Tomcat 7.0.93
数据库:MySQL 5.7.28
JDK版本:1.8.0_171
```
## 三、系统架构设计
### 1. 分层架构实现
```
/ssm_crm
├── src/
│ ├── main/
│ │ ├── java/com/crm/
│ │ │ ├── controller/ # 控制层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ ├── impl/ # 业务实现
│ │ │ ├── dao/ # 数据访问层
│ │ │ ├── model/ # 实体类
│ │ │ └── util/ # 工具类
│ │ ├── resources/
│ │ │ ├── mapper/ # MyBatis映射文件
│ │ │ ├── spring/ # Spring配置文件
│ │ │ └── config.properties # 系统配置
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ └── views/ # JSP视图
│ │ ├── static/ # 静态资源
│ │ └── index.jsp # 入口页面
```
### 2. 核心配置示例
**SpringMVC配置(spring-mvc.xml)**:
```xml
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyy-MM-dd HH:mm:ss"/>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
```
**MyBatis配置(mybatis-config.xml)**:
```xml
<typeAliases>
<package name="com.crm.model"/>
</typeAliases>
<mappers>
<package name="com.crm.dao"/>
</mappers>
```
## 四、核心功能实现
### 1. 多角色权限控制
系统实现基于URL的权限控制,通过Spring拦截器实现:
```java
public class AuthInterceptor implements HandlerInterceptor {
@Autowired
private UserService userService;
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
String uri = request.getRequestURI();
HttpSession session = request.getSession();
User user = (User) session.getAttribute("currentUser");
if (uri.startsWith("/static/") || uri.equals("/login")) {
return true;
}
if (user == null) {
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
// 检查权限(示例)
if (uri.startsWith("/admin/") && !user.getRole().equals("ADMIN")) {
response.sendRedirect(request.getContextPath() + "/403");
return false;
}
return true;
}
}
```
### 2. 客户信息管理模块
**Controller层实现**:
```java
@Controller
@RequestMapping("/customer")
public class CustomerController {
@Autowired
private CustomerService customerService;
@RequestMapping("/list")
public String list(Model model,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(required = false) String keyword) {
PageInfo<Customer> pageInfo = customerService.findPage(
pageNum, 10, keyword);
model.addAttribute("pageInfo", pageInfo);
model.addAttribute("keyword", keyword);
return "customer/list";
}
@RequestMapping("/add")
@ResponseBody
public Result add(@Valid Customer customer, BindingResult result) {
if (result.hasErrors()) {
return Result.fail(result.getAllErrors().get(0).getDefaultMessage());
}
customerService.save(customer);
return Result.success();
}
}
```
**MyBatis映射文件**:
```xml
<!-- CustomerMapper.xml -->
<mapper namespace="com.crm.dao.CustomerDao">
<select id="findPage" resultType="Customer">
SELECT c.*, l.name as level_name
FROM customer c
LEFT JOIN customer_level l ON c.level_id = l.id
<where>
<if test="keyword != null and keyword != ''">
AND (c.name LIKE CONCAT('%', #{keyword}, '%')
OR c.phone LIKE CONCAT('%', #{keyword}, '%'))
</if>
</where>
ORDER BY c.create_time DESC
</select>
</mapper>
```
### 3. 数据可视化分析
**ECharts集成示例**:
```javascript
// 客户等级分布图表
function renderLevelChart() {
$.get('/customer/analysis/level', function(data) {
var chart = echarts.init(document.getElementById('levelChart'));
var option = {
title: { text: '客户等级分布' },
tooltip: {},
legend: { data: ['数量'] },
xAxis: { data: data.map(item => item.levelName) },
yAxis: {},
series: [{
name: '数量',
type: 'bar',
data: data.map(item => item.count)
}]
};
chart.setOption(option);
});
}
```
## 五、系统部署指南
### 1. 环境准备
1. **安装JDK 8**:
- 下载jdk-8u171-windows-x64.exe
- 双击安装,配置JAVA_HOME环境变量
2. **安装MySQL 5.7**:
- 使用phpstudy集成环境快速安装
- 执行初始化脚本创建数据库:
```sql
CREATE DATABASE crm_system DEFAULT CHARACTER SET utf8mb4;
USE crm_system;
SOURCE D:/crm_init.sql;
```
3. **配置Tomcat**:
- 解压apache-tomcat-7.0.93.zip
- 在Eclipse中配置服务器:
- Window → Preferences → Server → Runtime Environments
- 添加Apache Tomcat v7.0,指定安装目录
### 2. 项目导入与部署
1. **导入项目**:
- File → Import → Maven → Existing Maven Projects
- 选择项目根目录,确保pom.xml被识别
2. **配置数据库连接**:
- 修改`src/main/resources/config.properties`:
```properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/crm_system?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
```
3. **部署运行**:
- 右键项目 → Run As → Run on Server
- 选择配置好的Tomcat 7服务器
- 访问地址:http://localhost:8080/ssm_crm/
## 六、系统功能演示
### 1. 登录界面

- 支持三种角色登录:
- 超级管理员:admin/admin
- 客户经理:tom/123
- 营销主管:jack/123
### 2. 客户信息管理

- 支持分页查询、条件筛选
- 提供新增/编辑/删除操作
- 显示客户详细信息卡片
### 3. 数据可视化分析

- 客户等级分布图表
- 客户开发进度看板
- 销售趋势分析(预留功能)
## 七、常见问题解决
1. **中文乱码问题**:
- 确保数据库连接URL添加`useUnicode=true&characterEncoding=utf8`
- 在Tomcat的server.xml中添加URIEncoding属性:
```xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
```
2. **MyBatis映射错误**:
- 检查mapper命名空间是否与接口全限定名一致
- 确保resultType/resultMap配置正确
- 使用MyBatis Generator自动生成基础映射文件
3. **Session超时问题**:
- 在web.xml中配置session超时时间:
```xml
<session-config>
<session-timeout>30</session-timeout> <!-- 30分钟 -->
</session-config>
```
## 八、项目扩展建议
1. **技术升级**:
- 迁移到SpringBoot 2.x
- 引入Spring Security实现完整权限控制
- 使用Redis缓存热点数据
2. **功能增强**:
- 添加客户行为跟踪模块
- 实现移动端适配
- 集成第三方短信/邮件服务
3. **性能优化**:
- 添加数据库索引优化查询
- 实现分表分库策略
- 使用异步处理提高响应速度
## 结语
本系统通过SSM经典框架组合,实现了企业级CRM系统的核心功能,具有架构清晰、扩展性强、维护方便等特点。项目完整实现了从数据库设计到前端展示的全流程开发,既适合作为学习SSM框架的实践项目,也可作为企业CRM系统的开发参考。
完整项目源码及数据库脚本已打包提供,欢迎下载学习。对于实际生产环境部署,建议进行安全加固和性能优化,添加操作日志、数据备份等企业级功能模块。










































