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.
4.9 KiB
4.9 KiB
数学题目生成器 (Math Quiz Generator)
项目简介
这是一个基于Java开发的数学题目生成器,支持小学、初中、高中三个难度级别的数学题目自动生成。程序采用面向对象设计,具有良好的扩展性和可维护性。
功能特性
- 多难度支持 - 支持小学、初中、高中三个难度级别
- 用户认证 - 内置用户登录验证系统
- 智能去重 - 自动检测并避免生成重复题目
- 文件管理 - 自动按用户和日期保存生成的题目
- 动态切换 - 支持运行时切换难度级别
- 灵活数量 - 支持生成10-30道题目
系统要求
- Java版本: Java 8 或更高版本
- 操作系统: Windows
项目结构
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 # 项目说明文档
快速开始
命令行运行
java -jar mathquiz.jar
注意事项
- 确保已安装Java运行环境
- 程序会在output目录下创建用户文件夹保存生成的题目
使用指南
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. (15)^2 × 66 + 95
2. 90 ÷ (14)^2
3. sqrt(8)
高中题目示例
1. tan(9) × 41 ÷ 46
2. cos(25)
3. 48 - 73 - sin(100) + 73
故障排除
常见问题
-
"找不到或无法加载主类"
- 确保已安装Java运行环境
- 检查JAR文件是否完整
-
"权限被拒绝"
- 确保有写入output目录的权限
- 检查文件是否被其他程序占用
-
生成的题目重复
- 程序内置去重机制,如仍有重复,请检查去重器逻辑
-
索引越界
- 合法在尾部追加
版本历史
- v1.0 (2025-09-26)
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
- v2.0 (2025-09-28)
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
- 增加小学操作数至少为2,表达式答案不出现负数
作者
赵文琪 - 项目开发者