摘要

随着信息技术的快速发展,传统的单体架构系统在开发效率、维护成本和扩展性方面逐渐暴露出局限性。前后端分离架构因其模块化、高内聚低耦合的特点,成为现代Web开发的主流模式。编程训练系统作为计算机教育的重要工具,需要支持高并发、动态交互和实时反馈,传统架构难以满足这些需求。基于此,本研究设计并实现了一套前后端分离的编程训练系统,旨在提升开发效率、优化用户体验,并为后续功能扩展提供技术基础。系统的核心目标是为用户提供高效的编程练习环境,支持代码在线编译、题目管理、成绩统计等功能,同时为管理员提供便捷的后台管理工具。关键词:前后端分离、编程训练系统、SpringBoot、Vue、MyBatis、MySQL。

本系统采用SpringBoot作为后端框架,结合Vue.js构建前端交互界面,通过MyBatis实现数据持久化,MySQL作为数据库存储核心数据。系统功能模块包括用户管理、题目管理、代码提交与评测、成绩统计等。用户模块支持注册、登录和权限控制;题目模块提供分类管理和难度分级;代码评测模块集成第三方编译引擎,实现实时反馈;成绩模块通过可视化图表展示用户学习进度。系统采用RESTful API规范实现前后端数据交互,确保接口清晰且易于维护。部署方案基于Docker容器化技术,提升系统的可移植性和扩展性。关键词:用户管理、代码评测、RESTful API、Docker、可视化统计。

数据表设计

用户信息数据表

用户信息数据表中,注册时间是通过函数自动获取的,用户ID是该表的主键,存储用户的基本信息和权限相关属性,结构表如表3-1所示。

字段名 数据类型 是否为空 描述
user_id BIGINT 用户唯一标识
user_name VARCHAR(50) 用户昵称
user_email VARCHAR(100) 用户邮箱
user_password VARCHAR(100) 加密后的密码
user_role VARCHAR(20) 用户角色(学生/教师/管理员)
register_time DATETIME 注册时间
last_login_time DATETIME 最后登录时间
题目信息数据表

题目信息数据表中,创建时间是通过函数自动获取的,题目ID是该表的主键,存储编程题目的内容和评测相关属性,结构表如表3-2所示。

字段名 数据类型 是否为空 描述
problem_id BIGINT 题目唯一标识
problem_title VARCHAR(100) 题目名称
problem_content TEXT 题目描述
problem_level VARCHAR(20) 题目难度(简单/中等/困难)
problem_tags VARCHAR(200) 题目标签(逗号分隔)
create_time DATETIME 创建时间
update_time DATETIME 最后更新时间
提交记录数据表

提交记录数据表中,提交时间是通过函数自动获取的,记录ID是该表的主键,存储用户代码提交和评测结果的相关信息,结构表如表3-3所示。

字段名 数据类型 是否为空 描述
submission_id BIGINT 提交记录唯一标识
user_id BIGINT 关联的用户ID
problem_id BIGINT 关联的题目ID
submit_code TEXT 提交的代码内容
submit_status VARCHAR(50) 评测状态(通过/失败/编译错误)
execute_time INT 代码执行时间(毫秒)
submit_time DATETIME 提交时间

博主介绍:

👨‍🎓博主简介 ❤计算机在读硕士 | CSDN 专业博客 | Java 技术布道者 ❤深耕实验室一线,痴迷 SpringBoot

系统介绍:

开源免费分享前后端分离编程训练系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程可提供说明文档 可以通过AIGC**技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等功能如图所示。可以滴我获取详细的视频介绍

功能参考截图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

系统架构参考:

视频演示: 请dd我获取更详细的演示视频 或者直接加我,网名和签名

项目案例参考:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