软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`):持久化存储用户数据 ### 设计原则 1. 严格的前后端分离,前端仅负责界面展示和用户交互 2. 业务逻辑完全封装在后端模块中 3. 模块间通过定义良好的接口进行通信 4. 高内聚低耦合,便于独立测试和维护 ## 安装与运行 ### 环境要求 - Python 3.11.9或更高版本 - 网络连接(用于邮箱验证码发送) - Windows 操作系统 ### 运行步骤 1. 下载项目文件到本地 2. 确保所有Python文件在同一目录下 3. 运行主程序: ```bash python main.py ``` 4. 按照界面提示进行注册和登录 ## 使用说明 ### 用户注册流程 1. 点击"注册新用户" 2. 输入用户名和邮箱 3. 点击"获取注册码",系统将发送验证码到邮箱 4. 输入收到的注册码 5. 设置符合要求的密码(6-10位,包含大小写字母和数字) 6. 完成注册并登录 ### 学习流程 1. 登录系统后进入主菜单 2. 选择题目难度(小学/初中/高中) 3. 输入题目数量(10-30题) 4. 开始答题,选择正确答案 5. 提交答案或切换题目 6. 完成所有题目后查看成绩和评语 ## 预设测试账号 系统支持新用户注册,也可使用以下方式测试: - 邮箱:任意有效邮箱(接收验证码) - 密码:符合规范的密码(如: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文件存储用户数据,文件结构如下: ```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)