springboot111在线教育系统设计与实现 分享源码

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

springboot111在线教育系统项目源码文档 适合毕设,课设免费学习的项目

4.2系统结构

本系统是基于B/S架构的网站系统,设计的功能结构图如下图所示:

图4-2功能结构图

4.3.数据库设计

4.3.1数据库实体

概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。

概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:

4.3.2数据库设计表

在线教育系统需要后台数据库,下面介绍数据库中的各个表的详细信息:

表4.1 地址

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

address

varchar(200)

地址

name

varchar(200)

收货人

phone

varchar(200)

电话

isdefault

varchar(200)

是否默认地址[是/否]

表4.2 购物车表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

tablename

varchar(200)

kecheng

商品表名

userid

bigint(20)

用户id

goodid

bigint(20)

商品id

goodname

varchar(200)

NULL

商品名称

picture

varchar(200)

NULL

图片

buynumber

int(11)

购买数量

price

float

NULL

单价

discountprice

float

NULL

会员价

表4.3 教师评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.4 课程评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.5 名师评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.6 讲师

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

jiangshigonghao

varchar(200)

讲师工号

mima

varchar(200)

密码

jiangshixingming

varchar(200)

讲师姓名

xingbie

varchar(200)

NULL

性别

nianling

varchar(200)

NULL

年龄

touxiang

varchar(200)

NULL

头像

lianxidianhua

varchar(200)

NULL

联系电话

jiangshiyouxiang

varchar(200)

NULL

讲师邮箱

money

float

0

余额

表4.7 教师

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

jiangshigonghao

varchar(200)

NULL

讲师工号

jiangshixingming

varchar(200)

NULL

讲师姓名

xingbie

varchar(200)

NULL

性别

touxiang

varchar(200)

NULL

头像

huojiangzhengshu

longtext

NULL

获奖证书

suoshudanwei

varchar(200)

NULL

所属单位

jiaoshoukecheng

varchar(200)

NULL

教授课程

xiangxixinxi

longtext

NULL

详细信息

表4.8 课程

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

kechengbianhao

varchar(200)

NULL

课程编号

kechengmingcheng

varchar(200)

NULL

课程名称

suoshufenlei

varchar(200)

NULL

所属分类

keshishu

int(11)

NULL

课时数

suoshujiangshi

varchar(200)

NULL

所属讲师

kechengfengmian

varchar(200)

NULL

课程封面

suoshudaxue

varchar(200)

NULL

所属大学

kechengshipin

varchar(200)

NULL

课程视频

kechengdagang

longtext

NULL

课程大纲

kechengxiangqing

longtext

NULL

课程详情

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

price

float

价格

表4.9 课程分类

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

fenlei

varchar(200)

NULL

分类

表4.10 课程管理员

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

kechengzhanghao

varchar(200)

课程账号

mima

varchar(200)

密码

kechengxingming

varchar(200)

课程姓名

xingbie

varchar(200)

NULL

性别

shouji

varchar(200)

NULL

手机

youxiang

varchar(200)

NULL

邮箱

zhaopian

varchar(200)

NULL

照片

money

float

0

余额

表4.11 名师

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

jiangshigonghao

varchar(200)

NULL

讲师工号

jiangshixingming

varchar(200)

NULL

讲师姓名

xingbie

varchar(200)

NULL

性别

touxiang

varchar(200)

NULL

头像

huojiangzhengshu

longtext

NULL

获奖证书

suoshudanwei

varchar(200)

NULL

所属单位

jiaoshoukecheng

varchar(200)

NULL

教授课程

xiangxixinxi

longtext

NULL

详细信息

clicktime

datetime

NULL

最近点击时间

表4.12 订单

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

orderid

varchar(200)

订单编号

tablename

varchar(200)

kecheng

商品表名

userid

bigint(20)

用户id

goodid

bigint(20)

商品id

goodname

varchar(200)

NULL

商品名称

picture

varchar(200)

NULL

商品图片

buynumber

int(11)

购买数量

price

float

0

价格/积分

discountprice

float

0

折扣价格

total

float

0

总价格/总积分

discounttotal

float

0

折扣总价格

type

int(11)

1

支付类型

status

varchar(200)

NULL

状态

address

varchar(200)

NULL

地址

tel

varchar(200)

NULL

电话

consignee

varchar(200)

NULL

收货人

表4.13 普通管理员

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

putongzhanghao

varchar(200)

普通账号

mima

varchar(200)

密码

putongxingming

varchar(200)

普通姓名

xingbie

varchar(200)

NULL

性别

shouji

varchar(200)

NULL

手机

youxiang

varchar(200)

NULL

邮箱

zhaopian

varchar(200)

NULL

照片

money

float

0

余额

表4.14 收藏表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

refid

bigint(20)

NULL

收藏id

