基于SpringBoot的在线课程管理系统的设计与实现

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作

主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等

业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等

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

文末获取源码 

项目编号:L-BS-QBBSSPRINGBOOT-269

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

技术:springboot+mysql+html+java

二,项目简介

本文首先介绍了在线课程管理系统的现状及开发背景,然后论述了系统的设计目标、系统需求、总体设计方案以及系统的详细设计和实现,最后对在线课程管理系统进行了系统检测并提出了还需要改进的问题。本系统能够实现教师管理,科目管理,教学计划管理,学生管理,课程管理,课程留言管理,课程收藏管理,通知公告管理等功能[1]。在设计方面,本系统采用B/S三层结构,采用MVC模式,这种模式通过VUE技术来表现页面的动态设计,从系统的安全性和代码的可重用性方面考虑,运用springboot对程序的关键代码进行封装,后台数据库选用MySQL数据库。经过设计开发测试,基本满足了用户的相关需求,较好实现了在线课程管理系统相关的功能和模块。

本系统主要是基于数据的增加,修改,删除等操作,使用者能够通过提前设定的登录功能进入指定的操作区,这里对使用者设计的功能进行结构展示。管理员登录进入本系统操作的功能包括对教学计划,通知公告,教师,学生,课程信息进行增删改查,以及管理课程收藏和课程留言,管理班级等信息。

 教师登录进入本系统操作的功能包括新增教学计划,新增课程信息,对学生的课程留言进行回复,查看通知公告。

学生登录进入本系统操作的功能包括观看课程视频,查看课程知识,对课程留言,查看通知公告,更改个人信息。 

三,系统展示

3.1管理员功能实现

3.1.1 通知公告管理

管理员进入如图3.1所示的通知公告管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成通知公告信息的修改,删除等操作。通知公告信息有通知公告名称,通知公告内容等信息[12]。

图3.1 通知公告管理界面

添加通知@RequestMapping("/save")

public R save(@RequestBody GonggaoEntity gonggao, HttpServletRequest request){

    logger.debug("save方法:,,Controller:{},,gonggao:{}",this.getClass().getName(),gonggao.toString());

    String role = String.valueOf(request.getSession().getAttribute("role"));

    if(false)

        return R.error(311,"永远不会进入");

    Wrapper<GonggaoEntity> queryWrapper = new EntityWrapper<GonggaoEntity>()

        .eq("gonggao_name", gonggao.getGonggaoName())

        .eq("gonggao_types", gonggao.getGonggaoTypes())

        ;

    logger.info("sql语句:"+queryWrapper.getSqlSegment());

    GonggaoEntity gonggaoEntity = gonggaoService.selectOne(queryWrapper);

    if(gonggaoEntity==null){

        gonggao.setInsertTime(new Date());

        gonggao.setCreateTime(new Date());

        gonggaoService.insert(gonggao);

        return R.ok();

    }else {

        return R.error(311,"表中有相同数据");

    }

}

3.1.2 教师管理

管理员进入如图3.2所示的教师管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成教师信息的修改,删除等操作。

图3.2 教师管理界面

教师删除@RequestMapping("/delete")

public R delete(@RequestBody Integer[] ids){

logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());

    jiaoshiService.deleteBatchIds(Arrays.asList(ids));

    return R.ok();

}

3.1.3 学生管理

管理员进入如图3.3所示的学生管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成学生信息的修改,删除等操作。学生的账号密码,管理员也能重置。

图3.3 学生管理界面

学生删除@RequestMapping("/delete")

public R delete(@RequestBody Integer[] ids){

logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());

    xueshengService.deleteBatchIds(Arrays.asList(ids));

    return R.ok();

}

3.2 教师功能实现

3.2.1 教学计划管理

教师进入如图3.4所示的教学计划管理界面之后,教师点击信息显示栏中最右侧的修改,删除按钮可依次完成教学计划信息的修改,删除等操作。教学计划信息包括教学计划文件,教学计划名称,教学计划编号等信息,教师可以添加教学计划。

图3.4 教学计划管理界面

添加教学计划@RequestMapping("/save")

public R save(@RequestBody JiaoxuejihuaEntity jiaoxuejihua, HttpServletRequest request){

    logger.debug("save方法:,,Controller:{},,jiaoxuejihua:{}",this.getClass().getName(),jiaoxuejihua.toString());



    String role = String.valueOf(request.getSession().getAttribute("role"));

    if(false)

        return R.error(311,"永远不会进入");

    else if("教师".equals(role))

        jiaoxuejihua.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));



    Wrapper<JiaoxuejihuaEntity> queryWrapper = new EntityWrapper<JiaoxuejihuaEntity>()

        .eq("jiaoshi_id", jiaoxuejihua.getJiaoshiId())

        .eq("kecheng_id", jiaoxuejihua.getKechengId())

        .eq("jiaoxuejihua_uuid_number", jiaoxuejihua.getJiaoxuejihuaUuidNumber())

        .eq("jiaoxuejihua_name", jiaoxuejihua.getJiaoxuejihuaName())

        .eq("jiaoxuejihua_types", jiaoxuejihua.getJiaoxuejihuaTypes())

        ;



    logger.info("sql语句:"+queryWrapper.getSqlSegment());

    JiaoxuejihuaEntity jiaoxuejihuaEntity = jiaoxuejihuaService.selectOne(queryWrapper);

    if(jiaoxuejihuaEntity==null){

        jiaoxuejihua.setInsertTime(new Date());

        jiaoxuejihua.setCreateTime(new Date());

        jiaoxuejihuaService.insert(jiaoxuejihua);

        return R.ok();

    }else {

        return R.error(311,"表中有相同数据");

    }

}

