欢迎光临散文网 会员登陆 & 注册

在线学习|基于SpringBoot的在线学习系统的设计与实现

2023-05-15 10:30 作者:指南针毕业设计  | 我要投稿


项目编号:无

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

Online Education系统(简称:OE)是一个在线学习系统,包含微信公众号服务和后台管理系统两大部分。用户通过微信授权登录公众号,用户在公众号上进行查看课程详情和点播课程在线学习;用户也可以分享教学视频和公众号。在线学习系统支持阿里云视频点播、微信授权登录、微信菜单、微信消息与腾讯云文件存储等一系列功能,为用户构建了一个全方位的在线学习平台。[3]

本文采用前后端分离架构思想,在基于其他OE系统实际运营情况下,设计开发出的一个基于微信公众号B2C模式下的在线学习平台。在整个系统的开发周期中,系统前端采用主流前端框架VUE和Element-UI等,使用Node.js作为JavaScript运行环境,微信公众号采用H5页面显示;后端采用SpringBoot技术,使用mybatis-plus进行持久层的操作,选用MYSQL数据库进行数据的存储和Redis内存缓存,并且综合应用了腾讯云文件存储和阿里云视频点播来实现。主要完成以下几个方面的研究:

1.分析在系统开发过程中,采用的C/S结构和B/S结构的优缺点,提供介绍了一种基于微信公众号B2C模式下的在线学习课程体系的一种基本的实现和方法。

2.对功能需求详细分析,并且也对非功能需求以及系统运行环境进行简单分析,分析该在线学习系统内各个功能模块的设计和实现。

3.实现了讲师管理、点播课程管理、在线点播课程、公众号菜单管理、公众号消息等功能。

随着二十一世纪的到来,移动互联网时代也接踵而至。各种各样的移动技术,方便着人们的生活,例如车联网和自动驾驶,AR/VR技术,智能电网智慧家居等;还有层出不穷的新型移动电话,例如智能手机和电脑。正是这些新兴的移动技术,让二零一九年因为新冠疫情被迫宅家的人们有了新思路。为了满足人们对学习的最新要求,各式各样的线上学习系统相继出现。在线学习的新时代,就此诞生。

在传统课堂的教学环境中,受到地点和环境的限制,各个地方的教育学习资源、课程资源分布不均,容易导致学生获取的知识不够广泛。而在线学习系统是一种新型学习模式,采用互联网技术,实现师生分离,使得高质量的教育资源能够不受时间和地点的限制,通过互联网技术不断传播,为知识提供了更高效的传播通道。这种随时随地能够多形式的在线学习系统,能够让学生了解到更广泛全面的知识和技术。[5]


在线学习系统是一个基于微信公众号B2C模式实现的在线学习平台,系统包含微信公众号服务和后台管理系统两大部分。本系统由角色可分为两类,微信用户和管理员角色。

微信用户通过微信授权登录,关注该公众号,就可以在线进行选择课程、在线播放课程视频等一系列操作。根据分析显示,在线学习系统微信用户需实现的功能有:微信授权登录,点播课程,查看课程详情,查询讲师,公众号分享,公众号消息等。微信用户的用例图如图3-1所示:

编辑

图3-1 用户用例图



管理员通过账号密码登录后台管理系统后,可以对讲师、课程、公众号菜单等进行管理。根据分析显示,后台管理员角色需要实现的功能有:登录,讲师管理,课程分类管理,点播课程管理,公众号菜单管理,营销管理等。系统管理员的用例图如图3-2所示:

编辑



图3-2 系统管理员用例图

系统技术架构图如下图4-1所示:

编辑



图4-1 系统技术架构图

