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.
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.
# 数学学习软件系统文档
## 注意事项
为了方便助教检查,特在此说明注意事项
事先说明:我们所有的功能都是经过了测试的,确认已经实现;
1.双击jar包就可直接进入界面, 如若不行, 则进入终端使用java -jar指令运行;
2.使用.json文件存储注册的用户信息, 第一次使用需要注册, 同时会在存储jar包的文件夹下创建data文件夹, users.json
文件存储用户信息;
3.经过测试可以真实发送邮件,如果没有收到可以看看是否存在垃圾箱中;
4.我们的界面有滚动条,部分提示和功能需要滚动后才可以看到;
5.如果点击一下无效,可尝试多点击几下,或稍微等待一会,因为在部分电脑上测试存在卡顿;
主要是跳转、发送验证码界面需要缓冲几秒钟。
## 项目概述
数学学习软件是一个基于JavaFX开发的桌面应用程序, 提供数学题目练习和考试功能。系统支持用户注册、登录、密码修改, 以及小学、初中、高中三个难度级别的数学题目练习。
## 系统架构
### 模块结构
```
com.mathlearning/
├── controller/ # 控制器层
├── model/ # 数据模型
├── service/ # 业务服务层
└── view/ # 用户界面
```
## 核心功能模块
### 1. 用户认证模块 (Auth)
#### 功能特性
- 用户注册(邮箱验证码验证)
- 用户登录(支持邮箱和用户名登录)
- 密码修改
- 用户名修改
- 用户信息管理
#### 核心类
- `AuthController` - 认证控制器
- `UserService` - 用户服务
- `EmailService` - 邮件服务
#### 注册流程
1. 输入邮箱和用户名
2. 获取邮箱验证码
3. 设置密码( 6-10位, 包含大小写字母和数字)
4. 完成注册
### 2. 题目管理模块 (Question)
#### 功能特性
- 按难度级别生成题目(小学、初中、高中)
- 题目去重机制
- 自动生成选项
- 支持多种题型
#### 难度级别
- **小学**:加减乘除基础运算
- **初中**:平方、开方、混合运算
- **高中**:三角函数运算
#### 核心类
- `QuestionService` - 题目生成服务
- `Question` - 题目模型
- `DifficultyLevel` - 难度级别枚举
### 3. 考试模块 (Exam)
#### 功能特性
- 自定义题目数量( 10-30题)
- 题目导航(上一题/下一题)
- 答案保存
- 自动评分
#### 核心类
- `ExamController` - 考试控制器
- `ExamSession` - 考试会话
- `ExamView` - 考试界面
### 4. 数据存储模块
#### 存储方式
- JSON文件存储用户数据
- 自动创建数据目录
- 数据持久化
#### 核心类
- `FileStorageService` - 文件存储服务
## 用户界面
### 主要界面
#### 1. 登录界面 (LoginView)
- 邮箱/密码登录
- 注册账号入口
- 登录状态提示
#### 2. 注册界面 (RegisterView)
- 邮箱验证
- 用户名实时检查
- 密码强度验证
- 验证码输入
#### 3. 级别选择界面 (LevelSelectView)
- 显示用户信息
- 三个难度级别选择
- 题目数量设置(滑动条+输入框)
- 修改密码功能
#### 4. 考试界面 (ExamView)
- 题目显示
- 选项选择
- 进度指示
- 导航控制
#### 5. 成绩界面 (ScoreView)
- 得分显示
- 成绩评价
- 继续学习选项
#### 6. 修改密码界面 (ChangePasswordView)
- 当前密码验证
- 新密码格式检查
- 操作结果反馈
## 技术特性
### 1. 邮件服务
- 支持QQ邮箱SMTP发送
- 验证码有效期10分钟
- 发送频率限制( 1分钟内只能发送一次)
- 备用模拟发送模式
### 2. 密码策略
- 长度: 6-10位
- 必须包含:大写字母、小写字母、数字
- 修改密码时需要验证原密码
### 3. 用户名规则
- 长度: 2-20个字符
- 允许:中文、英文、数字、下划线、连字符
- 实时检查可用性
### 4. 题目生成
- 智能去重机制
- 难度适配算法
- 选项自动生成
- 支持多种数学运算
### 数据存储
用户数据自动保存在 `data/users.json` 文件中。
## 使用流程
1. ** 注册账号**
- 输入邮箱和用户名
- 获取邮箱验证码
- 设置符合要求的密码
2. ** 登录系统**
- 使用邮箱或用户名登录
- 进入级别选择界面
3. ** 开始学习**
- 选择难度级别(小学/初中/高中)
- 设置题目数量( 10-30题)
- 开始答题
4. ** 查看成绩**
- 完成考试后查看得分
- 获得成绩评价
- 可选择继续学习或退出
5. ** 账户管理**
- 修改密码
- 修改用户名
- 退出登录
## 错误处理
- 输入验证失败时显示明确提示
- 网络异常时的降级处理
- 数据保存失败的重试机制
- 用户操作错误的友好提示
*该文档最后更新日期: 2025年*