You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.8 KiB
6.8 KiB
软1_[彭云昊]_[王祖旺]_结对项目 中小学数学学习软件 - 结对编程项目
项目简介
本项目是一个面向中小学学生的数学学习桌面应用程序,提供个性化的数学题目练习和评估功能。系统根据学生所在学段(小学、初中、高中)生成相应难度的数学题目,通过图形化界面提供友好的学习体验。
功能特性
用户管理
- ✅ 用户注册:通过邮箱验证码完成注册
- ✅ 密码设置:6-10位,必须包含大小写字母和数字
- ✅ 用户登录:安全的身份验证机制
- ✅ 密码修改:支持原密码验证
- ✅ 账户注销:永久删除账户及所有数据
题目生成
- ✅ 小学题目:加减乘除四则运算,支持括号
- ✅ 初中题目:平方、开根运算
- ✅ 高中题目:三角函数计算(sin, cos, tan)
- ✅ 智能防重复:确保同一试卷无重复题目
学习流程
- ✅ 难度选择:小学/初中/高中三级难度
- ✅ 题目数量:用户自定义题目数量(10-30题)
- ✅ 选择题形式:每题4个选项,单选作答
- ✅ 实时评分:提交后立即显示得分情况
- ✅ 学习延续:支持连续练习或退出选择
- ✅ 答题进度:支持上一题/下一题导航
- ✅ 成绩反馈:根据得分提供个性化评语
技术栈
- 编程语言:Python 3.x
- GUI框架:Tkinter(内置Python GUI库)
- 数据存储:JSON文件(无需数据库)
- 邮件服务:SMTP协议(QQ邮箱)
- 架构模式:前后端分离架构
项目结构
软1_[彭云昊]_[王祖旺]_结对项目/
├── src/
│ ├── main.py # 程序入口
│ ├── main_app.py # 主应用模块,界面控制器
│ ├── backend_service.py # 后端服务模块,前后端通信中介
│ ├── user_manager.py # 用户管理模块
│ ├── question_bank.py # 题库管理模块
│ ├── question_generator.py # 题目生成器模块
│ ├── quiz.py # 测验管理模块
│ └── users.json # 用户数据文件(运行时生成)
└── doc/
└── README.md # 项目说明文档
架构设计
本项目采用前后端分离的架构设计,确保代码的可维护性和可扩展性:
- 前端层 (
main_app.py):负责UI展示和用户交互,不包含业务逻辑 - 服务层 (
backend_service.py):作为前后端通信中介,转发请求到业务模块 - 业务逻辑层 (
user_manager.py,question_bank.py,quiz.py):处理具体业务逻辑 - 数据层 (
users.json):持久化存储用户数据
设计原则
- 严格的前后端分离,前端仅负责界面展示和用户交互
- 业务逻辑完全封装在后端模块中
- 模块间通过定义良好的接口进行通信
- 高内聚低耦合,便于独立测试和维护
安装与运行
环境要求
- Python 3.11.9或更高版本
- 网络连接(用于邮箱验证码发送)
- Windows 操作系统
运行步骤
- 下载项目文件到本地
- 确保所有Python文件在同一目录下
- 运行主程序:
python main.py
- 按照界面提示进行注册和登录
使用说明
用户注册流程
- 点击"注册新用户"
- 输入用户名和邮箱
- 点击"获取注册码",系统将发送验证码到邮箱
- 输入收到的注册码
- 设置符合要求的密码(6-10位,包含大小写字母和数字)
- 完成注册并登录
学习流程
- 登录系统后进入主菜单
- 选择题目难度(小学/初中/高中)
- 输入题目数量(10-30题)
- 开始答题,选择正确答案
- 提交答案或切换题目
- 完成所有题目后查看成绩和评语
预设测试账号
系统支持新用户注册,也可使用以下方式测试:
- 邮箱:任意有效邮箱(接收验证码)
- 密码:符合规范的密码(如:Abc123)
分支管理
本项目遵循Git分支管理规范:
- main分支:稳定版本,存放经过测试的代码
- develop分支:开发主线,集成最新功能
- 个人分支:每位开发者的功能分支(如:zhangsan_branch)
代码提交规则
- 源代码:必须通过个人分支 + Pull Request
- 文档:直接推送到develop分支
开发规范
代码规范
- 遵循PEP 8 Python编码规范
- 使用类型注解提高代码可读性
- 模块化设计,高内聚低耦合
- 严格遵循前后端分离原则
提交信息规范
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 代码重构
功能模块详解
1. 用户认证模块 (user_manager.py)
- 邮箱格式验证
- 密码强度校验(6-10位,包含大小写字母和数字)
- 验证码发送与验证(通过QQ邮箱SMTP服务)
- 用户数据持久化(JSON文件)
- 用户会话管理
2. 题目生成模块 (question_generator.py)
- 小学题目:2-5个数字的加减乘除运算,支持括号,确保结果非负
- 初中题目:平方运算、开根运算(完全平方数)
- 高中题目:三角函数(sin/cos/tan)特殊角度(0°, 30°, 45°, 60°, 90°)计算
- 智能选项生成:为每道题生成4个合理选项,包含正确答案和干扰项
3. 测验模块 (quiz.py)
- 管理一次答题会话的所有题目
- 跟踪用户答题进度和答案
- 计算最终得分和正确率
- 提供题目导航功能
4. 界面模块 (main_app.py)
- 响应式图形界面设计
- 实时输入验证
- 友好的用户交互反馈
- 多框架界面切换
- 美观的UI主题和颜色方案
5. 后端服务模块 (backend_service.py)
- 作为前端与业务逻辑模块之间的通信中介
- 封装所有业务规则和逻辑判断
- 提供统一的API接口给前端调用
数据存储
项目使用JSON文件存储用户数据,文件结构如下:
{
"user@example.com": {
"username": "张三",
"password_hash": "加密密码",
"registration_code": "注册码",
"is_registered": true
}
}
配置说明
在 user_manager.py 中配置以下参数:
- 邮箱服务配置(SMTP服务器、端口、授权码)
- 用户数据文件路径
测试用例
功能测试
- 用户注册流程测试
- 登录验证测试
- 密码修改测试
- 题目生成测试(各学段)
- 答题评分测试
边界测试
- 密码格式边界测试
- 题目数量边界测试(10-30题)
- 邮箱格式验证测试
已知限制
- 邮箱服务:依赖QQ邮箱SMTP服务,需配置正确的授权码
- 题目数量:建议10-30题,过多可能影响性能
- 网络要求:发送验证码需要网络连接
- 平台兼容:主要支持Windows,其他平台可能需调整
开发团队
- 班级:软1
- 组长:[彭云昊](202326010111)
- 组员:[王祖旺](202326010117)