基于Flask的在线考试刷题系统设计与实现,集智能练习、过程追踪、深度分析与个性化引导

1 绪 论

1.1 研究背景与意义

随着我国高等教育毛入学率持续攀升,研究生报考人数呈现快速增长态势。据教育部统计数据显示,2024年全国硕士研究生招生考试报名人数达到438万,虽较上一年度略有回落,但仍处于历史高位。这一数据折射出广大青年学子通过深造提升核心竞争力的强烈诉求。然而,与高涨的报考热情形成对比的是,备考过程中普遍存在的效率瓶颈与方法困境。

当前考研复习仍高度依赖传统模式。纸质教辅资料受出版周期所限,难以及时响应考纲动态调整;分散于各类网络平台的电子资源则质量参差、缺乏系统性与权威性。更为关键的是,无论是传统"题海战术"还是简单电子化的刷题工具,其核心模式仍停留在单向知识输出与机械重复层面,存在显著局限:练习方式单一,难以模拟真实考试的时间压力与场景氛围;反馈机制滞后模糊,仅提供答案与解析,学习者无法精准量化自身在不同知识点、题型上的掌握程度与薄弱环节;学习过程缺乏个性化引导,所有用户面对同一套练习内容,无法根据个人历史表现动态调整复习重点,极易陷入"会的重复会,不会的始终不会"的低效循环。现有在线学习平台虽已普及,但多数仍停留在资源搬运层面,未能充分利用学习过程中产生的行为数据进行深度挖掘与智能干预。

1.2 国内外研究现状

1.2.1 国内研究现状

国内研究现状表明,虽然在线教育工具的技术实现已较为成熟,但面向复杂备考需求,能够融合智能练习、深度分析与个性化干预的一体化、数据驱动的专业刷题平台仍属稀缺。本研究正是在此背景下,旨在借鉴现有技术成果,并着重在功能体系的系统性、数据挖掘的深度以及AI赋能的个性化等方面进行深化与创新8,以填补针对考研这一特定场景的高阶学习支持系统的研究与实践空白。

1.2.2 国外研究现状

国外研究现状呈现出高度跨学科性、强调架构通用性与追求深度智能化的特点,为本系统的设计提供了方法论与前沿技术视角的借鉴。

国外现状表明,一个先进的系统不应仅是功能的堆砌,而应是在一个设计良好的架构之上,深度融合领域专业知识、先进算法与人性化交互的产物。这要求本系统在实现基本刷题功能的同时,需更注重系统架构的模块化与可扩展性,并在AI赋能学习(如自适应推荐、认知状态诊断)的深度与精准度上,借鉴上述研究中的方法论进行持续优化与创新。

1.3 研究内容与目标

具体涵盖以下五大功能模块的设计与实现:

(1)用户学习模块:该模块是系统的基础入口与安全屏障。设计上将实现基于邮箱/用户名的安全注册与登录流程,集成密码加密存储与会话管理机制。用户可在此维护个人基本信息,并支持安全的账户退出与多设备登录管理,确保学习进度的连贯性与账户安全性。

(2)题库练习模块:作为系统的核心功能层,本模块致力于提供多样化的模拟练习场景。具体将实现:如随机答题,根据用户选择的科目与难度,从题库中随机抽取题目形成练习卷,用于知识点的广泛涉猎与查漏补缺;顺序/续答答题,支持按照知识体系章节或题目ID顺序进行系统性的练习,并利用数据库持久化记录用户的答题进度,实现中断后可智能定位、无缝续答。

定时模式:集成前端倒计时组件,允许用户设定练习时间,模拟考试的时间压力环境,旨在提升解题效率与时间管理能力。

模拟考试:实现完整的考试流程,包括按规则自动组卷、全真模拟的限时作答环境、一次性提交以及系统自动完成客观题评分、提供答案解析与初步成绩报告。

(3)个人学习中心

本模块是用户进行知识沉淀与自主复习的核心区域。主要功能包括:

错题本管理:系统自动收录所有作答错误的题目,支持用户对错题进行分类标签、添加错因分析笔记,并可按标签或时间筛选进行专项重做,重做后可选择将已掌握题目移出错题本。

收藏夹管理:用户可主动收藏重点或疑难题目,并添加个人学习笔记,构建个性化的重点复习资料库。

