功能描述:
本系统的研究内容主要是设计并实现一个一个在线测评系统(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在线评测系统