摘 要
随着信息技术在教育领域的不断应用,很多厂商针对小初高开发了各种教育平台,其收录了大量试题,但这些试题存在以下问题:1、试题陈旧,不符合当前的考试指导思想;2、试题固化,无法激发学生的学习兴趣;3、人工采集成本高,AI生成的试题错误率高,不通顺,需人工介入。因此,设计一个基于Spring Boot框架的小学数学智能出题系统,有助于解决以上问题,并能够对评测多样性和考试创新提供支撑。本课题就小学数学科目的知识点进行划分,搭建支撑即插即用的模块化试题生成运行环境,对试题结构、呈现方式、试题解析生成、试题讲解视频的生成脚本展开分析,参考科大讯飞、作业帮等学习产品,使用了MySQL数据库存储数据,使用Spring Boot框架作为后端框架。前端服务平台采用Vue.js进行结合ElementUI进行构建,便于教学产品开发者阅读和调用。通过Spring Boot后端开发技术,加强学生对MVC分层模式的运用,熟练使用IDEA、Eclipse、Navi cat等开发工具,运用前后端的交互技术,达到企业级开发的能力。通过综合应用实践,从而达到本专业的毕业要求和学士学位授予资格要求。
****关键词:****智能出题系统;Spring Boot;Vue.js;MySQL;前后端分离
目 录
[++++第++++ ++++1++++ ++++章 绪论++++](#第1章 绪论)
[++++1.1++++ ++++研究背景、目的、意义++++](#1.1 研究背景、目的、意义)
[++++1.1.1 研究背景++++](#1.1.1 研究背景)
[++++1.1.2 研究目的++++](#1.1.2 研究目的)
[++++1.2++++ ++++国内外研究现状++++](#1.2 国内外研究现状)
[++++第++++ ++++2++++ ++++章 相关技术介绍++++](#第2章 相关技术介绍)
[++++2.1++++ ++++MYSQL数据库++++](#2.1 MYSQL数据库)
[++++2.2++++ ++++SpringBoot 框架++++](#2.2 SpringBoot 框架)
[++++2.3 Vue.js++++ ++++框架++++](#2.3 Vue.js框架)
[++++2.4++++ ++++uni-app++++ ++++框架++++](#2.4 uni-app框架)
[++++第++++ ++++3++++ ++++章 系统分析++++](#第3章 系统分析)
[++++第++++ ++++4++++ ++++章 系统功能设计++++](#第4章 系统功能设计)
++++第++++ ++++5++++ ++++章系统实现++++
[++++5.1++++ ++++消费端(前台系统 - 教师使用)++++](#5.1消费端(前台系统 - 教师使用))
[++++5.2++++ ++++服务端(后台管理系统 - 管理员使用)++++](#5.2服务端(后台管理系统 - 管理员使用))
[++++6.3.1 消费端(教师前台)功能测试++++](#6.3.1 消费端(教师前台)功能测试)
[++++6.3.2 服务端(管理员后台)功能测试++++](#6.3.2 服务端(管理员后台)功能测试)
[++++致 谢++++](#致 谢)
研究目的
本研究旨在开发基于 SpringBoot 技术的小学数学智能出题系统,核心目标是摒弃复杂智能体构建,通过修改题干数字、场景实现轻量化智能出题,同时采用"消费端 + 服务端"双端架构,解决试题重复录入问题,满足小学数学教学的高效试题生成需求。在系统架构与功能设计上,消费端需实现注册即使用的便捷体验,用户无需复杂配置,可直接通过调用系统对外服务WebAPI完成试题生成、查看、导出等操作,且要确保WebAPI调用流程简洁,支持电脑、平板等多终端访问,适配教师日常教学场景的使用习惯5;服务端则聚焦核心资源管理,搭建 "课程管理 - 知识点管理 - 题型管理 - 模板题管理" 的全流程模块体系,其中课程管理模块实现小学数学各年级、各学期课程的创建、编辑与维护,明确试题对应的课程范围,知识点管理模块对各课程下的知识点进行精细化拆分,为试题生成提供精准的知识维度匹配,题型管理模块涵盖计算题、应用题、选择题、判断题等小学数学常见题型,定义每种题型的题干结构、答案格式,为模板题设计提供基础,模板题管理模块存储标准化模板题(含固定题干框架、可修改数字变量、场景变量),支持教师基于模板题快速调整数字、切换场景,实现一次录入模板,多次灵活生成试题,彻底解决重复录入问题6。核心智能功能实现上,需重点突破"题干数字、场景灵活修改"的技术逻辑,数字修改方面,针对模板题中的数字变量设置符合小学数学认知范围的数值约束(如一年级加减法数字≤20,三年级乘法数字≤100),确保修改后数字符合教学规律,避免出现超纲或不合理数值。场景修改方面,建立校园场景、家庭场景、户外场景等场景库,为每种题型、知识点匹配适配的场景模板,支持教师一键切换场景,且切换后题干表述自然、逻辑通顺7。此外,还需借助MySQL数据库实现服务端各模块资源与消费端用户数据的高效存储与关联管理,同时优化WebAPI响应速度,确保用户调用 API 生成试题时,数字、场景修改与试题生成的响应时间≤3 秒,满足教师课堂即时出题、课后快速组卷的需求。
1.1.3研究意义
在教育教学层面,该系统能有效降本增效,适配个性化教学。模板题"一次录入、多次修改" 的模式,彻底避免教师反复录入相似题干的冗余工作,据估算可减少教师试题准备时间60%以上,使其将更多精力投入课堂教学与学生辅导。教师可基于同一模板题,通过修改数字调整试题难度,通过切换场景适配不同教学目标,满足不同层次学生的学习需求,助力分层教学落地。从技术应用层面来看,系统的轻量化设计推动了教育技术实用化,其聚焦题干修改的核心需求,避免陷入复杂智能体的技术陷阱,采用成熟的SpringBoot框架与WebAPI技术,开发成本降低 40% 以上,且系统稳定性更高、维护更便捷,为中小学校、教育机构引入智能出题系统提供低门槛解决方案。同时,"消费端 + 服务端"的精简架构避免了模块冗余导致的资源浪费,服务端模块间的逻辑联动,如模板题关联知识点、知识点关联课程等方法从而实现了资源的精准匹配与高效调用,为同类教育系统的架构设计提供参考。
系统需求分析
3.1.1教师功能需求分析
教师作为题库系统的核心使用用户,其功能围绕小学数学题库管理与试卷生成展开。核心功能包括:账户的注册与登录(对接teacher表完成身份验证);维护个人资料、手机号等信息,并可查看个人累计生成试卷数;浏览并筛选course(课程)、knowledge_point(知识点)表中的课程与知识点体系;基于template_question(模板题)表的题库模板,结合scene_word(场景词库)自定义题目生成规则;批量生成个性化试卷并管理paper(试卷)、paper_question(试卷题目关联)表数据;查看已生成试卷的题目详情与分值配置;同时可自主创建question(自定义题目)并关联对应题型(question_type表)与知识点,完成题目库的补充与维护。教师功能用例图如图 3-1 所示。

管理员功能需求分析
管理员作为系统运营维护者,其功能聚焦于全平台的权限管控与数据管理。核心功能包括:通过admin表完成管理员账号登录与权限验证;对teacher表中的教师账号进行全生命周期管理(注册审核、封禁 / 解封、信息修改);维护course表的课程体系(新增 / 编辑 / 删除年级、学期及课程信息),并管理knowledge_point表的知识点与课程的关联关系;审核并优化template_question表的题库模板,规范题目变量规则与场景配置;管理question_type表的题型体系,新增或调整题型分类;查看operation_log(操作日志)表的全量操作记录,追溯教师与管理员的行为轨迹;统计分析试卷生成、题目使用等核心数据,并进行系统参数配置与维护,保障题库系统安全稳定运行。管理员功能用例图如图 3-2 所示。

系统功能设计
本系统功能结构围绕教师、管理员两类核心角色搭建,分为教师微信小程序端、管理员后台管理端两大板块,各模块基于数据库表协同联动,形成 "题库维护 - 试卷生成 - 系统管控" 的完整业务闭环:
教师小程序端核心功能:基于course和knowledge_point表筛选课程 / 知识点,调用template_question表的题库模板生成个性化题目,完成paper表的试卷创建、预览与管理,同时可维护个人信息(teacher表)、查看试卷生成记录;
管理员后台端核心功能:全生命周期管理teacher表的教师账号(注册审核、封禁 / 解封),维护course、knowledge_point、question_type表的基础数据体系,审核template_question表的题库模板,通过operation_log表监控系统操作行为,保障题库与试卷数据安全。
系统功能覆盖从课程体系搭建、题库模板配置,到试卷生成、账号管控的全流程,满足小学数学题库系统的核心业务需求。系统功能结构图如图4-2所示。

物理结构设计表
(1)表3-1课程表:维护系统中的课程信息,按年级 + 学期维度划分(如一年级上册、二年级下册)。
表3-1课程表
|-------------|--------|----|--------------------------------------------------------------|----|------------|
| 字段名 | 数据类型 | 为空 | 默认值 | 主键 | 备注 |
| id | String | 否 | | 是 | 课程ID |
| name | String | 否 | | 否 | 课程名称 |
| grade | String | 否 | | 否 | 年级 |
| semester | String | 否 | | 否 | 学期:1上册 2下册 |
| description | String | 是 | NULL COMMENT '描述' | 否 | 描述 |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' | 否 | 创建时间 |
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | 否 | 更新时间 |
(2)表3-2管理员表:存储后台管理系统的管理员账号信息,用于管理员登录和权限控制。
表3-2管理员表
|-------------|--------|----|--------------------------------------------------------------|----|------------|
| 字段名 | 数据类型 | 为空 | 默认值 | 主键 | 备注 |
| id | String | 否 | | 是 | 管理员ID |
| username | String | 否 | | 否 | 用户名 |
| password | String | 否 | | 否 | 密码 |
| real_name | String | 是 | NULL COMMENT '真实姓名' | 否 | 真实姓名 |
| status | String | 是 | 1' COMMENT '状态:1正常 0禁用 | 否 | 状态:1正常 0禁用 |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' | 否 | 创建时间 |
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | 否 | 更新时间 |
(3)表3-3知识点表:在课程下挂载具体的知识点,形成 "课程 - 知识点"层级结构。
表3-3知识点表
|-----|------|------|-----|----|----|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
|-------------|--------|---|--------------------------------------------------------------|---|--------|
| id | String | 否 | | 是 | 知识点ID |
| course_id | String | 否 | | 否 | 所属课程ID |
| name | String | 否 | | 否 | 知识点名称 |
| description | String | 是 | NULL COMMENT '描述' | 否 | 描述 |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' | 否 | 创建时间 |
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | 否 | 更新时间 |
(4)表3-4操作日志表:记录系统中关键操作的日志,用于行为追溯和审计。
表3-4操作日志表
|-----|------|------|-----|----|----|
| 字段名 | 数据类型 | 允许为空 | 默认值 | 主键 | 备注 |
|---------------|--------|---|----------------------------------|---|-------|
| id | String | 否 | | 是 | 日志ID |
| operator | String | 否 | | 否 | 操作人 |
| operator_type | String | 否 | | 否 | 操作人类型 |
| content | String | 否 | | 否 | 操作内容 |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '操作时间' | 否 | 操作时间 |
(5)表3-5试卷表:存储教师创建的试卷基础信息(试卷表头)。
表3-5试卷表
|-------------|--------|---|---|-----|---|---|---|----|---|
| 字段名 | 数据类型 | 为空 || 默认值 | 主键 ||| 备注 | |
| id | String | 否 | ||| 是 | 试卷ID |||
| teacher_id | String | 否 | ||| 否 | 创建教师ID |||
| title | String | 否 | ||| 否 | 试卷标题 |||
| course_id | String | 是 | NULL COMMENT '课程ID' ||| 否 | 课程ID |||
| total_score | String | 是 | 100' COMMENT '总分 ||| 否 | 总分 |||
| description | String | 是 | NULL COMMENT '描述' ||| 否 | 描述 |||
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' ||| 否 | 创建时间 |||
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ||| 否 | 更新时间 |||
(6)表3-6试卷题目关联表:核心关联表,记录一份试卷包含的所有题目(包括智能生成题、手动录入题),并维护题目排序、分值等信息。
表3-6试卷题目关联表
|----------------------|--------|----|----------------------------------|----|---------|
| 字段名 | 数据类型 | 为空 | 默认值 | 主键 | 备注 |
| id | String | 否 | | 是 | 关联ID |
| paper_id | String | 否 | | 否 | 试卷ID |
| question_id | String | 是 | NULL COMMENT '题目ID' | 否 | 题目ID |
| template_question_id | String | 是 | NULL COMMENT '模板题ID' | 否 | 模板题ID |
| generated_content | String | 是 | | 否 | 生成的题目内容 |
| generated_answer | String | 是 | | 否 | 生成的答案 |
| score | String | 是 | 10' COMMENT '分值 | 否 | 分值 |
| sort_order | String | 是 | 0' COMMENT '排序序号 | 否 | 排序序号 |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' | 否 | 创建时间 |
(7)表3-7题目表:存储教师手动录入的自定义试题(我的题库),支持选择题、判断题、大题等题型。
表3-7题目表
|----------------------|--------|----|-----|---|---|----|---|
| 字段名 | 数据类型 | 为空 | 默认值 | 主键 || 备注 | |
| id | String | 否 | || 是 | 题目ID ||
| teacher_id | String | 否 | || 否 | 创建教师ID ||
| question_type_id | String | 否 | || 否 | 题型ID ||
| course_id | String | 否 | || 否 | 课程ID ||
| knowledge_point_id | String | 是 | NULL || 否 | knowledge_point_id ||
| knowledge_point_name | String | 是 | NULL || 否 | knowledge_point_name ||
| content | String | 否 | || 否 | 题干内容 ||
| option_a | String | 是 | NULL COMMENT '选项A' || 否 | 选项A ||
| option_b | String | 是 | NULL COMMENT '选项B' || 否 | 选项B ||
| option_c | String | 是 | NULL COMMENT '选项C' || 否 | 选项C ||
| option_d | String | 是 | NULL COMMENT '选项D' || 否 | 选项D ||
| answer | String | 否 | || 否 | 答案 ||
| image | String | 是 | NULL COMMENT '题目图片相对路径' || 否 | 题目图片相对路径 ||
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' || 否 | 创建时间 ||
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' || 否 | 更新时间 ||
(8)表3-8题型表:维护系统支持的所有题型字典(如计算题、选择题、判断题等)。
表3-8题型表
|-------------|---|---|---|---|---|---|---|---|---|----|---|
| 字段名 || 数据类型 || 为空 || 默认值 || 主键 || 备注 | |
| id | String || 否 || || 是 || 题型ID |||
| name | String || 否 || || 否 || 题型名称 |||
| code | String || 否 || || 否 || 题型代码 |||
| description | String || 是 || NULL COMMENT '描述' || 否 || 描述 |||
| create_time | String || 是 || CURRENT_TIMESTAMP COMMENT '创建时间' || 否 || 创建时间 |||
| update_time | String || 是 || CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' || 否 || 更新时间 |||
(9)表3-9场景词库表:存储动态替换的场景元素(如校园、超市的主语 / 物品替换词),用于智能生成应用题。
表3-9场景词库表
|-----|---|--------|----|-----|---|---|----|---|
| 字段名 | 数据类型 || 为空 | 默认值 | 主键 || 备注 | |
| id || String | 否 | || 是 | 场景ID ||
| scene_name || String | 否 | || 否 | 场景名称 ||
| subject_words || String | 是 | NULL COMMENT '主语替换词' || 否 | 主语替换词 ||
| object_words || String | 是 | NULL COMMENT '物品替换词' || 否 | 物品替换词 ||
| description || String | 是 | NULL COMMENT '描述' || 否 | 描述 ||
| create_time || String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' || 否 | 创建时间 ||
| update_time || String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' || 否 | 更新时间 ||
(10)表3-10教师表:存储前台教师的账号信息,用于教师注册、登录和个人信息维护。
表3-10教师表
|-------------|---|------|---|---|---|---|---|---|---|----|
| 字段名 || 数据类型 | 为空 ||| 默认值 || 主键 || 备注 |
| id | String ||| 否 | || 是 || 教师ID ||
| username | String ||| 否 | || 否 || 用户名 ||
| password | String ||| 否 | || 否 || 密码 ||
| real_name | String ||| 是 | NULL COMMENT '真实姓名' || 否 || 真实姓名 ||
| phone | String ||| 是 | NULL COMMENT '手机号' || 否 || 手机号 ||
| email | String ||| 是 | NULL COMMENT '邮箱' || 否 || 邮箱 ||
| status | String ||| 是 | 1' COMMENT '状态:1正常 0封禁 || 否 || 状态:1正常 0封禁 ||
| paper_count | String ||| 是 | 0' COMMENT '累计生成试卷数 || 否 || 累计生成试卷数 ||
| create_time | String ||| 是 | CURRENT_TIMESTAMP COMMENT '创建时间' || 否 || 创建时间 ||
| update_time | String ||| 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' || 否 || 更新时间 ||
(11)表3-10模板题资源表:存储带变量占位符的公共题目骨架(如计算题 / 应用题模板),并定义变量规则(如数字上下限),用于智能批量生成题目。
表3-10模板题资源表
|--------------------|--------|----|-----|---|---|-------|---|
| 字段名 | 数据类型 | 为空 | 默认值 | 主键 || 备注 ||
| id | String | 否 | || 是 | 模板ID | |
| question_type_id | String | 否 | || 否 | 题型ID | |
| course_id | String | 否 | || 否 | 课程ID | |
| knowledge_point_id | String | 否 | || 否 | 知识点ID | |
| template_content | String | 否 | || 否 | 模板内容 | |
| answer_template | String | 否 | || 否 | 答案模板 | |
| var_rules | String | 是 | NULL COMMENT '变量规则' || 否 | 变量规则 | |
| scene_type | String | 是 | NULL COMMENT '场景类型' || 否 | 场景类型 | |
| description | String | 是 | NULL COMMENT '描述' || 否 | 描述 | |
| create_time | String | 是 | CURRENT_TIMESTAMP COMMENT '创建时间' || 否 | 创建时间 | |
| update_time | String | 是 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' || 否 | 更新时间 | |
第 5 章系统实现
5.1 消费端(前台系统 - 教师使用)
5.1.1教师登录注册模块
实现教师账号的注册、登录功能,支持个人信息的修改与维护。如图5-1所示。

我的题库管理模块
支持教师脱离系统模板,手动录入多种题型的自定义试题,录入时需绑定对应课程与知识点。
1.选择题录入(题干、A/B/C/D 选项、标准答案)
2.判断题录入(题干、对 / 错判定)
3.大题 / 解答题录入(复杂题干、详细解析)如图5-2所示。

自定义题目维护模块
对教师手动录入的题目进行全生命周期管理,支持查看、修改与删除操作。如图5-3所示。
服务端(后台管理系统 - 管理员使用)
5.2. 1 教师用户管理模块
查看系统内注册教师列表,执行账号封禁 / 解封操作,统计各教师的试卷生成数量。如图5-8所示。

课程体系管理模块
维护小学数学习题的年级与学期大纲,如一年级上册、二年级下册等课程信息。如图5-9所示。

模板题资源管理模块
维护带变量占位符的公共题目骨架,针对计算题、基础应用题设定数字上下限规则。如图5-13所示。

总结
本课题围绕小学数学教师出题组卷的实际业务痛点,设计并实现了一套基于 SpringBoot+Vue 的小学数学智能出题系统。系统采用前后端分离的架构模式,以 Java 为后端开发语言、Vue 3 为前端核心框架、MySQL 为数据存储引擎,构建了教师前台与管理员后台两大核心业务端,完成了智能出题、手动录题、自主组卷、试卷导出及基础数据管理等核心功能的开发与测试。
论文首先阐述了系统的研究背景与意义,梳理了国内外智能出题系统的研究现状,明确了系统的开发目标与核心需求;其次,通过用例图、流程图完成了系统的需求分析,基于 MySQL 数据库设计了 11 张核心业务表,构建了清晰的表间关联关系,并完成了实体属性图的绘制;随后,详细设计了系统的功能模块与技术架构,完成了前后端代码的编写与联调;最后,通过功能测试、性能测试等多种测试手段,验证了系统功能的完整性与性能的稳定性。
测试结果表明,系统功能覆盖全面,教师端可高效完成手动录题、智能出题与混合组卷操作,管理员端可便捷维护基础数据;在 300 并发的峰值场景下,系统核心操作响应正常、资源占用合理,完全满足中小规模学校的实际使用需求。本系统的实现,有效解决了传统出题方式效率低、题型单一的问题,实现了小学数学试题的智能化、个性化生成,为小学数学教学信息化提供了有力支撑。
在开发过程中,也发现了系统存在的不足:一是智能出题的算法可进一步优化,提升题目难度适配的精准度;二是未实现多格式的试卷导入功能。未来可围绕这两点进行迭代升级,进一步拓展系统的功能边界,提升用户体验。