|
|
|
|
@ -0,0 +1,90 @@
|
|
|
|
|
# MathPaperGenerator
|
|
|
|
|
# 中小学数学卷子自动生成器
|
|
|
|
|
|
|
|
|
|
## 📌 项目简介
|
|
|
|
|
本项目是一个基于 **Java** 编写的命令行应用程序,用于自动生成中小学数学试卷。
|
|
|
|
|
支持 **小学、初中、高中** 三个难度等级,能根据用户登录身份自动选择题目范围,并确保生成的题目不会与已有题库重复。
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 🚀 功能特点
|
|
|
|
|
- **用户登录系统**:内置预设账号,支持不同年级用户登录。
|
|
|
|
|
- **自动出题**:根据选择的年级生成对应难度的数学题目。
|
|
|
|
|
- **难度分类**:
|
|
|
|
|
- 小学:四则运算(+ - * /),可包含括号;
|
|
|
|
|
- 初中:包含平方 `^2` 或开方 `sqrt()`;
|
|
|
|
|
- 高中:包含三角函数 `sin / cos / tan`。
|
|
|
|
|
- **去重机制**:避免与已有题目重复。
|
|
|
|
|
- **试卷保存**:生成的试卷会自动保存到用户专属目录,按时间戳命名。
|
|
|
|
|
- **灵活交互**:
|
|
|
|
|
- 输入 `-1` 可退出登录并切换用户;
|
|
|
|
|
- 输入 `切换为小学/初中/高中` 可动态切换出题等级。
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 📂 项目结构
|
|
|
|
|
├── Main.java # 程序入口
|
|
|
|
|
├── Assign.java # 调度核心逻辑,负责用户登录和功能调用
|
|
|
|
|
├── Function.java # 用户交互与出题数量输入处理
|
|
|
|
|
├── Create.java # 调用生成器并保存试卷
|
|
|
|
|
├── 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|