# 智能题库学习系统 (Smart Question Bank Learning System) [Previous content remains unchanged...] ## 数据模型说明 ### BaseModel - 基础模型,包含 id、创建时间、更新时间等通用字段 - 提供 CRUD 操作的基类功能 - 继承自 SQLAlchemy 的 Base 类 ### UserModel - 用户模型,对应 sys_users 表 - 包含用户名、密码、年级等字段 - 与 RoleModel 多对多关系 ### RoleModel - 角色模型,对应 sys_roles 表 - 包含角色名称、代码、描述等字段 - 与 UserModel 和 PermissionModel 多对多关系 ### PermissionModel - 权限模型,对应 sys_permissions 表 - 包含权限名称、代码、描述等字段 - 与 RoleModel 多对多关系 ### UserRoleModel - 用户-角色关联表模型,对应 sys_user_roles 表 - 包含 user_id 和 role_id 两个外键 ### RolePermissionModel - 角色-权限关联表模型,对应 sys_role_permissions 表 - 错题原因分析,帮助用户理解错误原因 - 错题标签,方便分类和复习 - 错题相似题推荐,巩固薄弱知识点 ### 4. 学习进度追踪 - 展示每日/每周/每月的练习情况 - 知识点掌握程度分析 - 学习时长统计 - 成绩进步曲线 - 知识点掌握预测,预估用户掌握程度 - 学习路径规划,提供个性化学习建议 - 学习目标设置,帮助用户明确学习方向 - 手动考试成绩录入,记录各类考试成绩 - 考试成绩分析,生成成绩报告 ## 技术架构 - 后端:Python 3.13 - 数据库:Mysql - 用户界面:Web 界面 ## 数据库设计 ### 用户表(sys_users) - id: 用户 ID - username: 用户名 - password: 密码 - grade: 年级 - create_at: 创建时间 - update_at: 更新时间 - create_by: 创建者 ID - update_by: 更新者 ID - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID - preferences: 学习偏好 - goals: 学习目标 - learning_style: 学习风格 - target_score: 目标分数 ### 系统角色表(sys_roles) - id: 角色 ID - name: 角色名称 - code: 角色代码 - description: 角色描述 - status: 状态(0:禁用,1:启用) - create_by: 创建者 ID - create_at: 创建时间 - update_by: 更新者 ID - update_at: 更新时间 - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 系统用户角色表(sys_user_roles) 用户与角色多对多 - id: 主键 ID - user_id: 用户 ID - role_id: 角色 ID - create_at: 创建时间 - create_by: 创建者 ID ### 系统权限表(sys_permissions) - id: 权限 ID - code: 权限代码 - score: 权限作用域 U: 用户,R: 角色 - value: 权限值 - description: 权限描述 - create_at: 创建时间 - create_by: 创建者 ID ### 字典类型表(sys_dict_type) 可以有多个字典数据,一对多 - id: 字典类型 ID - name: 字典名称 - type: 字典类型 - status: 状态(0:禁用,1:启用) - remark: 备注 - create_by: 创建者 ID - create_at: 创建时间 - update_by: 更新者 ID - update_at: 更新时间 - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 字典数据表(sys_dict_data) - id: 字典数据 ID - dict_type: 字典类型 - dict_label: 字典标签 - dict_value: 字典值 - sort: 排序 - status: 状态(0:禁用,1:启用) - remark: 备注 - create_by: 创建者 ID - create_at: 创建时间 - update_by: 更新者 ID - update_at: 更新时间 - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 题目表(questions) 包含多个选项,一对多 - id: 题目 ID - subject: 学科 - type: 题型 - difficulty: 难度等级 - content: 题目内容 - answer: 答案 - explanation: 解析 - version: 题目版本 - tags: 题目标签 - create_at: 创建时间 - update_at: 更新时间 - create_by: 创建者 ID - update_by: 更新者 ID - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 题目选项表(question_options) - id: 选项 ID - question_id: 题目 ID - content: 选项内容 - is_correct: 是否正确答案 - create_at: 创建时间 - update_at: 更新时间 - create_by: 创建者 ID - update_by: 更新者 ID - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 知识点表(knowledge_points) - id: 知识点 ID - name: 知识点名称 - description: 知识点描述 - subject: 所属学科 - difficulty: 难度等级 - prerequisite: 先修知识点 - create_by: 创建者 ID - create_at: 创建时间 - update_by: 更新者 ID - update_at: 更新时间 - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 题目知识点关联表(question_knowledge_points) 多对多 - id: 关联 ID - question_id: 题目 ID - knowledge_point_id: 知识点 ID - create_at: 创建时间 - create_by: 创建者 ID ### 错题表(wrong_questions) - id: 错题 ID - user_id: 用户 ID - question_id: 题目 ID - user_answer: 用户答案 - correct_answer: 正确答案 - analysis: 解析 ### 练习表(exercises) - id: 练习 ID - name: 练习名称 - subject: 学科 - difficulty: 难度等级 - type: 涉及的题型 - create_by: 创建者 ID - create_at: 创建时间 - update_by: 更新者 ID - update_at: 更新时间 - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ### 练习题目关联表(exercise_question_relations) 一对多 - id: 关联 ID - exercise_id: 练习 ID - question_id: 题目 ID - create_by: 创建者 ID - create_at: 创建时间 ### 练习记录表(exercise_records) - id: 练习记录 ID - user_id: 用户 ID - exercise_id: 练习 ID - start_time: 开始时间 - end_time: 结束时间 - duration: 练习时长 - score: 练习得分 - create_by: 创建者 ID - create_at: 创建时间 ### 练习记录详情表(exercise_record_details) 一对多 - id: 练习记录详情 ID - exercise_record_id: 练习记录 ID - question_id: 题目 ID - correct_answer: 正确答案 - user_answer: 用户答案 - is_correct: 是否正确 - last_update_time: 最后更新时间 ### 考试成绩表(exam_scores) - id: 成绩 ID - exercise_id: 练习 ID (可选,用于记录考试成绩) - user_id: 用户 ID - exam_name: 考试名称 - subject: 考试科目 - score: 考试成绩 - total_score: 总分 - exam_date: 考试日期 - remark: 备注 - create_at: 创建时间 - update_at: 更新时间 - create_by: 创建者 ID - update_by: 更新者 ID - is_deleted: 是否删除 (0:未删除, 1:已删除) - delete_at: 删除时间 - delete_by: 删除者 ID ## 使用说明 1. 系统启动后,首先需要登录账号,账号由管理员派发 2. 选择想要练习的学科和题型 3. 开始答题,系统会记录答题情况 4. 可以随时查看错题本和学习进度 5. 在成绩管理页面手动录入考试成绩 ## 项目结构 ``` smart-question-bank/ ├── SERVER/ # 后端服务 │ ├── app/ # APP目录 │ │ ├── common/ # 公共模块 │ │ ├── exception/ # 异常处理 │ │ ├── models/ # 数据模型 │ │ ├── stores/ # 数据持久层 │ │ ├── services/ # 业务逻辑 │ │ ├── controllers/ # API控制器 │ │ ├── middleware/ # 中间件 │ │ ├── utils/ # 工具类 │ │ ├── config/ # 配置管理 │ │ ├── logger/ # 日志管理 │ │ ├── data_seeder/ # 数据初始化 │ │ └── main.py # 程序入口 │ ├── tests/ # 测试目录 │ ├── requirements.txt # 依赖包列表 │ └── Dockerfile # Docker配置 ├── UI/ # 前端服务 │ ├── vue/ # Web项目 │ │ ├── public/ # │ │ ├── src/ # │ │ └── Dockerfile # Docker配置 │ └── app/ # 移动端项目 │ └── src/ # ├── docker-compose.yml # Docker Compose配置 ├── README.md # 项目说明 └── .gitignore # Git忽略配置 ``` 调用顺序: controllers => services => stores => models ## 安装与运行 1. 安装依赖 ```bash pip install -r requirements.txt ``` 2. 配置数据库 - 创建 MySQL 数据库 3. 运行系统 ```bash python main.py ``` ## 已实现功能 ### 1. 图形用户界面 - 使用 vue3 开发桌面应用界面 - 提供友好的用户交互体验 - 支持题目展示、答题、结果查看等功能 ### 2. 在线题库更新 - 实现题库云端同步功能 - 支持自动更新最新题目 - 提供题目审核机制 ### 3. 做题时间限制 - 支持按题型设置时间限制 - 提供倒计时功能 - 超时自动提交答案 ### 4. 班级管理 - 教师创建和管理班级 - 学生加入班级 - 班级练习统计和分析 ### 5. 题目难度评估 - 基于学生答题数据自动评估题目难度 - 动态调整题目难度系数 - 提供难度分布可视化 ### 6. 智能出题算法 - 基于知识图谱的题目推荐 - 个性化出题策略 - 自适应难度调整