一、源码特点
SSM 客户管理系统CRM是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
前段主要技术 html.css jquery
后端主要技术 SSM
数据库 mysql
开发工具 eclipse JDK1.8 TOMCAT 8.5
视频链接 https://www.bilibili.com/video/BV1Ru4y1L7bm/
二、功能介绍
本系统模块实现功能如下:
(1)员工管理:对员工信息进行添加、删除、修改和查看
(2)菜单管理:对菜单信息进行添加、删除、修改和查看
(3)菜单权限管理:对菜单权限信息进行添加、删除、修改和查看 动态菜单实现
(4)职位管理:对职位信息进行添加、删除、修改和查看
(5)客户管理:对客户信息进行添加、删除、修改和查看
(6)联系人管理:对联系人信息进行添加、删除、修改和查看
(7)商机管理:对商机信息进行添加、删除、修改和查看
(8)邮件管理:对邮件信息进行添加、删除、修改和查看
(9)任务管理:对任务信息进行添加、删除、修改和查看
(10)产品管理:对产品信息进行添加、删除、修改和查看
(11)个人信息修改、登录
数据库设计
(1)员工信息表如表5.1所示:
表5.1 员工信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | ygid | INTEGER | 11 | 是 | 员工编号 |
2 | yhm | VARCHAR | 40 | 否 | 用户名 |
3 | mm | VARCHAR | 40 | 否 | 密码 |
4 | xm | VARCHAR | 40 | 否 | 姓名 |
5 | qx | VARCHAR | 40 | 否 | 权限 |
6 | lxdh | VARCHAR | 40 | 否 | 联系电话 |
7 | lxdz | VARCHAR | 40 | 否 | 联系地址 |
8 | zw | VARCHAR | 40 | 否 | 职位 |
(2)菜单信息表如表5.2所示:
表5.2 菜单信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | cdid | INTEGER | 11 | 是 | 菜单编号 |
2 | cdmc | VARCHAR | 40 | 否 | 菜单名称 |
(3)菜单权限信息表如表5.3所示:
表5.3 菜单权限信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | cdqxid | INTEGER | 11 | 是 | 菜单权限编号 |
2 | cd | VARCHAR | 40 | 否 | 菜单 |
3 | qx | VARCHAR | 40 | 否 | 权限 |
(4)职位信息表如表5.4所示:
表5.4 职位信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | zwid | INTEGER | 11 | 是 | 职位编号 |
2 | zwmc | VARCHAR | 40 | 否 | 职位名称 |
3 | js | VARCHAR | 40 | 否 | 介绍 |
(5)客户信息表如表5.5所示:
表5.5 客户信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | khid | INTEGER | 11 | 是 | 客户编号 |
2 | khmc | VARCHAR | 40 | 否 | 客户名称 |
3 | jyfw | VARCHAR | 40 | 否 | 经营范围 |
4 | djsj | VARCHAR | 40 | 否 | 登记时间 |
5 | sm | VARCHAR | 40 | 否 | 说明 |
6 | lxdh | VARCHAR | 40 | 否 | 联系电话 |
(6)联系人信息表如表5.6所示:
表5.6 联系人信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | lxrid | INTEGER | 11 | 是 | 联系人编号 |
2 | kh | VARCHAR | 40 | 否 | 客户 |
3 | lxr | VARCHAR | 40 | 否 | 联系人 |
4 | lxdh | VARCHAR | 40 | 否 | 联系电话 |
5 | sm | VARCHAR | 40 | 否 | 说明 |
控制层设计
@RequestMapping(value="/add")public String add(kehu kehu,HttpServletRequest request){//添加方法Map<String,Object> map= new HashMap<String,Object>();//初始化对象//String name=(String)request.getParameter("name");map.put("khid", kehu.getKhid());//客户编号map.put("khmc", kehu.getKhmc());//客户名称map.put("jyfw", kehu.getJyfw());//经营范围map.put("djsj", kehu.getDjsj());//登记时间map.put("sm", kehu.getSm());//说明map.put("lxdh", kehu.getLxdh());//联系电话String khid=(String)kehu.getKhid();//客户编号String khmc=(String)kehu.getKhmc();//客户名称String jyfw=(String)kehu.getJyfw();//经营范围String djsj=(String)kehu.getDjsj();//登记时间String sm=(String)kehu.getSm();//说明String lxdh=(String)kehu.getLxdh();//联系电话kehudao.save(map);//调用 add方法 保存kehu 数据request.setAttribute("msg", "<script>alert('添加成功');</script>");System.out.println("addok");return "kehu/kehuadd";}/**删除 kehu* */@RequestMapping(value="/del")public String del(Integer id,HttpServletRequest request,Map<String,Object> map){// Map<String,Object> map= new HashMap<String,Object>();//初始化对象String a=(String)request.getParameter("keyid");//request 方式获得主键idid=Integer.parseInt(a);request.setAttribute("msg", "<script>alert('删除成功');</script>");kehudao.del(id);//调用 删除方法return selectall(null,map,request);}/*** 修改kehu信息*/@RequestMapping(value="/update")public String update(kehu kehu,HttpServletRequest request,Map<String,Object> map1){Map<String,Object> map= new HashMap<String,Object>();//初始化对象map.put("khid", kehu.getKhid());//客户编号map.put("khmc", kehu.getKhmc());//客户名称map.put("jyfw", kehu.getJyfw());//经营范围map.put("djsj", kehu.getDjsj());//登记时间map.put("sm", kehu.getSm());//说明map.put("lxdh", kehu.getLxdh());//联系电话String khid=(String)kehu.getKhid();//客户编号String khmc=(String)kehu.getKhmc();//客户名称String jyfw=(String)kehu.getJyfw();//经营范围String djsj=(String)kehu.getDjsj();//登记时间String sm=(String)kehu.getSm();//说明String lxdh=(String)kehu.getLxdh();//联系电话request.setAttribute("msg", "<script>alert('修改成功');</script>");kehudao.update(map);//执行update 方法return selectall(null,map1,request);}/*** 查询kehu信息*/@RequestMapping(value="/modify")public String modify(Integer id,Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");//request 方式获得主键idList<Map<String,Object>> list= new ArrayList<Map<String,Object>>();//初始化对象list=kehudao.select(Integer.parseInt(keyid));//根据id返回 kehu对象数据request.setAttribute("khid", list.get(0).get("khid"));//客户编号request.setAttribute("khmc", list.get(0).get("khmc"));//客户名称request.setAttribute("jyfw", list.get(0).get("jyfw"));//经营范围request.setAttribute("djsj", list.get(0).get("djsj"));//登记时间request.setAttribute("sm", list.get(0).get("sm"));//说明request.setAttribute("lxdh", list.get(0).get("lxdh"));//联系电话return "kehu/kehumodify";}@RequestMapping(value="/detail")public String detail(Integer id,Map<String,Object> map,HttpServletRequest request){String keyid=(String)request.getParameter("keyid");//request 方式获得主键idList<Map<String,Object>> list= new ArrayList<Map<String,Object>>();//初始化对象list=kehudao.select(Integer.parseInt(keyid));//根据id返回 kehu对象数据request.setAttribute("khid", String.valueOf(list.get(0).get("khid")));//客户编号request.setAttribute("khmc", list.get(0).get("khmc"));//客户名称request.setAttribute("jyfw", list.get(0).get("jyfw"));//经营范围request.setAttribute("djsj", list.get(0).get("djsj"));//登记时间request.setAttribute("sm", list.get(0).get("sm"));//说明request.setAttribute("lxdh", list.get(0).get("lxdh"));//联系电话return "kehu/kehudetail";}
持久层设计
public void save(Map<String, Object> map) {sqlSession.insert("com.chanpin.insertchanpin", map);//执行insert 插入方法}/*** 删除aa* @param id*/public void del(Integer id) {sqlSession.delete("com.chanpin.delchanpin", id);//执行delete 删除方法}/*** 修改chanpin信息* @param map*/public void update(Map<String, Object> map) {sqlSession.update("com.chanpin.updatechanpin", map);//执行update 修改方法}/*** 查询chanpin信息* @param id* @return */public List<Map<String, Object>> select(Integer id) {return sqlSession.selectList("com.chanpin.selectchanpin", id) ; //执行select 查询}
三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件DBO.java
2、开发环境为eclipse开发,数据库为mysql,使用java语言开发。
3、数据库文件名是jspssmcrm.sql 系统名称ssmcrm
4、地址:http://127.0.0.1:8080/ssmcrm/login.jsp
四 系统实现
源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