|
|
|
|
@ -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<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月
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
本系统为小初高学生提供了一个完整的数学学习解决方案,结合了现代化的用户界面和强大的数学计算能力,旨在通过有趣的交互方式提升学生的数学学习兴趣和能力。
|