基于springboot+vue的客户关系管理系统(前后端分离)

博主主页:猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

 项目介绍: 

本系统为原创项目,采用前后端分离,项目代码工整,结构清晰,适合选题:客户关系、客户管理、关系、前后端分离类其他客户关系等。系统采用springboot+vue整合开发,前端主要使用了element-ui框架、项目后端主要使用了springboot,数据层采用mybatis。

部分功能:

系统管理功能模块
(1)注册模块:未登陆过系统的员工进行注册,说明自己所在的部门
(2)登录模块:不同部门登陆系统可以使用系统里面不同的功能,运用密码和用户名进行登录
(3)登陆验证模块:防止存在记住地址直接进行访问的情况故会进行拦截看是否访问过该地址
业务管理功能模块
(1)市场活动模块:主要是对企业未举办的活动,计划举办的活动以及已经举办过的活动的信息进行管理。
(2)潜在客户模块:主要是对公司举办的活动中产生的潜在的客户信息进行管理。
(3)客户模块主要是将确定会与我司合作的潜在用户转化成为客户,并且对客户的信息进行管理。
(4)联系人模块主要是对我们的老客户的的联系方式等信息进行管理。
(5)交易模块主要是对我司与客户之间的交易信息进行管理。
(6)售后模块主要是成交后的客户使用我司产品的感受的信息进行管理。
(7)统计图表模块主要是将上述的信息以图表的形式进行展示。

系统包含技术:

后端:springboot,mybatis
前端:element-ui、js、css等
开发工具:idea/vscode
数据库:mysql 5.7
JDK版本:jdk1.8

部分截图说明:

下面是登录

首页

客户管理

部门管理

菜单管理

部门权限管理

交易管理

市场活动管理

部分代码:

/*** 分页查询*/@PostMapping("selectAll")public PageInfo<Customer> selectAll(@RequestBody Map<String,String> mp) {PageHelper.startPage(Integer.parseInt(mp.get("currentPage").toString()), Integer.parseInt(mp.get("pagesize").toString()));List<Customer> list = customerService.queryAllByLimit(mp);PageInfo<Customer> pageInfo = new PageInfo<Customer>(list);return pageInfo;}@PostMapping("selectByCondition")public List<Customer> selectByCondition(@RequestBody Map<String,String> mp) {List<Customer> list = customerService.queryAllByLimit(mp);return list;}/*** 修改*/@RequestMapping("edit")public String edit(@RequestBody Customer customer) {try {customerService.update(customer);return "200";}catch (Exception e){e.printStackTrace();return "201";}}/*** 新增*/@RequestMapping("add")public String add(@RequestBody Customer customer) {try {Date date = new Date();customer.setCreateTime(date);customerService.insert(customer);return "200";}catch (Exception e){e.printStackTrace();return "201";}}/*** 通过主键查询单条数据*/@GetMapping("selectOne")public Customer selectOne(Integer id) {return customerService.queryById(id);}

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~

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

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

相关文章

MySQL备份与恢复

MySQL备份与恢复一、备份1、数据备份的重要性2、数据备份分类2.1 物理备份2.2 逻辑备份 3、数据库备份策略4、常用的备份方法和工具5、数据库上云迁移 二、数据库完全备份1、简介2、物理冷备份与恢复2.1 物理冷备份2.2 备份恢复2.3 补充知识date 3、mysqldump备份与恢复3.1 完全…

文件系统之程序是怎么打开文件进行操作的

本篇文章自顶向下&#xff0c;从文件系统的上层出发讲到磁盘&#xff0c;帮助理解程序是如何打开文件并进行后序的读写操作的&#xff0c;读到后面&#xff0c;前面的一些疑惑就得到解决 介绍相关概念 注意&#xff0c;目录也是文件 文件描述符 每个进程都有一个指针*files…

【深度学习】BLIP: 用于统一的视觉-语言理解和生成的引导式语言图像预训练

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP&#xff1a;用于统一的视觉-语言理解和生成的引导式语言图像预训练 论文&#xff1a;https://arxiv.org/abs/2201.12086 代码&#xff1a;https://github.…

NotePad++ 在行前/行后添加特殊字符内容方法

我们在处理数据时&#xff0c;会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多&#xff0c;我们可以自己手动的去添加&#xff0c;但如果达到了成百上千行&#xff0c;此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

QT 绘画功能的时钟

.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> //信息调试类 #include <QPainter> #include <QPixmap> //图像引擎类 #include <QTime> #include <QTimer> …

秋招准备--基础知识复习--系统编程

lab1 进程 定义 进程的定义是操作系统中资源分配的基本单位&#xff0c;是程序的执行实体。具体地来分析这个定义的一体两面&#xff1a; 在资源分配方面&#xff0c;每个进程都有虚拟的进程空间&#xff0c;其中包括代码区&#xff0c;全局静态区&#xff0c;BSS区&#xff…

一文读懂 Redis 缓存系统

