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

​「这是我参与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 (班级)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 banji varchar 200 0 Y N 班级

表chat (师生聊天)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 userid bigint 20 0 N N 用户id
4 adminid bigint 20 0 Y N 管理员id
5 ask longtext 2147483647 0 Y N 提问
6 reply longtext 2147483647 0 Y N 回复
7 isreply int 10 0 Y N 是否回复

表config (配置文件)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 name varchar 100 0 N N 配置参数名称
3 value varchar 100 0 Y N 配置参数值

表forum (论坛交流)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 title varchar 200 0 Y N 帖子标题
4 content longtext 2147483647 0 N N 帖子内容
5 parentid bigint 20 0 Y N 父节点id
6 userid bigint 20 0 N N 用户id
7 username varchar 200 0 Y N 用户名
8 isdone varchar 200 0 Y N 状态
## 表jiaoshi (教师)
编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 gonghao varchar 200 0 N N 工号
4 mima varchar 200 0 N N 密码
5 jiaoshi varchar 200 0 N N 教师
6 xingbie varchar 200 0 Y N 性别
7 nianling int 10 0 Y N 年龄
8 zhicheng varchar 200 0 Y N 职称
9 shouji varchar 200 0 Y N 手机
10 youxiang varchar 200 0 Y N 邮箱
11 zhaopian varchar 200 0 Y N 照片

表kechengbiao (课程表)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 biaoti varchar 200 0 Y N 标题
4 banji varchar 200 0 Y N 班级
5 fengmian varchar 200 0 Y N 封面
6 kebiao varchar 200 0 Y N 课表

表kechengfenlei (课程分类)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 fenlei varchar 200 0 Y N 分类

表kechengxinxi (课程信息)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 biaoti varchar 200 0 Y N 标题
4 gonghao varchar 200 0 Y N 工号
5 jiaoshi varchar 200 0 Y N 教师
6 kecheng varchar 200 0 Y N 课程
7 banji varchar 200 0 Y N 班级
8 zuoye varchar 200 0 Y N 作业

表news (学校公告)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 title varchar 200 0 N N 标题
4 introduction longtext 2147483647 0 Y N 简介
5 picture varchar 200 0 N N 图片
6 content longtext 2147483647 0 N N 内容

表qingjiaxinxi (请假信息)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 xuehao varchar 200 0 Y N 学号
4 xuesheng varchar 200 0 Y N 学生
5 banji varchar 200 0 Y N 班级
6 qishishijian date 10 0 Y N 起始时间
7 jieshushijian date 10 0 Y N 结束时间
8 qingjialiyou longtext 2147483647 0 Y N 请假理由
9 sfsh varchar 200 0 Y N 是否审核
10 shhf longtext 2147483647 0 Y N 审核回复

表shangkeqiandao (上课签到)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 daka varchar 200 0 Y N 打卡
4 xuehao varchar 200 0 Y N 学号
5 xuesheng varchar 200 0 Y N 学生
6 banji varchar 200 0 Y N 班级
7 tiwen varchar 200 0 Y N 体温
8 kecheng varchar 200 0 Y N 课程
9 dakashijian datetime 19 0 Y N 打卡时间

表storeup (收藏表)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 userid bigint 20 0 N N 用户id
4 refid bigint 20 0 Y N 收藏id
5 tablename varchar 200 0 Y N 表名
6 name varchar 200 0 N N 收藏名称
7 picture varchar 200 0 N N 收藏图片

表token (token表)

编号 名称 数据类型 长度 小数位 允许空值 主键
1 id bigint 20 0 N Y
2 userid bigint 20 0 N N
3 username varchar 100 0 N N
4 tablename varchar 100 0 Y N
5 role varchar 100 0 Y N
6 token varchar 200 0 N N
7 addtime timestamp 19 0 N N
8 expiratedtime timestamp 19 0 N N

表users (用户表)

编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明
1 id bigint 20 0 N Y 主键
2 username varchar 100 0 N N 用户名
3 password varchar 100 0 N N 密码
4 role varchar 100 0 Y N 管理员 角色
5 addtime timestamp 19 0 N N CURRENT_TIMESTAMP 新增时间

表xuesheng (学生)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 xuehao varchar 200 0 N N 学号
4 mima varchar 200 0 N N 密码
5 xuesheng varchar 200 0 N N 学生
6 xingbie varchar 200 0 Y N 性别
7 nianling int 10 0 Y N 年龄
8 shouji varchar 200 0 Y N 手机
9 youxiang varchar 200 0 Y N 邮箱
10 banji varchar 200 0 Y N 班级
11 zhaopian varchar 200 0 Y N 照片

表zuoyexinxi (作业信息)

编号 名称 数据类型 长度 小数位 允许空值 主键 说明
1 id bigint 20 0 N Y 主键
2 addtime timestamp 19 0 N N 创建时间
3 biaoti varchar 200 0 Y N 标题
4 gonghao varchar 200 0 Y N 工号
5 jiaoshi varchar 200 0 Y N 教师
6 kecheng varchar 200 0 Y N 课程
7 banji varchar 200 0 Y N 班级
8 xuehao varchar 200 0 Y N 学号
9 xuesheng varchar 200 0 Y N 学生
10 tijiaozuoye varchar 200 0 Y N 提交作业
11 tijiaoshijian datetime 19 0 Y N 提交时间
12 sfsh varchar 200 0 Y N 是否审核
13 shhf longtext 2147483647 0 Y N 审核回复

关键代码:

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数据库的开发工具,对系统的每个功能模块进行相对应的操作,最后,系统调试结果表明系统基本可以满足功能要求。

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

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

​
复制代码

猜你喜欢

转载自juejin.im/post/7063304203417944072