论文题目: 基于SpringBoot和Vue的OJ在线判题系统设计与实现
所在学院: 计算机学院 专 业: 计算机科学与技术
学生姓名: 许田丰 班级编号: 21070404
学 号: 2107211131 成 绩:
指导教师: 余建国 职 称: 副教授
填报时间: 2024 年 11 月 25 日
选题背景及意义
随着编程教育和竞赛活动的普及,越来越多的学生和编程爱好者依赖在线判题系统(Online Judge, OJ)来提升自己的编程技能。然而,当前市场上许多成熟的OJ平台在用户体验和功能定制方面存在一定的局限性。例如,HUSTOJ和HDUOJ等传统平台的用户界面(UI)设计较为古早,不符合现代用户的审美和操作习惯;而像洛谷(Luogu)和力扣(LeetCode)这样的流行平台虽然提供了丰富的题目资源和强大的后台支持,但它们的定制化能力有限,无法完全满足特定团队或组织的独特需求。
为此,本课题提出基于SpringBoot和Vue构建全新的OJ系统,旨在通过现代化UI设计和高度定制化功能改善用户体验。采用Vue.js打造直观、响应式的前端,结合SpringBoot实现高效的后端处理和服务部署,确保系统的稳定性和扩展性。新系统将包含题目库管理、限时答题、实时成绩排名等功能,并优化数据库查询和缓存机制以支持高并发访问。同时,系统将采取先进的加密技术和权限控制措施,保障数据安全和比赛公平性。
设计现状
在近年来,在线判题系统的研发受到了广泛关注,国内外学者们在该领域进行了大量探索。以下是关于OJ系统研究现状的一些总结:
在国际上,Codeforces、LeetCode等知名网站已经成为全球程序员交流和竞技的重要场所,它们提供了丰富的题库资源和强大的后台支撑体系。美国斯坦福大学计算机科学系的研究人员致力于改进在线测评系统的安全性和可靠性,确保比赛期间的数据传输安全。欧洲一些机构也推出了面向初学者的互动式编程教程,强调用户体验和趣味性,鼓励更多年轻人接触编程。
在国内,有许多高校针对特定编程语言或应用场景开发了专用的OJ系统,如Python、Java等语言的教学辅助工具。
虽然目前已有不少优秀的在线判题系统问世,但在功能完整性、用户体验友好度等方面仍有较大的改进空间。特别是在集成新兴技术如云计算、大数据分析等方面,现有系统尚需进一步完善。因此,本项目将着眼于这些问题,力求打造一个更加先进、实用的OJ平台。
设计思路与技术路线
项目三大阶段
第一阶段:完成前端项目的部分开发和后端项目的初始化
完成全局状态管理、全局权限管理、全局项目入口和通用组件开发
第二阶段:完成后端的开发和前端的开发
数据库建库建表、后端接口和业务开发、完善前端的页面
第三阶段:完成判题机的开发和docker沙箱实现
核心技术和工具
后端:
Java Spring Boot
Java进程控制
Java安全管理器
Docker代码沙箱实现
虚拟机+远程开发
MySQL 数据库
MyBatis-Plus 及 MyBatis X 自动生成
Redis 分布式 Session
多种设计模式:策略模式、工厂模式、代理模式、模板方法模式
前端:
Vue 3
Vue-CLI脚手架
Vuex 状态管理
Arco Design 组件库
前端工程化:ESLint + Prettier + TypeScript
手写前端项目模板 (通用布局、权限管理、状态管理、菜单生成)
Markdown 富文本编辑器
MonacoEditor代码编辑器
OpenAPI前端代码生成
主要功能
1.题目模块
- i.创建题目 (管理员)
- ii.删除题目 (管理员)
- ii.修改题目 (管理员)
- iv.搜索题目 (用户)
- v.在线做题
- vi.提交题目代码 7.用户模块
- i.注册
- ii. 登录 10.判题模块
- i.提交判题 (结果是否正确与错误)
- ii.错误处理(内存溢出、安全性、超时)
- ii.自主实现代码沙箱 (安全沙箱)
- iv.开放接口 (提供一个独立的新服务)
进度安排
序 号 各阶段工作内容 进度起讫日期
1 查阅相关文献资料 2024/11/1—2025/1/5
2 完成第一阶段设计 2025/1/5—2025/2/1
3 完成第二阶段设计 2025/2/1—2025/3/1
4 完成第三阶段设计 2025/3/1—20254/1
5 完成应用平台功能和论文撰写 2025/4/1—2025/5/1
预计主要创新点
- 现代化前端框架的使用:使用Vue.js构建前端界面,提供了直观、响应式的用户体验。通过Vue-CLI进行项目初始化和组件库引入,确保了项目的快速搭建和优化。
- 多套布局支持:提供多种布局选项,满足不同场景的需求,增强了系统的灵活性和适应性。
- 集成高级编辑器:集成了Markdown编辑器和Monaco Editor代码编辑器,提升了用户的代码编写体验,使得用户可以在平台上更高效地编写和调试代码。
- 自定义代码模板:支持自定义代码模板,用户可以根据自己的需求定制代码模板,提高了编程练习的个性化和灵活性。
- 实时反馈机制:实现了自动评判引擎,能够对多种编程语言提供实时的结果反馈,帮助用户快速了解代码问题并进行改进。
- 代码沙箱的安全控制:通过Java原生实现代码沙箱,并结合Docker技术,实现了超时控制、资源控制、权限控制等安全措施,确保代码执行环境的安全性和隔离性。