基于Java+SpringBoot+vue+node.js等疫情网课管理系统详细设计和实现

1,001 阅读13分钟

​「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

前言介绍:

       疫情网课也都将通过计算机进行整体智能化操作,对于疫情网课管理系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、学生管理、教师管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、论坛交流、系统管理,学生;首页、个人中心、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理,教师;首页、个人中心、学生管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、系统管理,前台首页;首页、课程表、论坛交流、学校公告、个人中心、后台管理、师生聊天等功能,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了疫情网课管理系统;为学生提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行内容的编辑及维护等;对于学生和教师而言,可以随时进行查询所需信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省学生和教师很多时间,所以开发疫情网课管理系统给管理者带来了很大的方便,同时也方便管理员对学生及教师信息进行处理。

语言技术:

开发工具:IDEA 2021.3、navicat for mysql 、postman。

开发语言:java、jdk1.8、mysql5、node.js 14。

硬件环境:Windows 10操作系统、Google浏览器等。

主要技术:springboot、mybatis-plus、vue、element UI、shiro、mysql等

功能设计:

 管理员: 管理员登录后可进行首页、个人中心、学生管理、教师管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、论坛交流、系统管理等。

学生用户: 学生注册登录后可进行首页、个人中心、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理

功能截图:

 系统多角色登录、不同用户不同权限。

学生点击进入到系统操作界面可以查看首页、个人中心、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理等功能模块。

学生注册 :在学生注册页面可以填写学号、密码、学生、年龄、手机、邮箱等信息进行注册

学生登录,在登录页面通过填写账号、密码等信息完成登录,如图5-16所示。在论坛交流页面通过填写标题、类型、内容等信息进行发布帖子等操作。

论坛交流模块 

 

 课程表:

 学习公告模块:

论坛交流模块: 

 学校公告模块:

 用户个人中心:

 普通学生后台模块:

 修改密码:

 查看课程表信息:

 查看课程信息:

 查看作业信息:

 请假信息:

 上课签到等:

后台管理员: 管理员登录系统后可进行首页、个人中心、学生管理、教师管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、论坛交流、系统管理等操作。

学生管理:

 

老师管理:

 班级管理:

 课程管理:

课程分类管理:

 课程表管理:

 课程信息管理:

 作业信息管理:

上课签到管理:

 论坛交流:

系统首页轮播图:

 学校公告

数据设计:

​## 表banji (班级)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3banjivarchar2000YN班级

表chat (师生聊天)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3useridbigint200NN用户id
4adminidbigint200YN管理员id
5asklongtext21474836470YN提问
6replylongtext21474836470YN回复
7isreplyint100YN是否回复

表config (配置文件)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2namevarchar1000NN配置参数名称
3valuevarchar1000YN配置参数值

表forum (论坛交流)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3titlevarchar2000YN帖子标题
4contentlongtext21474836470NN帖子内容
5parentidbigint200YN父节点id
6useridbigint200NN用户id
7usernamevarchar2000YN用户名
8isdonevarchar2000YN状态

表jiaoshi (教师)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3gonghaovarchar2000NN工号
4mimavarchar2000NN密码
5jiaoshivarchar2000NN教师
6xingbievarchar2000YN性别
7nianlingint100YN年龄
8zhichengvarchar2000YN职称
9shoujivarchar2000YN手机
10youxiangvarchar2000YN邮箱
11zhaopianvarchar2000YN照片

表kechengbiao (课程表)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3biaotivarchar2000YN标题
4banjivarchar2000YN班级
5fengmianvarchar2000YN封面
6kebiaovarchar2000YN课表

表kechengfenlei (课程分类)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3fenleivarchar2000YN分类

表kechengxinxi (课程信息)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3biaotivarchar2000YN标题
4gonghaovarchar2000YN工号
5jiaoshivarchar2000YN教师
6kechengvarchar2000YN课程
7banjivarchar2000YN班级
8zuoyevarchar2000YN作业

表news (学校公告)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3titlevarchar2000NN标题
4introductionlongtext21474836470YN简介
5picturevarchar2000NN图片
6contentlongtext21474836470NN内容

表qingjiaxinxi (请假信息)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3xuehaovarchar2000YN学号
4xueshengvarchar2000YN学生
5banjivarchar2000YN班级
6qishishijiandate100YN起始时间
7jieshushijiandate100YN结束时间
8qingjialiyoulongtext21474836470YN请假理由
9sfshvarchar2000YN是否审核
10shhflongtext21474836470YN审核回复

