基于javaweb+mysql的汽车租赁系统(java+SSM+JSP+LayUI+echarts+mysql)

2023-11-01

ssm汽车租赁系统 carRental
系统概要
汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块。其中系统模块和业务模块底下又有其子模块。

功能模块

一、业务模块
1、客户管理
客户列表
客户分页和模糊查询
客户添加、修改、删除
导出客户数据
2、车辆管理
车辆列表
车辆车辆分页和模糊查询
车辆添加、修改、删除
3、业务管理
汽车出租
1、根据客户身份证查询所有未出租的车辆信息
2、进行出租

出租单管理
1、多条件的模糊查询和分页
2、出租单的修改、删除、导出

汽车入库
检查单管理
1、多条件模糊查询和分页
2、检查单修改
3、导出检查单
4、统计分析
客户男女比例图
月出租量统计
销售员业绩统计
出租车辆类型统计

二、系统模块
1、用户登陆
校验用户名和密码
登陆成功将登陆信息写入登陆日志
未登录进行拦截
2、菜单管理
全查询菜单和根据左边的树查询不同菜单
菜单的添加、修改、删除
3、角色管理
全查询角色和模糊查询
角色的添加、修改、删除
4、用户管理
全查询用户和模糊查询
用户的添加、修改、删除以及重置密码

5、数据源的监控(druid monitor)

技术选型
1.后台技术选型:SSM(Spring SpringMVC Mybatis)
2.前端技术选型:LayUI、dtree、echarts

开发环境
操作系统:Windows/Mac OS
编程语言:Java
开发工具:IDEA、Navicat
项目构建:Maven 3.5.2
服务器:Tomcat 8.5

