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.
3.9 KiB
3.9 KiB
数学题目生成器 (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 # 项目说明文档
快速开始
方法一:使用批处理文件(推荐)
- 双击
run_mathquiz.bat文件 - 程序将自动启动
方法二:命令行运行
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根据难度级别创建对应的生成器 - 策略模式: 不同难度级别使用不同的题目生成策略
- 单例模式: 认证服务采用单例模式确保全局唯一
开发说明
编译项目
# 编译所有Java文件
javac -d out/production/apersonalproject src/mathquiz/*.java
# 创建JAR文件
jar cfm mathquiz.jar MANIFEST.MF -C out/production/apersonalproject .
添加新的难度级别
- 创建新的生成器类,实现
ProblemGenerator接口 - 在
GeneratorFactory中添加对应的创建逻辑 - 在
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
故障排除
常见问题
-
"找不到或无法加载主类"
- 确保已安装Java运行环境
- 检查JAR文件是否完整
-
"权限被拒绝"
- 确保有写入output目录的权限
- 检查文件是否被其他程序占用
-
生成的题目重复
- 程序内置去重机制,如仍有重复,请检查去重器逻辑
版本历史
- v1.0 (2025-09-28)
- 初始版本发布
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
贡献指南
欢迎提交Issue和Pull Request来改进这个项目!
许可证
本项目采用 MIT 许可证。
作者
赵文琪 - 项目开发者
如有问题或建议,请通过Issue联系我们。