【开源】基于JAVA的教学资源共享平台

news2024/9/30 3:28:21

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 课程档案模块
    • 2.3 课程资源模块
    • 2.4 课程作业模块
    • 2.5 课程评价模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 类图设计
    • 3.3 数据库设计
      • 3.3.1 课程档案表
      • 3.3.2 课程资源表
      • 3.3.3 课程作业表
      • 3.3.4 课程评价表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询课程
    • 5.2 新增留言
    • 5.3 查询教师信息
    • 5.4 生成课程作业
    • 5.5 添加课程评价
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的教学资源共享平台,包含了课程管理、课程课件、授课中心、作业发布、课程评价、课程质量分析、交流互动模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,教学资源共享平台基于角色的访问控制,给教师、学生使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

在这里插入图片描述

1.2 项目录屏


二、功能模块

近年来,计算机技术、网络技术的迅猛发展,给传统办学提供了新的模式。绝大部分大学和学院都已介入互联网领域,并建成校园网,各校的硬件设施也已经比较完善。通过设计网络拓扑架构、数据库基础结构,建设网络安全系统、信息共享与管理系统、信息的发布与管理系统,方便了管理者、老师和学生间的信息发布、信息交流和信息共享。以现代计算机技术、网络技术为基础的数字化教学,主要是朝着信息化、网络化、现代化的目标迈进。

在这里插入图片描述

本文设计的教学资源共享平台的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了课程档案模块、课程资源模块、课程作业模块、课程评价模块、授课管理模块和学习质量分析模块这六大模块,用于存放系统的核心业务逻辑。

2.1 数据中心模块

数据中心模块包含了对教学资源共享平台的基础模块,比如管理谁可以登录这套系统,记录这些人登录系统做了什么,不同的人拥有不同权限的管理。

2.2 课程档案模块

课程档案模块用于对课程的数据进行管理,其中包括课程标题、课程介绍、课程图片、课程状态、创建人、创建时间、更新人、更新时间等,可以通过此模块对课程数据进行添加、编辑更新、删除、查询操作。

2.3 课程资源模块

课程资源管理模块是对课程的资源信息进行管理,课程有了资源才能更好的被学生所接受,课程资源的字段包括课程ID、课程名称、资源名称、文件、创建人、创建时间、更新人、更新时间等,教师可以新增课程的资源数据,学生可以查询教师发布的课程资源信息。

2.4 课程作业模块

课程作业模块是为了管理课程的作业数据,有了课程后,教师可以发布指定课程的作业数据,支持一键生成课程作业,其中课程作业的字段包括课程ID、课程名称、作业名称、作业附件、完成附件、学生ID、学生姓名、创建人等,教师可以增加、删除、编辑和条件查询课程作业,学生可以提交属于自己的作业数据。

2.5 课程评价模块

课程评价模块是维护关于课程的评价信息,学生学习完课程后,可以对课程进行评价,撰写评语,以便于改进课程的质量。其中课程评价字段包括课程ID、课程名称、评价人、评价内容、评价时间、备注、创建人、创建时间等,学生可以增加、删除、编辑和条件查询自己的课程评价,教师可以查询课程的评价内容。


三、系统设计

3.1 用例设计

UML是面向对象的图形化建模语言,具有表示容易,定义友好,适用范畴广泛,功能强大。用例图是用例模型的一种,需求分析人员可采用用例图表示用户操作行为。教学资源共享平台的用例图设计主要包括学生用户用例图设计、教师用户用例设计。

在这里插入图片描述

3.2 类图设计

在这里插入图片描述

3.3 数据库设计

3.3.1 课程档案表

在这里插入图片描述

3.3.2 课程资源表

在这里插入图片描述

3.3.3 课程作业表

在这里插入图片描述

3.3.4 课程评价表

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询课程

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询课程")
public Result<IPage<Curriculum>> getByPage(@ModelAttribute Curriculum curriculum ,@ModelAttribute PageVo page){
    QueryWrapper<Curriculum> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(curriculum.getTitle())) {
        qw.like("title",curriculum.getTitle());
    }
    if(!ZwzNullUtils.isNull(curriculum.getContent())) {
        qw.like("content",curriculum.getContent());
    }
    if(!ZwzNullUtils.isNull(curriculum.getStatus())) {
        qw.eq("status",curriculum.getStatus());
    }
    IPage<Curriculum> data = iCurriculumService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Curriculum>>().setData(data);
}

5.2 新增留言

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增留言")
public Result<Message> insert(Message message){
    User currUser = securityUtil.getCurrUser();
    message.setUserId(currUser.getId());
    message.setUserName(currUser.getNickname());
    message.setTime(DateUtil.now());
    message.setReplyContent("");
    message.setReplyId("");
    message.setReplyName("");
    message.setReplyTime("");
    iMessageService.saveOrUpdate(message);
    return new ResultUtil<Message>().setData(message);
}

