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. 用户管理系统
- 用户注册与邮箱验证
- 用户登录与密码管理
- 个人资料管理(用户名修改、密码修改)
- 用户教育阶段设置(小学/初中/高中)
### 2. 数学题目生成系统
- 支持三种教育阶段的题目生成:
- 小学:基础四则运算(+、-、×、÷)
- 初中:包含平方、开方运算
- 高中: 包含三角函数( sin、cos、tan)
- 自动生成带括号的表达式
- 智能选项生成(正确答案+干扰项)
### 3. 答题测试系统
- 自适应题目数量( 10-30题可选)
- 图形化答题界面
- 实时答题记录
- 自动评分与结果展示
## 技术特点
### 核心技术栈
- Java Swing: 图形用户界面
- Jackson: 用户数据序列化
- BCrypt: 密码加密存储
- JavaMail: 邮件验证码发送
### 设计模式
- MVC架构模式
- 抽象工厂模式(题目生成器)
- 单例模式(用户服务)
## 使用说明
### 系统要求
- Java 8或更高版本
- 网络连接(用于邮件验证)
### 运行环境
程序可以通过可执行文件 math-learning-app-1.0.0.jar执行
运行环境: window PowerShell UTF-8 编码
### 安装与运行
1. 克隆或下载项目源代码
2. 使用IDE导入项目
3. 配置邮件服务参数(在[RegisterFrame.java](file://D:\filee\软导\java\结对\project\MathLearningApp\git\src\main\java\mathlearning\ui\RegisterFrame.java)和[ChangeCodeFrame.java](file://D:\filee\软导\java\结对\project\MathLearningApp\git\src\main\java\mathlearning\ui\ChangeCodeFrame.java)中)
4. 编译并运行[App.java](file://D:\filee\软导\java\结对\project\MathLearningApp\git\src\main\java\mathlearning\App.java)
### 使用流程
1. ** 注册账户**:输入用户名、邮箱,获取验证码并设置密码
2. ** 登录系统**:使用注册邮箱和密码登录
3. ** 选择教育阶段**:首次登录需选择小学/初中/高中
4. ** 开始测试**:在主界面选择题目数量开始答题
5. ** 查看结果**:提交后自动评分并显示结果
## 项目亮点
1. ** 安全性**:
- 密码BCrypt加密存储
- 邮箱验证机制
- 验证码时效控制( 10分钟)
2. ** 智能化**:
- 根据教育阶段自适应题目难度
- 智能选项生成算法
- 表达式计算引擎
3. ** 用户体验**:
- 友好的图形界面
- 实时反馈机制
- 完善的错误处理
## 注意事项
1. 邮件服务配置:
- 需要在[RegisterFrame.java](file://D:\filee\软导\java\结对\project\MathLearningApp\git\src\main\java\mathlearning\ui\RegisterFrame.java)和[ChangeCodeFrame.java](file://D:\filee\软导\java\结对\project\MathLearningApp\git\src\main\java\mathlearning\ui\ChangeCodeFrame.java)中配置SMTP参数
- 默认使用QQ邮箱SMTP服务
2. 数据存储:
- 用户数据保存在`data/users.json`文件中
- 首次运行会自动创建数据文件
3. 密码要求:
- 长度6-10位
- 必须包含大小写字母和数字