diff --git a/README.md b/README.md deleted file mode 100644 index d67864c..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# relentless - diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..3360855 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,111 @@ +# 中小学数学卷子自动生成程序 + +## 项目简介 +这是一个命令行界面的数学题目自动生成程序,专为小学、初中和高中数学老师设计。程序可以根据不同难度级别(小学、初中、高中)自动生成符合相应教学要求的数学题目,并支持题目查重功能,确保每位老师生成的题目不会重复。 + +## 功能特点 + +### 1. 用户登录验证 +- 支持小学、初中和高中三个级别的用户账号 +- 每个级别预设3个账号,密码统一为123 +- 登录成功后显示当前选择的出题级别 + +### 2. 题目生成功能 +- 根据账号类型自动选择对应的难度级别生成题目 +- 支持自定义生成题目数量(范围:10-30题) +- 操作数范围:1-100 +- 操作数个数:2-5个 + +### 3. 多难度级别支持 +- **小学**:仅包含加减乘除四则运算和括号 +- **初中**:在小学基础上增加平方和开根号运算,且每道题至少包含一个平方或开根号 +- **高中**:在初中基础上增加三角函数(sin、cos、tan),且每道题至少包含一个三角函数 + +### 4. 题目类型切换 +- 支持在登录状态下切换不同难度级别的题目生成 +- 输入格式:`切换为 小学/初中/高中` + +### 5. 题目查重功能 +- 自动检测新生成的题目是否与当前用户历史生成的题目重复 +- 确保每个用户生成的题目都是唯一的 + +### 6. 文件保存功能 +- 题目以文本文件形式保存 +- 文件名格式:`年-月-日-时-分-秒.txt` +- 每个用户有独立的文件夹存储题目 +- 题目包含题号,每题之间空一行 + +## 使用说明 + +### 登录 +1. 运行程序后,输入用户名和密码(用空格分隔) +2. 验证成功后,系统提示当前选择的出题级别 +3. 验证失败则提示重新输入 + +### 生成题目 +1. 登录成功后,系统提示输入题目数量 +2. 输入10-30之间的数字生成对应数量的题目 +3. 输入-1退出当前用户,返回登录界面 + +### 切换难度 +- 在任何提示输入题目数量的界面,输入`切换为 小学/初中/高中`即可切换题目难度 +- 切换成功后,系统会提示新的难度级别 + +## 账号列表 + +| 级别 | 用户名 | 密码 | +|------|--------|------| +| 小学 | 张三1 | 123 | +| 小学 | 张三2 | 123 | +| 小学 | 张三3 | 123 | +| 初中 | 李四1 | 123 | +| 初中 | 李四2 | 123 | +| 初中 | 李四3 | 123 | +| 高中 | 王五1 | 123 | +| 高中 | 王五2 | 123 | +| 高中 | 王五3 | 123 | + +## 项目结构 +``` +quesproject/ +├── src/ # 源代码目录 +│ ├── Main.java # 程序入口类 +│ ├── User.java # 用户类 +│ ├── MathQuestion.java # 数学题目类 +│ ├── QuestionGenerator.java # 题目生成器 +│ ├── QuestionStrategy.java # 题目策略接口 +│ ├── QuestionStrategyFactory.java # 策略工厂类 +│ ├── ElementaryQuestionStrategy.java # 小学题目策略 +│ ├── MiddleSchoolQuestionStrategy.java # 初中题目策略 +│ ├── HighSchoolQuestionStrategy.java # 高中题目策略 +│ └── FileUtils.java # 文件操作工具类 +├── doc/ # 文档目录 +│ └── README.md # 项目说明文档 +├── [用户名]/ # 用户题目文件夹(运行时自动创建) +``` + +## 技术实现 + +### 设计模式 +- **工厂模式**:通过QuestionStrategyFactory创建不同级别的题目生成策略 +- **策略模式**:通过QuestionStrategy接口及其实现类实现不同难度级别的题目生成 + +### 核心功能实现 +1. **用户验证**:通过预设的账号列表进行验证 +2. **题目生成**:根据不同难度级别使用不同的策略生成题目 +3. **查重功能**:读取用户历史题目文件,确保新生成的题目不重复 +4. **文件管理**:自动创建用户文件夹,按指定格式保存题目文件 + +## 运行环境 +- Java 8及以上版本 +- 支持Windows、Linux、macOS等操作系统 + +## 编译运行 +1. 编译:`javac -d out src/*.java` +2. 运行:`java -cp out Main` + +## 注意事项 +1. 题目数量必须在10-30之间,否则会提示重新输入 +2. 切换难度时,请确保输入格式正确:`切换为 级别名称` +3. 程序会在当前目录下创建用户文件夹存储题目文件 +4. 为保证查重功能正常,请勿手动修改用户文件夹中的题目文件格式 \ No newline at end of file diff --git a/ElementaryQuestionStrategy.java b/src/ElementaryQuestionStrategy.java similarity index 100% rename from ElementaryQuestionStrategy.java rename to src/ElementaryQuestionStrategy.java diff --git a/FileUtils.java b/src/FileUtils.java similarity index 100% rename from FileUtils.java rename to src/FileUtils.java diff --git a/HighSchoolQuestionStrategy.java b/src/HighSchoolQuestionStrategy.java similarity index 100% rename from HighSchoolQuestionStrategy.java rename to src/HighSchoolQuestionStrategy.java diff --git a/Main.java b/src/Main.java similarity index 100% rename from Main.java rename to src/Main.java diff --git a/MathQuestion.java b/src/MathQuestion.java similarity index 100% rename from MathQuestion.java rename to src/MathQuestion.java diff --git a/MiddleSchoolQuestionStrategy.java b/src/MiddleSchoolQuestionStrategy.java similarity index 100% rename from MiddleSchoolQuestionStrategy.java rename to src/MiddleSchoolQuestionStrategy.java diff --git a/QuestionGenerator.java b/src/QuestionGenerator.java similarity index 100% rename from QuestionGenerator.java rename to src/QuestionGenerator.java diff --git a/QuestionRepository.java b/src/QuestionRepository.java similarity index 100% rename from QuestionRepository.java rename to src/QuestionRepository.java diff --git a/QuestionStrategy.java b/src/QuestionStrategy.java similarity index 100% rename from QuestionStrategy.java rename to src/QuestionStrategy.java diff --git a/QuestionStrategyFactory.java b/src/QuestionStrategyFactory.java similarity index 100% rename from QuestionStrategyFactory.java rename to src/QuestionStrategyFactory.java diff --git a/User.java b/src/User.java similarity index 100% rename from User.java rename to src/User.java