diff --git a/doc/小初高数学学习软件 - 完整系统说明文档.md b/doc/小初高数学学习软件 - 完整系统说明文档.md new file mode 100644 index 0000000..85a61a2 --- /dev/null +++ b/doc/小初高数学学习软件 - 完整系统说明文档.md @@ -0,0 +1,336 @@ +# 小初高数学学习软件 - 完整系统说明文档 + +## 项目简介 + +本项目是一个面向小学、初中和高中学生的数学学习软件,采用Java Swing构建图形用户界面,提供用户注册、登录、数学题目生成、答题练习和成绩统计等功能。系统采用模块化设计,具有良好的可扩展性和维护性。 + +## 系统架构 + +### MVC设计模式 + +本项目采用经典的MVC(Model-View-Controller)架构模式: + +- **Model(模型层)**:处理核心业务逻辑和数据存储 +- **View(视图层)**:负责用户界面展示 +- **Controller(控制器层)**:协调模型和视图的交互 + +## 模块详细说明 + +### 1. 用户界面模块 (View) + +#### **MathLearningApp.java** - 主程序入口 +```java +public class MathLearningApp extends JFrame { + // 主界面管理,卡片布局切换 +} +``` +**功能特性:** +- 欢迎界面(渐变背景、美观按钮) +- 用户注册界面(邮箱验证、表单验证) +- 登录界面(账户验证) +- 难度选择界面(小学/初中/高中) +- 答题界面(题目展示、选项选择) +- 成绩展示界面(正确率统计) +- 密码修改界面 + +#### **MathLearningAppMethods.java** - 界面方法扩展 +```java +public class MathLearningAppMethods { + // 所有界面事件处理和工具方法 +} +``` +**核心功能:** +- 样式化按钮创建 +- 用户注册流程处理 +- 登录验证逻辑 +- 密码强度验证 +- 题目生成调度 +- 用户数据持久化 + +### 2. 用户管理模块 (Model) + +#### **RegisteredUser.java** - 注册用户类 +```java +public class RegisteredUser { + private String email; + private String password; + private String verificationCode; + private boolean isVerified; +} +``` +**功能:** +- 用户信息存储 +- 验证码管理 +- 密码验证 +- 用户状态跟踪 + +#### **User.java** - 基础用户类 +```java +public class User { + private String username; + private String password; + private String accountType; +} +``` +**功能:** +- 用户基础信息 +- 账户类型管理(小学/初中/高中) + +### 3. 核心计算引擎模块 (Model) + +#### **ExpressionEvaluator.java** - 数学表达式计算器 +```java +public class ExpressionEvaluator { + public static double evaluate(String expression) { + // 高级数学表达式计算 + } +} +``` +**计算能力:** +- 四则运算(支持优先级) +- 括号表达式解析 +- 平方(²)和开根号(√)运算 +- 三角函数计算(sin/cos/tan) +- 错误答案智能生成 +- 表达式语法验证 + +#### **MathQuestionGenerator.java** - 题目生成器 +```java +public class MathQuestionGenerator { + public List generateQuestions(String accountType, int count) { + // 分级题目生成 + } +} +``` +**题目生成策略:** +- **小学题目**:基础四则运算,1-5个操作符,支持括号 +- **初中题目**:包含平方和开根号,1-5个操作数 +- **高中题目**:包含三角函数,1-5个操作数 + +#### **MathQuestion.java** - 数学题目类 +```java +public class MathQuestion { + private String expression; + private String answer; +} +``` + +#### **MultipleChoiceQuestion.java** - 选择题类 +```java +public class MultipleChoiceQuestion { + private String question; + private String[] options; + private int correctAnswer; +} +``` + +### 4. 题目管理模块 (Model) + +#### **QuestionManager.java** - 题目管理器 +```java +public class QuestionManager { + // 题目重复检查和文件保存 +} +``` +**管理功能:** +- 题目去重检查 +- 文件系统管理 +- 历史题目加载 +- 智能题目生成 + +### 5. 邮件服务模块 (Controller) + +#### **QQEmailService.java** - QQ邮箱服务 +```java +public class QQEmailService { + public static boolean sendVerificationCode(String toEmail, String verificationCode) { + // 验证码邮件发送 + } +} +``` +**特性:** +- SMTP协议实现 +- TLS加密传输 +- Base64编码认证 +- 邮件模板管理 + +#### **RealEmailSender.java** - 真实邮件发送器 +```java +public class RealEmailSender { + // 原生Java SMTP实现 +} +``` + +## 系统功能流程 + +### 1. 用户注册流程 +``` +用户输入邮箱 → 发送验证码 → 邮箱接收验证码 → +输入验证码验证 → 设置密码 → 注册完成 +``` + +### 2. 用户登录流程 +``` +输入邮箱密码 → 身份验证 → 进入主界面 → 选择学习难度 +``` + +### 3. 答题练习流程 +``` +选择难度 → 输入题目数量 → 生成题目 → 逐题作答 → +显示成绩 → 继续练习或退出 +``` + +### 4. 密码管理流程 +``` +验证原密码 → 输入新密码 → 确认新密码 → 密码更新 +``` + +## 技术特色 + +### 1. 界面设计 +- **现代化UI**:渐变背景、圆角按钮、阴影效果 +- **响应式交互**:鼠标悬停效果、加载状态提示 +- **用户体验**:清晰的导航流程、即时反馈 + +### 2. 数学计算 +- **智能解析**:递归下降表达式解析器 +- **全面支持**:涵盖小初高全部数学运算 +- **错误处理**:完善的异常处理和边界检查 + +### 3. 题目生成 +- **分级难度**:针对不同学段定制题目 +- **避免重复**:智能去重算法 +- **合理分布**:运算符和特殊符号的均衡分布 + +### 4. 数据管理 +- **文件存储**:按学段分类存储题目 +- **用户持久化**:用户数据本地保存 +- **内存优化**:高效的数据结构设计 + +## 文件结构 + +``` +MathLearningSystem/ +├── 用户界面/ +│ ├── MathLearningApp.java # 主程序界面 +│ └── MathLearningAppMethods.java # 界面方法扩展 +├── 用户管理/ +│ ├── RegisteredUser.java # 注册用户类 +│ └── User.java # 基础用户类 +├── 核心计算/ +│ ├── ExpressionEvaluator.java # 表达式计算器 +│ ├── MathQuestionGenerator.java # 题目生成器 +│ ├── MathQuestion.java # 数学题目类 +│ └── MultipleChoiceQuestion.java # 选择题类 +├── 题目管理/ +│ └── QuestionManager.java # 题目管理器 +├── 邮件服务/ +│ ├── QQEmailService.java # QQ邮箱服务 +│ └── RealEmailSender.java # 邮件发送器 +└── 数据文件/ + ├── user_data.txt # 用户数据存储 + ├── 小学/ # 小学题目存储 + ├── 初中/ # 初中题目存储 + └── 高中/ # 高中题目存储 +``` + +## 运行环境要求 + +### 系统要求 +- **操作系统**:Windows 11 +- **Java环境**:JDK 17 +- **内存**:最低 512MB,推荐 1GB +- **磁盘空间**:至少 100MB 可用空间 + +### 依赖项 +- **核心依赖**:纯Java实现,无外部依赖 +- **网络要求**:邮件发送需要互联网连接 +- **邮件服务**:需要有效的QQ邮箱账户配置 + +## 配置说明 + +### QQ邮箱配置 +系统使用默认的QQ邮箱配置,如需修改可在 `QQEmailService.java` 中更新: +```java +private static String senderEmail = "your-email@qq.com"; +private static String senderPassword = "your-authorization-code"; +``` + +### 题目数量配置 +在答题时可根据需要输入题目数量: +- **建议范围**:10-30题 +- **默认设置**:用户自定义 + +## 使用指南 + +### 首次使用 +1. 运行 `MathLearningApp.java` 启动程序 +2. 点击"用户注册"创建新账户 +3. 通过邮箱验证完成注册 +4. 设置符合要求的密码 +5. 开始数学学习之旅 + +### 常规使用 +1. 使用注册的邮箱和密码登录 +2. 选择适合的学段难度 +3. 输入想要练习的题目数量 +4. 认真作答每一道选择题 +5. 查看成绩并分析学习效果 + +### 功能特点 +- **个性化学习**:根据学段提供针对性题目 +- **即时反馈**:答题后立即显示正确与否 +- **进度跟踪**:记录答题历史和成绩 +- **安全可靠**:密码加密、邮箱验证保障账户安全 + +## 扩展开发 + +### 功能扩展建议 +1. **题目类型扩展**:添加几何、代数等更多数学题型 +2. **学习进度分析**:增加学习数据统计和分析功能 +3. **错题本功能**:自动收集和复习错题 +4. **多人竞赛模式**:添加在线答题竞赛功能 +5. **移动端适配**:开发Android和iOS版本 + +### 技术优化方向 +1. **数据库集成**:使用MySQL或SQLite替代文件存储 +2. **性能优化**:题目生成算法和界面渲染优化 +3. **安全增强**:密码加密存储和更安全的认证机制 +4. **国际化**:支持多语言界面 + +## 故障排除 + +### 常见问题 + +**1. 邮件发送失败** +- 检查网络连接 +- 验证QQ邮箱配置是否正确 +- 确认授权码而非QQ密码 + +**2. 题目生成异常** +- 检查输入题目数量是否合理 +- 确认Java环境版本兼容性 +- 验证磁盘空间是否充足 + +**3. 界面显示问题** +- 确认系统支持Java Swing +- 检查屏幕分辨率设置 +- 验证Java运行时环境完整性 + +### 技术支持 +如遇技术问题,请检查: +1. Java环境变量配置 +2. 系统防火墙设置 +3. 磁盘读写权限 +4. 网络连接状态 + +## 版本信息 + +- **当前版本**:v1.0 +- **开发语言**:Java +- **界面框架**:Swing +- **最后更新**:2025年10月 + +--- + +本系统为小初高学生提供了一个完整的数学学习解决方案,结合了现代化的用户界面和强大的数学计算能力,旨在通过有趣的交互方式提升学生的数学学习兴趣和能力。 \ No newline at end of file diff --git a/doc/README.md b/doc/小初高数学学习软件 - 核心计算与题目生成模块说明文档.md similarity index 98% rename from doc/README.md rename to doc/小初高数学学习软件 - 核心计算与题目生成模块说明文档.md index c38307f..86d9481 100644 --- a/doc/README.md +++ b/doc/小初高数学学习软件 - 核心计算与题目生成模块说明文档.md @@ -193,11 +193,11 @@ public static String[] generateWrongAnswers(double correctAnswer, int count) { ### 文件存储结构 ``` 小学/ - 2024-01-15-10-30-25.txt + 2025-10-05-10-30-25.txt 初中/ - 2024-01-15-11-15-40.txt + 2025-10-02-11-15-40.txt 高中/ - 2024-01-15-14-20-35.txt + 2025-10-01-14-20-35.txt ``` ## 接口设计 @@ -205,10 +205,11 @@ public static String[] generateWrongAnswers(double correctAnswer, int count) { ### 对外提供的主要方法 1. **题目生成接口**: + ```java List generateQuestions(String accountType, int count) - ``` - +``` + 2. **表达式计算接口**: ```java double evaluate(String expression)