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 方式获得主键id
		id=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 方式获得主键id
		List<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 方式获得主键id
		List<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.mfbz.cn/a/176439.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

left join查询耗时太慢,添加索引解决问题

背景 因为最近自己用的小app越用感觉加载越慢&#xff0c;以为是自己app开发逻辑出现问题了&#xff0c;结果才发现是自己很早以前的代码用到的是left join多表联查&#xff0c;以前因为数据少&#xff0c;所以没有感觉&#xff0c;现在数据量稍微一大&#xff0c;耗时就非常严…

git命令 cherry-pick

参考&#xff1a;https://blog.csdn.net/weixin_42585386/article/details/128256149 https://blog.csdn.net/weixin_44799217/article/details/128279250 merge和cherry-pick的区别&#xff1a; merge&#xff1a;是把某一个代码分支完全合并到当前的代码分支。完全合并的意…

redis的性能管理及集群架构(主从复制、哨兵模式)

一、redis的性能管理 1、内存指标info memory 内存指标&#xff08;重要&#xff09; used_memory:853736 数据占用的内存 used_memory_rss:10551296 redis向操作系统申请的内存 used_memory_peak:853736 redis使用内存的峰值 注&#xff1a;单位&#xff1a;字节 系…

向日葵x华测导航:远程控制如何助力导航测绘设备运维

导航测绘在各个领域均在发挥积极作用&#xff0c;其中RTK载波相位差分技术是导航测绘领域所常用的主流技术&#xff0c;该技术基于卫星定位系统的基础定位数据&#xff0c;可以实现在野外实时获取厘米级精度的定位数据&#xff0c;一定程度上省去了事后解算的麻烦。相应的&…

macos端文件夹快速访问工具 Default Folder X 最新for mac

Default Folder X 是一款实用的工具&#xff0c;提供了许多增强功能和快捷方式&#xff0c;使用户能够更高效地浏览和管理文件。它的快速导航、增强的文件对话框、自定义设置和快捷键等功能&#xff0c;可以大大提升用户的工作效率和文件管理体验。 快速导航和访问&#xff1a;…

steam游戏找不到steam_api64.dll,分享三个有效的解决方法

在现代科技发展的时代&#xff0c;游戏已经成为了许多人生活中不可或缺的一部分。而Steam作为全球最大的数字发行平台之一&#xff0c;拥有着庞大的游戏库和活跃的用户群体。然而&#xff0c;在使用Steam时&#xff0c;有些用户可能会遇到Steam_api64.dll丢失的问题&#xff0c…

QT mysql 数据库线程池 与数据库操作封装

最近事情比较多很久没有写学习笔记了&#xff0c;数据库线程池&#xff0c; 数据库封装&#xff0c;虽说数据库操作有很多不需要写sql 的&#xff0c;ORM 封装的方式去操作数据库。但是从业这些年一直是自己动手写sql &#xff0c;还是改不了这个习惯。不说了直接上代码。 数据…

想打造私域流量帝国?先解决这4个难题!

一、谁是你的目标用户 1. 清晰界定目标用户&#xff1a;确定你的产品或服务主要面向的用户群体&#xff0c;如年龄段、性别、职业等特征。 2. 确定最有购买力的用户群体&#xff1a;分析哪个用户群体在购买你的产品或服务时更容易乐于支付&#xff0c;并将其作为重点关注对象。…

skywalking中gateway的拓扑图没有出现

背景&#xff1a; 刚开始的时候gateway没有出现&#xff0c;后来百度说添加插件的jar包&#xff0c; apm-spring-cloud-gateway-2.1.x-plugin-8.15.0.jar apm-spring-webflux-5.x-plugin-8.15.0.jar 然后解决了gateway节点出来了&#xff0c; 但是&#xff1a;拓扑图却是User指…

我们对凌鲨的一次重构

在10月我们对凌鲨进行了一次重构&#xff0c;把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能&#xff0c;用于团队沟通。由于国内有大量的沟通软件&#xff0c;比如企业微信&#xff0c;飞书&#xff0c;钉钉等。…

用HALCON标定助手对相机进行标定

任务要求&#xff1a; 已知相机镜头焦距f为8mm&#xff0c;相机单个CCD像素在水平和竖直两个方向上的尺寸均为3.75微米&#xff0c;相机为普通透光镜头和面阵相机&#xff0c;对相机进行标定&#xff0c;测量相机的内外参数。 操作步骤&#xff1a; 1. 在HALCON中运行gen_ca…

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

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

易点易动设备管理系统:提升企业设备巡检效率的最佳选择

在现代企业运营中&#xff0c;设备管理扮演着至关重要的角色。设备巡检旨在确保设备的正常运行和及时维护&#xff0c;以确保生产线的顺畅运行和业务的高效执行。然而&#xff0c;传统的设备巡检方法常常效率低下、耗时费力。针对这一问题&#xff0c;易点易动设备管理系统应运…

window文件夹下python脚本实现批量删除无法预览的图片

你是否遇到过下载的图片会发现有些图片会无法预览情况&#xff1f; 有几种原因可能导致一些图片在预览时无法正常显示&#xff1a; 损坏的图片文件&#xff1a; 图片文件可能损坏或者部分损坏&#xff0c;导致无法被正常解析和预览。这种情况可能是因为文件在传输过程中损坏、…

鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(下)

12.根据《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;自2023年9月初起&#xff0c;在中国大陆地区提供互联网信息服务的APP开发者&#xff0c;需要依法履行APP备案手续&#xff0c;并通过APP分发平台的备案信息核验。 对于2023年9月7日后在AGC新上…

【19年扬大真题】已知a数组int a[ ]={1,2,3,4,5,6,7,8,9,10},编写程序,求a数组中偶数的个数和偶数的平均值

【18年扬大真题】 已知a数组int a[ ]{1,2,3,4,5,6,7,8,9,10}&#xff0c;编写程序&#xff0c;求a数组中偶数的个数和偶数的平均值 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int os 0;//偶数个数int sum 0;//偶数和float ave 0;//偶数平均值for (int i 0;i <…

不可错过的5款在线UI设计工具,助你事半功倍!

在当今的 UI 设计领域&#xff0c;如果没有合适的 UI 设计工具&#xff0c;无论你的创作能力有多强&#xff0c;你的工作都会受到限制&#xff0c;但许多软件需要会员使用&#xff0c;这不适合新设计师进入工作场所&#xff0c;那么有在线 UI 设计工具吗&#xff1f;关于这个问…

2023 年戴森设计大奖得主是谁?给大楼降温、争取救援机会

2023 年戴森设计大奖得主是谁&#xff1f;给大楼降温、争取救援机会 ​编辑拉风的极客2023/11/22 摘要 当今社会除了持续不断对科技创新保持注目&#xff0c;还有很多年轻发明家为了实际场景的难题提供解决方案。 11 月 15 日&#xff0c;2023 年戴森设计大奖国际大奖名单正…

【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…

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

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