项目介绍
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本驾校收支管理可视化平台就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此驾校收支管理可视化平台利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,页面采用JSP技术,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。驾校收支管理可视化平台有管理员,学员,教练,财务共四个角色。管理员功能有个人中心,学员管理,教练管理,财务管理,教练分配管理,学习计划管理,学习进度管理,车辆信息管理,车辆维护管理,考试安排管理,考试成绩管理,缴费信息管理,招生宣传管理。教练可以发布学习计划,学习进度,对车辆信息发布维护信息。财务人员可以审核和支付教练发布的车辆维护费用,可以查看和审核学员的缴费信息。学员可以注册登录,查看教练分配,学习计划,学习进度,考试安排,考试成绩,招生宣传,缴费信息,还可以在缴费信息里面进行支付操作。驾校收支管理可视化平台的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助使用者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net
系统实现
5.1 管理员模块功能
5.1.1 学员管理
如图5.1显示的就是学员管理页面,此页面提供给管理员的功能有:对学员信息进行查询,添加,删除以及批量删除操作。
图5.1 学员管理页面
5.1.2 教练管理
如图5.2显示的就是教练管理页面,管理员可以对教练信息进行添加,修改,删除,查询操作。
图5.2 教练管理页面
5.1.3 财务管理
如图5.3显示的就是财务管理页面,管理员可以对财务信息修改,删除,批量删除以及查询操作。
图5.3财务管理页面
5.2 财务模块功能
5.2.1 车辆维护管理
如图5.4显示的就是车辆维护管理页面,财务可以对车辆维护信息进行支付,审核,查看,统计操作。
图5.4 车辆维护管理页面
5.2.2 缴费信息管理
如图5.5显示的就是缴费信息管理页面,财务对学员的缴费信息进行审核,查看,统计,查询操作。
图5.5 缴费信息管理页面
5.3 教练管理
5.3.1 学习计划
如图5.6显示的就是学习计划页面,教练可以在教练分配里面发布学习计划。
图5.6 学习计划页面
5.3.2 学习进度
如图5.7显示的就是学习进度页面,教练可以在学习计划里面发布学习进度。
图5.7 学习进度页面
5.3.3 车辆信息
如图5.8显示的就是车辆信息页面,教练可以在车辆信息里面发布维护信息。
图5.8 车辆信息页面
5.4 学员管理
5.4.1 教练分配
如图5.9显示的就是教练分配页面,学员可以查看教练分配。
图5.9 教练分配页面
5.4.2 考试成绩
如图5.10显示的就是考试成绩页面,学员可以查看自己的考试成绩。
图5.10 考试成绩页面
5.4.3 缴费信息
如图5.11显示的就是缴费信息页面,学员可以查看自己的缴费信息,也可以支付操作。
图5.11 缴费信息页面
核心代码
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.transaction.annotation.Transactional;
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.CaiwuEntity;
import com.entity.view.CaiwuView;
import com.service.CaiwuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 财务
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/caiwu")
public class CaiwuController {
@Autowired
private CaiwuService caiwuService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
CaiwuEntity user = caiwuService.selectOne(new EntityWrapper<CaiwuEntity>().eq("caiwuzhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"caiwu", "财务" );
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody CaiwuEntity caiwu){
//ValidatorUtils.validateEntity(caiwu);
CaiwuEntity user = caiwuService.selectOne(new EntityWrapper<CaiwuEntity>().eq("caiwuzhanghao", caiwu.getCaiwuzhanghao()));
if(user!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
caiwu.setId(uId);
caiwuService.insert(caiwu);
return R.ok();
}
/**
* 退出
*/
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("ssion")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
CaiwuEntity user = caiwuService.selectById(id);
return R.ok().put("data", user);
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
CaiwuEntity user = caiwuService.selectOne(new EntityWrapper<CaiwuEntity>().eq("caiwuzhanghao", username));
if(user==null) {
return R.error("账号不存在");
}
user.setMima("123456");
caiwuService.updateById(user);
return R.ok("密码已重置为:123456");
}
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,CaiwuEntity caiwu,
HttpServletRequest request){
EntityWrapper<CaiwuEntity> ew = new EntityWrapper<CaiwuEntity>();
PageUtils page = caiwuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caiwu), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("st")
public R list(@RequestParam Map<String, Object> params,CaiwuEntity caiwu,
HttpServletRequest request){
EntityWrapper<CaiwuEntity> ew = new EntityWrapper<CaiwuEntity>();
PageUtils page = caiwuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caiwu), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("sts")
public R list( CaiwuEntity caiwu){
EntityWrapper<CaiwuEntity> ew = new EntityWrapper<CaiwuEntity>();
ew.allEq(MPUtil.allEQMapPre( caiwu, "caiwu"));
return R.ok().put("data", caiwuService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(CaiwuEntity caiwu){
EntityWrapper< CaiwuEntity> ew = new EntityWrapper< CaiwuEntity>();
ew.allEq(MPUtil.allEQMapPre( caiwu, "caiwu"));
CaiwuView caiwuView = caiwuService.selectView(ew);
return R.ok("查询财务成功").put("data", caiwuView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
CaiwuEntity caiwu = caiwuService.selectById(id);
return R.ok().put("data", caiwu);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
CaiwuEntity caiwu = caiwuService.selectById(id);
return R.ok().put("data", caiwu);
}
/**
* 后端保存
*/
@RequestMapping("ve")
public R save(@RequestBody CaiwuEntity caiwu, HttpServletRequest request){
caiwu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(caiwu);
CaiwuEntity user = caiwuService.selectOne(new EntityWrapper<CaiwuEntity>().eq("caiwuzhanghao", caiwu.getCaiwuzhanghao()));
if(user!=null) {
return R.error("用户已存在");
}
caiwu.setId(new Date().getTime());
caiwuService.insert(caiwu);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody CaiwuEntity caiwu, HttpServletRequest request){
caiwu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(caiwu);
CaiwuEntity user = caiwuService.selectOne(new EntityWrapper<CaiwuEntity>().eq("caiwuzhanghao", caiwu.getCaiwuzhanghao()));
if(user!=null) {
return R.error("用户已存在");
}
caiwu.setId(new Date().getTime());
caiwuService.insert(caiwu);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody CaiwuEntity caiwu, HttpServletRequest request){
//ValidatorUtils.validateEntity(caiwu);
caiwuService.updateById(caiwu);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
caiwuService.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<CaiwuEntity> wrapper = new EntityWrapper<CaiwuEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = caiwuService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
目 录 IV
1 绪论 1
1.1 研究背景 1
1.2 目的和意义 1
1.3 论文结构安排 2
2 相关技术 3
2.1 B/S结构介绍 3
2.2 MySQL数据库介绍 3
2.3 SSM框架介绍 4
2.4 JSP介绍 5
3 系统分析 7
3.1 系统可行性分析 7
3.1.1 技术可行性分析 7
3.1.2 经济可行性分析 7
3.1.3 运行可行性分析 7
3.2 系统性能分析 8
3.2.1 易用性指标 8
3.2.2 可扩展性指标 8
3.2.3 健壮性指标 8
3.2.4 安全性指标 9
3.3 系统流程分析 9
3.3.1 操作流程分析 9
3.3.2 登录流程分析 10
3.3.3 信息添加流程分析 11
3.3.4 信息删除流程分析 12
4 系统设计 13
4.1 系统概要设计 13
4.2 系统功能结构设计 13
4.3 数据库设计 14
4.3.1 数据库E-R图设计 14
4.3.2 数据库表结构设计 16
5 系统实现 21
5.1 管理员模块功能 21
5.1.1 学员管理 21
5.1.2 教练管理 21
5.1.3 财务管理 22
5.2 财务模块功能 23
5.2.1 车辆维护管理 23
5.2.2 缴费信息管理 23
5.3 教练管理 24
5.3.1 学习计划 24
5.3.2 学习进度 25
5.3.3 车辆信息 25
5.4 学员管理 26
5.4.1 教练分配 26
5.4.2 考试成绩 26
5.4.3 缴费信息 27
6 系统测试 28
6.1 系统测试的特点 28
6.2 测试结果分析 28
结 论 30
致 谢 31
参考文献 32