springcloud +Vue 前后端分离的onlinejudge在线评测系统

news2025/1/8 6:06:54

功能描述:

        本系统的研究内容主要是设计并实现一个一个在线测评系统(OJ),该系统集成了博客、竞赛、刷题、教学,公告,个人管理六大功能,用户注册后登录系统,可以浏览本站的全部文章、发布自己的心得体会、同时也允许修改自己的文章在发布,以及对发布了的文章进行删除,本站还会推荐每天浏览量前五的文章进行曝光,让更多人发现优秀文章;用户可以在题库页看到本站提供的全部已启用的题目,每个题目系统都提供了通过率和题目难度,用户可以根据自己的学习阶段点击相应题目,进行做题,每道题目提供了测试和提交两种提交方式,点击测试按钮用户可以对自己的源代码就行调试,并和正确答案进行对比,点击提交按钮,系统将源代码编译成class文件并运行,将输出的结果和正确答案对比,判断答案是否正确,并将结果返回到用户前端。用户在竞赛页,可以查看到竞赛的一些基本信息,点击竞赛就可以进行报名竞赛并参赛,赛后可以查看到自己通过的题目和排名等。同时支持用户查看往期竞赛,用户需要通过在个人中心认证身份后,才能使用教学功能,学生可以在教学页搜索教学组,然后填写老师的邀请码进入教学组,老师可以选择教学组进行发布作业,学生可以在收到作业后进行完成。

系统架构:

        本系统采用B/S架构的设计,B/S架构是在C/S架构基础上发展起来的一个架构,并得到了广泛的应用,其原因在于,B/S架构是基于浏览器的一种交互模式,其将逻辑集中在浏览器和中间件来提高数据处理能力。B/S架构无需下载,只需知道该软件的服务网址即可进行访问,无需安装即可使用,通用性和便捷性都更优秀。

技术栈:

        主要采用的技术有springcloud + mybatis + redis + vue + bootstrap。Springcloud是基于springboot作为model进行分布式开发,借用springboot快速开发的优点,将各个服务注册到eureka中,通过zuul网关访问eureka中的服务,各服务模块间采用feign进行RPC远程过程调用,当访问的某个服务因为某种原因不可用时,通过hystrix进行服务降级和熔断,提高用户的系统体验;mybatis是当下最流行的基于java的可持久框架,通过简单的xml配置,屏蔽了全部的jdbc代码和参数的设置,使用起来更加灵活;Redis是一个高性能的key-value型数据库,通过将一些需要反复调用数据进行缓存,使用时只需要通过key值即可取到,极大的减轻了数据库的压力。

系统流程图:

系统运行环境:

(1)硬件环境:

操作系统:Windows 10

关系性数据库管理系统:MySQL 5.7

数据库管理工具:Navicat

缓存:Redis

浏览器:IE浏览器6.0以上及谷歌浏览器

JDK版本:JDK1.8

开发工具:Idea 2019、VS code

(2)客户端环境

Springcloud服务,Vue服务,redis客户端服务器

 系统功能实现:

登录注册模块

        在浏览器搜索栏输入OJ系统的入口URL,来到系统的登录界面,OJ系统首页页面如图所示。

        游客若没有账号应先进行注册,用户注册页如图所示。

        如果用户已经在OJ系统注册过账号但是忘记了密码,则可以点击找回密码进行找回,系统找回密码页面如图所示。

个人中心模块

        用户点击头像,弹出下拉框,进入个人中心模块,功能包含了个人中心,博客管理,隐私设置,评测记录,退出登录。个人中心页面包含了自己的基本信息和自己发布的热门文章,个人中心页面如图所示。

        博客管理中展示自己发布的全部博客如图所示,点击博客标题可以修改博客信息,如图所示。 

        个人设置可以进行一些隐私设置来包含自己的隐私,个入设置如图所示。

         评测记录包含了个人评测的全部记录信息,并且可以查看源代码,如图所示。

     身份认证包含了学生认证和教师认证,身份认证如图所示。 

 身份认证后,展示认证后的身份。

博客模块 

        博客模块包含了浏览博客内容,搜索相关博客,对某篇博客进行点赞,向用户推荐博客以及博客达人等功能,博客模块包含了全部的博客信息以及博客达人的推荐如图所示。

        点击博客的标题查看博客的具体信息已热门博客推荐。如图所示。

点击“一起分享新鲜事”,跳转发布博客界面,如图所示。 

        在输入框输入想要查找的博客,点击查找图标,查找想要的博客。如图所示。 

题库模块

题库模块包含了用户查看题目,搜索题目,题目的热门推荐,题目的搜索,题目的提交和测试,查看当前题目提交过的记录等,题库页面如图所示。

用户点击搜索界面输入想要查找的题目信息,点击查找按钮。如图所示。 

用户点击题目标题进入题目内容页面。如图所示。 

在题目内容界面点击提交记录可以查看当前题目的提交记录,如图所示。 

 用户编写代码后,点击提交按钮,对代码进行评测等待输出结果,如图所示。

竞赛模块

竞赛模块包含了用户查看近/往期竞赛,参加竞赛,查看竞赛题目、竞赛选手、排行榜。允许用户和选手们进行交流,竞赛页如图所示。

竞赛页面内点击参数选手可以查看当前比赛的参赛选手,如图所示 。

竞赛页面内点击排行榜,可以查看当前比赛的排行榜,如图所示。

 

 竞赛页面内点击聊天室,可以当前在线的选择进行聊天,如图所示。

教学模块

        教学模块又分为学生端教学模块和教师端教学模块,学生端教学模块包括了教学组的添加、搜索等。学生查看、完成老师布置的作业,老师可以查看自己发布的作业,查看/修改/启用/编辑/删除/发布 竞赛、题目、教学组等,学生教学模块如图所示。

 