数据库概念结构的设计目的就是建立在数据库需要进行分类处理的逻辑基础框架之上,设定构造出一个可以同时满足数据库需要功能的各类逻辑实体,以及其之间相互或之间必要的逻辑关联,作为数据库以后应用的基本逻辑结构的设计基础。这是一开始阶段完全可以不必再去考虑你所要的采用一个什么样类型的数据库存储和管理数据库的系统、操作系统种类、机器类型等等问题。[15]这个阶段可以使用到的工具很多。用的最多的是E-R图(Entity-Relation,实体-关系图),另外还有许多计算机辅助工具(Computer Aided Software Engineering,CASE)可以帮助进行设计。[9]本系统采用了E-R图的方法进行数据库概念结构设计。E-R图是描述数据实体关系的一种直观描述工具。这种图中有:

(1)实体:用方框表示,方框内为实体的名称。

(2)实体的各种属性:用椭圆表示,椭圆内为属性名称。使用线段将其和响应的实体连接起来。

(3)实体之间的联系:用菱形表示,菱形内为联系的名称。

实体和实体之间的联系较多,比较常见的联系有l:1,l:N和M:N这三种。

本系统的E-R图如下图4-10所示:

编辑



图4-10 系统E-R图

三,系统展示

讲师管理

编辑

 

编辑


编辑

编辑

课程管理

编辑

编辑



四,核心代码展示

package com.order.controller;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.model.model.order.OrderInfo;import com.model.vo.order.OrderInfoQueryVo;import com.order.service.OrderInfoService;import com.service.result.R;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.Map;/** * <p> * 订单表 订单表 前端控制器 * </p> * * @author ZYD * @since 2022-07-16 */@RestController@Api(tags = "订单控制器")@RequestMapping("/admin/order/orderInfo")public class OrderInfoController {    @Autowired    private OrderInfoService orderInfoService;    @ApiOperation("订单列表条件分页查询")    @GetMapping("{page}/{limit}")    public R listOrder(@PathVariable Long page, @PathVariable Long limit, OrderInfoQueryVo orderInfoQueryVo){        Page<OrderInfo> pageParam = new Page<>(page,limit);        Map<String,Object> map = orderInfoService.selectOrderInfoPage(pageParam,orderInfoQueryVo);        return R.ok(map);    } }