练习历史记录:详细记录并分类展示用户所有的练习与模考记录,支持按时间、模式、科目进行查询与回顾。

(4)学情分析模块:本模块旨在将学习过程数据转化为直观的认知洞察。通过集成ECharts等可视化库,在后台对用户的答题数据进行深度聚合分析后,在前端动态生成多种分析图表:如趋势分析图,以折线图展示用户随时间的整体正确率变化趋势;知识点掌握度雷达图,直观呈现用户在各个知识板块的能力分布与强弱对比;练习统计柱状图/卡片,展示不同科目、题型的练习量、用时及正确率对比;学习时间分布图,统计并展示用户在不同时间段的学习投入情况。通过这些可视化报告,帮助用户从数据层面精准把握自身的学习状态与进步轨迹。

(5)AI学习助手:本模块探索人工智能技术在教育辅助中的应用,旨在提升系统的智能化与个性化水平。包括简答题智能批改,针对主观题型,设计后端接口调用大语言模型API。用户提交答案后,系统将返回基于关键词、逻辑结构和完整度的智能化评分,并提供改进建议的文本反馈;个性化题目推荐,基于协同过滤或基于内容推荐的思想,设计并实现一个推荐算法。该算法将综合分析用户的错题历史、各知识点掌握程度、练习偏好等数据,在首页或练习入口动态推送最适合用户当前薄弱环节的练习题目,实现"千人千面"的自适应学习路径引导。

2 系统需求分析

2.1 可行性分析

经济可行性分析:系统开发采用Python、Flask、MySQL、Bootstrap等开源技术栈,无需商业授权费用。

2.2 需求分析

2.2.1 关键技术

系统开发采用前后端分离架构,后端基于Python语言与Flask轻量级Web框架,前端采用Bootstrap响应式框架,数据库选用MySQL关系型数据库,并通过SQLAlchemy ORM进行数据操作。

2.2.2 业务流程分析

本系统核心业务流程围绕用户的完整学习闭环展开,主要包括练习流程、学习管理流程、智能推荐流程三个核心环节。

(1)练习流程:用户进入系统后,可选择随机练习、顺序练习、定时模式或模拟考试四种练习模式。

(2)学习管理流程:用户可在练习过程中对重要题目进行收藏,对疑难题目添加学习笔记。系统自动维护错题本,记录每道错题的错误次数、错误答案及正确答案。

(3)智能推荐流程:系统基于用户的历史答题数据(包括正确率、错题分布、薄弱知识点等),调用推荐算法生成个性化题目列表。

上述核心业务流程如图2.1、图2.2、图2.3所示。

图2-1 练习模式业务流程图

图2-2 学习管理业务流程图

图2-3 智能推荐业务流程图

2.3 功能需求分析

根据系统角色划分,本系统包含两类用户:普通用户(考生)和系统管理员。不同角色具有不同的功能权限。

(1)普通用户功能:普通用户是系统的核心使用者,主要功能包括练习模式、学习工具、学情分析、AI助手等模块。

(2)管理员功能:管理员负责系统的运维与管理,主要功能包括用户管理(用户信息查看、状态管理)、题目管理(题目增删改查、批量导入导出)、分类管理(分类创建、编辑、排序)、学情分析(全平台数据统计)、日志管理(日志查看、筛选、导出)、系统设置(基础参数配置)等。

普通用户功能用例图如图2.4所示,管理员功能用例图如图2.5所示。

图2-4 普通用户功能用例图

图2-5 管理员功能用例图

3 系统总体设计

3.1 系统架构设计

本系统采用B/S架构,基于Flask框架实现前后端分离的MVT(Model-View-Template)设计模式。系统整体架构自顶向下分为表现层、业务逻辑层、数据访问层和数据存储层四个层次。

系统整体架构如图3.1所示。

图3-1 系统架构图

3.2 系统总体功能设计

本系统旨在为考研学子提供一个集智能练习、过程追踪、深度分析与个性化引导于一体的在线学习平台。系统功能划分为前端用户系统和后台管理系统两大部分。