tablename

varchar(200)

NULL

表名

name

varchar(200)

收藏名称

picture

varchar(200)

收藏图片

表4.15 管理员表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.16 用户

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zhanghao

varchar(200)

账号

mima

varchar(200)

密码

nicheng

varchar(200)

昵称

xingbie

varchar(200)

NULL

性别

shouji

varchar(200)

NULL

手机

youxiang

varchar(200)

NULL

邮箱

zhaopian

varchar(200)

NULL

照片

money

float

0

余额

5系统详细实现

5.1 普通管理员管理

管理员可以对普通管理员账号信息进行添加修改删除操作。具体界面的展示如图5.1所示。

图5.1 普通管理员管理界面

5.2 课程管理员管理

管理员可以对课程管理员进行添加修改删除操作。具体界面如图5.2所示。

图5.2 课程管理员管理界面

5.3 课程信息管理

课程管理员可以对课程信息进行添加,修改,删除以及查询操作。界面如下图所示:

图5.3 课程信息管理界面

5.4 用户信息管理

普通管理员可以对用户信息进行添加修改删除操作。界面如下图所示:

图5.4 用户信息管理界面

5.5 讲师信息管理

管理员可以对讲师信息进行添加修改删除操作。界面如下图所示:

图5.5 讲师信息界面

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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.JiangshiEntity;
import com.entity.view.JiangshiView;

import com.service.JiangshiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 讲师
 * 后端接口
 * @author 
 * @email 
 * @date 2021-05-10 22:50:28
 */
@RestController
@RequestMapping("/jiangshi")
public class JiangshiController {
    @Autowired
    private JiangshiService jiangshiService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		JiangshiEntity user = jiangshiService.selectOne(new EntityWrapper<JiangshiEntity>().eq("jiangshigonghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"jiangshi",  "讲师" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody JiangshiEntity jiangshi){
    	//ValidatorUtils.validateEntity(jiangshi);
    	JiangshiEntity user = jiangshiService.selectOne(new EntityWrapper<JiangshiEntity>().eq("jiangshigonghao", jiangshi.getJiangshigonghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		jiangshi.setId(uId);
        jiangshiService.insert(jiangshi);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        JiangshiEntity user = jiangshiService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	JiangshiEntity user = jiangshiService.selectOne(new EntityWrapper<JiangshiEntity>().eq("jiangshigonghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        jiangshiService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JiangshiEntity jiangshi,
		HttpServletRequest request){
        EntityWrapper<JiangshiEntity> ew = new EntityWrapper<JiangshiEntity>();
		PageUtils page = jiangshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiangshi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,JiangshiEntity jiangshi, 
		HttpServletRequest request){
        EntityWrapper<JiangshiEntity> ew = new EntityWrapper<JiangshiEntity>();
		PageUtils page = jiangshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiangshi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( JiangshiEntity jiangshi){
       	EntityWrapper<JiangshiEntity> ew = new EntityWrapper<JiangshiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jiangshi, "jiangshi")); 
        return R.ok().put("data", jiangshiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiangshiEntity jiangshi){
        EntityWrapper< JiangshiEntity> ew = new EntityWrapper< JiangshiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jiangshi, "jiangshi")); 
		JiangshiView jiangshiView =  jiangshiService.selectView(ew);
		return R.ok("查询讲师成功").put("data", jiangshiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiangshiEntity jiangshi = jiangshiService.selectById(id);
        return R.ok().put("data", jiangshi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiangshiEntity jiangshi = jiangshiService.selectById(id);
        return R.ok().put("data", jiangshi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JiangshiEntity jiangshi, HttpServletRequest request){
    	jiangshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiangshi);
    	JiangshiEntity user = jiangshiService.selectOne(new EntityWrapper<JiangshiEntity>().eq("jiangshigonghao", jiangshi.getJiangshigonghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		jiangshi.setId(new Date().getTime());
        jiangshiService.insert(jiangshi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiangshiEntity jiangshi, HttpServletRequest request){
    	jiangshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiangshi);
    	JiangshiEntity user = jiangshiService.selectOne(new EntityWrapper<JiangshiEntity>().eq("jiangshigonghao", jiangshi.getJiangshigonghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		jiangshi.setId(new Date().getTime());
        jiangshiService.insert(jiangshi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody JiangshiEntity jiangshi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jiangshi);
        jiangshiService.updateById(jiangshi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiangshiService.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<JiangshiEntity> wrapper = new EntityWrapper<JiangshiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = jiangshiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

5.6 课程信息查看

用户可以在课程信息界面查看课程信息,可以对课程信息进行购买和评论操作。界面如下图所示:

图5.6 课程信息查看界面

下载地址

【计算机毕业设计源码】springboot111在线教育系统.zip资源-CSDN文库

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值