【开源】基于JAVA+Vue+SpringBoot的大学计算机课程管理平台

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 实验课程档案模块
    • 2.2 实验资源模块
    • 2.3 学生实验模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 实验课程档案表
      • 3.2.2 实验资源表
      • 3.2.3 学生实验表
  • 四、系统展示
  • 五、核心代码
    • 5.1 一键生成实验
    • 5.2 提交实验
    • 5.3 批阅实验
    • 5.4 新增实验资源
    • 5.5 查询实验课程
  • 六、免责说明


一、摘要

1.1 项目介绍

大学计算机课程管理平台包含实验课程模块、实验资源模块、学生实验模块,前端采用Vue.js,采用View UI组件库美化界面,后端采用SpringBoot框架。在操作系统、开发语言、服务器,数据库、连接技术方面,对应使用Window操作系统、Java语言、Tomcat服务器、MySql数据库以及MyBatis技术完成系统搭建,大学计算机课程管理平台基于B/S架构,采用前后端分离架构,用户可以在系统上查询计算机实验课程、下载实验资源。

随着计算机技术日渐成熟,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学校的课程信息进行管理,与手工维护课程相比,有巨大的的优势。越来越多的高校开始采用大学计算机课程管理平台,将学生选择的课程和课程资源通过网络进行管理,为学生、教师和教务管理人员提供便利。

大学计算机课程管理平台使用Idea开发工具完成了编码实现。前端采用Vue.js,采用View UI组件库美化界面,后端采用SpringBoot框架。在操作系统、开发语言、服务器,数据库、连接技术方面,对应使用Window操作系统、Java语言、Tomcat服务器、MySql数据库以及MyBatis技术完成系统搭建。该系统基于B/S架构,采用前后端分离架构,用户可以在系统上查询计算机实验课程、下载实验资源。

1.2 项目录屏


二、功能模块

在这里插入图片描述

2.1 实验课程档案模块

实验课程档案模块是高校实验教育中用于记录和管理实验课程信息的模块,实验课程档案模块可以记录和管理实验教学的过程和结果,帮助教师更好地评估学生的知识获取水平和实验操作技能,确保实验教学质量,实验课程档案模块可以记录实验教学的详细过程和结果,使教师能够在后续的实验教学中更有效地管理教学,安排教育资源,提高实验教学的效率,实验课程档案模块提供了丰富的实验数据和结果,使教师能够轻松评估和改进自己的实验课程,并为未来的实验教育提供有力支持,实验课程档案模块记录了实验教学的基本信息、过程和结果,可以为实验教学的研究和考核提供基础数据和资料,实验课程档案模块对高校实验教学是非常必要的,通过实验课程档案模块,可以保证实验教育的质量,提高实验教育的效率,方便课堂评估,加强实验教育和研究,为实验教育的标准化、标准化和信息化提供有力支撑。

2.2 实验资源模块

实验资源模块是用于管理教育机构中与科学实验相关的资源的模块,实验资源模块可以统一管理各类实验设备、设备、文献等资源,并进行分类、编号、记录等操作,使实验资源更加规范、规范、便捷,编写、提供参考资料和教材,促进学生的实验自主性、创新性和探索性,提高实验教育效果,实验资源模块可以提供智能辅助服务,使实验资源的使用更加高效、经济和安全,如网上购物、预订使用和维护,实验资源模块不仅可以支持实验教育,还可以为科学研究提供必要的技术支持和数据分析,促进学术研究的发展。实验资源模块对于教育和研究机构来说是非常必要的,该模块可以统一实验资源的管理,提高实验教育的有效性,节省成本和时间,支持科学研究,同时,实验资源模块可以促进和帮助教育科研机构的数字化转型和智能化升级。

2.3 学生实验模块

