前后端分离Springboot+Vue实现课程社区管理系统

简介: 本项目主要实现一个基于课程选课的社区交流系统,主要的业务背景为每个老师可以自己开设相应的选修课,并指定可以选修的人数,学生登陆系统后可以进行选课,并可以在线针对自己的选课进行在线讨论,点赞等互动行为。管理员则主要是对基本信息的相关管理,比如用户和角色、权限管理等,本系统有着完备的权限管理控制系统,可以根据需要自定角色并分配相应的权限。系统采用前后端分离开发的方式来实现。

项目编号:BS-XX-141

一,项目简介

本项目主要实现一个基于课程选课的社区交流系统,主要的业务背景为每个老师可以自己开设相应的选修课,并指定可以选修的人数,学生登陆系统后可以进行选课,并可以在线针对自己的选课进行在线讨论,点赞等互动行为。管理员则主要是对基本信息的相关管理,比如用户和角色、权限管理等,本系统有着完备的权限管理控制系统,可以根据需要自定角色并分配相应的权限。系统采用前后端分离开发的方式来实现。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

前端技术:jsp+easyui+ajax+jquery

后端技术:spring+springmvc+mybatis+定时任务

三,系统展示

下面展示一下系统的主要功能:

登陆页面:

image.gif编辑

用户注册

image.gif编辑

用户管理

image.gif编辑

菜单管理

image.gif编辑

角色管理

image.gif编辑

权限分配

image.gif编辑

个人信息

image.gif编辑

学生登陆系统

image.gif编辑

选课

image.gif编辑

参与所选课程的社区讨论

image.gif编辑

老师登陆系统

开设课程

image.gif编辑

参与社区讨论

image.gif编辑

四,核心代码展示

package com.course.api.controller;
import com.course.api.config.Result.Result;
import com.course.api.config.Result.Results;
import com.course.api.entity.Comment;
import com.course.api.service.Impl.CommentServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/comment")
public class CommentController {
    @Autowired
    CommentServiceImpl commentService;
    /**
     * 查询当前课程的论坛数据
     * @param courseId
     * @return List
     */
    @GetMapping("getCommentList")
    public Result  getCommentList(@RequestParam Long courseId) {
        return Results.success(commentService.getCommentInfo(courseId));
    }
    /**
     * 添加评论
     * @param comment
     * @return
     */
    @PostMapping("/add")
    public Result add(@RequestBody Comment comment) {
        commentService.addComment(comment);
        return Results.success();
    }
    /**
     * 删除评论
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public Result remove(@PathVariable(value = "id") Long id) {
        commentService.removeById(id);
        return Results.success();
    }
}

image.gif

package com.course.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.course.api.config.Result.Result;
import com.course.api.config.Result.Results;
import com.course.api.entity.CommentThumbs;
import com.course.api.service.Impl.CommentThumbsImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/commentThumbs")
public class CommentThumbsController {
    @Autowired
    CommentThumbsImpl commentThumbsService;
    /**
     * 获取用户点赞的帖子
     * @param userId
     * @return
     */
    @GetMapping("/getLikeComments")
    public Result getLikeComments(@RequestParam Long userId) {
        return Results.success(commentThumbsService.list(new QueryWrapper<CommentThumbs>().eq("user_id", userId)));
    }
    /**
     * 点赞
     * @param commentThumbs
     * @return
     */
    @PostMapping("/giveThumbs")
    public Result giveThumbs(@RequestBody CommentThumbs commentThumbs) {
        commentThumbsService.addThumbs(commentThumbs);
        return Results.success();
    }
    /**
     * 取消点赞
     * @param id
     * @return
     */
    @DeleteMapping("/cancel/{id}")
    public Result cancel(@PathVariable(value = "id") Long id) {
        commentThumbsService.cancelThumbs(id);
        return Results.success();
    }
}

image.gif

package com.course.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.course.api.config.Result.Result;
import com.course.api.config.Result.Results;
import com.course.api.entity.Course;
import com.course.api.service.Impl.CourseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/course")
public class CourseController {
    @Autowired
    CourseServiceImpl courseService;
    /**
     * 获取课程分页数据
     * @param page
     * @param pageSize
     * @param teacherId
     * @return
     */
    @GetMapping("/getCourseList")
    public Result getCourseList(@RequestParam int page,
                                @RequestParam int pageSize,
                                @RequestParam(defaultValue = "0") Long teacherId) {
        IPage<Course> courseIPage = new Page<>(page, pageSize);
        QueryWrapper<Course> queryWrapper = new QueryWrapper<>();
        if (teacherId > 0) {
            queryWrapper.eq("teacher_id", teacherId);
        }
        return Results.success(courseService.page(courseIPage, queryWrapper));
    }
    /**
     * 获取全部课程信息
     * @return
     */
    @GetMapping("/getAllCourseList")
    public Result getAllCourseList() {
        return Results.success(courseService.list());
    }
    /**
     * 添加课程
     * @param course
     * @return newCourseId
     */
    @PostMapping("/add")
    public Result add(@RequestBody Course course) {
        courseService.save(course);
        List<Course> courseList = courseService.list();
        System.out.println(courseList.get(courseList.size() - 1).getId());
        return Results.success(courseList.get(courseList.size() - 1).getId());
    }
    /**
     * 修改课程信息
     * @param course
     * @return
     */
    @PutMapping("update")
    public Result update(@RequestBody Course course) {
        if (courseService.updateById(course)) return Results.success();
        else return Results.failure("编辑失败");
    }
    /**
     * 删除课程
     * @param id
     * @return
     */
    @DeleteMapping("delete/{id}")
    public Result remove(@PathVariable(value = "id") Long id) {
        if (courseService.removeById(id)) return Results.success();
        else return Results.failure("删除失败");
    }
    /**
     * 选课
     * @param courseId
     * @param userId
     * @return
     */
    @PutMapping("/selectCourse/{courseId}/{userId}")
    public Result selectCourse(@PathVariable(value = "courseId") Long courseId,
                               @PathVariable(value = "userId") Long userId) {
        courseService.selectCourseById(courseId, userId);
        return Results.success();
    }
    /**
     * 退选
     * @param courseId
     * @param userId
     * @return
     */
    @PutMapping("deselectCourse/{courseId}/{userId}")
    public Result deselectCourse(@PathVariable(value = "courseId") Long courseId,
                                 @PathVariable(value = "userId") Long userId) {
        courseService.deselectCourseById(courseId, userId);
        return Results.success();
    }
}

