1 #3

Merged
hnu202326010331 merged 1 commits from liqiang_branch into develop 4 months ago

@ -0,0 +1,336 @@
# 小初高数学学习软件 - 完整系统说明文档
## 项目简介
本项目是一个面向小学、初中和高中学生的数学学习软件采用Java Swing构建图形用户界面提供用户注册、登录、数学题目生成、答题练习和成绩统计等功能。系统采用模块化设计具有良好的可扩展性和维护性。
## 系统架构
### MVC设计模式
本项目采用经典的MVCModel-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<MathQuestion> 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月
---
本系统为小初高学生提供了一个完整的数学学习解决方案,结合了现代化的用户界面和强大的数学计算能力,旨在通过有趣的交互方式提升学生的数学学习兴趣和能力。

@ -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<MathQuestion> generateQuestions(String accountType, int count)
```
```
2. **表达式计算接口**
```java
double evaluate(String expression)
Loading…
Cancel
Save