diff --git a/doc/read.md b/doc/read.md index e69de29..64f0257 100644 --- a/doc/read.md +++ b/doc/read.md @@ -0,0 +1,173 @@ +中小学数学卷子自动生成系统 - 项目说明文档 + +## 项目概述 + +本项目是一个基于 Java 开发的中小学数学卷子自动生成系统,为不同学段的数学教师提供智能化的题目生成和试卷管理服务。系统支持小学、初中和高中三个难度级别,具备完整的用户认证、题目生成、历史记录和文件管理功能。 + +## 系统架构 + +### 核心类设计 + +| 类名 | 职责描述 | +| ------------------- | ------------------------------------------ | +| `Main` | 程序主入口,负责用户交互和流程控制 | +| `User` | 用户实体类,存储用户信息和权限 | +| `DifficultyLevel` | 难度级别枚举,定义小学、初中、高中三个等级 | +| `QuestionGenerator` | 题目生成器,根据难度生成不同类型的数学题目 | +| `QuestionPaper` | 试卷类,管理题目集合和格式化输出 | +| `FileManager` | 文件管理器,负责试卷的保存和目录管理 | + +### 类关系图 + +``` +User → DifficultyLevel + ↓ +Main → QuestionGenerator → QuestionPaper → FileManager +``` + +## 功能特性 + +### 1. 分层用户系统 +- **小学用户**: 张三1, 张三2, 张三3 (密码: 123) +- **初中用户**: 李四1, 李四2, 李四3 (密码: 123) +- **高中用户**: 王五1, 王五2, 王五3 (密码: 123) + +### 2. 智能题目生成 +- **小学题目**: 基础四则运算(+、-、×、÷),支持括号 +- **初中题目**: 在小学基础上增加平方(²)和开根号(√)运算 +- **高中题目**: 在初中基础上增加三角函数(sin、cos、tan) + +### 3. 高级去重机制 +- 实时检测当前会话中已生成的题目 +- 自动加载用户历史题目并进行去重检查 +- 防止题目重复生成,确保试卷多样性 + +### 4. 灵活的操作模式 +- 支持动态切换难度级别("切换为小学/初中/高中") +- 题目数量可配置(10-30题) +- 支持用户退出重新登录(输入-1) + +### 5. 智能文件管理 +- 按用户名分目录存储试卷文件 +- 时间戳命名格式:`yyyy-MM-dd-HH-mm-ss.txt` +- 自动创建目录结构,确保文件组织有序 + +## 核心算法说明 + +### 题目生成策略 + +```java +// 基础题目生成 +private String generateBasicQuestion(int operandCount, String[] operators, boolean useParentheses) + +// 难度特定增强 +private String addPowerOrRoot(String originalQuestion) // 初中:平方/开根 +private String addTrigonometricFunction(String originalQuestion) // 高中:三角函数 +``` + +### 去重算法 +```java +// 双重检查机制 +while (generatedQuestions.contains(question) || userHistoryQuestions.contains(question)) { + // 重新生成题目 +} +``` + +## 使用指南 + +### 启动程序 +```bash +java Main +``` + +### 操作流程示例 + +1. **用户登录** + ``` + 请输入用户名和密码(用空格隔开): + 张三1 123 + 当前选择为小学出题 + ``` + +2. **生成试卷** + ``` + 准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录): + 15 + 试卷已保存至: papers/张三1/2025-09-28-14-30-25.txt + 已生成15道小学数学题目 + ``` + +3. **切换难度** + + ``` + 切换为初中 + 准备生成初中数学题目,请输入生成题目数量 +``` + +4. **退出系统** + + ``` + -1 + 请输入用户名和密码(用空格隔开): + ``` + +## 文件存储结构 + +``` +项目根目录/ +├── papers/ # 试卷存储根目录 +│ ├── 张三1/ # 用户个人目录 +│ │ ├── 2025-01-20-10-15-30.txt +│ │ └── 2025-01-20-14-20-45.txt +│ ├── 李四1/ +│ │ └── 2025-01-20-11-25-10.txt +│ └── 王五1/ +│ └── 2025-01-20-09-10-20.txt +├── DifficultyLevel.java +├── FileManager.java +├── Main.java +├── QuestionGenerator.java +├── QuestionPaper.java +└── User.java +``` + +## 技术特色 + +### 1. 面向对象设计 +- 清晰的类职责分离 +- 枚举类型管理难度级别 +- 实体类封装核心数据 + +### 2. 算法优化 +- 智能题目生成,确保符合难度要求 +- 高效去重算法,避免重复题目 +- 随机数合理分布,保证题目多样性 + +### 3. 用户体验 +- 中文界面,操作直观 +- 实时反馈,错误提示明确 +- 历史记录持久化,跨会话保持 + +### 4. 健壮性保障 +- 输入验证和异常处理 +- 文件操作安全可靠 +- 内存管理优化 + +## 扩展性设计 + +系统采用模块化设计,便于后续扩展: +- 可轻松添加新的难度级别 +- 支持扩展新的数学运算类型 +- 文件存储格式易于解析和处理 +- 用户管理系统可集成数据库 + +## 环境要求 + +- **JDK版本**: 17 +- **编码格式**: UTF-8 +- **操作系统**: Windows +- **存储空间**: 至少 10MB 可用空间 + +--- + +*本系统专为中小学数学教育设计,致力于为教师提供高效、便捷的试卷生成工具。* \ No newline at end of file diff --git a/src/untitled1.iml b/src/untitled1.iml deleted file mode 100644 index b107a2d..0000000 --- a/src/untitled1.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/src/untitled1.jar b/src/untitled1.jar deleted file mode 100644 index 544ef05..0000000 Binary files a/src/untitled1.jar and /dev/null differ