package com.order.api;import com.model.vo.order.OrderFormVo;import com.order.service.OrderInfoService;import com.service.result.R;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@Api(tags = "优惠券接口")@RestController@RequestMapping("api/order/orderInfo")public class OrderInfoApiController {    @Autowired    private OrderInfoService orderInfoService;    @ApiOperation("新增点播课程订单")    @PostMapping("submitOrder")    public R submitOrder(@RequestBody OrderFormVo orderFormVo, HttpServletRequest request) {        //返回订单id        Long orderId = orderInfoService.submitOrder(orderFormVo);        return R.ok(orderId);    } }

五,项目总结

数据库表结构展示如下

在线学习系统数据库中各个表格的设计结果如下面的几个表所示。每个表表示在数据库中的一个表。


  1. 用户表:user_info

用户表用于存储用户的基本信息,其主键是id。用户表设计如下表4-1所示:

表4-1 用户表


字段名


类型


描述


id


bigint


用户编号


phone


Varchar(20)


手机号


nick_name


Varchar(100)


用户昵称


sex


tinyint


性别 0:女 1:男


avatar


varchar(200)


头像


subscribe


tinyint


0:未订阅 1:已订阅


recommend_id


bigint


推荐人用户id


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 讲师表:teacher

讲师表用于存储本系统中讲师的各种信息,其主键是id。讲师表设计如下表4-2所示:

表4-2 讲师表


字段名


类型


描述


id


bigint


讲师编号


name


varchar(20)


讲师姓名


intro


varchar(500)


讲师简介


career


varchar(500)


讲师资历


level


int


头衔 1高级讲师  2首席讲师


avatar


varchar(255)


讲师头像


sort


int


排序


join_date


date


入驻时间


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 课程科目表:subject

课程科目表用来存储课程所属的科目的相关信息,其主键为id。课程科目表设计如下表4-3所示:

表4-3 课程科目表


字段名


类型


描述


id


bigint


课程科目编号


title


varchar(10)


科目名称


parent_id


bigint


父ID


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 课程表:course

课程表存储了所有课程的相关信息,其主键为id。课程表设计如下表4-4所示:

表4-4 课程表


字段名


类型


描述


id


bigint


课程编号


teacher_id


bigint


课程讲师ID


subject_id


bigint


课程科目ID


title


varchar(50)


课程名称


price


decimal


课程销售价格,设置为0则可以免费观看


lesson_num


int


总课时


duration_sum


int


视频总时长(秒)


cover


varchar(255)


课程封面图片路径


buy_count


bigint


销售数量


view_count


bigint


浏览数量


status


tinyint


课程状态 0未发布 1已发布


publish_time


datetime


课程发布时间


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 课程章节表:chapter

课程章节表在线学习系统中课程的所有章节的相关信息,其主键为id.课程章节表设计如下表4-5所示:

表4-5 课程章节表


字段名


类型


描述


id


bigint


章节编号


course_id


bigint


课程ID


title


varchar(50)


章节名称


sort


int


排序


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 课程简介表:course_description

课程简介表是用于存储课程中课程简介的所有相关信息的,其主键为id。课程简介表设计如下表4-6所示:

表4-6 课程简介表


字段名


类型


描述


id


bigint


简介编号


course_id


bigint


课程ID


description


text


课程简介


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 课程视频表:video

课程视频表用于存储每个课程中不同章节的视频的所有相关信息,其主键为id.课程视频表设计如下表4-7所示:

表4-7 课程视频表


字段名


类型


描述


id


bigint


简介编号


course_id


bigint


课程ID


chapter_id


bigint


章节ID


title


varchar(50)


视频名称


video_source_id


varchar(100)


云端视频资源


video_original_name


varchar(100)


原始文件名称


sort


int


排序


play_count


bigint


播放次数


is_free


tinyint


是否可以试听:0收费 1免费


duration


float


视频时长(秒)


size


bigint


视频源文件大小(字节)


version


bigint


乐观锁


status


tinyint


状态


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 视频来访者记录表:video_visitor

视频来访者记录表用于存储每个视频访问该视频的用户的相关信息,其主键为id。视频来访者记录表计如下表4-8所示:

表4-8 视频来访者记录表


字段名


类型


描述


id


bigint


来访者记录编号


course_id


bigint


课程ID


video_id


bigint


视频id


user_id


bigint


来访者用户id


nick_name


varchar(100)


昵称


join_time


varchar(30)


进入时间


leave_time


varchar(30)


离开时间


duration


bigint


用户停留的时间(秒)


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 公众号菜单表:menu

公众号菜单表用于存储微信用户端公众号页面的菜单的所有相关信息,其主键为id。公众号菜单表计如下表4-9所示:

表4-9 公众号菜单表


字段名


类型


描述


id


bigint


菜单编号


name


varchar(50)


菜单名称


type


varchar(10)


类型


url


varchar(100)


网页链接,用户点击菜单可打开链接


menu_key


varchar(20)


菜单key值,用于消息接口推送


sort


tinyint


排序


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除




  1. 优惠券信息表:coupon_info

优惠券信息表用于存储发放给用户的优惠券的所有信息,其主键为id。优惠券信息表设计如下表4-10所示:

表4-10 优惠券信息表


字段名


类型


描述


id


bigint


优惠券编号


coupon_type


tinyint


优惠券类型


coupon_name


varchar(100)


优惠券名字


amount


decimal(10,2)


金额


condition_amount


decimal(10,2)


使用门槛 0->没门槛


start_time


date


开始日期


end_time


date


结束日期


range_type


tinyint


适用范围[1->全场通用]


rule_desc


varchar(200)


规则描述


publish_count


int


发行数量


per_limit


int


每人限领张数


use_count


int


已使用数量


receive_count


int


领取数量


expire_time


datetime


过期时间


publish_status


tinyint(1)


发布状态 0:未发布 1:已发布


create_time


timestamp


创建时间


update_time


timestamp


更新时间


is_deleted


tinyint


0:未删除 1:已删除






在线学习|基于SpringBoot的在线学习系统的设计与实现的评论 (共 条)

分享到微博请遵守国家法律