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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 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