前端用户系统面向普通考生,主要包括以下功能模块:用户学习模块(用户注册登录、个人资料维护)、题库练习模块(随机练习、顺序/续答练习、定时模式、模拟考试)、个人学习中心(错题本管理、收藏夹管理、练习历史记录查看)、学情分析模块(正确率趋势图、知识点掌握度雷达图、练习时间统计)、AI学习助手(简答题智能批改、个性化题目推荐)。

后台管理系统面向系统管理员,主要包括以下功能模块:用户管理模块(用户信息查看、账号状态管理、权限分配)、题库管理模块(题目增删改查、CSV批量导入导出、分类与难度标签管理)、练习与记录管理模块(查看用户练习记录与模拟考试成绩)、数据统计模块(全平台用户整体正确率统计、题目热度与难度分析、用户活跃度报表生成)、系统设置与AI模型管理模块(基础参数配置、管理员权限分配、操作日志审计、AI批改与推荐功能的后台配置)。系统总体功能模块如图3.2所示。

图3-2 系统总体功能模块图

3.3 数据库设计

3.3.1 数据库概念设计

本系统采用MySQL关系型数据库进行数据存储。根据系统功能需求分析,设计包含用户、题目、分类、练习、答案、错题、收藏、笔记、进度等核心实体,实体间通过外键建立关联关系。

图3-3 系统E-R图

3.3.2 数据库表设计

1、user_quizSystem表记录注册用户的账号信息、个人资料及学习统计。其中id为主键自增,username和email设置唯一索引,password_hash存储加密后的密码,is_admin和is_active为布尔类型标识用户权限与状态。user_quizSystem数据表结构如表3.1所示。

表3-1 user_quizSystem表

|--------------------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 用户ID |
| username | VARCHAR(80) | 否 | 唯一 | 无 | 用户名 |
| email | VARCHAR(120) | 否 | 唯一 | 无 | 邮箱 |
| password_hash | VARCHAR(255) | 否 | 无 | 无 | 加密密码 |
| full_name | VARCHAR(100) | 是 | 无 | NULL | 真实姓名 |
| avatar | VARCHAR(255) | 是 | 无 | NULL | 头像URL |
| bio | TEXT | 是 | 无 | NULL | 个人简介 |
| phone | VARCHAR(20) | 是 | 无 | NULL | 手机号 |
| education_level | VARCHAR(50) | 是 | 无 | NULL | 教育程度 |
| major | VARCHAR(100) | 是 | 无 | NULL | 专业 |
| preferred_difficulty | VARCHAR(20) | 是 | 无 | medium | 偏好难度 |
| daily_goal | INT | 是 | 无 | 10 | 每日目标 |
| notification_enabled | BOOLEAN | 是 | 无 | 1 | 接收通知 |
| total_questions_answered | INT | 是 | 无 | 0 | 总答题数 |
| total_correct_answers | INT | 是 | 无 | 0 | 总正确数 |
| total_study_time | INT | 是 | 无 | 0 | 总学习时长 |
| current_streak | INT | 是 | 无 | 0 | 当前连续天数 |
| longest_streak | INT | 是 | 无 | 0 | 最长连续天数 |
| is_active | BOOLEAN | 是 | 无 | 1 | 启用状态 |
| is_admin | BOOLEAN | 是 | 无 | 0 | 管理员权限 |
| is_premium | BOOLEAN | 是 | 无 | 0 | 高级用户 |
| last_login | DATETIME | 是 | 无 | NULL | 最后登录时间 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 更新时间 |

2、question_category_quizSystem表记录题目分类信息,支持多级分类结构。其中parent_id为外键,关联本表id,用于实现分类层级关系。question_category_quizSystem数据表结构如表3.2所示。

表3-2 question_category_quizSystem表

|-------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 分类ID |
| name | VARCHAR(100) | 否 | 唯一 | 无 | 分类名称 |
| description | TEXT | 是 | 无 | NULL | 分类描述 |
| parent_id | INT | 是 | 外键 | NULL | 父分类ID |
| sort_order | INT | 是 | 无 | 0 | 排序序号 |
| is_active | BOOLEAN | 是 | 无 | 1 | 启用状态 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |

3、question_quizSystem表记录题目核心信息,包括题目内容、类型、难度、分值等属性。其中category_id为外键,关联question_category_quizSystem表的id。question_quizSystem数据表结构如表3.3所示。

表3-3 question_quizSystem表