5.3 查询教师信息

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询教师信息")
public Result<IPage<TeacherData>> getByPage(@ModelAttribute TeacherData teacherData ,@ModelAttribute PageVo page){
    QueryWrapper<TeacherData> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(teacherData.getName())) {
        qw.like("name",teacherData.getName());
    }
    if(!ZwzNullUtils.isNull(teacherData.getLevel())) {
        qw.eq("level",teacherData.getLevel());
    }
    IPage<TeacherData> data = iTeacherDataService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<TeacherData>>().setData(data);
}

5.4 生成课程作业

@RequestMapping(value = "/create", method = RequestMethod.GET)
@ApiOperation(value = "生成课程作业")
public Result<Assignment> create(@RequestParam String id,@RequestParam String title,@RequestParam String file){
    Curriculum curriculum = iCurriculumService.getById(id);
    if(curriculum == null) {
        return ResultUtil.error("课程不存在");
    }
    // 删除原作业
    QueryWrapper<Assignment> assQw = new QueryWrapper<>();
    assQw.eq("curriculum_id",curriculum.getId());
    iAssignmentService.remove(assQw);
    // 查询所有授课
    QueryWrapper<Timetable> tQw = new QueryWrapper<>();
    tQw.eq("curriculum_id",curriculum.getId());
    List<Timetable> timetableList = iTimetableService.list(tQw);
    for (Timetable t : timetableList) {
        Assignment a = new Assignment();
        a.setCurriculumId(curriculum.getId());
        a.setCurriculumName(curriculum.getTitle());
        a.setTitle(title);
        a.setFile1(file);
        a.setFile2("");
        a.setUserId(t.getUserId());
        a.setUserName(t.getUserName());
        iAssignmentService.saveOrUpdate(a);
    }
    return ResultUtil.success();
}

