原创

基于SpringBoot2+vue2的智能学习平台系统

温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

浏览全文可获取

2. 项目简介

本项目是一个名为“智能学习平台系统”的Web应用程序。该系统旨在为学生、教师和管理员提供一个在线的、集成的学习和教学环境。

主要功能包括:

  • 用户角色管理:系统支持三种角色,即学生教师管理员。不同角色拥有不同的操作权限和界面。
  • 课程信息管理:教师可以发布课程信息,包括课程标题、类型、图片、视频和文档等。学生可以浏览课程、观看视频、下载资料,并对课程进行留言。
  • 在线考试系统:教师可以创建试卷(包含单选题、多选题、判断题和填空题等),设置考试时长和总分。学生可以进行在线考试,系统会自动评分别记录成绩,并将错题自动归入错题本。
  • 论坛交流:所有用户(学生、教师、管理员)都可以在论坛发布帖子并互相回复,进行学习交流。
  • 公告信息管理:管理员可以发布系统公告,所有用户均可查看。

3. 技术栈

该项目的技术架构主要分为后端和前端两部分:

  • 后端技术:
    • 基础框架: Spring Boot 2.2.2.RELEASE
    • 持久层框架: MyBatis Plus 2.3
    • 安全框架: Apache Shiro 1.3.2
    • 数据库: MySQL 5.7.32
    • 工具库: Apache Commons Lang3, Fastjson, Hutool
  • 前端技术:
    • 管理后台 (admin): Vue.js 2.x 配合 Element UI 组件库。
    • 用户前台 (front): Layui 框架、jQuery、HTML5/CSS3。

4. 详细介绍

系统功能模块按用户角色划分如下:

学生端

  1. 课程学习模块:
    • 可以按分类或关键字搜索课程。
    • 查看课程详情,观看在线视频,下载文档资料。
    • 在课程下方进行留言和提问。
  2. 在线考试模块:
    • 在“试卷表”页面查看可用的试卷列表,并参加考试。
    • 考试过程中有计时器,提交答案后系统自动判分。
    • 考试结束后,可以在“考试记录”中查看自己的得分和答题详情。
    • 在“错题本”中回顾所有做错的题目及其解析。
  3. 论坛模块:
    • 浏览所有帖子,查看帖子的主内容和所有回复。
    • 发布新帖子,或回复已有的帖子。
  4. 公告模块:
    • 浏览系统发布的公告信息。
  5. 个人中心:
    • 查看和修改自己的个人信息,如头像、姓名、联系方式等。

教师端

  1. 课程管理:
    • 课程信息管理:拥有课程的增删改查权限,可以发布包含视频、文档等富媒体内容的课程。
    • 课程留言管理:可以查看并回复学生对课程的留言。
  2. 考试管理:
    • 试卷管理:创建和管理试卷,设定考试时长和总分。
    • 试题管理:为指定试卷添加、修改或删除试题。试题支持单选题、多选题、判断题、填空题。
    • 考试记录:可以查看所有学生的考试成绩。
  3. 论坛模块:
    • 可以参与论坛的讨论,发布和回复帖子。
  4. 公告模块:
    • 查看系统公告。

管理员端

拥有系统的最高管理权限,负责维护基础数据和系统配置。

  1. 管理员管理: 管理系统管理员账户。
  2. 基础数据管理:
    • 管理“课程类型”、“公告类型”等字典数据。
  3. 论坛管理: 拥有所有帖子的管理权限,可以进行删除等操作。
  4. 教师管理: 对教师账户进行增删改查,支持重置密码。
  5. 学生管理: 对学生账户进行增删改查,支持重置密码。
  6. 课程信息管理: 对所有课程和课程留言拥有完整的权限。
  7. 公告信息管理: 发布和管理系统公告。
  8. 轮播图管理: 管理系统首页的轮播图展示。

5. 部分代码

以下是项目中一些核心功能的代码示例:

考试答案提交与判分逻辑 (后端 Controller)

