基于springboot的毕业设计选题管理系统【毕设完工】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

 

4系统设计

4.1 软件功能模块设计

毕业设计选题管理系统分为三个模块,分别是管理员功能模块和学生、教师功能模块。主要功能模块包括:学生、教师、毕设题目、毕设选题、毕设任务书、开题报告、中期检查、毕业论文、论文成绩、通知公告等管理功能,系统总体功能如下图所示[12]。

图4-1毕业设计选题管理系统总体功能模块图

4.2 数据库设计

4.2.1 概念模型设计

概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。

开题报告包括:选题名称、开题报告、提交日期、备注、学号、姓名、教师工号、教师姓名 、审核回复、审核状态、审核。

4.2.2 数据表

学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。

本系统采用的是MySQL数据库存储数据,系统中使用到的主要数据表的具体展示部分如下所示。

表4-1:毕设选题

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bishetimu

varchar

200

毕设题目

timuyaoqiu

varchar

200

题目要求

xuantiriqi

date

选题日期

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xuantibeizhu

varchar

200

选题备注

xuehao

varchar

200

学号

xingming

varchar

200

姓名

xueyuan

varchar

200

学院

zhuanye

varchar

200

专业

banji

varchar

200

班级

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-2:中期检查

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuantimingcheng

varchar

200

选题名称

wenjian

longtext

4294967295

文件

lunwenjianjie

longtext

4294967295

论文简介

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

tijiaoshijian

datetime

提交时间

xuehao

varchar

200

学号

xingming

varchar

200

姓名

banji

varchar

200

班级

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-3:毕设题目

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bishetimu

varchar

200

毕设题目

timuyaoqiu

varchar

200

题目要求

zhuyishixiang

varchar

200

注意事项

timuzhuangtai

varchar

200

题目状态

timushuoming

longtext

4294967295

题目说明

faburiqi

date

发布日期

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xueyuan

varchar

200

学院

表4-4:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

xingming

varchar

200

姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

shouji

varchar

200

手机

xueyuan

varchar

200

学院

zhuanye

varchar

200

专业

chushengriqi

date

出生日期

banji

varchar

200

班级

zhengzhimianmao

varchar

200

政治面貌

表4-5:毕设任务书

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuantimingcheng

varchar

200

选题名称

xuantiyaoqiu

varchar

200

选题要求

renwushu

longtext

4294967295

任务书

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

renwushuxiangqing

longtext

4294967295

任务书详情

tijiaoriqi

date

提交日期

xuehao

varchar

200

学号

xingming

varchar

200

姓名

zhuanye

varchar

200

专业

banji

varchar

200

班级

xueyuan

varchar

200

学院

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-6:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-7:通知公告

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

neirong

longtext

4294967295

内容

fabushijian

date

发布时间

faburen

varchar

200

发布人

tupian

longtext

4294967295

图片

表4-8:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-9:论文成绩

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

lunwentimu

varchar

200

论文题目

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

lunwenchengji

int

论文成绩

shifouhege

varchar

200

是否合格

jiaoshipingyu

longtext

4294967295

教师评语

表4-10:开题报告

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuantimingcheng

varchar

200

选题名称

kaitibaogao

longtext

4294967295

开题报告

tijiaoriqi

date

提交日期

beizhu

varchar

200

备注

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-11:教师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

mima

varchar

200

密码

jiaoshixingming

varchar

200

教师姓名

xingbie

varchar

200

性别

zhicheng

varchar

200

职称

dianhua

varchar

200

电话

chushengriqi

varchar

200

出生日期

xueyuan

varchar

200

学院

zhengzhimianmao

varchar

200

政治面貌

表4-12:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-13:毕业论文

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

lunwentimu

varchar

200

论文题目

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

lunwenwenjian

longtext

4294967295

论文文件

wanchengshijian

date

完成时间

xiangqing

longtext

4294967295

详情

5 系统功能实现

5.1管理员模块实现

管理员登录,在登录页面正确输入用户名和密码、角色后,点击登录操作;如图5-1所示。                               

图5-1 管理员登录界面

管理员进入主页面,主要功能包括对系统首页、个人中心、学生管理、教师管理、毕设题目管理、毕设选题管理、毕设任务书管理、开题报告管理、中期检查管理、毕业论文管理、论文成绩管理、通知公告管理等进行操作。管理员主页面如图5-2所示:

图5-2 管理员主界面

管理员点击学生管理,在学生管理页面对学号、姓名、性别、手机、学院、专业、出生日期、班级、政治面貌等信息,可以查询、新增、修改或删除学生信息等操作。如图5-3所示:

图5-3 学生管理界面

管理员点击教师管理,在教师管理页面对 教师工号、教师姓名、性别、职称、电话、出生日期、学院、政治面貌等信息,可以查询、新增、修改或删除教师信息等操作。如图5-4所示:

图5-4 教师管理界面

JAVA后端代码实现

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{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private 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);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值