|------------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 题目ID |
| title | TEXT | 否 | 无 | 无 | 题目标题 |
| content | TEXT | 否 | 无 | 无 | 题目内容 |
| explanation | TEXT | 是 | 无 | NULL | 答案解析 |
| question_type | VARCHAR(20) | 否 | 无 | 无 | 题目类型 |
| difficulty | VARCHAR(20) | 否 | 无 | 无 | 难度等级 |
| category_id | INT | 否 | 外键 | 无 | 分类ID |
| subject | VARCHAR(100) | 否 | 无 | 无 | 学科 |
| tags | TEXT | 是 | 无 | NULL | 标签 |
| image_url | VARCHAR(255) | 是 | 无 | NULL | 图片URL |
| audio_url | VARCHAR(255) | 是 | 无 | NULL | 音频URL |
| video_url | VARCHAR(255) | 是 | 无 | NULL | 视频URL |
| correct_answer | TEXT | 是 | 无 | NULL | 正确答案 |
| max_score | INT | 是 | 无 | 1 | 分值 |
| time_limit | INT | 是 | 无 | 60 | 时间限制 |
| total_attempts | INT | 是 | 无 | 0 | 总尝试次数 |
| correct_attempts | INT | 是 | 无 | 0 | 正确次数 |
| is_active | BOOLEAN | 是 | 无 | 1 | 启用状态 |
| is_featured | BOOLEAN | 是 | 无 | 0 | 推荐题目 |
| created_by | INT | 是 | 外键 | NULL | 创建者ID |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 更新时间 |

4、choice_quizSystem表记录选择题的选项内容。其中question_id为外键,关联question_quizSystem表的id。choice_quizSystem数据表结构如表3.4所示。

表3-4 choice_quizSystem表

|-------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 选项ID |
| question_id | INT | 否 | 外键 | 无 | 所属题目ID |
| choice_text | TEXT | 否 | 无 | 无 | 选项内容 |
| is_correct | BOOLEAN | 是 | 无 | 0 | 是否为正确答案 |
| explanation | TEXT | 是 | 无 | NULL | 选项解释 |
| sort_order | INT | 是 | 无 | 0 | 排序序号 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |

5、quiz_quizSystem表记录用户每次练习或考试的基本信息。其中user_id为外键,关联user_quizSystem表的id。quiz_quizSystem数据表结构如表3.5所示。

表3-5 quiz_quizSystem表

|------------------------|--------------|-----|----|-------------------|------|
| 字段名 | 数据类型 | 允许空 | 键 | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 练习ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| title | VARCHAR(200) | 否 | 无 | 无 | 练习标题 |
| description | TEXT | 是 | 无 | NULL | 练习描述 |
| quiz_type | VARCHAR(20) | 否 | 无 | 无 | 练习类型 |
| difficulty | VARCHAR(20) | 是 | 无 | medium | 难度等级 |
| total_questions | INT | 是 | 无 | 0 | 总题数 |
| time_limit | INT | 是 | 无 | 0 | 时间限制 |
| passing_score | INT | 是 | 无 | 60 | 及格分数 |
| status | VARCHAR(20) | 是 | 无 | created | 状态 |
| current_question_index | INT | 是 | 无 | 0 | 当前题号 |
| score | INT | 是 | 无 | 0 | 得分 |
| max_score | INT | 是 | 无 | 0 | 总分 |
| started_at | DATETIME | 是 | 无 | NULL | 开始时间 |
| completed_at | DATETIME | 是 | 无 | NULL | 完成时间 |
| time_spent | INT | 是 | 无 | 0 | 用时 |
| question_order | TEXT | 是 | 无 | NULL | 题目顺序 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 更新时间 |

  1. quiz_answer_quizSystem表记录用户每道题的作答详情。其中quiz_id、user_id、question_id均为外键,分别关联quiz_quizSystem、user_quizSystem、question_quizSystem表的id。quiz_answer_quizSystem数据表结构如表3.6所示。

表3-6 quiz_answer_quizSystem表