【摘要】本文介绍了Redis缓存原理、详细解析了缓存模型、缓存一致性和缓存异常场景。 【作者】李杰&#xff0c;专注于Java虚拟机技术、云原生技术领域的探索与研究。 尽管&#xff08;关系型&#xff09;数据库系统 (SQL) 带来了许多出色的属性&#xff0c;例如 ACID&#x…

Spring Boot Actuator使用指南

什么是 Spring Boot Actuator&#xff1f; Spring Boot Actuator 是 Spring Boot 提供的一种生产级别的特性&#xff0c;它可以帮助我们监控和管理 Spring Boot 应用&#xff0c;比如健康检查、审计、统计和 HTTP 追踪等。所有这些特性可以通过 JMX 或者 HTTP endpoints 来访问…

Linux系统编程——总结初识Linux(常用命令、特点、常见操作系统)

文章目录 UNIX操作系统&#xff08;了解&#xff09;Linux操作系统主要特征Linux和unix的区别和联系什么是操作系统常见的操作系统Ubuntu操作系统Ubuntu安装linux下的目录的类型(掌握)shell指令shell指令的格式文件操作相关指令系统相关命令网络相关命令其他命令软件安装相关的…

duilib 进阶 之 list 容器使用 及扩展

目录 一、list控件 1、选中事件的例子 2、子项目为简单容器时赋值 1)、直接样式文件里赋值

leetcode Top100(16)缺失的第一个正数

给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 * * 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 * * * 示例 1&#xff1a; * * 输入&#xff1a;nums [1,2,0] * 输出&#xff1a;3 * 示例 2&#xff1a; * * 输入…

【算法】排序——插入排序及希尔排序

目录 前言 一、排序的概念及其应用 1.1排序的概念 1.2排序的应用 1.3常见的排序算法 二、插入排序的实现 基于插入排序的优化——希尔排序&#xff08;缩小增量排序 个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 LeetCode刷题 算法专栏 前言 这…

js for循环设置循环变量和循环体内部是两个单独作用域

参考文章 for 循环设置循环变量的那部分是一个父作用域&#xff0c;而循环体内部是一个单独的子作用域。 for (let i 0; i < 3; i) {let i abc;console.log(i); } // abc // abc // abc上面代码正确运行&#xff0c;输出了 3 次abc。这表明函数内部的变量i与循环变量i不…

多进程编程- POSIX命名信号量(named semaphore)

POSIX命名信号量是POSIX标准下的一个进程间同步原语&#xff0c;允许多个进程共享同一个信号量&#xff0c;从而实现进程间的同步和通信。这与无名信号量不同&#xff0c;无名信号量主要用于线程之间的同步&#xff0c;而不是进程之间。 命名信号量是“命名”的&#xff0c;因…

工作、生活常用免费api接口大全

手机号码归属地&#xff1a;提供三大运营商的手机号码归属地查询。全国快递物流查询&#xff1a;1.提供包括申通、顺丰、圆通、韵达、中通、汇通等600快递公司在内的快递物流单号查询。2.与官网实时同步更新。3.自动识别快递公司。IP归属地-IPv4区县级&#xff1a;根据IP地址查…

Kubernetes集群+Keepalived+Nginx+防火墙 实例

目录 实验前期规划 1.拓扑图结构 2.实验要求 3.实验环境规划 一.kubeadm 部署 K8S 集群架构 1.环境准备 2.三个节点安装docker 3.三个节点安装kubeadm&#xff0c;kubelet和kubectl 4.部署K8S集群 &#xff08;1&#xff09;初始化 4.部署K8S集群 &#xff08;1&am…

Linux硬链接、软链接

硬链接是一个目录条目(在基于目录的文件系统中)&#xff0c;它将一个名称与一个文件关联起来。因此&#xff0c;每个文件必须至少有一个硬链接。为文件创建额外的硬链接可以使该文件的内容可以通过额外的路径访问(即通过不同的名称或在不同的目录中)这会导致别名效应(alias eff…

java微服务 Dubbo面试题/SpringCloud面试题

java微服务面试题 Q:为什么要用微服务&#xff1f;微服务有哪些优势&#xff1f; 单体应用把所有功能都堆放在一起&#xff0c;改动影响大&#xff0c;风险高。 微服务具有以下优势&#xff1a; 针对特定服务发布&#xff0c;影响小&#xff0c;风险小&#xff0c;成本低。 频…

C++:C++哪些时候用到const

声明常量&#xff1a;使用const关键字定义一个常量&#xff0c;不允许对其进行更改。例如&#xff1a; const int PI 3.1415926;修饰函数参数&#xff1a;加上const限定符可以确保函数不会修改传入的参数值。例如&#xff1a; void print(const int num) {// num不能在函数内…

【C++】异常处理(一)

这篇文章介绍下 C 的异常处理。 讨论一种最为常见的出现异常的情况&#xff0c;即 0 不能作为除数。为此&#xff0c;我们将自定义一个除法&#xff1a; #include <iostream>using namespace std;int divide(int a, int b) {return a / b; }int main() {int a 3, b 0…