在线课堂|基于Springboot和Vue实现在线学习平台
  nDDqQXWZCcba 2023年12月07日 24 0


 

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-GX-068

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:Springboot和Vue

二,项目简介

本项目基于Springboot和Vue开发实现了一个大学生在线课程学习平台。平台用户有三类:学生、教师、管理员。学生注册登录后可以查看相关课堂,在线播放课程视频进行学习,并可以购买课程,完成课程交易,对课程进行评价,添加学习记录进行记录,在线咨询留言等。教师账户由管理员分配,登录后可以添加课程,添加课程对应的学习视频,查询课程评价并进行回复,查看学生的学习记录,回复学生咨询信息等。管理员主要对平台的所有信息进行相应的管理,包含学生管理、教师管理、课程管理、分类管理、视频管理、咨询管理、学习记录管理、轮播图管理、友情链接管理等,并包含了课程销售的图形报表统计,采用Echart来进行实现。具体见下面功能实现展示。

三,系统展示

系统首页

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_02编辑

学生注册

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_03

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_04编辑

用户登录

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_05

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_06编辑

课程购买与收藏

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_07

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_08编辑

课程评价

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_09

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_10编辑

在线学习

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_11

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_12编辑

在线咨询

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_13

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_14编辑

个人中心

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_15

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_16编辑

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_17

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_18编辑

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_19

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_20编辑

教师登录系统

课程信息管理

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_21

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_22编辑

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_23

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_24编辑

添加课程视频

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_25

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_26编辑

课程购买记录

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_27

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_28编辑

课程学习查询

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_29

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_30编辑

个人资料修改

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_31

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_32编辑

管理员登录

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_33

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_34编辑

课程信息管理

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_35

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_36编辑

课程购买统计

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_37

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_38编辑

系统管理

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_39

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_40编辑

四,核心代码展示

package com.spring.controller;

import com.jntoo.db.*;
import com.jntoo.db.utils.*;
import com.spring.dao.*;
import com.spring.entity.*;
import com.spring.service.*;
import com.spring.util.*;
import com.spring.util.Info;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import tk.mybatis.mapper.entity.Example;

/**
 * 教师 */
@Controller
public class JiaoshiController extends BaseController {

    @Autowired
    private JiaoshiMapper dao;

    @Autowired
    private JiaoshiService service;