数据库:MySQL 8.0请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

			return "system/main/login";
		}
	};
	/**
	 * 得到登录验证码
	 * @throws IOException 
	 */
	@RequestMapping("getCode")
	public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
		// 定义图形验证码的长和宽
		LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36, 4, 50);
		Console.log(lineCaptcha.getCode());
		session.setAttribute("code", lineCaptcha.getCode());
		ServletOutputStream outputStream = response.getOutputStream();
		ImageIO.write(lineCaptcha.getImage(), "JPEG", outputStream);
	}
}
		// 生成密文
		String pwd = DigestUtils.md5DigestAsHex(userVo.getPwd().getBytes());
		userVo.setPwd(pwd);
		if (userVo.getPwd().equals(user.getPwd())) {
			return ResultObj.PWD_SUCCESS;
		} else {
			return ResultObj.PWD_ERROR;
		}
	}
	/*
	 * 更改密码之查询密码
	 */
	@RequestMapping("updatePwd")
	public ResultObj updatePwd(UserVo userVo) {
		try {
			User user = (User) WebUtils.getHttpSession().getAttribute("user");
			// 生成密文
			String pwd = DigestUtils.md5DigestAsHex(userVo.getPwd().getBytes());
			userVo.setUserid(user.getUserid());
			userVo.setPwd(pwd);
			// 修改密码
			this.userService.updateUser(userVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
	/*
	 * 删除用户
	 */
	@RequestMapping("deleteUser")
	public ResultObj deleteUser(UserVo userVo) {
		System.out.println(userVo);
		System.out.println(userVo.getUserid());
		try {
			this.userService.deleteUser(userVo.getUserid());
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
			return ResultObj.PWD_SUCCESS;
		} else {
			return ResultObj.PWD_ERROR;
		}
	}
	/*
	 * 更改密码之查询密码
	 */
	@RequestMapping("updatePwd")
	public ResultObj updatePwd(UserVo userVo) {
		try {
			User user = (User) WebUtils.getHttpSession().getAttribute("user");
			// 生成密文
			String pwd = DigestUtils.md5DigestAsHex(userVo.getPwd().getBytes());
			userVo.setUserid(user.getUserid());
			userVo.setPwd(pwd);
			// 修改密码
			this.userService.updateUser(userVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			return ResultObj.UPDATE_ERROR;
//			String code = WebUtils.getHttpSession().getAttribute("code").toString();
//			if (userVo.getCode().toLowerCase().equals(code)) {
			User user = this.userService.login(userVo);
			if (null != user) {
				// 放入session
				WebUtils.getHttpSession().setAttribute("user", user);
				WebUtils.getHttpSession().setMaxInactiveInterval(240 * 60);
				// 记录登录日志 向sys_login_log插入数据
				LogInfoVo logInfoVo = new LogInfoVo();
				logInfoVo.setLoginname(user.getRealname() + "-" + user.getLoginname());
				logInfoVo.setLogintime(new Date());
				// 外网Ip:WebUtils.getHttpServletRequest().getRemoteAddr()
				// 内网ip:
				InetAddress addr;
				try {
					addr = (InetAddress) InetAddress.getLocalHost();
					logInfoVo.setLoginip(addr.getHostAddress().toString());// 获取Id地址
				} catch (UnknownHostException e) {
					e.printStackTrace();
				}
				// 添加
				logInfoService.addLogInfo(logInfoVo);
				return "system/main/index";
			} else {
			if (null != user) {
				// 放入session
				WebUtils.getHttpSession().setAttribute("user", user);
				WebUtils.getHttpSession().setMaxInactiveInterval(240 * 60);
				// 记录登录日志 向sys_login_log插入数据
				LogInfoVo logInfoVo = new LogInfoVo();
				logInfoVo.setLoginname(user.getRealname() + "-" + user.getLoginname());
				logInfoVo.setLogintime(new Date());
				// 外网Ip:WebUtils.getHttpServletRequest().getRemoteAddr()
				// 内网ip:
				InetAddress addr;
				try {
					addr = (InetAddress) InetAddress.getLocalHost();
					logInfoVo.setLoginip(addr.getHostAddress().toString());// 获取Id地址
				} catch (UnknownHostException e) {
					e.printStackTrace();
				}
				// 添加
				logInfoService.addLogInfo(logInfoVo);
				WebUtils.getHttpSession().setAttribute("user", user);
				WebUtils.getHttpSession().setMaxInactiveInterval(240 * 60);
				// 记录登录日志 向sys_login_log插入数据
				LogInfoVo logInfoVo = new LogInfoVo();
				logInfoVo.setLoginname(user.getRealname() + "-" + user.getLoginname());
				logInfoVo.setLogintime(new Date());
				// 外网Ip:WebUtils.getHttpServletRequest().getRemoteAddr()
				// 内网ip:
				InetAddress addr;
				try {
					addr = (InetAddress) InetAddress.getLocalHost();
					logInfoVo.setLoginip(addr.getHostAddress().toString());// 获取Id地址
				} catch (UnknownHostException e) {
					e.printStackTrace();
				}
				// 添加
				logInfoService.addLogInfo(logInfoVo);
				return "system/main/index";
			} else {
				try {
					addr = (InetAddress) InetAddress.getLocalHost();
					logInfoVo.setLoginip(addr.getHostAddress().toString());// 获取Id地址
				} catch (UnknownHostException e) {
					e.printStackTrace();
				}
				// 添加
				logInfoService.addLogInfo(logInfoVo);
				return "system/main/index";
			} else {
				model.addAttribute("error", SysConstast.USER_LOGIN_ERROR_MSG);
				return "system/main/login";
			}
//			} else {
//				model.addAttribute("error", SysConstast.USER_LOGIN_CODE_ERROR_MSG);
//				return "system/main/login";
//			}
		} else {
			return "system/main/login";
		}
	};
	/**
	 * 得到登录验证码
	 * @throws IOException 
	 */
	 * 重置用户密码
	 */
	@RequestMapping("resetUserPwd")
	public ResultObj resetUserPwd(UserVo userVo) {
		try {
			this.userService.resetUserPwd(userVo.getUserid());
			return ResultObj.RESET_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.RESET_ERROR;
		}
	}
	/*
	/*
	 * 修改用户
	 */
	@RequestMapping("updateUser")
	public ResultObj updateUser(UserVo userVo) {
		try {
			this.userService.updateUser(userVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}
	/*
	 * 删除用户
	 */
	@RequestMapping("deleteUser")
	public ResultObj deleteUser(UserVo userVo) {
	@RequestMapping("addNews")
	public ResultObj addNews(NewsVo newsVo) {
		try {
			newsVo.setCreatetime(new Date());
			User user = (User) WebUtils.getHttpSession().getAttribute("user");
			newsVo.setOpername(user.getRealname());
			this.newsService.addNews(newsVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}
	/*
	 * 删除公告
	 */
	@RequestMapping("deleteNews")
	public ResultObj deleteNews(NewsVo newsVo) {
		try {
			this.newsService.deleteNews(newsVo.getId());
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于javaweb+mysql的汽车租赁系统(java+SSM+JSP+LayUI+echarts+mysql) 的相关文章

  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Clojure MySQL 语法错误异常(“[...] 靠近 '???????????????' [...]”)

    除了建立连接之外 我在使用 clojure contrib sql 做任何事情时都遇到困难 我有一个 mysqld 在 localhost 3306 上运行 数据库名为clj db 用户 clj user localhost 和密码 clj
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • jmap - 组织和堆操作会给 jvm 带来开销吗?

    正如标题所述 需要多少开销jmap histo and jmap heap分别带到jvm 如果一个内存敏感的 Java 进程处于OutOfMemory 例如 大约 96 的堆已满 并且无法通过 full gc 清除 其中一项操作是否有可能将
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr

随机推荐

  • pandas写入读取csv文件

    1 利用Pandas把列表数据写入csv文件 具体操作封装成函数 然后直接调用就行 def insert csv datas df pd DataFrame datas file name hello df to csv csv forma
  • 这么简单,还不会使用java8 stream流的map()方法吗?

    一 前言 在日常的开发工作中经常碰到要处理list中数据的问题 比如从数据库中查出了很多学生 由于一些原因需要在内存中找出这些学生中的所有姓名 或者把名为 王五 的语文成绩暂时修改为 100 这些问题怎么处理呐 之前我们想到的是遍历每个元素
  • 图片压缩

    示例
  • [Deep Learning]——MNIST数据集

    现实生活中 银行卡识别 车牌识别 快递货号识别是很常用的功能 这些都设计到手写字识别相关的内容 手写数字数据集 MNIST 数据集大小 每张大小 28 28 共7000张图片 资料链接 https pan baidu com s 1ck1U
  • Flash of Unstyled Content (FOUC)(这个一直困惑我的迷)

    什么是FOUC 文档样式短暂失效 如果使用import方法对CSS进行导入 会导致某些页面在Windows 下的Internet Explorer出现一些奇怪的现象 以无样式显示页面内容的瞬间闪烁 这似乎不可想象 我将这种现象称之为文档样式
  • 基于Ant Design Pro下使用mock模拟本地数据

    注明 本文是在https blog csdn net qq 41139830 article details 82976282的基础上学习并记录过程 可直接点击原博主的链接进行学习 1 安装antd pro 脚手架 在使用mock模拟数据之
  • 伯恩斯坦称多边形区块链是 Web3 之王

    这家华尔街公司的一份报告称 该项目从大型全球科技公司聘请了员工 并被星巴克和 Instagram 等许多大品牌使用 伯恩斯坦周五在一份研究报告中表示 Polygon 区块链已成为将 Web2 消费者转移到 Web3 的主要门户 该系统已被星
  • 3.1.4 Hadoop, Yarn, 资源调度, AH源码分析, 3.x 新特性概述, Job三原则, 调优(Shuffle, Job, YARN, NN Full GC), 二次开发环境搭建

    目录 第七部分 YARN资源调度 第 1 节 Yarn架构 第 2 节 Yarn任务提交 作机制 第 3 节 Yarn调度策略 第 4 节 Yarn多租户资源隔离配置 第 部分 Apache Hadoop HDFS核 源码剖析 第 1 节
  • 找不到msvcp120.dll和msvcr120.dll的问题

    win11系统安装mysql5 7版本遇到找不到msvcp120 dll和msvcr120 dll的问题 因为没有安装微软常用运行库合集64位导致的 进入微软下载中心https www microsoft com zh CN downloa
  • ExtJs 修改fieldLabel的值

    修改人员选择器的fieldLabel Ext getCmp selectTreeRyName2 fieldLabel 需求定义人 Ext getCmp selectTreeRyName fieldLabel 需求定义人
  • C++静态成员函数访问非静态成员变量的方法

    静态成员函数不能访问非静态成员 这是因为静态函数属于类而不是属于整个对象 静态函数中的 member可能都没有分配内存 静态成员函数没有隐含的this自变量 所以 它就无法访问自己类的非静态成员 但我们在一个class中要使用CreateT
  • CentOS Linux 8的yum源失效解决

    问题描述 CentOS Linux 8 yum源下载软件失败 yum update CentOS Linux 8 AppStream 14 B s 38 B 00 02 Error Failed to download metadata f
  • 大一python考试知识点_Python复习知识点(一)

    python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行 所以没有缩进的代码 都会在载入时自动执行 数据类型 整形 int 无限大 浮点型 float 小数 复数 complex 由实数和虚数组成 Python中
  • Unity3D-使用图层,锁定背景图片

    如题 添加场景背景图片 需要锁定背景图片 防止对背景进行误操作 1 选中背景图片 选择属性中的Layer 添加一个自定义图层 2 切换background背景图的layer为刚刚新建的 然后锁定新建的图层 防止在Scene布局中选中 这样在
  • Python之callable

    callable object return True if the object argument appears callable False if not 可以检查一个对象是否是可调用的 无论是直接调用或是通过apply 对于函数 方
  • 2023上岸华为od~经验分享

    说说我感觉中的华为OD吧 华为OD的面试流程包括机试 性格测试 HR面试 技术一面 技术二面和主管面试 我是一名非计算机专业 非应届生的211本科生 曾尝试跨考计算机但失败了 然而 我学习过 计算机组成原理 数据结构 操作系统 和 计算机网
  • numpy学习笔记

    1 numpy概述 1 Numerical Python 数值的Python 补充了Python语言所欠缺的数值计算能力 2 是其他数据分析及机器学习库的底层库 3 完全标准C语言实现 运行效率充分优化 4 开源免费2 numpy的核心 多
  • TDH中的Transporter

    本文主要介绍Transwarp的etl工具 Transporter 本文依托于星环的官方文档 通过一个简单的实例来让大家熟悉Transporter的使用 关注专栏 Transwarp系列 了解更多Transwarp的技术知识 目录 一 Tr
  • 【Qt】富文本处理简单介绍

    文章目录 Qt富文本处理 富文本文档结构 文本块QTextBlock 表格 列表 图片 查找功能 语法高亮与HTML 参考 Qt Creator快速入门 第三版 Qt富文本处理 富文本Rich Text 简单说就是在文档中可以使用多种格式
  • 基于javaweb+mysql的汽车租赁系统(java+SSM+JSP+LayUI+echarts+mysql)

    ssm汽车租赁系统 carRental 系统概要 汽车租赁系统总共分为两个大的模块 分别是系统模块和业务模块 其中系统模块和业务模块底下又有其子模块 功能模块 一 业务模块 1 客户管理 客户列表 客户分页和模糊查询 客户添加 修改 删除