企业客户|基于springboot的企业客户管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目)

目录

一、摘要

二、相关技术

三、系统设计

四、数据库设计

五、核心代码

六、论文参考

七、源码获取


一、摘要

本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

企业客户管理系统的主要使用者分为管理员和员工,实现功能包括管理员:首页、个人中心、员工管理、客户信息管理、行业类型管理、项目信息管理、项目类型管理、项目收益管理,员工:首页、个人中心、客户信息管理、项目信息管理、项目收益管理等功能。由于本网站的功能模块设计比较全面,所以使得整个企业客户管理系统信息管理的过程得以实现。

本系统的使用可以实现本企业客户管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。

**关键词:**企业客户管理系统 JAVA语言;MYSQL数据库;Spring Boot框架

二、相关技术

java、tomcat、mysql、spring、springBoot、mybatis、query、vue

三、系统设计

3.1 整体功能设计图

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。

3.2 功能具体细节设计

1、管理员模块

管理员登录

通过填写用户名、密码、角色进行登录,如图5-1所示。

管理员登录进入企业客户管理系统可以查看首页、个人中心、员工管理、客户信息管理、行业类型管理、项目信息管理、项目类型管理、项目收益管理等信息。

个人信息

在个人信息页面中可以通过填写用户名等内容进行修改、添加操作,如图5-2所示。在员工管理页面中可以填写工号、姓名、性别、照片、身份证、手机、邮箱等信息,还可以根据需要对员工管理进行详情、修改或删除等操作,如图5-3所示。

客户信息管理

在客户信息管理页面中可以填写客户名称、行业类型、性别、年龄、照片、手机、身份证、备注、工号、姓名等信息,并可根据需要对已有客户信息管理进行详情、修改或删除等操作,如图5-4所示。

行业类型管理

在行业类型管理页面中可以填写行业类型等内容,并可根据需要对已有行业类型管理进行修改或删除等操作,如图5-5所示。

更多功能略.....

1、员工模块

员工登录进入企业客户管理系统可以查看首页、个人中心、客户信息管理、项目信息管理、项目收益管理等内容。

员工注册

员工注册通过填写输入工号、姓名、性别、照片、身份证、手机、邮箱等信息即可进行员工注册,如图5-9所示。

个人信息

在个人信息页面中可以查看工号、姓名、性别、照片、身份证、手机、邮箱等信息内容,并且根据需要对已有个人信息进行修改等其他详细操作,如图5-10所示。

客户信息管理

在客户信息管理页面中通过填写客户名称、行业类型、性别、年龄、照片、手机、身份证、备注、工号、姓名等信息内容,并且根据需要对已有客户信息管理进行详情、修改、删除等其他详细操作,如图5-11所示。

项目信息管理

在项目信息管理页面中可以填写项目名称、项目类型、客户名称、签单金额、签单数量、项目进度、签订日期、工号、签单人等信息内容,并且根据需要对已有项目信息管理进行详情、修改、删除等详细操作,如图5-12所示。

四、数据库设计

1、员工管理实体图如图所示:

2、客户信息管理实体图如图所示:

3、项目信息管理实体图如图所示:

五、核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.XingyeleixingEntity;
import com.entity.view.XingyeleixingView;

import com.service.XingyeleixingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 行业类型
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-10 20:37:30
 */
@RestController
@RequestMapping("/xingyeleixing")
public class XingyeleixingController {
    @Autowired
    private XingyeleixingService xingyeleixingService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,XingyeleixingEntity xingyeleixing,
		HttpServletRequest request){
        EntityWrapper<XingyeleixingEntity> ew = new EntityWrapper<XingyeleixingEntity>();
		PageUtils page = xingyeleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xingyeleixing), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,XingyeleixingEntity xingyeleixing, HttpServletRequest request){
        EntityWrapper<XingyeleixingEntity> ew = new EntityWrapper<XingyeleixingEntity>();
		PageUtils page = xingyeleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xingyeleixing), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( XingyeleixingEntity xingyeleixing){
       	EntityWrapper<XingyeleixingEntity> ew = new EntityWrapper<XingyeleixingEntity>();
      	ew.allEq(MPUtil.allEQMapPre( xingyeleixing, "xingyeleixing")); 
        return R.ok().put("data", xingyeleixingService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(XingyeleixingEntity xingyeleixing){
        EntityWrapper< XingyeleixingEntity> ew = new EntityWrapper< XingyeleixingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( xingyeleixing, "xingyeleixing")); 
		XingyeleixingView xingyeleixingView =  xingyeleixingService.selectView(ew);
		return R.ok("查询行业类型成功").put("data", xingyeleixingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XingyeleixingEntity xingyeleixing = xingyeleixingService.selectById(id);
        return R.ok().put("data", xingyeleixing);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        XingyeleixingEntity xingyeleixing = xingyeleixingService.selectById(id);
        return R.ok().put("data", xingyeleixing);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody XingyeleixingEntity xingyeleixing, HttpServletRequest request){
    	xingyeleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xingyeleixing);
        xingyeleixingService.insert(xingyeleixing);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody XingyeleixingEntity xingyeleixing, HttpServletRequest request){
    	xingyeleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xingyeleixing);
        xingyeleixingService.insert(xingyeleixing);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody XingyeleixingEntity xingyeleixing, HttpServletRequest request){
        //ValidatorUtils.validateEntity(xingyeleixing);
        xingyeleixingService.updateById(xingyeleixing);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xingyeleixingService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<XingyeleixingEntity> wrapper = new EntityWrapper<XingyeleixingEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = xingyeleixingService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

六、论文参考

七、源码获取

点赞、收藏、关注、评论啦。

联系即送开题报告和任务书,欢迎咨询

👇🏻获取联系方式在文章末尾👇🏻

相关推荐
天海华兮1 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
XINGTECODE29 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
程序猿进阶35 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺39 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
小码的头发丝、1 小时前
Spring Boot 注解
java·spring boot
先天牛马圣体1 小时前
如何提升大型AI模型的智能水平
后端
午觉千万别睡过1 小时前
RuoYI分页不准确问题解决
spring boot