大家好,我是一名普通高校学生,今天突发奇想想分享分享自己前阶段做的一个综合性的OJ大项目,现整理了之前的项目文档逐步发表出来给大家瞅一瞅,请诸位斧正一手O(∩_∩)O哈哈~!!!
声明:此项目仅仅是用于学习,不用于商业
一、项目背景
市面的监考系统要不就是要收钱,要不就是有很多功能没有实现,导致在具体使用的时候给本人带来了许多不便之处。
同时为了可以让我的监考系统有一个合适的载体展示其功能的强大,本人打算自己设计一个 OJ 平台也可以实现代码在线编程同时进行在线测试功能,也可以使用大模型询问AI问题,同时同学们还可以实时观察自己是否出分的一个智能AI检测学习平台,是不是很方便呢。
同时对于该网站本人还打算扩展一些题库刷题功能,题库、竞赛甚至自定义博客主页等多方面功能。
二、需求分析
基本的登录,注册功能了
-
导航栏信息
-
首页目录下展示信息为各种算法还有各种学习笔记等学习方面的帖子
-
题库目录下展示的为
- 算法类型题库: 从比如说
leetcode,acwing,luogu还有啥codeforces等爬来的题库,当然还有基本的分页功能,还有就是各个题目的状态栏信息,此处还会提供题目通过总数以及各个难度类型题目数量统计的接口。 - 考研408题库: 这一部分的题目就得自己随后慢慢找,主要以选择填空为主。
- 高数I和II题库: 这一部分准备在考验完之后对其进行大幅度扩展工作。
- 题库集成专题训练: 这一部分在后期尝试实现。
- 选择自动判题功能
- 算法类型题库: 从比如说
-
竞赛
-
此部分需要严格区分管理员和普通用户身份,用户等待界面可参考牛客还有codeforces的等待时间界面来实现。
-
管理员权限
-
可以指定正式比赛和报名比赛的时间 (包含起始时间和结束时间)
-
可以备注比赛
-
可以设置比赛密码
-
对于代码题而言具体仅仅以ACM赛制模式(扩展再说)
-
基本信息设置完成之后
-
可以选择多种方式设置题目 (注意:这些题目在正式比赛之后会自动实现逻辑删除功能,比赛结束会自动解除)
- 选择题设置 (可分单多选)
- 填空题设置
- 简答题设置
- 编程大题设置 (在线测试功能看情况)
-
-
普通用户权限
- 仅仅可以参加比赛以及等待比赛开始
- 不可修改比赛任何信息
- 只有输入正确密码才可以参加比赛
-
此处有个关键的作弊检测功能的基于深度学习的检测功能,尝试实现.....!!!!!!!!!!!!!!!!!
-
对于该竞赛系统,对于选择题可以实现提交即可直接出分的功能,后续的填空、简答题需要手动修改,对于编程题这个题目之后再详细考虑......
-
-
讨论(实际上就是之前的大型聊天室学习websocket实现)
- 可以拉人私人聊天
- 可以大群中聊天
- 其他功能另行拓展
- 管理员可以禁止某人聊天功能
-
记录
-
所有提交过验证过对错的题目都会有像洛谷里的这种样子显示出来,但是这里的记录仅仅是本人自己的提交记录
-
对于每道题目而言,都应该显示所有人的像luogu这样的提交记录,至于代码是否允许展示,这个后期考虑
-
-
写文章
- 普通用户仅有发帖、删除、修改自己帖子的功能
- 管理员拥有删除任何帖子功能,但是无法修改帖子,可以发出总公报
- 对于帖子的排列顺序暂定按照发布时间顺序来定,不考虑大数据分析算法
-
-
个人中心
- 刚开始为默认名称:菜鸟n号 (这里的n表示注册序列号)
- 可以直接在此处修改用户名,喜,性别,手机号,邮件,生日,简述,个人网站,学校这些信息。
- 题单收藏
- 自己做题分析 (Echarts直接分析)
- .........
-
个人博客个性化设计
- 可以快速定制化一个属于自己的博客,打开即可用,提高用户体验感。
-
竞赛实时监控功能
- 核心难点后续详细展开
三、项目开发步骤
第一阶段
预计初步完成登录注册功能网页帖子功能、题库功能、代码调试提交、IP限流、WebSocket实现简单的大型聊天室功能以及简单的后台管理用户、试题界面的管理功能。
第二阶段
前端页面设计进行进一步优化,提高用户的体验感;后端进行大幅度搜生瘦身同时优化性能,实现数据库同步功能,同时还需要初步完成实时作弊监控系统的初始化开发,但是并不要求高质量。
第三阶段
全面性优化前端样式,实时收集用户体验感,不断优化优化再优化;后端保证性能最大化,多类型数据库协调公用;RabitMQ/RokcetMQ实现聊天室和私人聊天功能,同时全面完成讨论、学习专栏、个性化博客功能。
第四阶段
全面提高作弊监控系统的质量,不断对其进行训练提高作弊监控系统的准确程度直到大学毕业。
四、项目的特点
- 不是单纯简单的CRUD操作
- 如果落到实处,做到最后对学生的帮助会很大
- 这种类型的作弊监控系统尚未大面积出现在大众面前
五、架构设计
核心业务流程图
暂时不画
时序图
架构设计图
ER图(太多了就不一一给出了)
用户模块
评论模块
六、技术选型
前端
- Vue + Vite
- Vue-Router
- dayjs
- daisyui组件库
- Element-UI组件库
- tailwindcss组件库
- websocket
- Pinia
后端
- SpringBoot
- Spring Cloud
- MySQL数据库
- MyBatisPlus
- RabitMQ/RocketMQ
- Redis数据库
- Python
- YOLO
- OpenCv
- Pychorch
- easyExcel
- Caffeine缓存
- RxJava + SSE + ChatGLM AI
- 阿里云OSS
- ElaticSearch搜索引擎 (看情况)
- MongoDB数据库 (看情况)
- Nginx or Docker (看情况)