3.2.2 课程管理

教师进入如图3.3所示的课程管理界面之后,教师点击信息显示栏中最右侧的修改,删除,下架按钮可依次完成课程信息的修改,删除,下架等操作。课程信息包括课程热度,课程视频,课程编号,课程名称等信息。教师也能添加课程[13]。

图3.3 课程管理界面

添加课程@RequestMapping("/save")

public R save(@RequestBody KechengEntity kecheng, HttpServletRequest request){

    logger.debug("save方法:,,Controller:{},,kecheng:{}",this.getClass().getName(),kecheng.toString());



    String role = String.valueOf(request.getSession().getAttribute("role"));

    if(false)

        return R.error(311,"永远不会进入");

    else if("教师".equals(role))

        kecheng.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));



    Wrapper<KechengEntity> queryWrapper = new EntityWrapper<KechengEntity>()

        .eq("jiaoshi_id", kecheng.getJiaoshiId())

        .eq("kecheng_name", kecheng.getKechengName())

        .eq("kecheng_uuid_number", kecheng.getKechengUuidNumber())

        .eq("kecheng_video", kecheng.getKechengVideo())

        .eq("kecheng_types", kecheng.getKechengTypes())

        .eq("kecheng_clicknum", kecheng.getKechengClicknum())

        .eq("shangxia_types", kecheng.getShangxiaTypes())

        .eq("kecheng_delete", kecheng.getKechengDelete())

        ;



    logger.info("sql语句:"+queryWrapper.getSqlSegment());

    KechengEntity kechengEntity = kechengService.selectOne(queryWrapper);

    if(kechengEntity==null){

        kecheng.setKechengClicknum(1);

        kecheng.setShangxiaTypes(1);

        kecheng.setKechengDelete(1);

        kecheng.setCreateTime(new Date());

        kechengService.insert(kecheng);

        return R.ok();

    }else {

        return R.error(311,"表中有相同数据");

    }

}

3.2.3 课程留言管理

教师进入如图3.6所示的课程留言管理界面之后,教师点击信息显示栏中最右侧的详情,回复按钮可依次完成课程留言信息的详情查看,留言回复等操作。

图3.6 课程留言管理界面

回复留言   @RequestMapping("/update")

public R update(@RequestBody KechengLiuyanEntity kechengLiuyan, HttpServletRequest request){

        logger.debug("update方法:,,Controller:{},,kechengLiuyan:{}",this.getClass().getName(),kechengLiuyan.toString());



        String role = String.valueOf(request.getSession().getAttribute("role"));

//        if(false)

//            return R.error(311,"永远不会进入");

//        else if("学生".equals(role))

//            kechengLiuyan.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        //根据字段查询是否有相同数据

        Wrapper<KechengLiuyanEntity> queryWrapper = new EntityWrapper<KechengLiuyanEntity>()

            .eq("id",0)

            ;



        logger.info("sql语句:"+queryWrapper.getSqlSegment());

        KechengLiuyanEntity kechengLiuyanEntity = kechengLiuyanService.selectOne(queryWrapper);

        kechengLiuyan.setUpdateTime(new Date());

        if(kechengLiuyanEntity==null){

            kechengLiuyanService.updateById(kechengLiuyan);//根据id更新

            return R.ok();

        }else {

            return R.error(311,"表中有相同数据");

        }

    }

3.3 学生功能实现

3.3.1 课程信息

学生进入如图3.7所示的课程信息界面之后,学生通过播放课程视频的方式学习课程知识,学生也能查看课程的知识要点,考试大纲等信息,还可以发布课程的留言信息。

图3-7 课程信息界面

3.3.2 通知公告

学生进入如图3.8所示的通知公告界面之后,学生根据通知公告类型筛选通知公告信息,学生可以查看通知公告的具体内容。

图3-8 通知公告界面

3.3.3 更改个人信息

学生进入如图3.9所示的更改个人信息界面之后,学生重新上传头像来替换现有的头像,以及对电子邮箱,手机号等产生变化的数据进行更改,更改了数据之后,需要学生点击更新信息按钮来保存更改的数据。

图3.9 更改个人信息界面

更改个人信息  @RequestMapping("/update")
public R update(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,xuesheng:{}",this.getClass().getName(),xuesheng.toString());
        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(311,"
永远不会进入");
        //根据字段查询是否有相同数据
       
Wrapper<XueshengEntity> queryWrapper = new EntityWrapper<XueshengEntity>()
            .notIn("id",xuesheng.getId())
            .andNew()
            .eq("username", xuesheng.getUsername())
            .or()
            .eq("xuesheng_phone", xuesheng.getXueshengPhone())
            .or()
            .eq("xuesheng_id_number", xuesheng.getXueshengIdNumber());
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        XueshengEntity xueshengEntity = xueshengService.selectOne(queryWrapper);
        if("".equals(xuesheng.getXueshengPhoto()) || "null".equals(xuesheng.getXueshengPhoto())){
                xuesheng.setXueshengPhoto(null); }
        if(xueshengEntity==null){
            xueshengService.updateById(xuesheng);//根据id更新
           
return R.ok(); }else {
            return R.error(311,"账户或者学生手机号或者学生身份证号已经被使用");}}

四,核心代码展示

五,相关作品展示

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

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

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

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

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

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

 

 

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程千纸鹤

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值