学生实验模块是一种用于管理和组织学生实验的教育软件模块,学生实验模块使学生对教学内容和理论知识有更直观的理解,并通过实际操作提高实践能力,学生实验模块允许学生自己操作设备和工具,并具有移动双手和创新的能力。学生实验模块帮助学生加深对课程内容的理解,加深对课程的理解,学生实验模块可以为教师提供全面的实验计划、操作指导和评估系统,并通过实验数据进行分析和反馈,以提高教育质量和效果。通过学生实验模块,可以提高学生的实践能力和动手能力,加深他们对教学的理解和理解,并提供更全面的教育支持和反馈,以提高教学质量和效果。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 实验课程档案表

在这里插入图片描述

3.2.2 实验资源表

在这里插入图片描述

3.2.3 学生实验表

在这里插入图片描述


四、系统展示

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


五、核心代码

5.1 一键生成实验

@RequestMapping(value = "/oneCreateExp", method = RequestMethod.GET)
@ApiOperation(value = "一键生成实验")
public Result<Object> oneCreateExp(@RequestParam String id){
    ExperimentCurriculum curriculum = iExperimentCurriculumService.getById(id);
    if(curriculum == null) {
        return ResultUtil.error("实验不存在");
    }
    // 删除原来的
    QueryWrapper<Experiment> oldQw = new QueryWrapper<>();
    oldQw.eq("curriculum_id",curriculum.getId());
    iExperimentService.remove(oldQw);
    // 生成新的
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("type",0);
    List<User> studentList = iUserService.list(userQw);
    for (User stu : studentList) {
        Experiment e = new Experiment();
        e.setCurriculumId(curriculum.getId());
        e.setCurriculumName(curriculum.getTitle());
        e.setStudentId(stu.getId());
        e.setStudentName(stu.getNickname());
        e.setExpResult("");
        e.setExpReport("");
        e.setUploadTime("");
        e.setGrade(BigDecimal.ZERO);
        e.setCheckFlag(false);
        e.setCheckTime("");
        e.setCheckUser("");
        iExperimentService.saveOrUpdate(e);
    }
    return ResultUtil.success();
}

5.2 提交实验

@RequestMapping(value = "/upload", method = RequestMethod.GET)
@ApiOperation(value = "提交实验")
public Result<Object> upload(@RequestParam String id,@RequestParam String result,@RequestParam String url){
    Experiment exp = iExperimentService.getById(id);
    if(exp == null) {
        return ResultUtil.error("实验不存在");
    }
    exp.setExpResult(result);
    exp.setExpReport(url);
    exp.setUploadTime(DateUtil.now());
    iExperimentService.saveOrUpdate(exp);
    return ResultUtil.success();
}

5.3 批阅实验

@RequestMapping(value = "/check", method = RequestMethod.GET)
@ApiOperation(value = "批阅实验")
public Result<Object> check(@RequestParam String id,@RequestParam BigDecimal grade){
    Experiment exp = iExperimentService.getById(id);
    if(exp == null) {
        return ResultUtil.error("实验不存在");
    }
    User currUser = securityUtil.getCurrUser();
    exp.setGrade(grade);
    exp.setCheckFlag(true);
    exp.setCheckTime(DateUtil.now());
    exp.setCheckUser(currUser.getNickname());
    iExperimentService.saveOrUpdate(exp);
    return ResultUtil.success();
}

5.4 新增实验资源

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增实验资源")
public Result<ExperimentResources> insert(ExperimentResources experimentResources){
    ExperimentCurriculum curriculum = iExperimentCurriculumService.getById(experimentResources.getCurriculumId());
    if(curriculum == null) {
        return ResultUtil.error("实验课程不存在");
    }
    experimentResources.setCurriculumName(curriculum.getTitle());
    String fileUrl = experimentResources.getFileUrl();
    if(!ZwzNullUtils.isNull(fileUrl)) {
        String[] split = fileUrl.split("/");
        File f = iFileService.getById(split[split.length - 1]);
        if(f != null) {
            experimentResources.setFileId(f.getId());
            experimentResources.setFileName(f.getName());
            experimentResources.setFileSize(f.getSize());
        }
    }
    iExperimentResourcesService.saveOrUpdate(experimentResources);
    return new ResultUtil<ExperimentResources>().setData(experimentResources);
}