教师的教学页包含了作业、教学组、竞赛、题目的管理,作业和教学组管理如图4.25所示,竞赛和题目管理如图所示。 

教师点击作业和教学组标题可以对作业/教学组进行编辑修改,如图所示。 

教师点击竞赛和题目的标题可以对竞赛/题目进行编辑,如图所示。 

公告模块

        公告模块中,学生只允许查看公告,老师可以修改,发布、删除公告等,公告如图所示,公告管理页面如图所示。

         

 效果预览:

毕业设计——onlinejudge在线评测系统

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

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

相关文章

Nginx 简介

1、概念介绍 Nginx ("engine x") 是一个轻量级、高性能的 WEB 服务器软件和反向代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发…

67.基于控制流编程,优化Go代码可读性

文章目录 一:简介二、代码整洁小技巧:基于控制流编程三、总结 代码地址:https://gitee.com/lymgoforIT/golang-trick/tree/master/40-clean-code-controll-flow 一:简介 如何写好代码,一千个人眼中有一千个哈姆雷特&…

Docker之nacos集群部署

前言 Nacos 是一个开源的注册中心和配置中心,用于实现微服务架构中的服务发现、服务治理和动态配置管理。在 Docker 中使用 Nacos,你可以通过拉取官方提供的 Docker 镜像并运行容器的方式来快速部署 一.Nacos镜像拉取及独立模式 镜像拉取命令详解&…

用3D渲染效果图时,需要注意什么?

要用3D渲染效果图,您需要使用3D建模软件来创建三维模型、材质、灯光和相机等元素,并使用渲染引擎将它们渲染成逼真的图像。那么用3D渲染效果图需要注意什么? 在用3D渲染效果图时,您需要注意以下几点: 1、模型精度:模型…

qnx 上screen + egl + opengles 最简实例

文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…

在自定义数据集上训练 YOLOv8 进行目标检测

这是目标检测中令人惊叹的 AI 模型之一。在这种情况下,您无需克隆存储库、设置要求并配置模型,就像在 YOLOv5 及其之前的版本中所做的那样。 在 YOLOv8 中,不需要执行这些手动任务。您只需安装 Ultralytics 即可,我将向您展示如何…

C++:类(Class)

内容整理自:The Cherno:C系列,2024年1月18日 --------------------------------------------------------------------------------------------------------------------------------- 简单地说, 类,只是 数据功能 的整合体。…

SPI传感器接口设计与优化:基于STM32的实践

SPI(串行外设接口)是一种常用的串行通信协议,用于在微控制器和外部设备之间进行全双工的高速数据传输。在本文中,我们将探讨如何基于STM32微控制器设计和优化SPI传感器接口,并提供相应的代码示例。 1. SPI传感器接口设…

RXJS中Subject, BehaviorSubject, ReplaySubject, AsyncSubject的区别?

在RxJS(Reactive Extensions for JavaScript)中,Subject、BehaviorSubject、ReplaySubject和AsyncSubject都是Observable的变体,它们用于处理观察者模式中的不同场景。以下是它们之间的主要区别: 1、Subject: 是一种特…

【VMware】安装和卸载VMware的Ubuntu

安装视频:(全程无废话) https://www.bilibili.com/video/BV1W34y1k7ge/?spm_id_from333.337.search-card.all.click&vd_sourcefb8dcae0aee3f1aab700c21099045395

SegVol: Universal and Interactive Volumetric Medical Image Segmentation

Abstract 精确的图像分割为临床研究提供了有意义且结构良好的信息。尽管在医学图像分割方面取得了显著的进展,但仍然缺乏一种能够分割广泛解剖类别且易于用户交互的基础分割模型。 本文提出了一种通用的交互式体医学图像分割模型——SegVol。通过对90k个未标记的C…

Midjourney 1 月 17 日官方版本补丁更新公告,可能于二月底或三月向公众开放

Midjourney专区:Midjourney-喜好儿aigc 更多消息:AI人工智能行业动态,aigc应用领域资讯 功能更新和开发 修复/改变区域和缩小功能预计在本周或下周推出 测试一致的样式,强调样式而不是内容 常量字符功能正在开发中,但…

如何使用批量图片转换工具快速转换图片格式

你好!在我们的日常生活中,我们常常需要处理大量的图片。而有时候,我们可能会遇到一种情况,就是需要将多张图片批量转换为特定的格式,比如将图片批量转换为PNG格式。那么,如何实现这一操作呢?在本文中,我将…

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议_ipsec esp

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…

漏洞检测和评估【网站子域扫描工具02】

上一篇:爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中,有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估,比如Nmap、Sublist3r等。 1.端口扫描 以下是一个简单的示例代码,展示了如何使用Nmap进行基本的端口扫…

基于springboot+vue的高校心理教育辅导系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

查看pip及Python版本

Python环境正确安装之后,按“WinR”组合键打开“运行”对话框,输入“cmd”,如下图 打开命令提示符窗口后,输入以下命令查看Python及pip的版本。 pip -V 如果命令提示符窗口能够正确显示pip及Python版本,则说明Python…

如何制作产品的说明书!跟我学!

​产品说明书可以清晰地描述产品的功能、使用方法、注意事项以及维护保养等方面。但很多朋友对于如何制作产品的说明书感到困惑,其实这并不难。今天,教大家如何制作一份简单明了的产品说明书。 我们需要选择合适的制作工具和格式。比如FLBOOK在线制作电子…

目标检测--01

基本概念 什么是目标检测? ​ 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状…

【动态规划】【离线查询】【前缀和】689. 三个无重叠子数组的最大和

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及的基础知识点 动态规划 滚动向量 离线查询 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode689. 三个无重叠子数组的最大和 给你一个整数数组 nums 和一个整数 k &…