    /**
     *  后台列表页
     *
     */
    @RequestMapping("/jiaoshi_list")
    public String list() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }

        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据
        Example example = new Example(Jiaoshi.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        String where = " 1=1 "; // 创建初始条件为:1=1
        where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
        criteria.andCondition(where); // 将条件写进上面的扩展条件类中
        if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于  desc倒序  是则使用倒序,否则使用正序
            example.orderBy(order).desc(); // 把sql 语句设置成倒序
        } else {
            example.orderBy(order).asc(); // 把 sql 设置成正序
        }
        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page  如果没有则设置为1
        page = Math.max(1, page); // 取两个数的最大值,防止page 小于1
        List<Jiaoshi> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数

        // 将列表写给界面使用
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order); // 把当前排序结果写进前台
        assign("sort", sort); // 把当前排序结果写进前台
        return json(); // 将数据写给前端
    }

    public String getWhere() {
        _var = new LinkedHashMap(); // 重置数据
        String where = " ";
        // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
        if (!Request.get("gonghao").equals("")) {
            where += " AND gonghao LIKE '%" + Request.get("gonghao") + "%' ";
        }
        return where;
    }

    @RequestMapping("/jiaoshi_add")
    public String add() {
        _var = new LinkedHashMap(); // 重置数据

        return json(); // 将数据写给前端
    }

    @RequestMapping("/jiaoshi_updt")
    public String updt() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id");
        // 获取行数据,并赋值给前台jsp页面
        Jiaoshi mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 0);

        return json(); // 将数据写给前端
    }

    @RequestMapping("/jiaoshi_updtself")
    public String updtself() {
        _var = new LinkedHashMap(); // 重置数据
        // 更新个人资料
        int id = (int) request.getSession().getAttribute("id");
        Jiaoshi mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 1);
        return json(); // 将数据写给前端
    }

    /**
     * 添加内容
     * @return
     */
    @RequestMapping("/jiaoshiinsert")
    public String insert() {
        _var = new LinkedHashMap(); // 重置数据
        String tmp = "";
        Jiaoshi post = new Jiaoshi(); // 创建实体类
        // 设置前台提交上来的数据到实体类中
        post.setGonghao(Request.get("gonghao"));

        post.setMima(Request.get("mima"));

        post.setXingming(Request.get("xingming"));

        post.setXingbie(Request.get("xingbie"));

        post.setLianxidianhua(Request.get("lianxidianhua"));

        post.setYouxiang(Request.get("youxiang"));

        post.setTouxiang(Request.get("touxiang"));

        service.insert(post); // 插入数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }
        return showSuccess("保存成功", Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
    }

    /**
     * 更新内容
     * @return
     */
    @RequestMapping("/jiaoshiupdate")
    public String update() {
        _var = new LinkedHashMap(); // 重置数据
        // 创建实体类
        Jiaoshi post = new Jiaoshi();
        // 将前台表单数据填充到实体类
        if (!Request.get("gonghao").equals("")) post.setGonghao(Request.get("gonghao"));
        if (!Request.get("mima").equals("")) post.setMima(Request.get("mima"));
        if (!Request.get("xingming").equals("")) post.setXingming(Request.get("xingming"));
        if (!Request.get("xingbie").equals("")) post.setXingbie(Request.get("xingbie"));
        if (!Request.get("lianxidianhua").equals("")) post.setLianxidianhua(Request.get("lianxidianhua"));
        if (!Request.get("youxiang").equals("")) post.setYouxiang(Request.get("youxiang"));
        if (!Request.get("touxiang").equals("")) post.setTouxiang(Request.get("touxiang"));

        post.setId(Request.getInt("id"));
        service.update(post); // 更新数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }
        if (Request.getInt("updtself") == 1) {
            return showSuccess("保存成功", "jiaoshi_updtself.do");
        }

        return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
    }

    /**
     *  后台详情
     */
    @RequestMapping("/jiaoshi_detail")
    public String detail() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id");
        Jiaoshi map = service.find(id); // 根据前台url 参数中的id获取行数据
        assign("map", map); // 把数据写到前台
        return json(); // 将数据写给前端
    }

    /**
     *  删除
     */
    @RequestMapping("/jiaoshi_delete")
    public String delete() {
        _var = new LinkedHashMap(); // 重置数据
        if (!checkLogin()) {
            return showError("尚未登录");
        }
        int id = Request.getInt("id"); // 根据id 删除某行数据
        Map map = Query.make("jiaoshi").find(id);

        service.delete(id); // 根据id 删除某行数据
        return showSuccess("删除成功", request.getHeader("referer")); //弹出删除成功,并跳回上一页
    }
}

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_41

package com.spring.controller;

import com.jntoo.db.*;
import com.jntoo.db.utils.*;
import com.spring.dao.*;
import com.spring.entity.*;
import com.spring.service.*;
import com.spring.util.*;
import com.spring.util.Info;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import tk.mybatis.mapper.entity.Example;

/**
 * 留言板 */
@Controller
public class LiuyanbanController extends BaseController {

    @Autowired
    private LiuyanbanMapper dao;

    @Autowired
    private LiuyanbanService service;