5.5 查询实验课程

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询实验课程")
public Result<IPage<ExperimentCurriculum>> getByPage(@ModelAttribute ExperimentCurriculum experimentCurriculum ,@ModelAttribute PageVo page){
    QueryWrapper<ExperimentCurriculum> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841795' OR role_id = '1536606659751841799')");
    if(iUserService.count(userQw) < 1L) {
        qw.eq("teacher_id",currUser.getId());
    }
    if(!ZwzNullUtils.isNull(experimentCurriculum.getTitle())) {
        qw.like("title",experimentCurriculum.getTitle());
    }
    if(!ZwzNullUtils.isNull(experimentCurriculum.getContent1())) {
        qw.like("content1",experimentCurriculum.getContent1());
    }
    if(!ZwzNullUtils.isNull(experimentCurriculum.getTeacherName())) {
        qw.like("teacher_name",experimentCurriculum.getTeacherName());
    }
    IPage<ExperimentCurriculum> data = iExperimentCurriculumService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ExperimentCurriculum>>().setData(data);
}

六、免责说明

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

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

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

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql进阶-视图

目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图&#xff1a; 2.4 删除视图&#xff1a; 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称&#xff0c;它可以帮助我们简化查询&#xff0c;主要用于报表查询:例如…

BigDecimal使用记录

在公司经费这块用到了BigDecimal类&#xff0c;特此整理记录一下。 一、BigDecimal简介&#xff1a; float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算&#xff0c;这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而&a…

Python接口自动化 —— 什么是接口测试、为什么要做接口测试(详解)

什么是接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。  一般来说&#xff0c;测试接…

mysql基础-常用函数汇总

目录 1. 查询技巧 2. 时间函数 2.1 now() 2.2 current_date() 2.3 时间差timestampdiff&#xff08;&#xff09;与datediff&#xff08;&#xff09; 2.4 其他时间函数 3. 字符函数 3.1 截取函数 3.2 分割函数 3.3 left与right函数 3.4 其他函数 4. 数字函数 5. …

2024年跨境电商上半年营销日历最全整理

2024年伊始&#xff0c;跨境电商开启新一轮的营销竞技&#xff0c;那么首先需要客户需求&#xff0c;节假日与用户需求息息相关&#xff0c;那么接下来小编为大家整理2024上半年海外都有哪些节日和假期&#xff1f;跨境卖家如何见针对营销日历选品&#xff0c;助力卖家把握2024…

JAVA基础学习笔记-day15-File类与IO流

JAVA基础学习笔记-day15-File类与IO流 1. java.io.File类的使用1.1 概述1.2 构造器1.3 常用方法1、获取文件和目录基本信息2、列出目录的下一级3、File类的重命名功能4、判断功能的方法5、创建、删除功能 2. IO流原理及流的分类2.1 Java IO原理2.2 流的分类2.3 流的API 3. 节点…

图像分类任务的可视化脚本,生成类别json字典文件

1. 前言 之前的图像分类任务可视化&#xff0c;都是在train脚本里&#xff0c; 用torch中dataloader将图片和类别加载&#xff0c;然后利用matplotlib库进行可视化。 如这篇文章中&#xff1a;CNN 卷积神经网络对染色血液细胞分类(blood-cells) 在分类任务中&#xff0c;必定…

在Qt通过查询数据库将查询的结果展示到QTableView控件上

要在Qt中通过查询数据库将查询结果展示到QTableView&#xff0c;你需要遵循以下步骤&#xff1a; 1.设置数据库连接&#xff1a; 首先&#xff0c;确保你已经安装了Qt的MySQL数据库驱动。 在你的主窗口类中&#xff0c;创建一个QSqlDatabase实例并打开数据库连接。 使用QSqlD…