|------------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 答案ID |
| quiz_id | INT | 否 | 外键 | 无 | 所属练习ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| question_id | INT | 否 | 外键 | 无 | 题目ID |
| user_answer | TEXT | 是 | 无 | NULL | 用户答案 |
| selected_choices | TEXT | 是 | 无 | NULL | 选择的选项 |
| is_correct | BOOLEAN | 是 | 无 | NULL | 是否正确 |
| score | INT | 是 | 无 | 0 | 得分 |
| max_score | INT | 是 | 无 | 1 | 分值 |
| time_spent | INT | 是 | 无 | 0 | 用时 |
| ai_feedback | TEXT | 是 | 无 | NULL | AI反馈 |
| ai_score | INT | 是 | 无 | NULL | AI评分 |
| is_ai_graded | BOOLEAN | 是 | 无 | 0 | 是否AI批改 |
| answered_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 答题时间 |

  1. wrong_answer_quizSystem表记录用户答错的题目。其中user_id和question_id为外键,分别关联user_quizSystem和question_quizSystem表的id,并设置联合唯一约束。wrong_answer_quizSystem数据表结构如表3.7所示。

表3-7 wrong_answer_quizSystem表

|-----------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 错题ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| question_id | INT | 否 | 外键 | 无 | 题目ID |
| wrong_answer | TEXT | 是 | 无 | NULL | 错误答案 |
| correct_answer | TEXT | 是 | 无 | NULL | 正确答案 |
| attempt_count | INT | 是 | 无 | 1 | 错误次数 |
| is_reviewed | BOOLEAN | 是 | 无 | 0 | 是否复习 |
| is_mastered | BOOLEAN | 是 | 无 | 0 | 是否掌握 |
| first_wrong_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 首次错误时间 |
| last_attempt_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 最后尝试时间 |
| mastered_at | DATETIME | 是 | 无 | NULL | 掌握时间 |

  1. avorite_question_quizSystem表记录用户收藏的题目。其中user_id和question_id为外键,分别关联user_quizSystem和question_quizSystem表的id,并设置联合唯一约束。favorite_question_quizSystem数据表结构如表3.8所示。

表3-8 favorite_question_quizSystem表

|-------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 收藏ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| question_id | INT | 否 | 外键 | 无 | 题目ID |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 收藏时间 |

  1. user_note_quizSystem表记录用户添加的学习笔记。其中user_id和question_id为外键,分别关联user_quizSystem和question_quizSystem表的id。user_note_quizSystem数据表结构如表3.9所示。

表3-9 user_note_quizSystem表

|--------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 笔记ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| question_id | INT | 否 | 外键 | 无 | 题目ID |
| note_content | TEXT | 否 | 无 | 无 | 笔记内容 |
| note_type | VARCHAR(20) | 是 | 无 | personal | 笔记类型 |
| is_public | BOOLEAN | 是 | 无 | 0 | 是否公开 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 更新时间 |

  1. user_progress_quizSystem表记录用户在各分类下的学习进度。其中user_id和category_id为外键,分别关联user_quizSystem和question_category_quizSystem表的id。user_progress_quizSystem数据表结构如表3.10所示。

表3-10 user_progress_quizSystem表

|--------------------|--------------|-------------|-----------|-------------------|------------|
| 字段名 | 数据类型 | 允许空 | | 默认值 | 说明 |
| id | INT | 否 | 主键 | 自增 | 进度ID |
| user_id | INT | 否 | 外键 | 无 | 用户ID |
| category_id | INT | 是 | 外键 | NULL | 分类ID |
| answered_questions | INT | 是 | 无 | 0 | 已答题数 |
| correct_answers | INT | 是 | 无 | 0 | 正确数 |
| total_time_spent | INT | 是 | 无 | 0 | 总用时 |
| current_streak | INT | 是 | 无 | 0 | 当前连续 |
| best_streak | INT | 是 | 无 | 0 | 最佳连续 |
| mastery_level | VARCHAR(20) | 是 | 无 | beginner | 掌握程度 |
| last_practiced | DATETIME | 是 | 无 | NULL | 最后练习时间 |
| created_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | 是 | 无 | CURRENT_TIMESTAMP | 更新时间 |

4 系统开发与实现

4.1 开发环境

本系统采用B/S架构,后端基于Python与Flask框架开发,前端采用Bootstrap响应式框架,数据库选用MySQL开源数据库。系统开发及运行环境如表4.1所示。

表4-1 系统开发环境