5.5 添加课程评价

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加课程评价")
public Result<Object> addOne(@RequestParam String id,@RequestParam String content){
    Curriculum curriculum = iCurriculumService.getById(id);
    if(curriculum == null) {
        return ResultUtil.error("课程不存在");
    }
    User currUser = securityUtil.getCurrUser();
    Appraise a = new Appraise();
    a.setCurriculumId(curriculum.getId());
    a.setCurriculumName(curriculum.getTitle());
    a.setUserId(currUser.getId());
    a.setUserName(currUser.getNickname());
    a.setContent(content);
    a.setTime(DateUtil.now());
    iAppraiseService.saveOrUpdate(a);
    return ResultUtil.success();
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1395917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch各种损失函数解析:深度学习模型优化的关键(1)

目录 详解pytorch中各种Loss functions binary_cross_entropy 用途 用法 参数 数学理论 示例代码 binary_cross_entropy_with_logits 用途 用法 参数 数学理论 示例代码 poisson_nll_loss 用途 用法 参数 数学理论 示例代码 cosine_embedding_loss 用途 …

189.轮转数组(数组翻转,C解法)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转…

交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

AArch64 是随 ARMv8 ISA 一起引入的 64 位架构&#xff0c;用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。&#xff0c;而不能执行 A32 或 T32 指令。但是&#xff0c;与 AArch32 中不同&#xff0c;在64位状态下&#xff0c;指令可以访问 …

Vue以弹窗形式实现导入功能

目录 前言正文 前言 由于个人工作原因&#xff0c;偏全栈&#xff0c;对于前端的总结还有些初出茅庐&#xff0c;后续会进行规整化的总结 对应的前端框架由&#xff1a;【vue】avue-crud表单属性配置&#xff08;表格以及列&#xff09; 最终实现的表单样式如下&#xff1a;…

文件共享服务(一)——DAS、NAS、SAN存储类型

一、存储类型 存储类型主要有三种 1. DAS直连式存储 通常由数据线直连电脑就可以用&#xff0c;比如一块新硬盘&#xff0c;只需要利用磁盘模拟器分区&#xff0c;创建文件系统&#xff0c;挂载就可以使用了。 PC中的硬盘或只有一个外部SCSI接口的JBOD存储设备&#xff08;即…

MySQL---经典SQL练习题

MySQL---经典50道练习题 素材:练习题目&#xff1a;解题&#xff1a; 素材: 1.学生表 Student(SId,Sname,Sage,Ssex) SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CId,Cname,TId) CId 课程编号,Cname 课程名称,TId 教师编号 3.教师表 Teacher(T…

一万六千字大章:Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析

Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析 Manifest.json 文件格式 每个扩展程序的根目录中都必须有一个 manifest.json 文件&#xff0c;其中列出了有关该扩展程序的结构和行为的重要信息。 1、Demo 展示 1. 最小文件 {"manifest_version": 3,&quo…

Redis--Zset使用场景举例(滑动窗口实现限流)

文章目录 前言什么是滑动窗口zset实现滑动窗口小结附录 前言 在Redis–Zset的语法和使用场景举例&#xff08;朋友圈点赞&#xff0c;排行榜&#xff09;一文中&#xff0c;提及了redis数据结构zset的指令语法和一些使用场景&#xff0c;今天我们使用zset来实现滑动窗口限流&a…

从初学者到专家:Dubbo中Application的终极指南【十一】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 从初学者到专家&#xff1a;Dubbo中Application的终极指南【十一】 前言Application组件的重要性Application 在 Dubbo 中的定义Application 的作用和重要性Dubbo 应用程序的生命周期 配置和使用Appli…

往docker中cloudbeaver的容器添加达梦数据库、impala数据库连接支持(cloudbeaver添加自定义数据连接)

cloudbeaver默认没有开放impala连接&#xff0c;更不会支持国产数据库了 docker安装运行cloudbeaver可以参考文章&#xff1a;docker安装运行CloudBeaver并设置默认语言为中文 本文跳过cloudbeaver镜像拉取&#xff0c;直接就开始实现自定义数据库连接功能 1、初始化cloudbe…

卷级实时备份功能特点及应用场景

为满足部分对RTO和RPO指标敏感的用户需求&#xff0c;云祺科技通过结合卷远程复制技术和持续数据保护技术、以及高可用技术的原理&#xff0c;推出了一款基于卷为最小处理单元的实时容灾备份产品&#xff0c;其对于备份源对象具有良好的兼容性&#xff0c;无论是文件、影音、应…

json-server的基础使用

json-server 是什么? 用来快速搭建模拟的 REST API 的工具包 可以30秒内快速为我们搭建一个假的基于 REST API的服务 我们要如何使用呢&#xff1f; 1.先安装 //全局安装 npm i -g json-server 2.创建文件 db.json 我们需要在db.json放入一点内容 放入示例&#xff1a; {/…

带你解析Git的基础功能(三)

文章目录 前言一.远程仓库的概念二.远程仓库的操作2.1新建远程仓库2.2 克隆远程仓库2.3 向远程仓库推送2.4 拉取远程仓库2.5 忽略特殊⽂件2.6 标签管理 三.Git实战场景3.1 Git多人实战场景一准备工作由开发者1和开发者2新增加文件内容。将dev的文件合并到master上总结 3.2 Git多…

TypeScript实现一个贪吃蛇小游戏

游戏效果 文件目录 准备1&#xff1a;新建index.html&#xff0c;编写游戏静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

微店商品详情API(micro.item_get)的数据分析和挖掘

随着电商行业的迅猛发展&#xff0c;微店作为电商平台的重要组成部分&#xff0c;提供了丰富的API接口供开发者使用。其中&#xff0c;微店商品详情API&#xff08;micro.item_get&#xff09;是用于获取商品详情的接口&#xff0c;为数据分析和挖掘提供了大量有价值的数据源。…

域环境权限提升

Windows系统配置错误 在Windows系统中&#xff0c;攻击者通常会通过系统内核溢出漏来提权&#xff0c;但是如果碰到无法通过系统内核溢出漏洞法国提取所在服务器权限的情况&#xff0c;就会系统中的配置错误来提权。Windows系统中常见哦欸之错误包括管理员凭证配置错误&#x…

人才测评,招聘软件研发经理的胜任素质模型与任职资格

招聘软件研发经理的胜任素质模型和任职资格是确保能够招聘到胜任的人才的重要组成部分。以下是详细的说明&#xff1a; 一、胜任素质模型 1.技术能力 软件研发经理需要具备深厚的技术能力&#xff0c;对软件开发的各个方面有深入的理解和掌握。他们需要掌握多种编程语言和…

c# 视频播放之Vlc.DotNet.Forms

先说下优缺点 优点&#xff1a;与电脑无关&#xff0c;能播放主流编码格式视频。 缺点&#xff1a;只能播放本地视频&#xff0c;网络视频播放不了。 下面是具体操作和代码 1. 安装Vlc.DotNet.Forms 和 VideoLAN.LibVLC.Windows Vlc.DotNet.Forms 是播放库&#xff0c;Vid…

算法 动态分析 及Java例题讲解

动态规划 动态规划&#xff08;英语&#xff1a;Dynamic programming&#xff0c;简称 DP&#xff09;&#xff0c;是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的&#xff0c;通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适…

Ant Design Vue上传多个图片

模板代码&#xff1a; 定义变量&#xff1a; 文件限制的函数&#xff1a; 上传的函数&#xff1a; 样式函数&#xff1a; 完整代码&#xff1a; <template><div class"dialog-upload" v-if"showUploadDialog"><div class"dialog-uplo…