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.
pairing_program/doc/README.md

376 lines
9.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 小初高数学学习软件 - 代码说明文档
## 项目概述
本项目是一个面向小学、初中和高中学生的数学学习软件提供图形化界面的数学题目练习和测试功能。软件采用JavaFX开发实现了用户注册、登录、题目生成、在线答题和成绩统计等完整功能。
## 项目结构
```
src/
├── Main.java # 主程序入口,界面控制器
├── QuestionGenerator.java # 题目生成器
├── ExamManager.java # 试卷管理器
├── User.java # 用户实体类
└── MailSender.java # 邮件发送器
```
## 核心功能模块
### 1. 用户管理模块
#### 功能特性
- **双方式登录**:支持邮箱或用户名登录
- **用户注册**邮箱验证、用户名设置4-10位
- **密码管理**6-10位必须包含大小写字母和数字
- **密码修改**:登录状态下可修改密码
#### 核心代码
```java
// 用户验证方法
private boolean isValidUsername(String username) // 用户名格式验证
private boolean isValidEmail(String email) // 邮箱格式验证
private boolean isValidPassword(String password) // 密码强度验证
```
### 2. 题目生成模块
#### 题目难度分级
**小学题目**
- 运算符:+、-、*、/
- 支持括号运算
- 操作数1-100
- 操作数个数2-5个
**初中题目**
- 包含小学所有运算符
- 新增:平方(^2)、开根号(√)
- 确保每道题至少包含一个特殊运算符
**高中题目**
- 包含初中所有运算符
- 新增sin、cos、tan三角函数
- 确保每道题至少包含一个三角函数
#### 核心算法
```java
public String generateQuestion(String type) // 根据类型生成题目
public List<String> generateOptions(String answer) // 生成选择题选项
```
### 3. 考试管理模块
#### 功能特性
- **题目查重**:同一试卷内题目不重复
- **进度跟踪**:实时显示答题进度
- **自动评分**:答完后自动计算分数
- **成绩展示**:显示得分、正确率、详细统计
#### 核心类
```java
public class ExamManager {
public List<String> generateExam(int numQuestions) // 生成指定数量题目
}
```
### 4. 界面导航流程
```
登录界面 → 注册界面 → 难度选择 → 题目数量输入 → 答题界面 → 成绩界面
↑ ↓
←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
```
## 技术实现细节
### 1. 数据存储
- 使用内存Map存储用户数据
- 题目历史记录在Session中维护
- 符合"不可以使用数据库存储数据"的要求
### 2. 邮件服务
- 使用QQ邮箱SMTP服务
- 异步发送验证码
- 支持注册验证功能
### 3. 界面设计
- 采用JavaFX图形界面
- 响应式布局设计
- 友好的用户交互提示
## 代码规范与架构
### 1. 类职责分离
- `Main.java`:界面控制和业务流程
- `QuestionGenerator.java`:题目生成算法
- `ExamManager.java`:试卷管理逻辑
- `User.java`:用户数据模型
- `MailSender.java`:邮件服务封装
### 2. 方法设计原则
- 单一职责原则
- 方法行数控制在40行以内
- 清晰的参数和返回值定义
## 配置要求
### 运行环境
- Java 8及以上
- JavaFX SDK
- 网络连接(用于邮件发送)
### 邮箱配置
在`Main.java`中修改发件邮箱配置:
```java
private MailSender mailSender = new MailSender("你的邮箱", "授权码");
```
## 功能验证清单
### ✅ 已实现功能
- [x] 图形化界面操作
- [x] 用户注册与邮箱验证
- [x] 密码强度验证6-10位大小写字母+数字)
- [x] 双方式登录(邮箱/用户名)
- [x] 密码修改功能
- [x] 三难度题目生成(小学、初中、高中)
- [x] 题目数量限制10-30题
- [x] 选择题形式答题
- [x] 自动评分与成绩展示
- [x] 继续做题/退出选择
### ✅ 符合项目要求
- [x] 不使用数据库存储
- [x] 所有功能通过图形界面操作
- [x] 完整的用户流程
- [x] 题目符合各学段难度要求
## 使用说明
1. **首次使用**:点击"前往注册",设置用户名、邮箱,接收验证码完成注册
2. **登录系统**:使用邮箱或用户名+密码登录
3. **选择难度**:根据学习阶段选择小学、初中或高中
4. **设置题量**输入10-30之间的题目数量
5. **开始答题**:逐题作答,系统自动记录进度
6. **查看成绩**:答题完成后查看详细成绩统计
7. **继续学习**:可选择继续做题或退出系统
## 扩展建议
1. **数据持久化**:添加文件存储避免重启数据丢失
2. **题目查重优化**:跨会话题目历史记录
3. **学习进度跟踪**:记录用户历史成绩和进步情况
4. **错题本功能**:自动收集错题供复习使用
## 开发者信息
- **技术栈**Java + JavaFX
- **架构模式**MVC模式
- **代码规范**遵循Java编码规范
- **版本控制**Git分支管理
---
*最后更新2025年X月X日*# 小初高数学学习软件 - 代码说明文档
## 项目概述
本项目是一个面向小学、初中和高中学生的数学学习软件提供图形化界面的数学题目练习和测试功能。软件采用JavaFX开发实现了用户注册、登录、题目生成、在线答题和成绩统计等完整功能。
## 项目结构
```
src/
├── Main.java # 主程序入口,界面控制器
├── QuestionGenerator.java # 题目生成器
├── ExamManager.java # 试卷管理器
├── User.java # 用户实体类
└── MailSender.java # 邮件发送器
```
## 核心功能模块
### 1. 用户管理模块
#### 功能特性
- **双方式登录**:支持邮箱或用户名登录
- **用户注册**邮箱验证、用户名设置4-10位
- **密码管理**6-10位必须包含大小写字母和数字
- **密码修改**:登录状态下可修改密码
#### 核心代码
```java
// 用户验证方法
private boolean isValidUsername(String username) // 用户名格式验证
private boolean isValidEmail(String email) // 邮箱格式验证
private boolean isValidPassword(String password) // 密码强度验证
```
### 2. 题目生成模块
#### 题目难度分级
**小学题目**
- 运算符:+、-、*、/
- 支持括号运算
- 操作数1-100
- 操作数个数2-5个
**初中题目**
- 包含小学所有运算符
- 新增:平方(^2)、开根号(√)
- 确保每道题至少包含一个特殊运算符
**高中题目**
- 包含初中所有运算符
- 新增sin、cos、tan三角函数
- 确保每道题至少包含一个三角函数
#### 核心算法
```java
public String generateQuestion(String type) // 根据类型生成题目
public List<String> generateOptions(String answer) // 生成选择题选项
```
### 3. 考试管理模块
#### 功能特性
- **题目查重**:同一试卷内题目不重复
- **进度跟踪**:实时显示答题进度
- **自动评分**:答完后自动计算分数
- **成绩展示**:显示得分、正确率、详细统计
#### 核心类
```java
public class ExamManager {
public List<String> generateExam(int numQuestions) // 生成指定数量题目
}
```
### 4. 界面导航流程
```
登录界面 → 注册界面 → 难度选择 → 题目数量输入 → 答题界面 → 成绩界面
↑ ↓
←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
```
## 技术实现细节
### 1. 数据存储
- 使用内存Map存储用户数据
- 题目历史记录在Session中维护
- 符合"不可以使用数据库存储数据"的要求
### 2. 邮件服务
- 使用QQ邮箱SMTP服务
- 异步发送验证码
- 支持注册验证功能
### 3. 界面设计
- 采用JavaFX图形界面
- 响应式布局设计
- 友好的用户交互提示
## 代码规范与架构
### 1. 类职责分离
- `Main.java`:界面控制和业务流程
- `QuestionGenerator.java`:题目生成算法
- `ExamManager.java`:试卷管理逻辑
- `User.java`:用户数据模型
- `MailSender.java`:邮件服务封装
### 2. 方法设计原则
- 单一职责原则
- 方法行数控制在40行以内
- 清晰的参数和返回值定义
## 配置要求
### 运行环境
- Java 8及以上
- JavaFX SDK
- 网络连接(用于邮件发送)
### 邮箱配置
在`Main.java`中修改发件邮箱配置:
```java
private MailSender mailSender = new MailSender("你的邮箱", "授权码");
```
## 功能验证清单
### ✅ 已实现功能
- [x] 图形化界面操作
- [x] 用户注册与邮箱验证
- [x] 密码强度验证6-10位大小写字母+数字)
- [x] 双方式登录(邮箱/用户名)
- [x] 密码修改功能
- [x] 三难度题目生成(小学、初中、高中)
- [x] 题目数量限制10-30题
- [x] 选择题形式答题
- [x] 自动评分与成绩展示
- [x] 继续做题/退出选择
### ✅ 符合项目要求
- [x] 不使用数据库存储
- [x] 所有功能通过图形界面操作
- [x] 完整的用户流程
- [x] 题目符合各学段难度要求
## 使用说明
1. **首次使用**:点击"前往注册",设置用户名、邮箱,接收验证码完成注册
2. **登录系统**:使用邮箱或用户名+密码登录
3. **选择难度**:根据学习阶段选择小学、初中或高中
4. **设置题量**输入10-30之间的题目数量
5. **开始答题**:逐题作答,系统自动记录进度
6. **查看成绩**:答题完成后查看详细成绩统计
7. **继续学习**:可选择继续做题或退出系统
##
*最后更新2025年10月12日*