# 数学题目生成器 (Math Quiz Generator) ## 项目简介 这是一个基于Java开发的数学题目生成器,支持小学、初中、高中三个难度级别的数学题目自动生成。程序采用面向对象设计,具有良好的扩展性和可维护性。 ## 功能特性 - ? **多难度支持** - 支持小学、初中、高中三个难度级别 - ? **用户认证** - 内置用户登录验证系统 - ? **智能去重** - 自动检测并避免生成重复题目 - ? **文件管理** - 自动按用户和日期保存生成的题目 - ? **动态切换** - 支持运行时切换难度级别 - ? **灵活数量** - 支持生成10-30道题目 ## 系统要求 - **Java版本**: Java 8 或更高版本 - **操作系统**: Windows、Linux、macOS - **内存**: 至少 128MB 可用内存 ## 项目结构 ``` apersonalproject/ ├── src/mathquiz/ # 源代码目录 │ ├── Main.java # 主程序入口 │ ├── AccountType.java # 账户类型枚举 │ ├── AuthService.java # 认证服务 │ ├── ConsolePrompter.java # 控制台交互 │ ├── Deduplicator.java # 去重器 │ ├── GeneratorFactory.java # 生成器工厂 │ ├── PaperSaver.java # 文件保存器 │ ├── ProblemGenerator.java # 题目生成器接口 │ ├── PrimaryGenerator.java # 小学题目生成器 │ ├── MiddleGenerator.java # 初中题目生成器 │ ├── HighGenerator.java # 高中题目生成器 │ └── Validators.java # 输入验证器 ├── out/production/ # 编译输出目录 ├── output/ # 生成的题目保存目录 ├── mathquiz.jar # 可执行JAR文件 ├── run_mathquiz.bat # Windows启动脚本 └── README.md # 项目说明文档 ``` ## 快速开始 ### 方法一:使用批处理文件(推荐) 1. 双击 `run_mathquiz.bat` 文件 2. 程序将自动启动 ### 方法二:命令行运行 ```bash java -jar mathquiz.jar ``` ## 使用指南 ### 1. 用户登录 程序启动后,会提示输入用户名和密码: ``` 请输入用户名和密码(用空格分隔): ``` ### 2. 选择难度级别 登录成功后,程序会显示当前选择的难度级别: ``` 当前选择为 小学 出题 ``` ### 3. 生成题目 输入要生成的题目数量(10-30之间): ``` 准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录): ``` ### 4. 切换难度级别 在输入题目数量时,可以使用以下命令切换难度: - `切换为小学` - 切换到小学难度 - `切换为初中` - 切换到初中难度 - `切换为高中` - 切换到高中难度 ### 5. 查看生成的题目 生成的题目会自动保存到 `output/用户名/` 目录下,文件名格式为: ``` YYYY-MM-DD-HH-mm-ss.txt ``` ## 技术架构 ### 核心类说明 - **Main**: 程序入口,处理用户交互流程 - **AuthService**: 用户认证服务,验证用户名密码 - **GeneratorFactory**: 生成器工厂,根据难度级别创建对应的生成器 - **ProblemGenerator**: 题目生成器接口,定义生成题目的标准 - **Deduplicator**: 去重器,确保生成的题目不重复 - **PaperSaver**: 文件保存器,负责将题目保存到文件 ### 设计模式 - **工厂模式**: `GeneratorFactory` 根据难度级别创建对应的生成器 - **策略模式**: 不同难度级别使用不同的题目生成策略 - **单例模式**: 认证服务采用单例模式确保全局唯一 ## 开发说明 ### 编译项目 ```bash # 编译所有Java文件 javac -d out/production/apersonalproject src/mathquiz/*.java # 创建JAR文件 jar cfm mathquiz.jar MANIFEST.MF -C out/production/apersonalproject . ``` ### 添加新的难度级别 1. 创建新的生成器类,实现 `ProblemGenerator` 接口 2. 在 `GeneratorFactory` 中添加对应的创建逻辑 3. 在 `AccountType` 枚举中添加新的类型 ## 输出示例 ### 小学题目示例 ``` 1. 15 + 23 = ? 2. 67 - 34 = ? 3. 8 × 7 = ? 4. 56 ÷ 8 = ? ``` ### 初中题目示例 ``` 1. 解方程:2x + 5 = 13 2. 计算:(3x + 2)(x - 1) 3. 求函数 y = 2x + 3 在 x = 4 时的值 ``` ### 高中题目示例 ``` 1. 求导数:f(x) = x? + 2x? - 5x + 1 2. 计算定积分:∫?? (2x + 1) dx 3. 解不等式:x? - 4x + 3 > 0 ``` ## 故障排除 ### 常见问题 1. **"找不到或无法加载主类"** - 确保已安装Java运行环境 - 检查JAR文件是否完整 2. **"权限被拒绝"** - 确保有写入output目录的权限 - 检查文件是否被其他程序占用 3. **生成的题目重复** - 程序内置去重机制,如仍有重复,请检查去重器逻辑 ## 版本历史 - **v1.0** (2025-09-28) - 初始版本发布 - 支持小学、初中、高中三个难度级别 - 实现用户认证和题目去重功能 ## 贡献指南 欢迎提交Issue和Pull Request来改进这个项目! ## 许可证 本项目采用 MIT 许可证。 ## 作者 **赵文琪** - 项目开发者 --- *如有问题或建议,请通过Issue联系我们。*