表shangkeqiandao (上课签到)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3dakavarchar2000YN打卡
4xuehaovarchar2000YN学号
5xueshengvarchar2000YN学生
6banjivarchar2000YN班级
7tiwenvarchar2000YN体温
8kechengvarchar2000YN课程
9dakashijiandatetime190YN打卡时间

表storeup (收藏表)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3useridbigint200NN用户id
4refidbigint200YN收藏id
5tablenamevarchar2000YN表名
6namevarchar2000NN收藏名称
7picturevarchar2000NN收藏图片

表token (token表)

编号名称数据类型长度小数位允许空值主键
1idbigint200NY
2useridbigint200NN
3usernamevarchar1000NN
4tablenamevarchar1000YN
5rolevarchar1000YN
6tokenvarchar2000NN
7addtimetimestamp190NN
8expiratedtimetimestamp190NN

表users (用户表)

编号名称数据类型长度小数位允许空值主键默认值说明
1idbigint200NY主键
2usernamevarchar1000NN用户名
3passwordvarchar1000NN密码
4rolevarchar1000YN管理员角色
5addtimetimestamp190NNCURRENT_TIMESTAMP新增时间

表xuesheng (学生)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3xuehaovarchar2000NN学号
4mimavarchar2000NN密码
5xueshengvarchar2000NN学生
6xingbievarchar2000YN性别
7nianlingint100YN年龄
8shoujivarchar2000YN手机
9youxiangvarchar2000YN邮箱
10banjivarchar2000YN班级
11zhaopianvarchar2000YN照片

表zuoyexinxi (作业信息)

编号名称数据类型长度小数位允许空值主键说明
1idbigint200NY主键
2addtimetimestamp190NN创建时间
3biaotivarchar2000YN标题
4gonghaovarchar2000YN工号
5jiaoshivarchar2000YN教师
6kechengvarchar2000YN课程
7banjivarchar2000YN班级
8xuehaovarchar2000YN学号
9xueshengvarchar2000YN学生
10tijiaozuoyevarchar2000YN提交作业
11tijiaoshijiandatetime190YN提交时间
12sfshvarchar2000YN是否审核
13shhflongtext21474836470YN审核回复

关键代码:

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.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();
    }
}
`

```java
package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import com.interceptor.AuthorizationInterceptor;

@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport{
	
	@Bean
    public AuthorizationInterceptor getAuthorizationInterceptor() {
        return new AuthorizationInterceptor();
    }
	
	@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**");
        super.addInterceptors(registry);
	}
	
	/**
	 * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法
	 */
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/**")
        .addResourceLocations("classpath:/resources/")
        .addResourceLocations("classpath:/static/")
        .addResourceLocations("classpath:/admin/")
        .addResourceLocations("classpath:/front/")
        .addResourceLocations("classpath:/public/");
		super.addResourceHandlers(registry);
    }
}

```

> ## 论文报告:

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/072ddbacf92a4e0e852448b56e728ace~tplv-k3u1fbpfcp-zoom-1.image)![](<> "点击并拖拽以移动")​ ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/23539f3e916e40e59c54f3a5d6bf25fe~tplv-k3u1fbpfcp-zoom-1.image)![](<> "点击并拖拽以移动")​

> ##  总结:

          疫情网课管理系统的整体功能模块的实现,主要是对自己在大学这几年时间所学内容的一个测试,对于系统,主要是通过现在智能化的疫情网课管理系统进行开始系统的实现,并且可以根据需求进行数据信息的增加修改删除等操作,完美的解决了当下疫情网课管理系统中所遇到的问题。

经过一个学期的毕业设计的实现完成已接近尾声,到目前为止,当我回想起整个学期的系统开发日,收获颇丰。毕业设计的主要任务是建立一个智能化的疫情网课管理系统的信息系统,主要使用SpringBoot框架和Mysql数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。

疫情网课管理系统的开发对我大学学习的改进有很大帮助。它使我能够学习计算机知识的相关技术方面问题及与人交往的沟通交流方面,让我意识到无论我们做什么,我们都需要坚持不懈,努力工作,只有这样尝试了并且坚持去做了,我们才可以成功,才可以获得成功的喜悦,如果没有尝试,只是想,那连成功的机会都没有,实际操作进行做了,才会越来越近的靠近成功,随着道路一路向前,未来的路是美好的。

对于疫情网课管理系统的实现,是自己第一次完成的设计一个管理系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力,从系统的开发到设计完成,我完成了一个更全面、更完善、更安全的平台管理系统,这也让我取得了很大的成就感,也使我对未来的生活更有信心。

​