Springboot+vue+小程序+基于微信小程序的在线学习平台

本文主要是介绍Springboot+vue+小程序+基于微信小程序的在线学习平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、项目介绍
  

        基于Spring Boot+Vue+小程序的在线学习平台从实际情况出发,结合当前年轻人的学习环境喜好来开发。基于Spring Boot+Vue+小程序的在线学习平台在语言上使用Java语言进行开发,在数据库存储方面使用的MySQL数据库,开发工具是IDEA。
       功能丰富,项目保证质量,需要可以最底下查看QQ二维码找我私聊。运行讲解服务均可有尝提供,即便你是零基础,也能听懂的优秀讲解老师。
功能:
1.个人中心修改密码里查看个人信息
2.教师管理
3.学生管理
4.课程视频管理
5.课程签到管理
6.课程问题管理
7.课程答题管理
8.答题成绩管理
9.课程类型管理
10.课程资料管理
11.通知信息管理
12.加入课程管理
13.学习论坛管理
14.课程考试管理
15.试题管理
16.系统简介,轮播图,平台公告,关于我们管理
17.考试管理

关键词:商品;购物;Spring Boot框架;MySQL

二、开发环境


开发语言:Java
框架:springboot + vue + 小程序
JDK版本:JDK1.8
数据库:mysql
数据库工具:Navicat11
开发软件:idea/vscode/eclipse
Maven包:Maven

表结构示例:

表名:kechengxinxi

功能:课程信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengbianhao

varchar

200

课程编号

kechengmingcheng

varchar

200

课程名称

kechengleixing

varchar

200

课程类型

keshi

varchar

200

课时

xuefen

varchar

200

学分

kechengtupian

longtext

4294967295

课程图片

shangkeshijian

varchar

200

上课时间

shangkedidian

varchar

200

上课地点

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

kechengjieshao

longtext

4294967295

课程介绍

表名:discusskechengshipin

功能:课程视频评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表名:kechengqiandao

功能:课程签到

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengbianhao

varchar

200

课程编号

kechengmingcheng

varchar

200

课程名称

kechengtupian

longtext

4294967295

课程图片

kechengleixing

varchar

200

课程类型

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

zhangcheng

varchar

200

章程

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

xueshengshouji

varchar

200

学生手机

zhuanye

varchar

200

专业

banji

varchar

200

班级

qiandaoshijian

datetime

签到时间

kechengxinde

longtext

4294967295

课程心得

代码示例一,课程信息代码

