基于springboot致远汽车租赁系统(java源码)

收藏关注不迷路||项目不适合可以浏览博主其他项目文章
项目源码||毕设定制||远程支持||可联系博主
---------------同类型文章链接-----------------------------------------------------------------
java项目设计专栏

1项目

基于springboot致远汽车租赁系统(java源码)

2开发技术

开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9

3项目结构

image.png

4系统设计

4.1 软件功能模块设计

网站整体功能如下图所示:
图 4-1 致远汽车租赁系统总体功能模块图

4.2数据库设计

4.2.1概念模型设计

概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。
用户注册实体图如图4-2所示:
图4-2用户注册实体图
汽车租赁实体图如图4-3所示:
图4-3汽车租赁实体图
用户管理实体图如图4-4所示:
图4-4用户管理实体图

5系统详细设计

5.1系统功能模块

致远汽车租赁系统,在系统首页可以查看首页,汽车租赁,公告信息,个人中心,后台管理等内容,并进行详细操作,如图5-1所示。

图5-1系统首页界面图
用户注册,在用户注册页面通过填写用户账号,密码,确认密码,姓名,手机号码,邮箱,身份证号等信息进行注册操作,如图5-2所示。

图5-2用户注册界面图
汽车租赁,在汽车租赁页面可以查看汽车型号,汽车编号,汽车类型,汽车品牌,车牌号,颜色,押金,目前价格,租赁状态,提车地点等内容,如图5-3所示。

图5-3汽车租赁界面图
个人中心,在个人中心页面通过填写用户信息进行更新信息,还可以根据需要对我的收藏进行详细操作,如图5-4所示。

图5-4个人中心界面图

5.2管理员功能模块

管理员进行登录,进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图5-5所示。

图5-5管理员登录界面图
管理员登录系统后,可以对首页,个人中心,用户管理,业务员管理,汽车类型管理,租赁汽车管理,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理,系统管理等进行相应的操作管理,如图5-6所示。

图5-6管理员功能界面图
用户管理,在用户管理页面可以对用户账号,姓名,头像,性别,手机号码,邮箱,身份证号等内容进行详情,修改和删除等操作,如图5-7所示。

图5-7用户管理界面图
业务员管理,在业务员管理页面可以对索引、业务员账号,业务员姓名,头像,性别,联系电话,身份证号等内容进行详情,修改和删除等操作,如图5-8所示。

图5-8业务员管理界面图
汽车类型管理,在汽车类型管理页面可以对索引、汽车类型等内容进行详情,修改和删除等操作,如图5-9所示。

图5-9汽车类型管理界面图
租赁汽车管理,在租赁汽车管理页面可以对索引、汽车编号,汽车品牌,汽车型号,图片,汽车类型,车牌号,颜色,押金,日租价格,租赁状态,提车地点等内容进行详情,修改,查看评论和删除等操作,如图5-10所示。

图5-10租赁汽车管理界面图
汽车租赁管理,在汽车租赁管理页面可以对索引、订单编号,汽车编号,汽车品牌,汽车型号,车牌号,颜色,汽车类型,押金,日租价格,租赁时间,汽车状态,用户账号,姓名,手机号码,身份证号,是否支付等内容进行详情和删除等操作,如图5-11所示。

图5-11汽车租赁管理界面图

5.3业务员功能模块

业务员登录进入致远汽车租赁系统可以对首页,个人中心,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理等进行相应操作,如图5-12所示。

图5-124业务员功能界面图
汽车归还管理,在汽车归还页面通过填写索引,订单编号,汽车编号,汽车品牌,汽车型号,车牌号,颜色,汽车类型,押金,日租价格,租赁时间,归还时间,用户账号,姓名,手机号码,身份证号等内容进行详情,租赁订单,检查信息等操作,如图5-13所示。

图5-13汽车归还界面图

5.3用户功能模块

用户登录进入致远汽车租赁系统可以对首页,个人中心,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理,我的收藏管理等进行相应操作,如图5-14所示。

图5-14汽车功能界面图
个人中心,在个人信息页面通过填写用户账号,姓名,头像,性别,手机号码,邮箱,身份证号等内容对个人信息进行修改操作,如图5-15所示。

