|
|
# 小初高数学学习系统
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
|
这是一个基于Java Swing开发的数学学习软件,专门为小学、初中和高中学生设计。系统提供个性化的数学题目生成、答题练习和成绩记录功能,支持用户注册、登录和密码管理。
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
### 用户管理
|
|
|
- **用户注册**:支持邮箱、用户名、密码和年级选择注册
|
|
|
- **用户登录**:支持邮箱或用户名登录
|
|
|
- **密码修改**:安全的密码修改功能
|
|
|
- **数据持久化**:用户数据使用JSON格式存储
|
|
|
|
|
|
### 题目生成
|
|
|
- **分级题目**:根据用户年级(小学、初中、高中)生成相应难度的数学题目
|
|
|
- **智能去重**:避免重复题目,确保练习效果
|
|
|
- **题目保存**:自动保存生成的题目到用户专属文件夹
|
|
|
|
|
|
### 答题系统
|
|
|
- **选择题形式**:每题提供4个选项
|
|
|
- **实时评分**:答题后立即显示结果
|
|
|
- **成绩记录**:记录每次练习的成绩
|
|
|
|
|
|
### 年级适配
|
|
|
- **小学**:基础四则运算
|
|
|
- **初中**:包含平方、平方根运算
|
|
|
- **高中**:包含三角函数运算
|
|
|
|
|
|
## 技术架构
|
|
|
|
|
|
### 开发环境
|
|
|
- **语言**:Java 11
|
|
|
- **构建工具**:Maven
|
|
|
- **GUI框架**:Swing
|
|
|
- **数据格式**:JSON
|
|
|
|
|
|
### 项目结构
|
|
|
```
|
|
|
src/
|
|
|
├── model/ # 数据模型层
|
|
|
│ ├── UserManager.java # 用户管理
|
|
|
│ ├── QuestionMaker.java # 题目生成器
|
|
|
│ ├── Question.java # 题目模型
|
|
|
│ ├── Grade.java # 年级枚举
|
|
|
│ ├── PrimaryMaker.java # 小学题目生成
|
|
|
│ ├── MiddleMaker.java # 初中题目生成
|
|
|
│ └── HighMaker.java # 高中题目生成
|
|
|
├── ui/ # 用户界面层
|
|
|
│ ├── MathLearningApp.java # 主程序入口
|
|
|
│ ├── LoginFrame.java # 登录界面
|
|
|
│ ├── RegisterDialog.java # 注册对话框
|
|
|
│ ├── GradeSelectionFrame.java # 年级选择界面
|
|
|
│ ├── QuizFrame.java # 答题界面
|
|
|
│ ├── ResultFrame.java # 结果界面
|
|
|
│ ├── UserSettingsDialog.java # 用户设置
|
|
|
│ └── ChangePasswordDialog.java # 修改密码
|
|
|
├── others/ # 资源文件
|
|
|
└── Math.exe # 可执行文件
|
|
|
```
|
|
|
|
|
|
### 依赖库
|
|
|
- **Gson 2.10.1**:JSON数据处理
|
|
|
- **JavaMail 1.6.2**:邮件功能支持
|
|
|
- **JAF 1.1.1**:JavaBeans激活框架
|
|
|
|
|
|
## 安装与运行
|
|
|
|
|
|
### 环境要求
|
|
|
- Java 11 或更高版本
|
|
|
- Maven 3.6 或更高版本
|
|
|
|
|
|
### 直接运行
|
|
|
- 双击Math.exe程序
|
|
|
|
|
|
### 编译运行
|
|
|
```bash
|
|
|
# 使用Maven编译
|
|
|
mvn compile
|
|
|
|
|
|
# 运行程序
|
|
|
mvn exec:java
|
|
|
|
|
|
# 打包为可执行JAR
|
|
|
mvn package
|
|
|
```
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
### 首次使用
|
|
|
1. 启动程序后进入登录界面
|
|
|
2. 点击"注册"按钮创建新账户
|
|
|
3. 填写邮箱、验证码
|
|
|
4. 验证完成后填写用户名、密码并选择年级
|
|
|
5. 注册成功后返回登录界面登录
|
|
|
|
|
|
### 练习流程
|
|
|
1. 登录成功后选择年级(系统会根据注册信息自动推荐)以及题目数量(10-30)
|
|
|
2. 进入答题界面开始练习
|
|
|
3. 选择答案后点击"下一题"继续
|
|
|
4. 完成所有题目后自动生成并显示成绩
|
|
|
|
|
|
### 用户设置
|
|
|
- 在登录后界面可以修改密码
|
|
|
- 系统会自动保存练习记录
|
|
|
|
|
|
## 数据存储
|
|
|
|
|
|
### 用户数据
|
|
|
- 位置:`users.json`
|
|
|
- 格式:JSON格式存储用户信息
|
|
|
|
|
|
### 题目记录
|
|
|
- 位置:`questions/{邮箱}/` 目录
|
|
|
- 格式:按时间戳命名的文本文件
|
|
|
|
|
|
## 开发说明
|
|
|
|
|
|
### 扩展题目类型
|
|
|
要添加新的题目类型,需要:
|
|
|
1. 在相应的`*Maker.java`类中添加题目生成逻辑
|
|
|
2. 在`QuestionMaker.java`中更新表达式解析逻辑
|
|
|
3. 更新`Grade.java`枚举(如果需要新的年级)
|
|
|
|
|
|
### 自定义界面
|
|
|
所有UI组件都使用Swing开发,可以通过修改对应的`*.java`文件来自定义界面样式和布局。
|
|
|
|