MySQL8.0 升级

将 MySQL8.0.30 升级到 MySQL8.0.32 备份旧数据 rootLAPTOP-FPIQJ438:/data/backup# xtrabackup --backup --userroot --password123456 --socket/tmp/mysql.sock --target-dir/data/backup/ 2024-01-08T16:46:38.98768708:00 0 [Note] [MY-011825] [Xtrabackup] recognized s…

【YOLOv8新玩法】姿态评估寻找链接切割点

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; 前言 Hello大家好&#xff0c;今天给大家分享一下如何基于深度学习模型训练实现工件切割点位置预测&#xff0c;主要是通过对…

stm32的规则采样与注入采样的理解

规则与注入转换 在STM32中&#xff0c;规则采样&#xff08;Regular Conversion&#xff09;和注入采样&#xff08;Injected Conversion&#xff09;是用于模数转换的两种不同模式。 规则采样&#xff08;Regular Conversion&#xff09;&#xff1a;规则采样是STM32中最常用…

【python】TCP测速程序

一、服务端 下面是一个简单的 Python 服务端程序的示例&#xff0c;使用标准库中的 socket 模块来建立一个 TCP 服务器。该服务器接收客户端的连接请求&#xff0c;客户端发送一定大小的数据流以测试 TCP 带宽。 实际场景中带宽测试可能需要更复杂的逻辑来确保测试的准确性。 …

是面试官放水,还是公司实在是太缺人?这都没挂,字节原来这么容易进....

“字节是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在字节做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有11.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和…

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

英杰社区https://bbs.csdn.net/topics/617804998 一、背景 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序&#xff0c;用于抓取豆瓣电影Top250的相关信息&#xff0c;并将其保存为Excel文件。 程序包含以下几个部…

Java研学-Servlet3.0文件上传下载

一 文件上传 1 介绍 用户选择本地文件资源保存到服务器上&#xff0c;Servlet需要将二进制数据以文件保存到服务器磁盘中&#xff0c;再将磁盘路径保存到数据库中 2 项目搭建 创建web项目&#xff0c;并添加对应jar包(JSTL) 3 API HttpServletRequest 方法–从请求中解析上…

mysql原理--InnoDB的Buffer Pool

1.缓存的重要性 对于使用 InnoDB 作为存储引擎的表来说&#xff0c;不管是用于存储用户数据的索引&#xff08;包括聚簇索引和二级索引&#xff09;&#xff0c;还是各种系统数据&#xff0c;都是以 页 的形式存放在 表空间 中的&#xff0c;而所谓的 表空间 只不过是 InnoDB 对…

0_项目git地址——正点原子minifly与crazyflie

1、说明&#xff1a; 在每个专栏的第一篇文章&#xff0c;笔者都会贴出项目的git地址&#xff0c;方便后来者学习和复现&#xff1b; 下面介绍两个项目的官网资料和git地址&#xff0c;最后给出两者的对比&#xff1b; 2、正点原子minifly (1)minifly官网资料下载中心&#…

vue element plus Typography 排版

我们对字体进行统一规范&#xff0c;力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

Linux信号处理浅析

一、信号从发送到被处理经历的过程 1、常见概念 (1) 信号阻塞 阻塞&#xff0c;即被进程拉黑&#xff0c;信号被发送后&#xff0c;分为两种情况&#xff0c;一种是被阻塞了&#xff08;被拉黑了&#xff09;&#xff0c;一种是没有被阻塞。 (2) 信号未决 在信号被进程处理…

文件夹重命名方法:文件夹名称随机数字命名,提高文件管理效率的秘诀

在数字时代&#xff0c;每天都会创建、接收和存储大量的文件。那如何有效地管理和查找这些文件&#xff1f;下面云炫文件管理器用简单的方法使用随机数字给文件夹命名。掌握方法可以快速识别和分类文件&#xff0c;提高工作效率。 文件夹随机数字命名前后效果图。 文件夹名称…