update the readme

main
zrj 3 months ago
parent f688421c9b
commit 8d00e635b2

@ -1,2 +1,199 @@
# python
# 项目完成总结
## 项目概述
本项目是一个**课堂随机点名系统**,采用**PyQt5前端 + FastAPI后端**的架构实现。系统支持随机点名和顺序点名两种模式具有完整的积分管理、数据可视化和Excel导入导出功能。
## 已完成功能
### ✅ 基础功能
1. **学生管理**
- ✅ 从Excel文件导入学生名单学号、姓名、专业
- ✅ 保存到MySQL数据库
- ✅ 查看学生列表
- ✅ 删除学生功能
2. **点名功能**
- ✅ 随机点名(积分越高,被点概率越低)
- ✅ 按学号顺序点名
- ✅ 显示被点学生的姓名和学号
- ✅ 记录学生到达情况
- ✅ 记录回答问题情况
3. **积分系统**
- ✅ 初始积分为0
- ✅ 点到且到达:+1分
- ✅ 回答问题评分:
- 准确重复问题:+0.5分
- 不能重复问题:-1分
- 准确回答问题:+0.5-3分可自定义
- ✅ 总积分越高,被随机点到的概率越低(使用反比例函数实现)
4. **数据可视化**
- ✅ 积分排名柱形图
- ✅ 积分排名折线图
- ✅ 显示积分和点名次数的双Y轴图表
- ✅ 可切换图表类型
- ✅ 可调整显示数量
5. **数据导出**
- ✅ 导出积分详单Excel格式
- ✅ 包含学号、姓名、专业、随机点名次数、总积分
### ✅ 进阶功能
1. **点名转移权**
- ✅ 被点名两次后自动获得一次转移权
- ✅ 支持转移点名给其他同学
2. **随机事件系统**
- ✅ 双倍加分:积分翻倍
- ✅ 疯狂星期四积分增加50%
- ✅ 幸运星积分增加20%
- ✅ 30%概率触发特殊事件
## 技术实现
### 后端技术栈
- **FastAPI**: 现代、快速的Web框架自动生成API文档
- **SQLAlchemy**: ORM框架数据库操作
- **Pydantic**: 数据验证和序列化
- **Pandas + OpenPyXL**: Excel文件处理
- **PyMySQL**: MySQL数据库驱动
### 前端技术栈
- **PyQt5**: 跨平台GUI框架
- **Matplotlib**: 数据可视化
- **Requests**: HTTP客户端与后端通信
### 核心算法
1. **加权随机算法**
```python
权重 = 1 / (积分 + 1)
```
- 积分越低,权重越高
- 确保所有学生都有被点到的可能
2. **积分计算**
```
总积分变化 = (到达分 + 重复问题分 + 回答问题分) × 事件倍数
```
## 项目结构
```
.
├── backend/ # FastAPI后端
│ ├── main.py # 主程序入口
│ ├── config.py # 配置文件
│ ├── models.py # 数据库模型
│ ├── routers/ # API路由
│ └── utils/ # 工具函数
├── frontend/ # PyQt5前端
│ ├── main.py # 主程序入口
│ ├── main_window.py # 主窗口
│ ├── widgets/ # 自定义组件
│ └── utils/ # 工具函数
├── data/ # 数据文件
├── docs/ # 文档
├── scripts/ # 脚本
└── requirements.txt # 依赖包
```
## 原型设计
- **工具选择**: 墨刀Modao
- **选择理由**: 免费、易用、支持交互式原型、中文支持好
- **设计内容**:
- 主界面布局(标签页设计)
- 各功能模块界面设计
- 交互流程设计
- **文档位置**: `docs/prototype.md`
## 使用说明
### 快速开始
1. **安装依赖**
```bash
pip install -r requirements.txt
```
2. **配置数据库**
- 编辑 `backend/config.py`
- 填入MySQL数据库连接信息
3. **启动应用**
- 启动后端:
```bash
# 在./backend/config中配置数据库参数
export DB_PASSWORD=${数据库密码}
# 选择是否进行测试数据库开发
export DEV_MOD=TEST
python -m backend.main
```
`python backend/main.py`
- 启动前端:`python frontend/main.py`
```
python -m frontend.main
```
## 文件清单
### 核心代码文件
- ✅ `backend/main.py` - 后端主程序
- ✅ `backend/models.py` - 数据库模型
- ✅ `backend/routers/` - API路由3个文件
- ✅ `backend/utils/` - 工具函数3个文件
- ✅ `frontend/main.py` - 前端主程序
- ✅ `frontend/main_window.py` - 主窗口
- ✅ `frontend/widgets/` - 界面组件4个文件
- ✅ `frontend/utils/api_client.py` - API客户端
### 配置文件
- ✅ `requirements.txt` - Python依赖
- ✅ `backend/config.py` - 数据库配置
- ✅ `.gitignore` - Git忽略文件
### 文档文件
- ✅ `README.md` - 项目说明
- ✅ `启动说明.md` - 启动和使用说明
- ✅ `项目结构说明.md` - 项目结构详解
- ✅ `docs/prototype.md` - 原型设计说明
- ✅ `项目完成总结.md` - 本文件
### 脚本文件
- ✅ `scripts/create_sample_excel.py` - 创建示例Excel
- ✅ `start_backend.sh` - 仅启动后端
- ✅ `start_frontend.sh` - 仅启动前端
## 特色功能
1. **智能概率算法**:确保积分低的学生有更多被点机会,平衡课堂参与度
2. **随机事件系统**:增加点名的趣味性和随机性
3. **转移权机制**:被点名两次后可转移,增加互动性
4. **数据可视化**:直观展示积分排名和点名次数
5. **完整的Excel支持**:导入学生名单,导出积分详单
## 注意事项
1. **数据库配置**
- 需要先创建MySQL数据库
- 配置信息在 `backend/config.py`
2. **端口占用**
- 后端默认使用8000端口
- 如被占用,修改 `backend/config.py` 中的 `API_PORT`
4. **API文档**
- 后端启动后访问 http://127.0.0.1:8000/docs 查看API文档

Loading…
Cancel
Save