diff --git a/doc/中小学数学卷子自动生成程序 - Java版本说明文档.md b/doc/中小学数学卷子自动生成程序 - Java版本说明文档.md new file mode 100644 index 0000000..62e39b3 --- /dev/null +++ b/doc/中小学数学卷子自动生成程序 - Java版本说明文档.md @@ -0,0 +1,234 @@ + + +# 中小学数学卷子自动生成程序 - Java版本说明文档 + +## 项目概述 + +这是一个基于Java开发的中小学数学卷子自动生成程序,支持小学、初中和高中三个年级的数学题目生成,具有用户登录验证、题目生成、年级切换和试卷保存等功能。 + +## 功能特性 + +### 1. 用户登录验证 + +- 支持小学、初中和高中各三个预设账号 +- 用户名和密码用空格隔开输入 +- 登录成功显示当前选择的出题年级 +- 登录失败提示重新输入 + +### 2. 题目生成 + +- **题目数量**:10-30题(或输入-1退出登录) +- **操作数数量**:1-5个 +- **操作数范围**:1-100 +- **题目去重**:同一老师的题目不会与历史题目重复 + +### 3. 年级切换 + +- 支持在登录状态下切换出题年级 +- 输入"切换为 XX"(XX为小学、初中、高中) +- 输入错误时提示重新输入 + +### 4. 试卷保存 + +- 按"年-月-日-时-分-秒.txt"格式命名 +- 每个账号独立文件夹 +- 题目有序号,每题间空一行 + +## 年级难度要求 + +### 小学 + +- 四则运算,结果非负 + +### 初中 + +- 包含平方、开根号运算 +- 题目中至少有一个平方或开根号运算符 + +### 高中 + +- 包含三角函数(sin, cos, tan) +- 题目中至少有一个三角函数 + +## 使用流程 + +### 登录界面 + +``` +== 中小学数学卷子自动生成程序 == +欢迎你 张三1 小学 +输入1开始出题 +输入2切换出题年级 +输入-1退出登录,返回开始界面 +``` + + + +### 出题流程 + +1. 输入1开始出题 +2. 输入题目数量(10-30) +3. 系统生成对应年级难度的题目 +4. 题目显示并自动保存 + +### 切换年级 + +例如,切换为初中 + +``` +2 +请输入想要切换的出题年级,输入-1返回操作界面 +初中 +已成功修改出题年级为初中,输入-1返回操作界面 +``` + +### 登录过程 + + + +``` +请输入用户名和密码(用空格分隔): +张三1 123 +登录成功!当前选择为小学出题 + +== 中小学数学卷子自动生成程序 == +欢迎你 张三1 小学 +输入1开始出题 +输入2切换出题年级 +输入-1退出登录,返回开始界面 +``` + + + +### 题目生成示例 + + + +``` +输入1开始出题 +准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户): +10 + +正在为小学出题,请在10-30的范围内输入出题数目: + +1. 92 + 96 - (58 / 55 * 62) + +2. (24 * 13) * 34 + 15 + +3. 68 - 55 - 57 / 85 / 71 + +... + +已出题完成,输入-1返回操作界面 +``` + + + +### 年级切换 + + + +``` +输入2切换出题年级 +请输入想要切换的出题年级(小学、初中、高中): +初中 +已成功修改出题年级为初中 +``` + + + +## 文件保存格式 + +### 目录结构 + +``` +User-problem/ +├── 张三1/ +│ ├── 2025-09-29-22-30-45.txt +│ └── 2025-09-29-22-35-20.txt +├── 李四2/ +│ └── 2025-09-29-22-40-15.txt +``` + + + +### 文件内容格式 + +``` +1. 92 + 96 - (58 / 55 * 62) + +2. (24 * 13) * 34 + 15 + +3. 68 - 55 - 57 / 85 / 71 + +... +``` + +## 系统架构 + +### 核心类说明 + +#### 1. Main.java + +- **功能**: 程序主入口 +- **职责**: 启动用户登录流程 + +#### 2. User.java + +- **功能**: 用户管理类 +- **职责**: + - 处理用户登录验证 + - 管理用户账户信息(用户名、密码、年级) + - 初始化预设用户数据 + +#### 3. ProblemManager.java + +- **功能**: 问题管理类 +- **职责**: + - 显示主界面 + - 处理用户交互 + - 协调题目生成流程 + - 提供年级切换功能 + +#### 4. 题目生成器接口和实现类 + +**MathProblemGenerator.java** (接口) + +- 定义题目生成器的统一接口 + +**PrimarySchoolProblemGenerator.java** (小学题目生成器) + +- 生成包含基本四则运算的题目 + +**MiddleSchoolProblemGenerator.java** (初中题目生成器) + +- 在小学基础上增加平方(²)和开方(√)运算 + +**HighSchoolProblemGenerator.java** (高中题目生成器) + +- 在初中基础上增加三角函数(sin, cos, tan)运算 + +#### 5. 工具类 + +**ExpressionJudge.java** + +- **功能**: 表达式验证工具 +- **职责**: 检测数学表达式中的语法错误和语义错误 + +**FileManager.java** + +- **功能**: 文件管理工具 +- **职责**: 处理用户题目文件的读写操作 + +**TimeManager.java** + +- **功能**: 时间管理工具 +- **职责**: 提供时间戳生成功能 + +## 已知问题:除零错误 + +### 问题描述 + +在生成初中高中题目时,存在**生成除零式子**的风险。 + +在生成初中高中题目时,生成有5个操作数的式子概率比较低,可能一次出题不会有,要多次出题才会出现。 \ No newline at end of file