SSM客户管理系统CRM开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点
  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

四 系统实现

源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏&#xff1a;他生永不落红尘 本文首发于先知社区&#xff0c;原创作者即是本人 前言 网络安全技术学习&#xff0c;承认⾃⼰的弱点不是丑事。只有对原理了然于⼼&#xff0c;才能突破更多的限制。拥有快速学习能力的白帽子&#xff0c;是不能有短板的&#xf…

Spring Framework IoC依赖注入-按Bean类型注入

Spring Framework 作为一个领先的企业级开发框架&#xff0c;以其强大的依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系&#xff0c;而不必过多关注对象的创建和组装。在Spring Framework中&am…

【20年扬大真题】编写程序,功能是从键盘输入若干4位数字学号,然后输出学号中百位数字是3的学号 (输入0时结束循环)

【20年扬大真题】 编写程序&#xff0c;功能是从键盘输入若干4位数字学号&#xff0c;然后输出学号中百位数字是3的学号 &#xff08;输入0时结束循环&#xff09; #include<stdio.h> #define MaxSize 20 int BaiWei3(int x) {x x / 100;if (x % 10 3) {return 1;}els…

Windows安装Hadoop运行环境

1、下载Hadoop 2、解压Hadoop tar zxvf hadoop-3.1.1.tar.gz3、设置Hadoop环境变量 3.1.1、系统环境变量 # HADOOP_HOME D:\software\hadoop-3.1.13.1.2、Path 环境变量 %HADOOP_HOME%\bin %HADOOP_HOME%\sbin3.1.3、修改Hadoop文件JAVA_HOME 注 : 路径中不要出现空格 ,…

局域网内Ubuntu上搭建Git服务器

1.在局域网内选定一台Ubuntu电脑作为Git服务端&#xff1a; (1).新建用户如为fbc&#xff0c;执行如下命令&#xff1a;需设置密码&#xff0c;此为fbc sudo adduser fbc (2).切换到fbc用户&#xff1a;需密码&#xff0c;此前设置为fbc su fbc (3).建一个空目录作为仓…

UI自动化之Playwright简介

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

C++初阶--类型模板

文章目录 泛型编程函数模板使用通用加法函数多模板参数必须用实例化 函数模板的原理类模板使用 注意事项 泛型编程 先看一个例子&#xff1a; 这是一些对于Swap重载的函数&#xff0c;区别是类型不同&#xff1b; 虽然能够重载使用&#xff0c;但代码复用率比较低&#xff0c…

CSS元素的显示模式

一.什么是元素显示模式 元素显示模式就是元素&#xff08;标签&#xff09;以什么方式进行显示&#xff1b;比如&#xff1a;<div>独占一行&#xff0c;一行可以显示多个<span> HTML元素一般分为块元素和行内元素两种类型。 二.元素分类 1.块元素 常见的块元素有…

Python实现四个组成不相同且无重复的三位数

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 1.题目&#xff1a;有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; for i in range(1,…

2023感恩节大促:跨境卖家如何借助海外网红营销赢得市场关注

随着全球贸易的日益发展&#xff0c;跨境电商行业变得愈发竞争激烈&#xff0c;各家卖家纷纷寻找新的营销策略以在大促期间脱颖而出。在2023年感恩节即将来临之际&#xff0c;海外网红营销成为许多卖家关注的热点。本文Nox聚星将和大家探讨跨境卖家如何充分利用海外网红营销&am…

Leetcode—8.字符串转换整数(atoi)【中等】

2023每日刷题&#xff08;三十七&#xff09; Leetcode—8.字符串转换整数&#xff08;atoi&#xff09; 算法思想 参考k神的题解 实现代码 int myAtoi(char* s) {int len strlen(s);if(len 0) {return 0;}int boundary INT_MAX / 10;int i 0, ans 0;while(s[i] ) …

实时数据备份实践inotify和rsync联动

目录 一、实时数据备份 1.实时数据备份 2.定时任务周期性的数据备份 3.实时数据备份 4.Inotify机制 二、实践 1.实时复制环境准备 2.实时复制概念 3.InofityRsync实施复制实战 4.配置好rsync守护进程 5.检查linux是否支持inotify 6.安装inotyify--tools 7.inotify…

全民阅读营造良好氛围 助力培养孩子阅读习惯

日前,2023年全民终身学习活动周全国总开幕式在重庆举行,自2005年起,终身学习活动周已连续举办了18届,累计带动4亿多群众参与全民终身学习活动周,有效推进全面阅读。 随着全民阅读氛围的持续浓厚,阅读不再是语文学科的专项,不再是学校教育的专属,家庭、社会都在积极参与进来。尤…

web自动化测试-Selenium语法入门到精通

前言 说到自动化测试&#xff0c;就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一&#xff0c;支持快速开发自动化测试框架&#xff0c;且支持在多种浏览器上执行测试。 Selenium学习难度小&#xff0c;开发周期短。对测试人员来说&#xff0c;如果…

【STM32外设系列】JW01三合一空气质量检测模块

&#x1f380; 文章作者&#xff1a;二土电子 &#x1f338; 关注公众号获取更多资料&#xff01; &#x1f438; 期待大家一起学习交流&#xff01; 文章目录 一、JW01模块简介二、数据格式介绍三、程序设计3.1 串口初始化3.2 串口接收中断服务函数3.3 数据解析函数 四、其他…

【数据结构(三)】双向链表(2)

文章目录 1. 基本概念2. 管理双向链表的思路3. 代码实现 1. 基本概念 管理单向链表的缺点分析: ①单向链表&#xff0c;查找的方向只能是一个方向&#xff0c;而双向链表可以向前或者向后查找。     ②单向链表不能自我删除&#xff0c;需要靠辅助节点 &#xff0c;而双向…

三柱汉诺塔

题目描述 汉诺塔是约19世纪末&#xff0c;在欧州的商店中出售一种智力玩具。它的结构如下图所示&#xff1a; 在一个平板上立有三根铁针&#xff0c;分别记为A, B, C。开始时&#xff0c;铁针 A 上依次叠放着从大到小 n 个圆盘&#xff0c;游戏的目标就是将 A 上的 n 个圆盘…

vivado调试核ILA使用技巧

ILA&#xff08;Integrated Logic Analyzer&#xff09;IP Core 是 vivado 的调试核&#xff0c;具体如何创建、调用就不详说了。这里主要记录一个 ILA 的使用技巧&#xff0c;可以大大提高调试效率。 在 Program Device 后&#xff0c;如果添加了 ILA 核&#xff0c;则会出现以…

在有springSecurity或者若依项目中获取当前系统登录的用户信息

方法一&#xff08;springSecurity自带的&#xff09; AuthenticationPrincipal 是 Spring Security 框架中的一个注解&#xff0c;用于获取当前已认证用户的 principal&#xff08;即用户身份信息&#xff09;。 方法二&#xff08;若依项目自带的&#xff09; &#xff08;1…

如何有效解决UDP协议传输问题实现快速安全的文件传输

随着互联网技术的不断发展&#xff0c;UDP协议作为一种快速、简单的传输协议被广泛应用于文件传输领域。然而&#xff0c;UDP协议传输过程中也存在着一些问题&#xff0c;如传输速度不稳定、数据丢失等&#xff0c;这些问题会影响到文件传输的效率和安全性。本文将介绍UDP协议传…