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

news2024/11/24 4:52:45

在这里插入图片描述


目录

  • 一、摘要
    • 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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述


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

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

相关文章

单片机原理及应用:中断服务函数

承接上文&#xff0c;今天我们来学习一下中断服务函数&#xff0c;对中断不了解的朋友可以回顾一下笔者之前的文章 中断系统结构与控制寄存器 中断服务函数是嵌入式系统中用于处理中断事件的函数&#xff0c;在原版的C语言中并不存在。当发生中断事件时&#xff0c;系统将会跳…

微信小程序canvas画布实现矩形元素自由缩放、移动功能

获取画布信息并绘制背景 .whml <canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="get_rect_touch_position" bindtouchmove="move_or_scale" bind:tap="finish_edit_check"/> .wxss .c…

论文阅读 BERT GPT - transformer在NLP领域的延伸

文章目录 不会写的很详细&#xff0c;只是为了帮助我理解在CV领域transformer的拓展1 摘要1.1 BERT - 核心1.2 GPT - 核心 2 模型架构2.1 概览 3 区别3.1 finetune和prompt 3.2 transformer及训练总结 不会写的很详细&#xff0c;只是为了帮助我理解在CV领域transformer的拓展 …

Redis主从复制哨兵及集群

目录 一.主从复制 主从复制的工作原理如下&#xff1a; 主从复制的作用&#xff1a; 搭建Redis 主从复制 每台服务器配置&#xff1a; ​编辑进行编译安装&#xff1a; 定义systemd服务管理脚本&#xff1a; 开启服务&#xff0c;报错看下内容&#xff1a; 修改 Redis…

HCIA-Datacom题库(自己整理分类的)_15_VRP平台多选【9道题】

1.VRP操作平台存在哪些命令行视图? 用户视图 接口视图 协议视图 系统视图 2.以下哪些存储介质是华为路由器常用的存储介质 SDRAM NVRAM Flash Hard Disk SD Card 解析&#xff1a;Hard Disk是硬盘&#xff0c;一般网络设备没有。 3.VRP支持通过哪几种方式对路由器…

红队打靶练习:DERPNSTINK: 1

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 目录探测 1、gobuster 2、dirsearch WEB get flag1 robots.txt /php/phpmyadmin /temporary /weblog wordpress wpscan扫描 漏洞发现 提权 系统信息收集 mysql登录 john get flag2 s…

Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了&#xff0c;今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西&#xff0c;再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 一.什么是装箱&#xff1f;什么是拆箱&#xff1f; 我们…

Python画国旗

前言 今天&#xff0c;我们来用turtle库来绘制国旗 一、美国国旗 国旗的形状是长方形;国旗的长宽之比为19:10&#xff0c;美国国旗由红、白、蓝三色组成;画面格局由两部分组成&#xff0c;旗的左上方蓝底上排列着50颗白色的星&#xff0c;6颗一排与5颗一排相间排列&#xff…

使用Process Explorer和Dependency Walker排查程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误

目录 1、问题描述 2、分析软件问题的常用分析工具 3、使用Dependency Walker排查启动程序时报找不到ucrtbase.dll、vcruntime140.dll等运行时库的问题 3.1、使用Dependency Walker查看exe程序的库依赖关系&#xff0c;排查找不到ucrtbase.dll、vcruntime140.dll库问题 3.2…

指针的含义、表示、规范、存储、运用

指针的含义、表示、规范、存储、运用 指针的含义指针的表示指针的规范先声明再定义声明和定义一起表示错误表示 指针的存储理解一个变量的存储过程和原理理解一个指针的存储过程和原理理解多个指针的存储过程和原理 指针的运用 指针的含义 表示某个变量或数据所在的内存地址 注…

大模型笔记 【1】 大模型初探

以下是Andrej Karpathy一小时讲解chatgpt的笔记。 Andrej Karpathy做自动驾驶的人应该比较熟悉&#xff0c;他是李飞飞的学生。在openAI做了一年半的科学家之后&#xff0c;去了特斯拉。在Tesla AI day讲解tesla自动驾驶方案的就是他。 这里我的主要收获是两个 大模型是一个有…

12V 全桥驱动芯片GC9008——可替代TMI8118,应用于摄像机、消费类产品上

GC9008 是一款 12V 全桥驱动芯片&#xff0c;为提供高性价比的方案。它能提供 0.1A 的持续输出电流。可以工作在 4.5~15V 的电源电压上。 具有 PWM&#xff08;IN1/IN2&#xff09;输入接口,与行业标准器件兼容.是 SOP8封装&#xff0c;GC9008D是DIP封装芯片特点 ● H 桥电机驱…

关于burpsuite对app(移动端)进行抓包的配置

可以使用手机模拟器&#xff0c;我这里以自己手机&#xff08;物理机&#xff09;演示配置过程 如果是使用的模拟器那么肯定和电脑是在同一局域网 如果使用物理机&#xff0c;那么可以通过连接同一WiFi确保在同一局域网环境下 查看电脑内网ip&#xff1a;192.168.1.105 &am…

2023 年精选:ChatGPT 会取代开发者吗?

由于最近发布了ChatGPT&#xff0c;人工智能再次热闹起来&#xff0c;ChatGPT 是一种自然语言聊天机器人&#xff0c;人们用它来写电子邮件、诗歌、歌词和大学论文。早期采用者甚至用它来编写Python 代码&#xff0c;以及对 shellcode 进行逆向工程并用 C 重写。ChatGPT 给那些…

Docker实战09|使用AUFS包装busybox

前几篇文章中&#xff0c;重点讲解了如何实现构建容器&#xff0c;需要回顾的小伙伴可以看以下文章&#xff1a; 《Docker实战06&#xff5c;深入剖析Docker Run命令》《Docker实战07&#xff5c;Docker增加容器资源限制》《Docker实战08&#xff5c;Docker管道及环境变量识别…

1879_什么是丝印

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1873_什么是丝印 丝印这个词…

Android平板浏览器远程Ubuntu服务器使用code-server编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

我在工作一年时怎么都看不懂的编程写法。今天手把手教给你

作为一名程序员&#xff0c;你一定遇到或亲自写过这样的代码。有人将它形象的形容为shi山&#xff0c;或者被戏称为“面向保就业编程”。 以下面这个代码为例&#xff0c;其中的问题也显而易见&#xff0c;当越来越多的条件判断时&#xff0c;代码会变得非常臃肿&#xff0c;难…

记录汇川:H5U与Fctory IO测试5

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 自动程序 Fctory IO配置&#xff1a; 触摸屏如下&#xff1a; 实际动作如下&#xff1a; Fctory IO测试5

mybatis plus相同Id与xml配置错误时,mybatis plus解决逻辑

前言 处理做项目的问题&#xff0c;其中不乏奇奇怪怪的问题&#xff0c;其中mybatis plus的问题感觉有点隐蔽&#xff0c;有些是运行时出现&#xff0c;有些是运行到具体的逻辑触发&#xff0c;对于应用的状态监控提出了极大的挑战&#xff0c;应用的状态由健康检查接口提供&a…