|--------------------------|-------------------------------------------|
| 硬件环境 | 软件环境 |
| CPU:Intel Core i7-10750H | 操作系统:Windows 11 / Ubuntu 20.04 |
| 内存:16GB | 数据库:MySQL 8.0 |
| 硬盘:512GB SSD | Python版本:Python 3.9.0 |
| 网络:千兆以太网 | Flask版本:Flask 2.3.3 |
| | Web服务器:Flask内置服务器 / Gunicorn |
| | 浏览器:Chrome 120.0、Firefox 121.0、Edge 120.0 |
| | 开发工具:PyCharm Professional 2023.3 |
| | 版本控制:Git 2.40、GitHub |
| | 接口测试:Postman 10.18 |

4.2 功能模块实现

本系统核心功能模块包括练习会话管理、AI智能批改、个性化推荐、学情数据可视化以及管理后台题目导入。以下对各核心模块的实现过程进行详细说明。

4.2.1 练习会话管理模块实现

练习会话管理模块是系统的核心业务模块,负责处理用户发起练习、答题提交、进度保存及结果计算等关键流程。该模块重点实现了顺序练习的进度持久化与智能续答功能,以及定时模式的时间控制与自动提交机制。

练习会话模块实现效果如图4.1所示。

图4-1 练习答题页面

4.2.2 AI智能批改模块实现

AI智能批改模块针对简答题和论述题提供自动化评分与反馈功能,是系统的创新亮点之一。该模块通过调用DeepSeek大模型API,将用户答案与参考答案进行语义分析,返回结构化评分结果。

AI批改结果页面如图4.2所示。

图4-2 AI批改结果页面

4.2.3 个性化推荐模块实现

个性化推荐模块基于用户的历史学习数据,采用多策略融合的推荐算法,为用户推送针对性题目。推荐引擎(QuestionRecommender)综合考虑错题相似度、薄弱知识点、难度递进及题目多样性四个维度,计算每道题目的推荐分数。

推荐结果在前端页面展示时,每条题目附带推荐原因(如"与您答错的XXX相似"、"加强薄弱知识点"),帮助用户理解推荐依据。智能推荐页面如图4.3所示。

图4-3 智能推荐页面

4.2.4 学情分析模块实现

学情分析模块通过ECharts可视化库,将用户学习数据以图表形式直观呈现。前端页面通过Ajax调用后端API获取统计数据,动态渲染图表。

后端通过SQLAlchemy聚合查询计算用户各分类的正确率及答题趋势。前端使用ECharts初始化雷达图,展示用户在各知识点的掌握程度,学情分析页面实现效果如图4.4所示。

图4-4 学情分析页面

4.2.5 管理后台题目导入模块实现

管理后台提供CSV文件批量导入题目的功能,大幅降低题库构建成本。该模块通过Flask-WTF表单接收上传文件,根据文件格式(CSV/JSON/Excel)调用对应解析函数,逐行读取并存入数据库。

导入过程中,系统自动检查题目是否已存在(基于标题),避免重复导入。导入完成后,前端页面显示成功导入的题目数量,如图4.5所示。

图4-1 题目批量导入页面

相关推荐
程序边界1 小时前
凌晨三点批量掉授权,我花了四小时才搞明白LAC心跳链路是怎么算的
后端
AI人工智能_电脑小能手1 小时前
【大白话说Java面试题 第106题】【并发篇】第6题:synchronized 锁的锁对象可以是什么?
java·后端·面试
Rain5091 小时前
2.3. 安全配置:环境变量与 API 密钥管理
前端·人工智能·后端·安全·ai·node.js·ai编程
用户938515635071 小时前
HTML5 Canvas 从入门到AI驱动游戏开发:手把手教你用原生JS打造飞机游戏与数据可视化
前端·javascript·人工智能
techdashen1 小时前
CPython 仓库 Top 100 贡献者深度分析
python
yinchnag1 小时前
Go 语言 map 底层实现
后端·源码阅读
MariaH1 小时前
Express框架使用
后端
倒流时光三十年1 小时前
PostgreSQL LEAST 表达式函数详解
数据库·postgresql
thinking_talk1 小时前
2026中国MongoDB云服务厂商能力榜:选型对比与效能评估
数据库·mongodb·腾讯云