|
|
# 数学考试系统 - 学生答题系统
|
|
|
|
|
|
## 🎯 项目概述
|
|
|
|
|
|
这是一个基于JavaFX的数学考试系统,支持学生在线答题。系统提供选择题形式的数学考试,支持小学、初中、高中三个难度级别。
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
### 方法一:使用启动脚本(推荐)
|
|
|
|
|
|
**Windows用户:**
|
|
|
```bash
|
|
|
双击运行 run_gui.bat
|
|
|
```
|
|
|
|
|
|
**Linux/Mac用户:**
|
|
|
```bash
|
|
|
chmod +x run_gui.sh
|
|
|
./run_gui.sh
|
|
|
```
|
|
|
|
|
|
### 方法二:使用Maven命令
|
|
|
|
|
|
```bash
|
|
|
# 编译项目
|
|
|
mvn clean compile
|
|
|
|
|
|
# 运行考试系统
|
|
|
mvn exec:java -Dexec.mainClass="com.example.mathsystemtogether.HelloApplication"
|
|
|
```
|
|
|
|
|
|
## 👤 用户账号
|
|
|
|
|
|
### 预设测试账号
|
|
|
|
|
|
系统预设了9个测试账号:
|
|
|
|
|
|
| 用户名 | 密码 | 难度级别 | 题目类型 |
|
|
|
|--------|------|----------|----------|
|
|
|
| 张三1 | 123 | 小学 | 基础四则运算 |
|
|
|
| 张三2 | 123 | 小学 | 基础四则运算 |
|
|
|
| 张三3 | 123 | 小学 | 基础四则运算 |
|
|
|
| 李四1 | 123 | 初中 | 平方、开方运算 |
|
|
|
| 李四2 | 123 | 初中 | 平方、开方运算 |
|
|
|
| 李四3 | 123 | 初中 | 平方、开方运算 |
|
|
|
| 王五1 | 123 | 高中 | 三角函数运算 |
|
|
|
| 王五2 | 123 | 高中 | 三角函数运算 |
|
|
|
| 王五3 | 123 | 高中 | 三角函数运算 |
|
|
|
|
|
|
### 新用户注册
|
|
|
|
|
|
系统支持新用户注册功能:
|
|
|
|
|
|
1. **点击注册按钮**:在登录界面点击"📝 注册"按钮
|
|
|
2. **填写注册信息**:
|
|
|
- 用户名(至少3个字符)
|
|
|
- 密码(至少6个字符)
|
|
|
- 确认密码
|
|
|
- 邮箱地址
|
|
|
- 难度级别选择
|
|
|
3. **邮箱验证**:
|
|
|
- 点击"📤 发送验证码"获取验证码
|
|
|
- 输入收到的6位数字验证码
|
|
|
- 验证码有效期为5分钟
|
|
|
4. **完成注册**:点击"🚀 注册"完成账户创建
|
|
|
5. **自动跳转**:注册成功后自动返回登录界面
|
|
|
|
|
|
**注意**:
|
|
|
- 用户名不能重复
|
|
|
- 邮箱地址格式必须正确
|
|
|
- 验证码通过真实邮件发送
|
|
|
- 用户数据保存在本地 `user_data.txt` 文件中
|
|
|
|
|
|
### 邮件服务配置
|
|
|
|
|
|
系统支持真实的邮箱验证码功能,已配置QQ邮箱:
|
|
|
|
|
|
- **邮箱地址**:1961004835@qq.com
|
|
|
- **SMTP服务器**:smtp.qq.com:587
|
|
|
- **配置文件**:`src/main/resources/mail.properties`
|
|
|
|
|
|
如需修改邮箱配置,请编辑 `mail.properties` 文件。
|
|
|
|
|
|
## 🎮 使用流程
|
|
|
|
|
|
### 1. 用户登录或注册
|
|
|
|
|
|
**登录现有账户:**
|
|
|
- 输入用户名(如:张三1)
|
|
|
- 输入密码(123)
|
|
|
- 点击"🚀 登录"按钮
|
|
|
|
|
|
**注册新账户:**
|
|
|
- 点击"📝 注册"按钮
|
|
|
- 填写注册信息(用户名、密码、邮箱、难度级别)
|
|
|
- 获取并输入邮箱验证码
|
|
|
- 点击"🚀 注册"完成账户创建
|
|
|
|
|
|
### 2. 设置考试
|
|
|
- 选择难度级别(小学/初中/高中)
|
|
|
- 输入题目数量(5-20题)
|
|
|
- 点击"开始考试"按钮
|
|
|
|
|
|
### 3. 答题过程
|
|
|
- 系统显示第一题和四个选项(A、B、C、D)
|
|
|
- 选择你认为正确的答案
|
|
|
- 点击"提交答案"按钮
|
|
|
- 系统自动进入下一题
|
|
|
- 重复直到完成所有题目
|
|
|
|
|
|
### 4. 查看结果
|
|
|
- 系统显示考试结果
|
|
|
- 包括得分、正确题数、总题数
|
|
|
- 显示每题的详细结果(你的答案 vs 正确答案)
|
|
|
|
|
|
## 📚 题目类型示例
|
|
|
|
|
|
### 小学题目
|
|
|
- **基础四则运算**
|
|
|
- 示例:`15 + 23 = ?`
|
|
|
- 选项:A. 38 B. 35 C. 40 D. 42
|
|
|
|
|
|
### 初中题目
|
|
|
- **平方运算**:`5² = ?`
|
|
|
- **开方运算**:`√16 = ?`
|
|
|
- 选项:A. 2 B. 4 C. 6 D. 8
|
|
|
|
|
|
### 高中题目
|
|
|
- **三角函数**:`sin(30°) = ?`
|
|
|
- 选项:A. 0.5 B. 0.7 C. 1.0 D. 1.2
|
|
|
|
|
|
## 🎨 界面特色
|
|
|
|
|
|
### 登录界面
|
|
|
- 简洁的用户名密码输入
|
|
|
- 实时登录状态反馈
|
|
|
- 错误提示和成功提示
|
|
|
|
|
|
### 考试设置界面
|
|
|
- 难度级别选择下拉框
|
|
|
- 题目数量输入框
|
|
|
- 清晰的开始考试按钮
|
|
|
|
|
|
### 考试界面
|
|
|
- 题目编号和进度显示
|
|
|
- 大字体题目显示
|
|
|
- 四个单选按钮选项
|
|
|
- 提交答案和下一题按钮
|
|
|
- 退出考试确认对话框
|
|
|
|
|
|
### 结果界面
|
|
|
- 总分和正确率显示
|
|
|
- 每题详细结果展示
|
|
|
- 重新考试和返回登录选项
|
|
|
|
|
|
## 🛠️ 技术特性
|
|
|
|
|
|
- **智能题目生成**:根据难度级别生成相应题目
|
|
|
- **防重复机制**:同一张试卷不会出现相同题目
|
|
|
- **实时进度跟踪**:显示当前题目和总题目数
|
|
|
- **答案记录**:自动记录用户选择
|
|
|
- **结果统计**:自动计算得分和正确率
|
|
|
- **用户友好**:清晰的操作提示和状态反馈
|
|
|
|
|
|
## 📁 项目结构
|
|
|
|
|
|
```
|
|
|
MathSystemTogether/
|
|
|
├── src/main/java/com/example/mathsystemtogether/
|
|
|
│ ├── HelloApplication.java # 主应用程序入口
|
|
|
│ ├── ExamController.java # 考试系统控制器
|
|
|
│ ├── RegisterController.java # 注册功能控制器
|
|
|
│ ├── EmailService.java # 邮件服务类
|
|
|
│ ├── Question.java # 选择题数据模型
|
|
|
│ └── ChoiceQuestionGenerator.java # 选择题生成器
|
|
|
├── src/main/resources/com/example/mathsystemtogether/
|
|
|
│ ├── exam-view.fxml # 考试界面布局文件
|
|
|
│ └── register-view.fxml # 注册界面布局文件
|
|
|
├── src/main/resources/
|
|
|
│ └── mail.properties # 邮件服务配置文件
|
|
|
├── user_data.txt # 用户数据存储文件
|
|
|
├── papers/ # 题目文件存储目录
|
|
|
│ ├── 张三1/ # 用户文件夹
|
|
|
│ ├── 李四1/
|
|
|
│ └── 王五1/
|
|
|
├── run_gui.bat # Windows启动脚本
|
|
|
├── run_gui.sh # Linux/Mac启动脚本
|
|
|
└── README.md # 本说明文件
|
|
|
```
|
|
|
|
|
|
## 🔧 核心功能
|
|
|
|
|
|
### 用户管理功能
|
|
|
- **用户注册**:支持新用户注册,包含邮箱验证
|
|
|
- **用户登录**:支持预设账号和注册账号登录
|
|
|
- **数据存储**:用户信息保存在本地文件中
|
|
|
- **数据验证**:用户名唯一性、邮箱格式验证
|
|
|
|
|
|
### 题目生成算法
|
|
|
- **小学**:基础四则运算(+、-、×、÷)
|
|
|
- **初中**:平方运算(²)、开方运算(√)
|
|
|
- **高中**:三角函数(sin、cos、tan)
|
|
|
|
|
|
### 选项生成策略
|
|
|
- 正确答案作为选项之一
|
|
|
- 生成3个接近正确答案的错误选项
|
|
|
- 随机打乱选项顺序
|
|
|
|
|
|
### 考试流程控制
|
|
|
- 题目顺序显示
|
|
|
- 答案自动记录
|
|
|
- 进度实时更新
|
|
|
- 结果自动统计
|
|
|
|
|
|
### 邮箱验证功能
|
|
|
- **真实邮件发送**:通过SMTP服务器发送验证码邮件
|
|
|
- **验证码生成**:6位数字随机验证码
|
|
|
- **时效控制**:验证码5分钟有效期
|
|
|
- **防重复发送**:60秒倒计时限制
|
|
|
- **格式验证**:邮箱地址格式检查
|
|
|
- **HTML邮件**:美观的HTML格式验证码邮件
|
|
|
|
|
|
## 📊 考试结果
|
|
|
|
|
|
系统会显示:
|
|
|
- **总分**:按百分比计算(正确题数/总题数 × 100)
|
|
|
- **正确题数**:答对的题目数量
|
|
|
- **总题数**:考试题目总数
|
|
|
- **详细结果**:每题的用户答案、正确答案、对错标记
|
|
|
|
|
|
## 🎯 使用建议
|
|
|
|
|
|
1. **选择合适的难度级别**:根据学生水平选择对应难度
|
|
|
2. **合理设置题目数量**:建议5-20题,避免过长或过短
|
|
|
3. **认真阅读题目**:仔细理解题目要求
|
|
|
4. **仔细选择答案**:确认选择后再提交
|
|
|
5. **查看详细结果**:了解错题原因,便于改进
|
|
|
|
|
|
## 🔧 开发环境
|
|
|
|
|
|
- **Java版本**:JDK 21+
|
|
|
- **构建工具**:Maven 3.6+
|
|
|
- **GUI框架**:JavaFX 21
|
|
|
- **开发工具**:IntelliJ IDEA(推荐)
|
|
|
|
|
|
## 📝 注意事项
|
|
|
|
|
|
1. 首次运行可能需要下载JavaFX依赖
|
|
|
2. 题目文件保存在项目根目录的 `papers` 文件夹中
|
|
|
3. 每个用户有独立的文件夹存储题目
|
|
|
4. 支持同时运行多个用户会话(需要多次启动)
|
|
|
|
|
|
## 🐛 故障排除
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
1. **应用程序无法启动**
|
|
|
- 检查Java版本是否为JDK 21+
|
|
|
- 确保Maven依赖下载完整
|
|
|
|
|
|
2. **界面显示异常**
|
|
|
- 检查JavaFX模块是否正确配置
|
|
|
- 尝试重新编译项目
|
|
|
|
|
|
3. **登录失败**
|
|
|
- 确认用户名和密码正确
|
|
|
- 检查输入框是否为空
|
|
|
|
|
|
4. **无法生成题目**
|
|
|
- 确认题目数量在5-20范围内
|
|
|
- 检查难度级别选择
|
|
|
|
|
|
5. **答题过程中断**
|
|
|
- 可以点击"退出考试"重新开始
|
|
|
- 系统会提示确认退出
|
|
|
|
|
|
## 📞 技术支持
|
|
|
|
|
|
如有问题,请检查:
|
|
|
1. Java版本兼容性
|
|
|
2. Maven依赖完整性
|
|
|
3. 文件权限设置
|
|
|
4. 系统环境变量配置
|
|
|
|
|
|
## 🎉 系统改造完成
|
|
|
|
|
|
**数学考试系统已成功改造完成!**
|
|
|
|
|
|
### 改造内容总结
|
|
|
|
|
|
#### 1. 系统架构重新设计
|
|
|
- **原系统**:试卷生成系统(生成题目文件)
|
|
|
- **新系统**:学生答题系统(在线答题考试)
|
|
|
|
|
|
#### 2. 核心功能转换
|
|
|
- **题目生成** → **选择题生成**
|
|
|
- **文件保存** → **在线答题**
|
|
|
- **题目展示** → **交互式答题界面**
|
|
|
|
|
|
#### 3. 新增核心组件
|
|
|
|
|
|
**Question.java - 选择题数据模型**
|
|
|
```java
|
|
|
- 题目内容 (questionText)
|
|
|
- 四个选项 (optionA, B, C, D)
|
|
|
- 正确答案 (correctAnswer)
|
|
|
- 题目编号 (questionNumber)
|
|
|
```
|
|
|
|
|
|
**ChoiceQuestionGenerator.java - 选择题生成器**
|
|
|
```java
|
|
|
- 支持三个难度级别
|
|
|
- 智能选项生成算法
|
|
|
- 防重复机制
|
|
|
- 数学计算引擎
|
|
|
```
|
|
|
|
|
|
**ExamController.java - 考试控制器**
|
|
|
```java
|
|
|
- 用户登录管理
|
|
|
- 考试流程控制
|
|
|
- 答案记录统计
|
|
|
- 结果展示功能
|
|
|
```
|
|
|
|
|
|
### 系统优势
|
|
|
|
|
|
#### 相比原系统的改进
|
|
|
1. **交互性**:从静态生成到动态答题
|
|
|
2. **实时性**:即时反馈和结果统计
|
|
|
3. **用户友好**:图形化界面替代命令行
|
|
|
4. **教育价值**:支持学习评估和测试
|
|
|
|
|
|
#### 技术特色
|
|
|
- **模块化设计**:清晰的代码结构
|
|
|
- **可扩展性**:易于添加新功能
|
|
|
- **稳定性**:完善的错误处理
|
|
|
- **性能优化**:高效的算法实现
|
|
|
|
|
|
### 系统验证
|
|
|
|
|
|
#### 功能测试
|
|
|
- ✅ 用户登录功能正常
|
|
|
- ✅ 考试设置功能正常
|
|
|
- ✅ 题目生成功能正常
|
|
|
- ✅ 答题流程功能正常
|
|
|
- ✅ 结果统计功能正常
|
|
|
|
|
|
#### 界面测试
|
|
|
- ✅ 登录界面显示正常
|
|
|
- ✅ 考试设置界面显示正常
|
|
|
- ✅ 答题界面显示正常
|
|
|
- ✅ 结果界面显示正常
|
|
|
|
|
|
#### 性能测试
|
|
|
- ✅ 编译无错误
|
|
|
- ✅ 运行稳定
|
|
|
- ✅ 响应及时
|
|
|
- ✅ 内存使用合理
|
|
|
|
|
|
系统现在支持:
|
|
|
- 完整的在线答题流程
|
|
|
- 三个难度级别的选择题
|
|
|
- 实时进度跟踪
|
|
|
- 自动评分统计
|
|
|
- 详细的考试结果
|
|
|
|
|
|
用户可以通过图形化界面进行数学考试,系统会自动记录答案、统计成绩,并提供详细的结果分析。
|
|
|
|
|
|
---
|
|
|
|
|
|
**系统已准备就绪,可以开始使用!** 🚀
|
|
|
|
|
|
**祝您考试顺利!** 🎉 |