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

简介: 前后端分离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.png

用户注册

462d48bdebdf428695fc61e3379897e5.png

用户管理

image.png

菜单管理

image.png

角色管理

image.png

权限分配

image.png

个人信息

image.png

选课

image.png

老师登陆系统

开设课程

image.png

参与社区讨论

image.png

四,核心代码展示


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

五,项目总结


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

相关文章
|
13天前
|
Java 数据库连接 应用服务中间件
基于springboot的母婴健康交流系统
本平台旨在为新手父母提供专业、系统的婴幼儿健康知识与交流空间,整合权威资源,解决育儿信息碎片化与误导问题,支持经验分享与情感互助,助力科学育儿。
|
11天前
|
JavaScript Java 关系型数据库
基于springboot的电影购票管理系统
本系统基于Spring Boot框架,结合Vue、Java与MySQL技术,实现电影信息管理、在线选座、购票支付等核心功能,提升观众购票体验与影院管理效率,推动电影产业数字化发展。
|
15天前
|
JavaScript Java 关系型数据库
基于springboot的小区车位租售管理系统
针对城市化进程中小区停车难问题,本文设计基于SpringBoot的车位租售管理系统,结合Vue前端与MySQL数据库,实现车位信息数字化、租售流程自动化。系统支持在线查询、申请、支付及数据统计,提升管理效率与用户体验,促进资源优化配置。
|
14天前
|
JavaScript Java 关系型数据库
基于springboot的家政服务预约系统
随着社会节奏加快与老龄化加剧,家政服务需求激增,但传统模式存在信息不对称、服务不规范等问题。基于Spring Boot、Vue、MySQL等技术构建的家政预约系统,实现服务线上化、标准化与智能化,提升用户体验与行业效率,推动家政服务向信息化、规范化发展。
|
9天前
|
存储 JavaScript Java
基于springboot的大学公文收发管理系统
本文介绍公文收发系统的研究背景与意义,分析其在数字化阅读趋势下的必要性。系统采用Vue、Java、Spring Boot与MySQL技术,实现高效、便捷的公文管理与在线阅读,提升用户体验与信息处理效率。
|
11天前
|
人工智能 JavaScript Java
基于springboot的大学生创新能力比赛系统
本研究聚焦大学生能力培养系统,结合AI、大数据、区块链及VR/AR等前沿技术,构建个性化、全过程的能力发展框架。通过Java、Spring Boot、MySQL与Vue技术实现系统开发,旨在提升学生综合素质与社会竞争力,推动高等教育改革与创新发展。
|
12天前
|
JavaScript Java 数据库连接
基于springboot的网球场场地预约系统
本系统基于Vue、Spring Boot、Java等技术,构建智能化网球场预约平台,提升用户体验与场地利用率,推动体育产业数字化发展。
|
21天前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
129 4
基于springboot+vue开发的会议预约管理系统
|
5月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
470 1
|
6月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
431 7