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

数学题目生成器 (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. 程序将自动启动

方法二:命令行运行

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 .

添加新的难度级别

  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联系我们。