收藏关注不迷路||项目不适合可以浏览博主其他项目文章
项目源码||毕设定制||远程支持||可联系博主
---------------同类型文章链接-----------------------------------------------------------------
java项目设计专栏
1项目
基于springboot致远汽车租赁系统(java源码)
2开发技术
开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
3项目结构
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);
}