package com.controller;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.KechengxinxiEntity;
import com.entity.view.KechengxinxiView;import com.service.KechengxinxiService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;/*** 课程信息* 后端接口*/
@RestController
@RequestMapping("/kechengxinxi")
public class KechengxinxiController {@Autowiredprivate KechengxinxiService kechengxinxiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, KechengxinxiEntity kechengxinxi,HttpServletRequest request) {String tableName = request.getSession().getAttribute("tableName").toString();if (tableName.equals("jiaoshi")) {kechengxinxi.setJiaoshigonghao((String) request.getSession().getAttribute("username"));}EntityWrapper<KechengxinxiEntity> ew = new EntityWrapper<KechengxinxiEntity>();PageUtils page = kechengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengxinxi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, KechengxinxiEntity kechengxinxi,HttpServletRequest request) {EntityWrapper<KechengxinxiEntity> ew = new EntityWrapper<KechengxinxiEntity>();PageUtils page = kechengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengxinxi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list(KechengxinxiEntity kechengxinxi) {EntityWrapper<KechengxinxiEntity> ew = new EntityWrapper<KechengxinxiEntity>();ew.allEq(MPUtil.allEQMapPre(kechengxinxi, "kechengxinxi"));return R.ok().put("data", kechengxinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(KechengxinxiEntity kechengxinxi) {EntityWrapper<KechengxinxiEntity> ew = new EntityWrapper<KechengxinxiEntity>();ew.allEq(MPUtil.allEQMapPre(kechengxinxi, "kechengxinxi"));KechengxinxiView kechengxinxiView = kechengxinxiService.selectView(ew);return R.ok("查询课程信息成功").put("data", kechengxinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id) {KechengxinxiEntity kechengxinxi = kechengxinxiService.selectById(id);return R.ok().put("data", kechengxinxi);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id) {KechengxinxiEntity kechengxinxi = kechengxinxiService.selectById(id);return R.ok().put("data", kechengxinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody KechengxinxiEntity kechengxinxi, HttpServletRequest request) {kechengxinxi.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());//ValidatorUtils.validateEntity(kechengxinxi);kechengxinxiService.insert(kechengxinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody KechengxinxiEntity kechengxinxi, HttpServletRequest request) {kechengxinxi.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());//ValidatorUtils.validateEntity(kechengxinxi);kechengxinxiService.insert(kechengxinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody KechengxinxiEntity kechengxinxi, HttpServletRequest request) {kechengxinxiService.updateById(kechengxinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids) {kechengxinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,@PathVariable("type") String type, @RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if (type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if (map.get("remindstart") != null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH, remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if (map.get("remindend") != null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH, remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<KechengxinxiEntity> wrapper = new EntityWrapper<KechengxinxiEntity>();if (map.get("remindstart") != null) {wrapper.ge(columnName, map.get("remindstart"));}if (map.get("remindend") != null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if (tableName.equals("jiaoshi")) {wrapper.eq("jiaoshigonghao", (String) request.getSession().getAttribute("username"));}int count = kechengxinxiService.selectCount(wrapper);return R.ok().put("count", count);}
}

 <template v-if="showFlag"><el-form class="center-form-pv" :style='{"margin":"0 0 30px"}' :inline="true" :model="searchForm"><el-row :style='{"padding":"10px","borderRadius":"3px","background":"#fff","display":"block"}'><div :style='{"margin":"0 10px 0 0","display":"inline-block"}'><label:style='{"margin":"0 10px 0 0","color":"#666","display":"inline-block","lineHeight":"40px","fontSize":"14px","fontWeight":"500","height":"40px"}'class="item-label">课程名称</label><el-input v-model="searchForm.kechengmingcheng" placeholder="课程名称" clearable></el-input></div><div :style='{"margin":"0 10px 0 0","display":"inline-block"}' class="select" label="课程类型"prop="kechengleixing"><label:style='{"margin":"0 10px 0 0","color":"#666","display":"inline-block","lineHeight":"40px","fontSize":"14px","fontWeight":"500","height":"40px"}'class="item-label">课程类型</label><el-select @change="kechengleixingChange" clearable v-model="searchForm.kechengleixing"placeholder="请选择课程类型"><el-option v-for="(item,index) in kechengleixingOptions" v-bind:key="index" :label="item":value="item"></el-option></el-select></div><div :style='{"margin":"0 10px 0 0","display":"inline-block"}'><label:style='{"margin":"0 10px 0 0","color":"#666","display":"inline-block","lineHeight":"40px","fontSize":"14px","fontWeight":"500","height":"40px"}'class="item-label">教师姓名</label><el-input v-model="searchForm.jiaoshixingming" placeholder="教师姓名" clearable></el-input></div><el-button:style='{"border":"1px solid #5494cb","cursor":"pointer","padding":"0 34px","outline":"none","margin":"0 0px 0 10px","color":"#fff","borderRadius":"4px","background":"-webkit-linear-gradient(top,#66a4d8,#337ab7)","width":"auto","fontSize":"14px","height":"40px"}'type="success" @click="search()">查询</el-button></el-row><el-row :style='{"margin":"20px 0 20px 0","display":"flex"}'><el-button:style='{"border":"0","cursor":"pointer","padding":"0 24px","margin":"0 10px 0 0","outline":"none","color":"#fff","borderRadius":"4px","background":"rgba(64, 158, 255, 1)","width":"auto","fontSize":"14px","height":"40px"}'v-if="isAuth('kechengxinxi','新增')" type="success" @click="addOrUpdateHandler()">新增</el-button><el-button:style='{"border":"0","cursor":"pointer","padding":"0 24px","margin":"0 10px 0 0","outline":"none","color":"#fff","borderRadius":"4px","background":"rgba(255, 0, 0, 1)","width":"auto","fontSize":"14px","height":"40px"}'v-if="isAuth('kechengxinxi','删除')" :disabled="dataListSelections.length <= 0" type="danger"@click="deleteHandler()">删除</el-button></el-row></el-form><!-- <div> --><el-table class="tables":stripe='false':style='{"padding":"0","borderColor":"#eee","borderRadius":"5px","borderWidth":"1px 0 0 1px","background":"#fff","width":"100%","borderStyle":"solid"}'v-if="isAuth('kechengxinxi','查看')":data="dataList"v-loading="dataListLoading"@selection-change="selectionChangeHandler"><el-table-column :resizable='true' type="selection" align="center" width="50"></el-table-column><el-table-column :resizable='true' :sortable='false' label="索引" type="index" width="50"/><el-table-column :resizable='true' :sortable='false'prop="kechengbianhao"label="课程编号"><template slot-scope="scope">{{ scope.row.kechengbianhao }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="kechengmingcheng"label="课程名称"><template slot-scope="scope">{{ scope.row.kechengmingcheng }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="kechengleixing"label="课程类型"><template slot-scope="scope">{{ scope.row.kechengleixing }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="keshi"label="课时"><template slot-scope="scope">{{ scope.row.keshi }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="xuefen"label="学分"><template slot-scope="scope">{{ scope.row.xuefen }}</template></el-table-column><el-table-column :resizable='true' :sortable='false' prop="kechengtupian" width="200" label="课程图片"><template slot-scope="scope"><div v-if="scope.row.kechengtupian"><img v-if="scope.row.kechengtupian.substring(0,4)=='http'" :src="scope.row.kechengtupian.split(',')[0]"width="100" height="100"><img v-else :src="$base.url+scope.row.kechengtupian.split(',')[0]" width="100" height="100"></div><div v-else>无图片</div></template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="shangkeshijian"label="上课时间"><template slot-scope="scope">{{ scope.row.shangkeshijian }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="shangkedidian"label="上课地点"><template slot-scope="scope">{{ scope.row.shangkedidian }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="jiaoshigonghao"label="教师工号"><template slot-scope="scope">{{ scope.row.jiaoshigonghao }}</template></el-table-column><el-table-column :resizable='true' :sortable='false'prop="jiaoshixingming"label="教师姓名"><template slot-scope="scope">{{ scope.row.jiaoshixingming }}</template></el-table-column><el-table-column width="300" label="操作"><template slot-scope="scope"><el-button:style='{"border":"1px solid #3ca512","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/ca1c191554d24b108bc94f4a2046d636.png) #41b314 no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if=" isAuth('kechengxinxi','查看')" type="success" size="mini"@click="addOrUpdateHandler(scope.row.id,'info')">详情</el-button><el-button:style='{"border":"1px solid #3ca512","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/ca1c191554d24b108bc94f4a2046d636.png) #41b314 no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if="isAuth('kechengxinxi','加入课程')" type="success" size="mini"@click="jiarukechengCrossAddOrUpdateHandler(scope.row,'cross','','','')">加入课程</el-button><el-button:style='{"border":"1px solid #3ca512","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/ca1c191554d24b108bc94f4a2046d636.png) #41b314 no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if="isAuth('kechengxinxi','发布视频')" type="success" size="mini"@click="kechengshipinCrossAddOrUpdateHandler(scope.row,'cross','','','')">发布视频</el-button><el-button:style='{"border":"1px solid #3ca512","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/ca1c191554d24b108bc94f4a2046d636.png) #41b314 no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if="isAuth('kechengxinxi','发布资料')" type="success" size="mini"@click="kechengziliaoCrossAddOrUpdateHandler(scope.row,'cross','','','')">发布资料</el-button><el-button:style='{"border":"1px solid #00a0f0","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/161eb7a46f5d4cd19d68a1386174d662.png) #00aaff no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if=" isAuth('kechengxinxi','修改')" type="primary" size="mini"@click="addOrUpdateHandler(scope.row.id)">修改</el-button><el-button:style='{"border":"1px solid #3ca512","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/ca1c191554d24b108bc94f4a2046d636.png) #41b314 no-repeat 5px 8px","width":"auto","fontSize":"12px","height":"32px"}'v-if="isAuth('kechengxinxi','查看评论')" type="primary" size="mini"@click="disscussListHandler(scope.row.id)">查看评论</el-button><el-button:style='{"border":"0","cursor":"pointer","padding":"0 10px 0 24px","margin":"3px 6px 3px 0","outline":"none","color":"#fff","borderRadius":"4px","background":"url(http://codegen.caihongy.cn/20221011/68bd264a8e4341c6aa5409f871d590d0.png) #d9534f no-repeat 5px 8px","width":"auto","fontSize":"14px","height":"32px"}'v-if="isAuth('kechengxinxi','删除') " type="danger" size="mini" @click="deleteHandler(scope.row.id)">删除</el-button></template></el-table-column></el-table><el-pagination@size-change="sizeChangeHandle"@current-change="currentChangeHandle":current-page="pageIndex"background:page-sizes="[10, 20, 30, 50]":page-size="pageSize":layout="layouts.join()":total="totalPage"prev-text="<"next-text=">":hide-on-single-page="true":style='{"width":"100%","padding":"0","margin":"20px 0 0","whiteSpace":"nowrap","color":"#333","fontWeight":"500"}'></el-pagination><!-- </div> --></template>

三.关于我的联系方式      

                                

这篇关于Springboot+vue+小程序+基于微信小程序的在线学习平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953636

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加