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

功能描述:

        本系统的研究内容主要是设计并实现一个一个在线测评系统(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.mzph.cn/news/632816.shtml

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

相关文章

【JVM】并发的可达性分析详细解释

​ 🍎个人博客:个人主页 🏆个人专栏:JVM ⛳️ 功不唐捐,玉汝于成 ​ 目录 前言 正文 可达性分析的基本原理: 根集合(Root Set): 对象引用关系: 标记…

PyCharm 快捷键(Ctrl + R)正则表达式批量替换

目录 一、使用快捷键CtrlR,打开替换界面 二、输入替换格式 三、点击全部替换 一、使用快捷键CtrlR,打开替换界面 二、输入替换格式 在第一个框输入 (.*): (.*) 第二个框输入 $1:$2, 三、点击全部替换

spring boot学习第八篇:kafka监听消费

为了实现监听器功能 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoc…

论文阅读:Vary论文阅读笔记

目录 引言整体结构图数据集构造Vary-tiny部分Document Data数据构造Chart Data构造Negative natural image选取 Vary-base部分 引言 论文&#xff1a;Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了&#x…

Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

在我们的项目开发中&#xff0c;我们都会对数据返回格式进行统一的处理&#xff0c;这样可以方便前端人员取数据&#xff0c;当然除了正常流程的数据返回格式需要统一以外&#xff0c;我们也需要对异常的情况进行统一的处理&#xff0c;以及项目必备的日志。 1. 统一返回格式 …

linux 安装ffmpeg

一、下载 ffmpeg-4.3.1 下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1xbkpHDfIWSCbHFGJJHSQcA 提取码&#xff1a;3eil 二、上传到服务器root目录下 三、给ffmpeg-4.3.1 读写权限 chmod -R 777 /root/ffmpeg-4.3.1 四、创建软连接 1.进入/bin 目录 2.…

用js做个转盘

样式 <style>.wheel {position: relative;width: 400px;height: 400px;border: 1px solid black;border-radius: 50%;overflow: hidden;margin: auto;}.slice {position: absolute;left: 0;top: 0;width: 0;height: 0;border: 200px solid red;/* border-width: 100px 10…

Spring Boot整合Druid(druid 和 druid-spring-boot-starter)

引言 在现代的Web应用开发中&#xff0c;高性能的数据库连接池是确保应用稳定性和响应性的关键因素之一。Druid是一个开源的高性能数据库连接池&#xff0c;具有强大的监控和统计功能&#xff0c;能够在Spring Boot应用中提供出色的数据库连接管理。本文将研究在Spring Boot中…

Macos flatter(用于快速LLL)本地编译安装(解决安装过程各种疑难杂症)

flatter是一个开源项目&#xff0c;能大大提高LLL的速度&#xff0c;项目提供的安装文档适用于Ubuntu&#xff0c;但是在macos上安装&#xff0c;总会遇到各种各样的问题&#xff0c;这里记录下所踩坑&#xff0c;帮助大家快速在macos上安装flatter。 文章目录 1.安装依赖库&am…

Python使用HTTP代理进行网络测试和监控

在Python中&#xff0c;HTTP代理不仅可以用于网络爬虫&#xff0c;还可以用于网络测试和监控。通过使用HTTP代理&#xff0c;我们可以模拟不同的网络环境&#xff0c;测试应用程序在不同情况下的性能和稳定性。此外&#xff0c;我们还可以使用HTTP代理来监控网络流量和性能指标…

C语言编译和链接

翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境 .第一种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令 .第二种是执行环境&#xff0c;它用于实际执行代码 翻译环境 翻译环境是由编译和链接两个大过程组成&#xff0c;而…

npm run dev 启动vue的时候指定端口

使用的是 Vue CLI 来创建和管理 Vue 项目&#xff0c; 可以通过设置 --port 参数来指定启动的端口号。以下是具体的步骤&#xff1a; 打开命令行终端 进入您的 Vue 项目目录 运行以下命令&#xff0c;通过 --port 参数指定端口号&#xff08;例如&#xff0c;这里设置端口号…

mybatisPlus注解将List集合插入到数据库

1.maven引入依赖&#xff08;特别注意版本&#xff0c;3.1以下不支持&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.1</version></dependency&g…

自建服务器如何备案?

随着互联网的普及和发展&#xff0c;越来越多的人开始考虑自建服务器。然而&#xff0c;在中国大陆地区&#xff0c;自建服务器需要进行备案。本文将介绍自建服务器备案的流程、所需材料以及注意事项。 一、备案流程 确定备案地区 根据《中华人民共和国计算机信息网络国际联网…

【python】—— 集合

目录 &#xff08;一&#xff09;集合的概念 &#xff08;二&#xff09;集合的使用 2.1 集合的创建 2.2 集合元素的唯一性 2.3 集合的操作 2.3.1 并集 2.3.2 交集 2.3.3 差集 2.3.4 补集 2.4 遍历集合 2.5 其他集合操作 2.5.1 添加元素 2.5.2 移除元素 2.5.3 清…

【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

这里写目录标题 EasyExcel教程Maven依赖 EasyExcel API分析介绍EasyExcel 注解通用参数ReadWorkbook&#xff08;理解成excel对象&#xff09;参数ReadSheet&#xff08;就是excel的一个Sheet&#xff09;参数注解参数通用参数 WriteWorkbook&#xff08;理解成excel对象&#…

冒泡排序-BubbleSort

1、基本思路 从数组的左边开始&#xff0c;比较两个元素的大小&#xff0c;当左边大于右边时&#xff0c;更换左右元素位置&#xff0c;否则不改变&#xff1b;接着向右移动一步&#xff0c;比较第二个元素和第三个元素的大小&#xff0c;重复上述操作&#xff0c;直到最后一个…

为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

文章目录 Slice vs Map&#xff1a;基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因HTTP Headers 的特性CPU 预加载特性 结论 Fasthttp 是一个高性能的 Golang HTTP 框架&#xff0c;它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而…

Ubuntu开机停在Grub命令行以及启动后进入emergency模式的解决方法

主机上两个硬盘&#xff0c;本来都是Ubutun系统&#xff0c;然后将其中一个重装为windows系统&#xff0c;结果另外一个硬盘的Ubutun启动不了 首先会卡在grub命令行界面&#xff0c;类似下面这样&#xff1a; 这种情况往往是 GRUB 的系统文件或者配置文件损坏了&#xff0c;但…

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…