图5-15个人中心界面图
检查信息管理,在检查信息页面通过填写索引,订单编号,汽车编号,汽车品牌,汽车型号,车牌号,颜色,汽车类型,租赁时间,归还时间,用户编号,姓名,手机号码,身份照,赔付金额,检查时间,业务员账号,业务员姓名,是否支付等内容进行详情操作,如图5-16所示。

图5-16检查信息界面图
我的收藏管理,在我的收藏管理页面可以对索引、收藏名称、收藏图片等内容进行详情和删除等操作,如图5-17所示。

图5-17 我的收藏管理界面图

6部分代码展示

**
 * 通用接口
 */
@RestController
public class CommonController{
   @Autowired
   private CommonService commonService;
    
   /**
    * 获取table表中的column列表(联动接口)
    * @param table
    * @param column
    * @return
    */
   @IgnoreAuth
   @RequestMapping("/option/{tableName}/{columnName}")
   public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("column", columnName);
      if(StringUtils.isNotBlank(level)) {
         params.put("level", level);
      }
      if(StringUtils.isNotBlank(parent)) {
         params.put("parent", parent);
      }
      List<String> data = commonService.getOption(params);
      return R.ok().put("data", data);
   }
   
   /**
    * 根据table中的column获取单条记录
    * @param table
    * @param column
    * @return
    */
   @IgnoreAuth
   @RequestMapping("/follow/{tableName}/{columnName}")
   public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("column", columnName);
      params.put("columnValue", columnValue);
      Map<String, Object> result = commonService.getFollowByOption(params);
      return R.ok().put("data", result);
   }
   
   /**
    * 修改table表的sfsh状态
    * @param table
    * @param map
    * @return
    */
   @RequestMapping("/sh/{tableName}")
   public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
      map.put("table", tableName);
      commonService.sh(map);
      return R.ok();
   }
   
   /**
    * 获取需要提醒的记录数
    * @param tableName
    * @param columnName
    * @param type 1:数字 2:日期
    * @param map
    * @return
    */
   @IgnoreAuth
   @RequestMapping("/remind/{tableName}/{columnName}/{type}")
   public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
                   @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
      map.put("table", tableName);
      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));
         }
      }
      
      int count = commonService.remindCount(map);
      return R.ok().put("count", count);
   }
   
   /**
    * 单列求和
    */
   @IgnoreAuth
   @RequestMapping("/cal/{tableName}/{columnName}")
   public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("column", columnName);
      Map<String, Object> result = commonService.selectCal(params);
      return R.ok().put("data", result);
   }
   
   /**
    * 分组统计
    */
   @IgnoreAuth
   @RequestMapping("/group/{tableName}/{columnName}")
   public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("column", columnName);
      List<Map<String, Object>> result = commonService.selectGroup(params);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      for(Map<String, Object> m : result) {
         for(String k : m.keySet()) {
            if(m.get(k) instanceof Date) {
               m.put(k, sdf.format((Date)m.get(k)));
            }
         }
      }
      return R.ok().put("data", result);
   }
   
   /**
    * (按值统计)
    */
   @IgnoreAuth
   @RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
   public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("xColumn", xColumnName);
      params.put("yColumn", yColumnName);
      List<Map<String, Object>> result = commonService.selectValue(params);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      for(Map<String, Object> m : result) {
         for(String k : m.keySet()) {
            if(m.get(k) instanceof Date) {
               m.put(k, sdf.format((Date)m.get(k)));
            }
         }
      }
      return R.ok().put("data", result);
   }

   /**
    * (按值统计)时间统计类型
    */
   @IgnoreAuth
   @RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")
   public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
      Map<String, Object> params = new HashMap<String, Object>();
      params.put("table", tableName);
      params.put("xColumn", xColumnName);
      params.put("yColumn", yColumnName);
      params.put("timeStatType", timeStatType);
      List<Map<String, Object>> result = commonService.selectTimeStatValue(params);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      for(Map<String, Object> m : result) {
         for(String k : m.keySet()) {
            if(m.get(k) instanceof Date) {
               m.put(k, sdf.format((Date)m.get(k)));
            }
         }
      }
      return R.ok().put("data", result);
   }

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术交流分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值