From 03aee891b4691a9623904be5b91c96f9d1ea4ceb Mon Sep 17 00:00:00 2001
From: liq <3403517738@qq.com>
Date: Mon, 29 Sep 2025 18:48:05 +0800
Subject: [PATCH] 9-29
---
doc/read.md | 173 ++++++++++++++++++++++++++++++++++++++++++++++
src/untitled1.iml | 11 ---
src/untitled1.jar | Bin 11680 -> 0 bytes
3 files changed, 173 insertions(+), 11 deletions(-)
delete mode 100644 src/untitled1.iml
delete mode 100644 src/untitled1.jar
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 544ef0541cc71f29eef3070631d8de54d8899827..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11680
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
YmV^AQ!2|(;{eAKOjwi)Ga%qtN1FXbCRsaA1
--
2.34.1