面向中小学课堂的班级管理、学情分析、错题答疑一体化系统。支持课后分层作业推送、课堂实时答题(扫码进入)、学情可视化分析。
- 班级管理 — 创建班级、管理学生账号、查看每位学生档位
- 题库管理 — 按科目/难度/知识点管理题目(单选题),支持多科目
- 作业管理 — 发布分层作业,一档学生(正确率≥70%)做进阶题,二档学生做基础题,学生自动收到对应版本
- 课堂实时答题 — 一键发起课堂答题,大屏展示二维码,学生扫码进入,实时统计各题正确率
- 学情分析 — 班级整体看板(平均分、档位分布、知识点掌握热力图)+ 单生详情(趋势折线图、雷达图)
- 闯关任务 — 三关闯关模式:第一关在线自动批改、第二关拍照提交教师批注、第三关跨学科抢答
- 我的作业 — 查看并完成教师布置的作业,提交后立即显示得分和解析
- 错题本 — 自动收录所有做错的题目,显示正确答案和解析
- 我的学情 — 个人正确率、当前档位、知识点雷达图、超过班级百分比
| 层次 | 技术 |
|---|---|
| 前端 | Vue 3 + Element Plus + ECharts |
| 后端 | Python FastAPI |
| 数据库 | SQLite(本地)/ 可迁移 MySQL(云端) |
| 鉴权 | JWT Token |
- Python 3.10+
- Node.js 18+
git clone https://github.com/LYL-8bit/suhua-dati.git
cd suhua-daticd backend
pip install -r requirements.txt
python seed.py # 初始化数据库和假数据
python -m uvicorn main:app --host 0.0.0.0 --port 8001 --reloadcd frontend
npm install
npm run dev打开浏览器访问:http://localhost:5173
| 角色 | 账号 | 密码 |
|---|---|---|
| 教师 | teacher |
123456 |
| 学生 | s01 ~ s20 |
123456 |
Windows 用户可直接双击根目录下的
start.bat一键启动。
suhua-dati/
├── backend/ # FastAPI 后端
│ ├── main.py # 入口,注册路由
│ ├── models.py # 数据库模型
│ ├── database.py # SQLite 连接
│ ├── auth.py # JWT 鉴权
│ ├── seed.py # 假数据初始化脚本
│ ├── requirements.txt
│ └── routers/
│ ├── auth.py # 登录接口
│ ├── classes.py # 班级 & 学生管理
│ ├── subjects.py # 科目管理
│ ├── questions.py # 题库管理
│ ├── assignments.py # 作业管理
│ ├── submissions.py # 答题提交 & 错题本
│ ├── classroom.py # 课堂实时答题
│ ├── analysis.py # 学情分析
│ └── challenge.py # 闯关任务(三关 + WebSocket)
│
├── frontend/ # Vue 3 前端
│ └── src/
│ ├── views/
│ │ ├── teacher/ # 教师端页面
│ │ ├── student/ # 学生端页面
│ │ ├── classroom/ # 扫码答题页
│ │ └── challenge/ # 学生闯关页
│ ├── layouts/ # 布局组件
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态管理
│ └── api/ # Axios 封装
│
├── start.bat # Windows 一键启动脚本
├── reset-data.bat # 重置假数据脚本
└── README.md
默认使用 SQLite,数据库文件位于 backend/data/db.sqlite3,无需额外安装数据库软件。
如需迁移到 MySQL(云部署),修改 backend/database.py 中的连接字符串即可:
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://user:password@host/dbname"系统根据学生历史答题的综合正确率自动判定档位,并在每次推送作业时动态计算:
| 档位 | 条件 | 推送题目 |
|---|---|---|
| 一档(优秀) | 综合正确率 ≥ 70% | 进阶题(difficulty = 2) |
| 二档(需加强) | 综合正确率 < 70% | 基础题(difficulty = 1) |
学生只看到自己的那份作业,不感知分档。
- 教师在「课堂答题」页点击「发起课堂答题」,选择班级、科目和题目
- 系统生成二维码,显示在大屏
- 学生用手机扫码,输入账号密码后进入答题页
- 学生提交后,教师端实时显示每道题的班级正确率
- 教师点击「结束」关闭本次课堂会话
后端启动后访问:http://localhost:8001/docs
自动生成的 Swagger 交互文档,可直接在页面测试所有接口。
闯关任务是专为课堂设计的三关互动模式,教师主导节奏,学生扫码参与。
教师新建会话 → 显示二维码 → 学生扫码登录 → 三关依次进行
- 登录教师账号,点击左侧菜单「闯关任务」
- 点击右上角「新建闯关会话」,填写标题并选择班级,点击确认
- 系统自动生成二维码并弹出,将二维码投屏/展示给学生扫码
- 用手机扫描教师展示的二维码
- 在打开的页面输入自己的账号和密码(账号格式
s01~s20,密码均为123456) - 登录后即可看到三关任务卡片,按照教师节奏依次完成
题目内容(固定):
| # | 题型 | 题目 |
|---|---|---|
| 1 | 填空 | 嫦娥号环月轨道半径 1000 公里,直径是多少? |
| 2 | 填空 | 嫦娥号环月轨道直径 3000 公里,半径是多少? |
| 3 | 判断 | 圆的直径是半径的 2 倍。(对/错) |
学生端: 填写答案后点击「提交」,立即显示每题对错和得分。
教师端: 切换到「第一关」标签页,实时查看每道题的班级正确率(圆形进度条)和所有提交明细,可随时点「刷新」更新。
学生端:
- 点击「拍照上传」按钮,选择相机拍摄或从相册选取手写解题过程的照片
- 预览无误后点击「上传」,等待教师批注
教师端:
- 切换到「第二关」标签页,已上传的作品以卡片形式展示
- 点击任意卡片进入批注界面:
- 顶部工具栏选择画笔颜色(红/橙/绿/蓝/黑)和画笔粗细
- 在图片上直接涂抹画线标注错误或重点
- 点击「添加文字」可在图片上叠加文字说明
- 右侧选择标签:优秀 或 待改进
- 点击「保存批注」,批注结果保存到服务器
题目内容(固定,4道跨学科问题):
| # | 联动学科 | 题目摘要 |
|---|---|---|
| 1 | 科学 | 八大行星公转轨道为何近似圆形? |
| 2 | 语文 | 与圆相关的诗词及其情感 |
| 3 | 道法 | 从墨子"一中同长"到嫦娥探月的感受 |
| 4 | 生活 | 车轮和井盖为什么是圆的? |
教师端操作:
- 切换到「第三关」标签页
- 点击任意题目卡片,题目会实时推送到所有学生手机屏幕
- 学生抢答后,教师在「抢答排行榜」中点击某位学生名字旁的「正确」或「错误」按钮完成评分
- 点击「清空抢答」可重置本题,进行下一题
学生端操作:
- 看到题目后点击红色「🔔 我来回答!」大按钮抢答
- 按钮变灰后显示自己的抢答名次(第 1 名 / 第 2 名……)
- 等待教师点名,被叫到的学生口头作答
提示: 闯关任务数据保存在服务器内存中,重启后端服务后数据会清空,每次开课前新建会话即可。