    /**
     *  后台列表页
     *
     */
    @RequestMapping("/liuyanban_list")
    public String list() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }

        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据
        Example example = new Example(Liuyanban.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        String where = " 1=1 "; // 创建初始条件为:1=1
        where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
        criteria.andCondition(where); // 将条件写进上面的扩展条件类中
        if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于  desc倒序  是则使用倒序,否则使用正序
            example.orderBy(order).desc(); // 把sql 语句设置成倒序
        } else {
            example.orderBy(order).asc(); // 把 sql 设置成正序
        }
        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page  如果没有则设置为1
        page = Math.max(1, page); // 取两个数的最大值,防止page 小于1
        List<Liuyanban> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数

        // 将列表写给界面使用
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order); // 把当前排序结果写进前台
        assign("sort", sort); // 把当前排序结果写进前台
        return json(); // 将数据写给前端
    }

    public String getWhere() {
        _var = new LinkedHashMap(); // 重置数据
        String where = " ";
        // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
        return where;
    }

    /**
     * 留言人列表
     */
    @RequestMapping("/liuyanban_list_liuyanren")
    public String listliuyanren() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }
        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据

        Example example = new Example(Liuyanban.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        // 初始化一个条件,条件为:留言人=当前登录用户
        String where = " liuyanren='" + request.getSession().getAttribute("username") + "' ";
        where += getWhere();

        criteria.andCondition(where); // 将条件写入
        if (sort.equals("desc")) { // 注释同list
            example.orderBy(order).desc(); // 注释同list
        } else {
            example.orderBy(order).asc(); // 注释同list
        }

        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 注释同list
        page = Math.max(1, page); // 注释同list

        List<Liuyanban> list = service.selectPageExample(example, page, pagesize);
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order);
        assign("sort", sort);
        return json(); // 将数据写给前端
    }

    @RequestMapping("/liuyanban_add")
    public String add() {
        _var = new LinkedHashMap(); // 重置数据

        return json(); // 将数据写给前端
    }

    @RequestMapping("/liuyanban_updt")
    public String updt() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id");
        // 获取行数据,并赋值给前台jsp页面
        Liuyanban mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 0);

        return json(); // 将数据写给前端
    }

    /**
     * 添加内容
     * @return
     */
    @RequestMapping("/liuyanbaninsert")
    public String insert() {
        _var = new LinkedHashMap(); // 重置数据
        String tmp = "";
        Liuyanban post = new Liuyanban(); // 创建实体类
        // 设置前台提交上来的数据到实体类中
        post.setXingming(Request.get("xingming"));

        post.setLianxidianhua(Request.get("lianxidianhua"));

        post.setLiuyanneirong(Request.get("liuyanneirong"));

        post.setLiuyanren(Request.get("liuyanren"));

        post.setZhuangtai(Request.get("zhuangtai"));

        post.setHuifuneirong(Request.get("huifuneirong"));

        service.insert(post); // 插入数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }
        return showSuccess("保存成功", Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
    }

    /**
     * 更新内容
     * @return
     */
    @RequestMapping("/liuyanbanupdate")
    public String update() {
        _var = new LinkedHashMap(); // 重置数据
        // 创建实体类
        Liuyanban post = new Liuyanban();
        // 将前台表单数据填充到实体类
        if (!Request.get("xingming").equals("")) post.setXingming(Request.get("xingming"));
        if (!Request.get("lianxidianhua").equals("")) post.setLianxidianhua(Request.get("lianxidianhua"));
        if (!Request.get("liuyanneirong").equals("")) post.setLiuyanneirong(Request.get("liuyanneirong"));
        if (!Request.get("liuyanren").equals("")) post.setLiuyanren(Request.get("liuyanren"));
        if (!Request.get("zhuangtai").equals("")) post.setZhuangtai(Request.get("zhuangtai"));
        if (!Request.get("huifuneirong").equals("")) post.setHuifuneirong(Request.get("huifuneirong"));

        post.setId(Request.getInt("id"));
        service.update(post); // 更新数据
        int charuid = post.getId().intValue();
        Query.execute("update liuyanban set zhuangtai='已回复' where id='" + charuid + "'");

        if (isAjax()) {
            return jsonResult(post);
        }

        return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
    }

    /**
     *  删除
     */
    @RequestMapping("/liuyanban_delete")
    public String delete() {
        _var = new LinkedHashMap(); // 重置数据
        if (!checkLogin()) {
            return showError("尚未登录");
        }
        int id = Request.getInt("id"); // 根据id 删除某行数据
        Map map = Query.make("liuyanban").find(id);

        service.delete(id); // 根据id 删除某行数据
        return showSuccess("删除成功", request.getHeader("referer")); //弹出删除成功,并跳回上一页
    }
}

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_42

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_43

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_44编辑

在线课堂|基于Springboot和Vue实现在线学习平台_在线学习_45

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_46编辑

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_47

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_48编辑

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_49

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_50编辑

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_51

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_52编辑

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_53

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_54编辑

在线课堂|基于Springboot和Vue实现在线学习平台_在线课程_55

在线课堂|基于Springboot和Vue实现在线学习平台_springboot在线课程_56编辑

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_57

在线课堂|基于Springboot和Vue实现在线学习平台_java毕业设计_58编辑



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月07日 0

暂无评论

推荐阅读
nDDqQXWZCcba