末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SpringBoot
前端:Vue
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是


前言

基于springboot自动排课系统有三大用户:

学生:首页、教师信息、课程信息、公告信息、个人中心、后台管理。

管理员:首页、个人中心、学生管理、教师管理、班级信息管理、专业信息管理、教师信息管理、课程信息管理、排课信息管理、系统管理。

教师:首页、个人中心、课程信息管理、排课信息管理。

前台首页

进入首页首先可以看到有首页、教师信息、课程信息、公告信息、个人中心、后台管理。

在教室信息中我们可以看到有教室信息

查看教室详情信息

学生登录注册页面。

在个人中心,学生可以查看自己的信息并且选择修改

管理员功能

管理员和教师登录页面功能

 管理员登录到系统可以看到有首页、个人中心、学生管理、教师管理、班级信息管理、专业信息管理、教师信息管理、课程信息管理、排课信息管理、系统管理。

管理员可以在学生管理中对学生信息进行修改或者删除又或者进行排课处理。

在教师管理中,管理员可以对教师信息进行删除或者修改又或者进行添加课程处理。

班级信息管理。

专业信息管理页面。

教室信息管理页面。

课程信息管理页面

教师功能

教师登录后可以看到有首页、个人中心、课程信息管理、排课信息管理。


登录模块核心代码


package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){
//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}

文件上传核心代码

package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
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 org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上传文件映射表*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{@Autowiredprivate ConfigService configService;/*** 上传文件*/@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime()+"."+fileExt;File dest = new File(upload.getAbsolutePath()+"/"+fileName);file.transferTo(dest);FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下载文件*/@IgnoreAuth@RequestMapping("/download")public ResponseEntity<byte[]> download(@RequestParam String fileName) {try {File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}File file = new File(upload.getAbsolutePath()+"/"+fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    headers.setContentDispositionFormData("attachment", fileName);    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);}}

封装代码

package com.utils;import java.util.HashMap;
import java.util.Map;/*** 返回数据*/
public class R extends HashMap<String, Object> {private static final long serialVersionUID = 1L;public R() {put("code", 0);}public static R error() {return error(500, "未知异常,请联系管理员");}public static R error(String msg) {return error(500, msg);}public static R error(int code, String msg) {R r = new R();r.put("code", code);r.put("msg", msg);return r;}public static R ok(String msg) {R r = new R();r.put("msg", msg);return r;}public static R ok(Map<String, Object> map) {R r = new R();r.putAll(map);return r;}public static R ok() {return new R();}public R put(String key, Object value) {super.put(key, value);return this;}
}

基于springboot自动排课系统相关推荐

  1. java基于SpringBoot+Vue+nodejs的高校自动排课系统 Element-UI

    自动排课系统也都将通过计算机进行整体智能化操作,对于自动排课系统所牵扯的管理及数据保存都是非常多的,例如(1)管理员:首页.个人中心.学生管理.教师管理.班级信息管理.专业信息管理.教室信息管理.课程 ...

  2. 基于springboot的自动排课系统

    末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue.HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8. ...

  3. 基于javaweb的课程自动排课系统(java+springboot+html+layui+thymeleaf+redis+mysql)

    基于javaweb的课程自动排课系统(java+springboot+html+layui+thymeleaf+redis+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 ecli ...

  4. (附源码)springboot高校机房自动排课系统毕业设计 211004

    高校机房自动排课系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用J ...

  5. (附源码)springboot高校机房自动排课系统 毕业设计211004

    高校机房自动排课系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用J ...

  6. (附源码)springboot高校机房自动排课系统 毕业设计 211004

    高校机房自动排课系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用J ...

  7. 粒子群课设_GitHub - LIYAJUN2018/tscss: 基于粒子群算法的中职自动排课系统

    kvf-admin kvf-admin是一套快速开发框架.脚手架.后台管理系统.权限系统,上手简单,拿来即用.为广大开发者去除大部分重复繁锁的代码工作,让开发者拥有更多的时间陪恋人.家人和朋友. 后端 ...

  8. Java项目:课程自动排课系统(java+SpringBoot+html+layui+thymeleaf+redis+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 课程自动排课系统,该系统分两种角色:管理员与普通用户: 主要功能包括: 首页:查看分课.查看课表.查看空教室: 班级设置:添加班级 ...

  9. 基于java的自动排课系统

    借助本课题研究开发的基于java的自动排课系统,使学校教务管理人员可以随时掌握学校的排课情况,进一步指导学校的教学. 本排课系统的主要功能大致包括:通过计算机可以进行排课管理,实现自动化排课,即无纸化 ...

最新文章

  1. 【SICP练习】30 练习1.36
  2. 我的第一个网页制作:Hello World!
  3. html标签的嵌套规则
  4. leetcode 91. Decode Ways | 91. 解码方法(动态规划)
  5. St_geometry 初始用
  6. SQL Server数据库持续集成简介
  7. Git(12)-- Git 分支 - 分支简介
  8. 拓端tecdat|R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间
  9. 10 Seconds Count Down
  10. 手机usb计算机连接不能选择,USB调试 是灰色按钮,无法点击,现在手机无法与电脑连接。...
  11. 电商系统商品库的基本功能设计与实现
  12. Web前端开发-为网页元素添加阴影效果
  13. 最近 火火火 的开源项目
  14. Geotrust证书新申请及续费
  15. eclipse的安装与下载
  16. VScode前进和后退按钮,非快捷键
  17. 2019美团后台开发工程师笔试
  18. Python图形界面不够美?三行代码全面美化你的Tkinter界面
  19. springboot 2.0 配置时间格式化不生效问题
  20. python虚拟环境介绍与使用

热门文章

  1. unity3D声音播放
  2. 2022-09-15 Chrome Edge浏览器开启超线程下载
  3. 多文件上传并且需要添加其他参数,formData上传报错,Caused by: org.apache.tomcat.util.http.fileupload.FileUploadException:
  4. 基于laya Air引擎的游戏开发之简介篇
  5. WordPress程序RiPro+极致主题4.0+美化一体安装包 高仿站源网交易网站
  6. performClick
  7. vscode对比vs:花落谁家
  8. GDPU C语言 番外篇
  9. 2020“香港科大商学院-黑瞳科技”【人工智能】百万奖金国际创业大赛宣讲会上海站成功举办...
  10. STL 中的常见实用库函数(适合初学算法者阅读)(持续更新中)