# 数学试卷生成器 (Math Exam Generator) ## 项目概述 这是一个基于Java的中小学数学试卷自动生成程序,支持小学、初中和高中三个不同难度级别的数学题目生成。程序包含用户认证、题目生成、文件管理等功能。 ## 项目结构 ``` MathExamGenerator/ ├── MathExamGenerator.java # 主程序文件 └── exams/ # 生成的试卷存储目录 ├── zhangsan1/ # 用户个人目录 └── ... ``` ## 核心类说明 ### 1. User类 用户信息管理类,存储用户名、密码和用户类型。 ### 2. QuestionGenerator抽象类 题目生成器的基类,定义了生成题目的通用方法。 ### 3. 具体题目生成器 - **PrimaryQuestionGenerator**: 小学题目生成器(包含括号运算) - **JuniorQuestionGenerator**: 初中题目生成器(包含平方和开方运算) - **SeniorQuestionGenerator**: 高中题目生成器(包含三角函数运算) ### 4. AuthenticationManager类 用户认证管理,验证用户名和密码。 ### 5. FileManager类 文件管理功能,包括题目保存和重复检查。 ### 6. MathExamGenerator主类 程序入口,处理用户交互和流程控制。 ## 编译说明 ### 重要:编译时明确指定使用UTF-8编码 由于源代码中包含中文字符,在编译时必须指定UTF-8编码,否则会出现编码错误。 #### Windows系统编译命令: ```cmd javac -encoding UTF-8 MathExamGenerator.java ``` #### Linux/Mac系统编译命令: ```bash javac -encoding UTF-8 MathExamGenerator.java ``` #### 运行程序: ```cmd java MathExamGenerator ``` ## 功能特性 ### 用户认证系统 - 预置9个测试账户(小学、初中、高中各3个) - 用户名格式:张三1/李四1/王五1,密码:123 - 支持用户登录和退出 ### 题目生成功能 - **小学**: 2-4个操作数,可能包含括号 - **初中**: 包含平方(^2)和开方(√)运算 - **高中**: 包含三角函数(sin/cos/tan)运算 ### 智能去重 - 检查当前会话中的重复题目 - 检查历史文件中的重复题目 - 最大尝试次数限制,避免无限循环 ### 文件管理 - 按用户分目录存储试卷 - 使用时间戳命名文件 - 支持GBK编码保存(适合中文Windows环境) ## 使用方法 ### 1. 登录系统 ``` 请输入用户名和密码(用空格隔开): 张三1 123 当前选择为小学出题 ``` ### 2. 生成题目 ``` 准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录): 15 题目已保存到: exams/张三1/2024-01-20-14-30-25.txt ``` ### 3. 切换题目类型 ``` 切换为初中 准备生成初中数学题目,请输入生成题目数量 ``` ### 4. 退出登录 ``` 输入-1将退出当前用户,重新登录 ``` ## 预置账户 | 用户类型 | 用户名 | 密码 | 说明 | |---------|--------|------|------| | 小学 | 张三1, 张三2, 张三3 | 123 | 生成小学题目 | | 初中 | 李四1, 李四2, 李四3 | 123 | 生成初中题目 | | 高中 | 王五1, 王五2, 王五3 | 123 | 生成高中题目 | ## 生成的题目示例 ### 小学题目 ``` 1. 45 + (23 - 7) 2. 89 / 4 * 15 ``` ### 初中题目 ``` 1. 34 + 56^2 - √78 2. √25 * 16 + 9^2 ``` ### 高中题目 ``` 1. 45 + sin(30) * 67 2. cos(45) - 23 / tan(60) ``` ## 技术特点 1. **面向对象设计**: 使用继承和多态实现不同难度的题目生成 2. **异常处理**: 完善的输入验证和错误处理 3. **文件操作**: 安全的文件读写操作,避免资源泄漏 4. **编码处理**: 正确处理中文字符编码问题 5. **用户体验**: 友好的命令行交互界面 ## 注意事项 1. **编码一致性**: 确保编辑器和编译环境使用相同的编码(推荐UTF-8) 2. **文件权限**: 确保程序有权限创建exams目录和文件 3. **输入验证**: 程序对用户输入进行了基本验证,但建议输入符合要求的数值 4. **性能考虑**: 题目数量较多时,去重检查可能较慢,但设置了最大尝试次数限制 ## 扩展建议 1. 可以添加题目难度分级 2. 支持自定义题目模板 3. 添加题目答案生成和验证 4. 支持更多数学运算和函数 5. 添加图形界面版本 这个程序是一个完整的数学试卷生成解决方案,具有良好的可扩展性和维护性。