image.gif

package com.course.api.controller;
import com.course.api.config.Result.Result;
import com.course.api.config.Result.Results;
import com.course.api.entity.Menu;
import com.course.api.mapper.RoleMenuMapper;
import com.course.api.service.Impl.MenuServiceImpl;
import com.course.api.service.Impl.RoleServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/menu")
public class MenuController {
    @Autowired
    MenuServiceImpl menuService;
    @Autowired
    RoleServiceImpl roleService;
    @Autowired
    RoleMenuMapper roleMenuMapper;
    /**
     * 获取菜单信息
     * @param name
     * @return
     */
    @GetMapping("/getTreeMenu")
    public Result getTreeMenu(@RequestParam(defaultValue = "") String name) {
        return Results.success(menuService.selectTreeMenu(name));
    }
    /**
     * 添加菜单
     * @param menu
     * @return
     */
    @PostMapping("/add")
    public Result add(@RequestBody Menu menu) {
        return Results.success(menuService.save(menu));
    }
    /**
     * 编辑菜单
     * @param menu
     * @return
     */
    @PutMapping("/update")
    public Result update(@RequestBody Menu menu) {
        return Results.success(menuService.updateById(menu));
    }
    /**
     * 删除菜单
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public Result remove(@PathVariable(value = "id") Long id) {
        return Results.success(menuService.removeById(id));
    }
    /**
     * 获取对应角色的路由信息
     * @param userType
     * @return
     */
    @GetMapping("/getRouteList")
    public Result getRouteList(@RequestParam String userType) {
        Long roleId = roleService.selectRoleId(userType);
        List<Long> menuIds = roleMenuMapper.selectByRoleId(roleId);
        List<Menu> menus = menuService.selectTreeMenu("");
        // 对查出的所有菜单针对对应角色进行过滤
        List<Menu> roleMenu = menuService.filterMenu(menus, menuIds);
        return Results.success(roleMenu);
    }
}

image.gif

五,项目总结

本系统基于前后端分离开发实现,界面设计简洁大方,人机交互方便,适合做课程设计与毕业设计。

相关文章
|
19天前
|
Web App开发 编解码 Java
B/S基层卫生健康云HIS医院管理系统源码 SaaS模式 、Springboot框架
基层卫生健康云HIS系统采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医疗机构的主要工作流程,能够与监管系统有序对接,并能满足未来系统扩展的需要。
44 4
|
2月前
|
安全 前端开发 Java
基于springboot的微信公众号管理系统(支持多公众号接入)
基于springboot的微信公众号管理系统(支持多公众号接入)
42 2
|
17天前
|
运维 监控 安全
云HIS医疗管理系统源码——技术栈【SpringBoot+Angular+MySQL+MyBatis】
云HIS系统采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展;支持多样化灵活配置,提取大量公共参数,无需修改代码即可满足不同客户需求;服务组织合理,功能高内聚,服务间通信简练。
32 4
|
2月前
|
存储 前端开发 Java
基于springboot的助农管理系统的设计与实现
基于springboot的助农管理系统的设计与实现
|
21天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
38 2
|
21天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
32 0
|
27天前
|
人工智能 监控 前端开发
springboot数字化智慧城市管理系统源码
支持对城市街道画面进行实时分析,系统可以实现违规摆摊检测、街道垃圾监测、违章停车识别、违规广告、出店经营检测、公共设施破坏、游摊小贩识别等违规识别。AI视频智识别分析系统通过AI技术手段提高城管对城市各个街道的巡查监管的工作效率。可以真正做到事前预警、事中高效检测预警。
20 5
|
29天前
|
消息中间件 Java 关系型数据库
JAVA云HIS医院管理系统源码、基于Angular+Nginx+ Java+Spring,SpringBoot+ MySQL + MyCat
JAVA云HIS医院管理系统 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等,为医院管理提供更有力的保障。 HIS系统以财务信息、病人信息和物资信息为主线,通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为医院领导及各部门管理人员提供全面、准确的各种数据。
32 1
|
1月前
|
JavaScript 前端开发 Java
Springboot+vue地方废品回收机构管理系统
Spring Boot和Vue.js结合打造Web应用。Spring Boot简化企业级应用开发,Vue.js专注用户界面。示例展示了一个简单的废品回收系统,包含用户管理、废品分类和回收记录模块。后端提供获取废品分类的API,前端使用Vue.js和Axios展示分类列表。实际项目需扩展登录、权限等更多功能。
29 7
|
1月前
|
前端开发 JavaScript Java
Springboot+vue的医患档案管理系统
这是一个医患档案管理系统,包含用户管理、病历管理和预约管理模块。示例展示了一个Spring Boot后端接口,用于获取所有病历信息,以及一个Vue.js前端,使用Axios调用该接口显示病历列表。实际项目需考虑登录、权限及病历CRUD功能,可按需求和技术栈扩展。
27 7

相关实验场景

更多