【Webman+MySQL答题系统一】项目概述与数据库设计
果子发表于:2026-10-05 20:55:41浏览:6次
写在前面
《Webman+MySQL教程》五篇把地基打好了:安装、路由、数据库连接、ORM、JSON 接口。从本系列开始,把这些积木拼成一个完整项目——在线答题系统:学员选卷答题、提交后自动判分、错题可复盘,管理员在后台维护题库与组卷。全系列共 10 篇,代码可直接复制运行。

一、需求拆解
一个最小可用但五脏俱全的答题系统,需求如下:
- 学员端:登录、查看试卷列表、开始答题、逐题作答、提交、查看成绩与错题;
- 题库:支持单选、多选、判断三种题型,题目带选项与标准答案;
- 组卷:管理员把若干题目组成一份试卷,设定总分与及格线;
- 判分:提交后由服务端判分,落库成绩与每题得分明细;
- 统计:平均分、及格率、个人错题本。
拆成模块对照表:
| 模块 | 核心动作 | 涉及数据表 |
|---|---|---|
| 用户 | 登录、鉴权 | user |
| 题库 | 题目增删改查 | question |
| 组卷 | 试卷创建、关联题目 | paper、paper_question |
| 答题 | 取卷、作答、提交 | record、record_answer |
| 统计 | 成绩、错题聚合 | record、record_answer |
二、整体架构
三层结构:UniApp / 浏览器只跟 Webman API 打交道,所有业务规则都收敛在服务端:

一条铁律:判分必须放在服务端。前端拿到的题目数据里绝不能带标准答案字段,否则一个抓包就能把整份题库答案扒走。第六篇实现取卷接口时会专门体现这一点。
三、数据表设计
6 张表,职责如下(完整建表 SQL 在第三篇给出):
| 表 | 职责 | 关键字段 |
|---|---|---|
| user | 学员账号 | username、password(哈希)、nickname |
| question | 题库 | type(1单选/2多选/3判断)、title、options(JSON)、answer、analysis、score |
| paper | 试卷 | title、total_score、pass_score、duration、status |
| paper_question | 试卷-题目关联 | paper_id、question_id、sort |
| record | 一次答题的总成绩 | paper_id、user_id、score、is_pass、use_seconds |
| record_answer | 每题作答明细 | record_id、question_id、answer、is_right、get_score |
为什么 record_answer 要单独一张表而不是把答案塞成一个大 JSON?统计错题时按 question_id 聚合、按 is_right 过滤都只要一条 GROUP BY,不必每次解析 JSON。明细行级存储是统计类系统的通用做法。
四、先把判分规则定死
- 单选:选项与答案完全一致得该题分值,否则 0 分;
- 多选:完全一致得满分;多选、错选得 0 分;漏选得一半分(可按需求改成 0 分);
- 判断:同单选。
规则先写进文档再写代码。第七篇的判分函数就是这几条 if 的事,规则含糊是判分 bug 的最大来源。
五、系列规划
| 篇 | 内容 |
|---|---|
| 一 | 项目概述与数据库设计(本篇) |
| 二 | 环境搭建与项目初始化 |
| 三 | 建表与初始化脚本 |
| 四 | 题目管理模块:CRUD 接口 |
| 五 | 试卷管理模块:组卷与题目关联 |
| 六 | 用户答题流程:取卷与作答 |
| 七 | 提交与自动判分 |
| 八 | 成绩统计与错题本 |
| 九 | 登录与接口鉴权(JWT) |
| 十 | 前后端联调与全流程测试 |
小结
本篇定了需求、架构、表结构与判分规则。下一篇新建 quiz_system 项目,把骨架搭起来。
栏目分类全部>
推荐文章
- element-ui 表格组件el-table操作toggleRowSelection事件会主动触发selection-change的坑
- 【Webman+MySQL答题系统二】环境搭建与项目初始化
- 【Webman+MySQL教程五】开发完整的 JSON 接口:统一返回、参数校验与异常处理
- 一组简洁漂亮的错误提示页面401,403,404,405,406,500页面,纯css
- 【Webman+MySQL教程一】安装 Webman,跑通第一个 Hello World
- RAG 检索增强生成入门:让大模型「开卷考试」
- 【Webman+MySQL答题系统六】用户答题流程:取卷与作答接口
- uniapp+thinkphp6开发答题系统 API接口开发签名验证、接口安全验证方法
- 【Webman+MySQL答题系统四】题目管理模块:增删改查接口实战
- 【Webman+MySQL教程四】ORM 模型与增删改查实战

