小工具知识网

当前位置: 首页 > 行业知识 > 基于SpringBoot的毕业设计系统设计与实现

行业知识

基于SpringBoot的毕业设计系统设计与实现

2026-11-13 17:54:43 来源:互联网转载

���录

前言

 一、技术栈

二、系统功能介绍

管理员功能实现

课题信息管理

成绩统计报表

教师管理

教师功能实现

选题申请管理

课题任务管理

最终成绩管理

学生功能实现

课题信息管理

课题任务管理

最终成绩查看

三、核心代码

1、登录模块

 2、文件上传模块

3、代码封装


前言

在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生毕业设计信息管理的提升,也为了对学生毕业设计信息进行更好的维护,毕业设计系统的出现就变得水到渠成不可缺少。通过对毕业设计系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。

毕业设计系统通过MySQL数据库与Spring Boot框架进行开发,毕业设计系统能够实现教师管理,公告类型管理,班级管理,课题信息管理,任务类型管理,选题申请管理,学院管理,课题任务管理,最终成绩管理,公告信息管理,学生管理等功能。

通过毕业设计系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。

 一、技术栈

末尾获取源码

SpringBoot+Vue+JS+ jQuery+Ajax...

二、系统功能介绍

管理员功能实现

课题信息管理

课题信息管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成课题信息的修改,删除等操作,管理员也能在当前界面查询课题信息,添加课题信息等。

成绩统计报表

成绩统计报表界面之后,管理员根据各个年份来统计各个学生的成绩信息,同时,管理员可以点击成绩统计报表界面右上角的各种小图标,可以把统计图转化为折线图,柱形图等图形,管理员也能下载统计报表。

 

教师管理

教师管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成教师信息的修改,删除等操作。

 

教师功能实现

选题申请管理

选题申请管理界面之后,教师负责审核学生选题信息,也可以拒绝学生选题信息,当学生完成课题任务之后,教师需要在选题申请管理界面发布学生的最终成绩。

 

课题任务管理

课题任务管理界面之后,教师负责发布课题任务,学生就需要完成任务并上传文档,教师就负责查看学生的任务完成情况信息,然后审核学生完成的课题任务,最后对学生完成的课题任务进行打分。

 

最终成绩管理

最终成绩管理界面之后,教师查看学生最终成绩信息,可以对学生的最终成绩信息进行查询或删除。

 

学生功能实现

课题信息管理

课题信息管理界面之后,学生可以查看课题信息,如果学生没有选择课题,则可以对能够申请的课题进行申请。每个学生只能选择一个课题,已经成功选择课题的学生就不能申请课题了。

 

课题任务管理

课题任务管理界面之后,学生可以查看课题任务,然后完成课题任务并上传阶段性文档。

 

最终成绩查看

最终成绩查看界面之后,学生查看课题名称,查看成绩信息,可以通过课题名称,教师姓名,课题类型以及学生姓名来查询最终成绩。

 

三、核心代码

1、登录模块

 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")@RestControllerpublic 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().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().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().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 params,UserEntity user){        EntityWrapper ew = new EntityWrapper();    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 ew = new EntityWrapper();      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().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();    }}

 2、文件上传模块

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{@Autowired    private 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().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 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(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);}}

3、代码封装

package com.utils; import java.util.HashMap;import java.util.Map; /** * 返回数据 */public class R extends HashMap {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 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;}}

上一篇:C++linux下使用clog和重定向实现写日志

下一篇:怎么指令让远程服务器?