文件路径: ./zhinengxuexipingtai/src/main/java/com/controller/ExamredetailsController.java

    /**
     * 后端保存考试详情
     */
    @RequestMapping("/saveExamredetails")
    public R saveExamredetails(@RequestBody ExamredetailsEntity examredetails, Integer examrecordId, HttpServletRequest request) {
        // 1. 获取当前用户ID
        // ... 代码省略 ...
        // 2. 保存用户的这道题的答题记录
        boolean insert = examredetailsService.insert(examredetails);

        // 3. 获取试题的标准答案
        ExamquestionEntity examquestion = examquestionService.selectById(examredetails.getExamquestionId());

        // 4. 判断用户答案是否正确
        if (examquestion.getExamquestionAnswer().equals(examredetails.getExamredetailsMyanswer())) {
            // 5. 如果正确,更新考试记录的总分
            ExamrecordEntity examrecord = examrecordService.selectById(examrecordId);
            examrecord.setTotalScore(examrecord.getTotalScore() + examredetails.getExamredetailsMyscore());
            examrecordService.updateById(examrecord);
        } else {
            // 6. 如果错误,将这道题存入该考生的错题本
            ExamrewrongquestionEntity examrewrongquestion = new ExamrewrongquestionEntity();
            // ... 设置错题信息 ...
            examrewrongquestionService.insert(examrewrongquestion);
        }
        return R.ok();
    }

试题关联试卷的总分自动更新 (后端 Controller)

文件路径: ./zhinengxuexipingtai/src/main/java/com/controller/ExamquestionController.java

    /**
     * 保存试题时,同步更新对应试卷的总分
     */
    @RequestMapping("/saveExamquestion")
    public R saveExamquestion(@RequestBody ExamquestionEntity examquestion, HttpServletRequest request) {
        // 1. 保存试题
        boolean b = examquestionService.insert(examquestion);

        // 2. 获取该试题关联的试卷
        ExampaperEntity exampaper = exampaperService.selectById(examquestion.getExampaperId());

        // 3. 将试卷的原有总分加上新试题的分值
        exampaper.setExampaperMyscore(exampaper.getExampaperMyscore() + examquestion.getExamquestionScore());

        // 4. 更新试卷总分
        boolean b1 = exampaperService.updateById(exampaper);

        return R.ok();
    }

论坛帖子列表的前端展示 (Vue.js)

文件路径: ./zhinengxuexipingtai/src/main/resources/admin/admin/src/views/modules/forum/list.vue (推断路径)

<template>
  <div class="forum-list">
    <div v-for="(item,index) in dataList" v-bind:key="index" href="javascript:void(0);" @click="jump('../forum/detail.html?id='+item.id);" class="forum-item">
      <!-- 判断帖子发布者角色,并显示不同的发布人信息 -->
      <h2 v-if="item.yonghuId" class="h2">{{item.forumName}}(发布人:{{item.yonghuName}})(发布人权限:学生)</h2>
      <h2 v-if="item.jiaoshiId" class="h2">{{item.forumName}}(发布人:{{item.jiaoshiName}})(发布人权限:教师)</h2>
      <h2 v-if="item.usersId" class="h2">{{item.forumName}}(发布人:管理员)(发布人权限:管理员)</h2>

      <div class="create-time">
        发布时间:{{item.insertTime}}
      </div>
    </div>
  </div>
</template>

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33
img34
img35
img36
img37
img38
img39
img40
img41
img42

7. 项目总结

该“智能学习平台系统”是一个功能较为完整的在线学习与考试管理系统。项目通过清晰的用户角色划分(管理员、教师、学生),实现了从内容管理(课程、公告)到互动交流(论坛),再到核心业务(在线考试)的完整闭环。

优点:

  • 功能全面:覆盖了在线教育的核心场景,特别是考试模块的题型支持(单选、多选、判断、填空)和自动判分、错题集功能是亮点。
  • 结构清晰:前后端分离的架构使得项目结构清晰,后端遵循了标准的Controller-Service-Mapper三层架构。
  • 技术栈主流:使用了当前流行的Spring Boot和Vue.js框架,适合作为学习和二次开发的基础。

自助获取:https://fifteen.xiaobias.com/source/208

正文到此结束