# 数学考试系统 - 学生答题系统 ## 🎯 项目概述 这是一个基于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. **教育价值**:支持学习评估和测试 #### 技术特色 - **模块化设计**:清晰的代码结构 - **可扩展性**:易于添加新功能 - **稳定性**:完善的错误处理 - **性能优化**:高效的算法实现 ### 系统验证 #### 功能测试 - ✅ 用户登录功能正常 - ✅ 考试设置功能正常 - ✅ 题目生成功能正常 - ✅ 答题流程功能正常 - ✅ 结果统计功能正常 #### 界面测试 - ✅ 登录界面显示正常 - ✅ 考试设置界面显示正常 - ✅ 答题界面显示正常 - ✅ 结果界面显示正常 #### 性能测试 - ✅ 编译无错误 - ✅ 运行稳定 - ✅ 响应及时 - ✅ 内存使用合理 系统现在支持: - 完整的在线答题流程 - 三个难度级别的选择题 - 实时进度跟踪 - 自动评分统计 - 详细的考试结果 用户可以通过图形化界面进行数学考试,系统会自动记录答案、统计成绩,并提供详细的结果分析。 --- **系统已准备就绪,可以开始使用!** 🚀 **祝您考试顺利!** 🎉