文章底部获取项目源码联系方式
【万字文档+源码】基于Springboot+vue的学生网上请假系统-可用于毕设-课程设计-练手学习
1系统概述
1.1 研究背景
随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理学生网上请假系统的相关信息成为必然。开发合适的学生网上请假系统,可以方便管理人员对学生网上请假系统的管理,提高信息管理工作效率及查询效率,有利于更好的为人们服务。
1.2 研究目的
随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合。学生网上请假系统的信息化程度体现在将互联网与信息技术应用于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使信息管理更先进、更高效、更科学,信息交流更迅速。
对于之前学生网上请假系统的管理,大部分都是使用传统的人工方式去管理,这样导致了管理效率低下、出错频率高。而且,时间一长的话,积累下来的数据信息不容易保存,对于查询、更新还有维护会带来不少问题。对于数据交接也存在很大的隐患。如果采用电子化的存储方式就会带来很大的改善,而且给用户的查询带来了很大便利,因此设计一个学生网上请假系统刻不容缓,能够提高信息的管理水平。
1.3 系统设计思想
一个成功的网站应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的策划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。同时,一个大型的计算机网站系统,必须有一个正确的设计指导思想,通过合理选择数据结构、网络结构、操作系统以及开发环境,构成一个完善的网络体系结构,才能充分发挥计算机信息管理的优势。根据现实生活中网民的实际需求,本系统的设计按照下述原则进行。
1.有效性:实际上这里的有效性包括两个方面的意思:有用性和可用性。有用性是指站点潜在的能满足用户需求的功能,而可用性是指能够通过站点的操作实现特定的目标。可以看出一个站点如果不能恰当运行或设计得非常槽糕就不是一个好站点。可用站点的效益应该非常高,并易于学习,在实现用户目标时令人满意而不出错。
2.高可靠性:一个实用的网站同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证网站的可靠性与容错性。
3.高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,充分考虑系统及数据资源的容灾、备份、恢复的要求。为系统提供强大的数据库备份工具。可以保证关键数据的安全性。操作权限级,设置不同的角色确保每一步的操作权限,可以由管理员进行设置。
4.先进性:采用目前国际上最先进的开发技术,使用JSP开发技术,MYSQL作为网站后台数据库。采用这些技术降低了以后的系统运营成本,提高了系统的稳定性和易维护性。
5.采用标准技术:本网站的所有设计遵循国际上现行的标准进行,以提高系统的开放性。
6.外观和技术平衡:系统采用Web风格的界面设计,界面友好、美观,使用方便,易学易用。网站设计的关键问题是外观和技术的平衡。外现不好的网站令人厌烦,站点可以运行很好,但却不能带动用户积极性,相反,如果外观非常有表现力,但技术有限,用户则会感到非常失望。在外观与技术之间需要确定一个清晰而连续的关系,即外观与站点的意图相关,对不同类型的网站处理方法不同。
2 系统概要设计
2.1概述
本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。
2.2系统结构
本系统是基于B/S架构的网站系统,设计的功能结构图如下图所示:
2.3 项目运行部分截图
2.4 部分源码
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.BanjixinxiEntity;
import com.entity.view.BanjixinxiView;
import com.service.BanjixinxiService;
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-05-08 02:39:08
*/
@RestController
@RequestMapping("/banjixinxi")
public class BanjixinxiController {
@Autowired
private BanjixinxiService banjixinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,BanjixinxiEntity banjixinxi,
HttpServletRequest request){
EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
PageUtils page = banjixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, banjixinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,BanjixinxiEntity banjixinxi,
HttpServletRequest request){
EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
PageUtils page = banjixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, banjixinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( BanjixinxiEntity banjixinxi){
EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( banjixinxi, "banjixinxi"));
return R.ok().put("data", banjixinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(BanjixinxiEntity banjixinxi){
EntityWrapper< BanjixinxiEntity> ew = new EntityWrapper< BanjixinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( banjixinxi, "banjixinxi"));
BanjixinxiView banjixinxiView = banjixinxiService.selectView(ew);
return R.ok("查询班级信息成功").put("data", banjixinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
BanjixinxiEntity banjixinxi = banjixinxiService.selectById(id);
banjixinxi.setClicknum(banjixinxi.getClicknum()+1);
banjixinxi.setClicktime(new Date());
banjixinxiService.updateById(banjixinxi);
return R.ok().put("data", banjixinxi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
BanjixinxiEntity banjixinxi = banjixinxiService.selectById(id);
banjixinxi.setClicknum(banjixinxi.getClicknum()+1);
banjixinxi.setClicktime(new Date());
banjixinxiService.updateById(banjixinxi);
return R.ok().put("data", banjixinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
banjixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(banjixinxi);
banjixinxiService.insert(banjixinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
banjixinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(banjixinxi);
banjixinxiService.insert(banjixinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody BanjixinxiEntity banjixinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(banjixinxi);
banjixinxiService.updateById(banjixinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
banjixinxiService.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<BanjixinxiEntity> wrapper = new EntityWrapper<BanjixinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = banjixinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
/**
* 前端智能排序
*/
@IgnoreAuth
@RequestMapping("/autoSort")
public R autoSort(@RequestParam Map<String, Object> params,BanjixinxiEntity banjixinxi, HttpServletRequest request,String pre){
EntityWrapper<BanjixinxiEntity> ew = new EntityWrapper<BanjixinxiEntity>();
Map<String, Object> newMap = new HashMap<String, Object>();
Map<String, Object> param = new HashMap<String, Object>();
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
String newKey = entry.getKey();
if (pre.endsWith(".")) {
newMap.put(pre + newKey, entry.getValue());
} else if (StringUtils.isEmpty(pre)) {
newMap.put(newKey, entry.getValue());
} else {
newMap.put(pre + "." + newKey, entry.getValue());
}
}
params.put("sort", "clicknum");
params.put("order", "desc");
PageUtils page = banjixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, banjixinxi), params), params));
return R.ok().put("data", page);
}
}
3.配套万字文档
4.源码获取
精彩专栏推荐订阅:在下方专栏👇🏻
https://itxiongmao.blog.csdn.net/category_9538286.html
欢迎大家点赞、收藏、关注、评论啦 、查看下方二维码👇🏻获取联系方式👇🏻