# MathPaperGenerator # 中小学数学卷子自动生成器 ## 📌 项目简介 本项目是一个基于 **Java** 编写的命令行应用程序,用于自动生成中小学数学试卷。 支持 **小学、初中、高中** 三个难度等级,能根据用户登录身份自动选择题目范围,并确保生成的题目不会与已有题库重复。 --- ## 🚀 功能特点 - **用户登录系统**:内置预设账号,支持不同年级用户登录。 - **自动出题**:根据选择的年级生成对应难度的数学题目。 - **难度分类**: - 小学:四则运算(+ - * /),可包含括号; - 初中:包含平方 `^2` 或开方 `sqrt()`; - 高中:包含三角函数 `sin / cos / tan`。 - **去重机制**:避免与已有题目重复。 - **试卷保存**:生成的试卷会自动保存到用户专属目录,按时间戳命名。 - **灵活交互**: - 输入 `-1` 可退出登录并切换用户; - 输入 `切换为小学/初中/高中` 可动态切换出题等级。 --- ## 📂 项目结构 ├── Main.java # 程序入口 ├── Assign.java # 调度核心逻辑,负责用户登录和功能调用 ├── Function.java # 用户交互与出题数量输入处理 ├── Create.java # 调用生成器并保存试卷 ├── QuestionGenerator.java # Generator的父类 ├── Generator.java # 随机数学题生成器(小学/初中/高中) ├── LoadFile.java # 读取用户已有题目,避免重复 ├── Save.java # 保存生成的试卷到本地 ├── Login.java # 登录系统,包含账户和等级 └── LanguageSwitch.java # 等级与中文互转工具类 --- ## 🔑 核心类与方法 ### `Main` - 程序入口,调用 `Assign.assign()`。 ### `Assign` - 控制流程:循环执行登录 → 出题 → 保存。 ### `Function` - 与用户交互:输入题目数量、切换等级、退出登录。 - 调用 `Create.create()` 生成题目。 ### `Create` - 调用 `Generator.QuestionGenerator` 生成试卷。 - 调用 `Save.savePaper()` 保存结果。 ### `Generator` - 数学题生成器: - 小学:四则运算; - 初中:平方 / 开根号; - 高中:三角函数。 - 保证生成题目不重复。 ### `LoadFile` - 读取用户已有试卷文件,按题号分割并去重。 ### `Save` - 将生成的试卷保存到 `data/用户名/` 文件夹。 - 文件命名规则:`yyyy-MM-dd-HH-mm-ss.txt`。 ### `Login` - 内置账号系统: - 小学:张三1/2/3(密码 123); - 初中:李四1/2/3(密码 123); - 高中:王五1/2/3(密码 123)。 - 校验用户名与密码,返回用户等级。 ### `LanguageSwitch` - 提供 `Level` 与中文之间的双向转换。 --- ## 🛠 使用方法 ### `1. jdk版本` - openjdk version "23.0.1" ### `2. 编译方法` - java -jar MathPaperGenerator.jar