From 57b0b5ea16de19974198341a51ce5146af1dd487 Mon Sep 17 00:00:00 2001 From: 202326010410 <3252818245@qq,com> Date: Sun, 28 Sep 2025 23:16:15 +0800 Subject: [PATCH 1/2] cs --- doc/README.md | 264 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 263 insertions(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index b9bb36d..2f52127 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,2 +1,264 @@ -# ERICPROJECT +# 中小学数学卷子自动生成程序 + +> 专为数学教师打造的智能试卷生成解决方案 + + +## 项目简介 + +🎯 **中小学数学卷子自动生成程序**是一个专为中小学数学老师设计的智能试卷生成系统。系统能够根据不同学段(小学、初中、高中)自动生成相应难度的数学题目,并保存为规范的试卷文件。 + +## 功能特性 + +### 1. 🔐 用户认证系统 +- 预设小学、初中、高中各三个教师账号 +- 支持用户名密码登录验证 +- 登录后显示当前学段类型 + +### 2. 🎲 智能题目生成 +- **小学题目**:基础四则运算,保证减法不产生负数,随机按规则添加括号 +- **初中题目**:包含平方和开方运算 +- **高中题目**:包含三角函数运算 +- 操作数范围:1-100 +- 操作数数量:1-5个 +- 题目数量:10-30道 + +### 3. 🔍 题目查重机制 +- 自动检测历史生成的题目 +- 确保新生成的题目不与已有题目重复 + +### 4. 🔄 学段切换功能 +- 支持登录状态下切换出题学段 +- 实时更新出题难度 + +### 5. 💾 文件管理 +- 按用户分目录存储试卷 +- 文件名格式:`年-月-日-时-分-秒.txt` +- 题目格式规范,包含题号和空行 + +## 文件结构 + +``` +项目根目录/ +├── AccountManager.java +├── BaseQuestionGenerator.java +├── Constants.java +├── FileManager.java +├── HighQuestionGenerator.java +├── MathExamGenerator.java +├── MiddleQuestionGenerator.java +├── PrimaryQuestionGenerator.java +└── output/ + ├── 张三1/ + ├── 李四1/ + └── 王五1/ +``` +## 系统架构 + +### 核心类说明 + +#### 1. `MathExamGenerator` - 程序入口 +**主要职责**:系统主控制器,协调各个模块的工作流程 + +**核心函数**: +- `main(String[] args)` - 程序入口点 +- `run()` - 主循环控制 +- `processLogin()` - 处理用户登录 + +#### 2. `AccountManager` - 账号管理 +**主要职责**:管理用户账户信息和身份验证 + +**核心函数**: +- `authenticate(String username, String password)` - 用户认证 +- `switchStage(String newStage)` - 切换学段 +- `getCurrentStage()` - 获取当前学段 + +#### 3. `BaseQuestionGenerator` - 题目生成基类 +**主要职责**:定义题目生成的通用接口和公共功能 + +**核心函数**: +- `generateQuestion()` - 生成单个题目 +- `checkDuplicate(String question)` - 检查题目重复 +- `generateOperands()` - 生成操作数 + +#### 4. 具体题目生成器 +- `PrimaryQuestionGenerator` - 小学题目生成 +- `MiddleQuestionGenerator` - 初中题目生成 +- `HighQuestionGenerator` - 高中题目生成 + +#### 5. `FileManager` - 文件管理 +**主要职责**:处理试卷文件的保存和读取 + +**核心函数**: +- `saveExamPaper(String username, List questions)` - 保存试卷 +- `loadHistoryQuestions(String username)` - 加载历史题目 +- `getUserOutputPath(String username)` - 获取用户输出路径 + +## 🚀 使用说明 + +### 运行环境 +- JDK 版本:JDK 25 及以上 +- 支持系统:Windows(Win10/Win11) +- 编码要求:windows需要切换编码 + +## ⚙️ 环境配置 + +### Java环境检查 + +在运行程序前,请确保您的系统已正确安装Java环境: + +```bash +# 检查Java运行时环境 +java -version + +# 检查Java编译器 +javac -version +``` + +✅ **要求**:确保两个命令都能正确显示版本信息,且版本为JDK 8及以上。 + +### 字符编码设置(重要) + +由于程序包含中文字符,需要正确设置编码: + +#### 在Windows PowerShell中: +```powershell +# 设置UTF-8编码 +[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 + +# 然后运行程序 +cd .. +java -jar school.jar +``` + +#### 在CMD命令提示符中: +```cmd +# 设置UTF-8编码 +chcp 65001 + +# 然后运行程序 +cd .. +java -jar school.jar +``` + +⚠️ **注意**:如果未正确设置编码,可能会导致中文字符显示乱码。 + + +### 操作流程示例 + +1. **登录系统** + ``` + 请输入用户名 密码(用空格分隔):张三1 123 + 当前选择为 小学 出题 + ``` + +2. **生成题目** + ``` + 准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):15 + 试卷已保存:output/张三1/2025-09-28-14-30-25.txt + ``` + +3. **切换学段** + ``` + 准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):切换为初中 + 当前选择为 初中 出题 + ``` + +4. **退出登录** + ``` + 准备生成 初中 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):-1 + ``` + +### 📝 题目示例 + +**小学题目:** +``` +第1题: 45 + 23 +第2题: ( 67 - 34 ) * 2 +``` + +**初中题目:** +``` +第1题: 25 + sqrt( 16 ) * 3 +第2题: ( 5^2 ) - sqrt( 9 ) +``` + +**高中题目:** +``` +第1题: sin( 30 ) + 45 * 2 +第2题: cos( 45 ) * ( 3^2 ) - tan( 30 ) +``` + +## 技术特点 + +1. **面向对象设计**:清晰的类职责分离 +2. **可扩展性**:易于添加新的题目类型 +3. **健壮性**:完善的异常处理和输入验证 +4. **一致性**:统一的代码风格和命名规范 +5. **文档完整**:详细的代码注释 + + + +## 开发环境 + +- Java 8+ +- 标准Java库,无外部依赖 + + +## 👥 预设账户 + +| 账户类型 | 账户 | 密码 | 备注 | +|---------|--------|------|------| +| 小学 | 张三1 | 123 | | +| 小学 | 张三2 | 123 | | +| 小学 | 张三3 | 123 | | +| 初中 | 李四1 | 123 | | +| 初中 | 李四2 | 123 | | +| 初中 | 李四3 | 123 | | +| 高中 | 王五1 | 123 | | +| 高中 | 王五2 | 123 | | +| 高中 | 王五3 | 123 | | + +💡 **提示**:请使用上表中的账户和密码进行登录测试 + +## ⚠️ 注意事项 + +1. 首次运行会自动创建output目录 +2. 题目数量必须在10-30之间 +3. 切换学段时需输入完整名称(小学/初中/高中) +4. 系统会确保同一用户的题目不重复 +5. 如无法生成足够题目,请删除部分历史文件或减少生成数量 +6. 确保您的命令提示符使用UTF-8编码,以正确显示中文 + + +# 开发规范与优化建议 + +## 编码标准 +- **架构设计**:采用面向对象思想,确保类结构清晰、职责明确 +- **代码规范**:方法长度控制在40行内,保持代码简洁性 +- **命名约定**:遵循Java驼峰命名规则,确保名称表意明确 +- **注释要求**:为核心方法和复杂算法提供完整注释说明 + +## 异常处理 +- **输入校验**:对用户输入数据进行严格的格式和有效性验证 +- **异常管理**:合理使用异常处理机制捕获运行时错误 +- **用户提示**:设计友好的错误提示信息,提升用户体验 + +## 功能拓展方向 +- **难度分级**:在各学段内实现题目难度分层设计 +- **题型丰富**:拓展几何、代数等多元化题目类型 +- **批量操作**:支持试卷批量生成功能 +- **个性化设置**:提供试卷模板自定义选项 + +## 技术升级路径 +- **数据存储**:引入数据库管理系统存储用户和题目数据 +- **界面优化**:开发Web端界面,改善用户交互体验 +- **算法改进**:优化题目生成算法,提升题目质量 +- **多语言支持**:实现系统界面国际化 + +## 🔧 维护说明 + +如需修改系统参数,请编辑`Constants.java`文件: +- 题目数量范围 +- 操作数范围 +- 输出目录等 \ No newline at end of file -- 2.34.1 From 8bed76cddbe507a8b5dd5b852f38ac163e6819d9 Mon Sep 17 00:00:00 2001 From: 202326010410 <3252818245@qq,com> Date: Sun, 28 Sep 2025 23:19:15 +0800 Subject: [PATCH 2/2] cs --- doc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index 2f52127..ce22144 100644 --- a/doc/README.md +++ b/doc/README.md @@ -90,7 +90,7 @@ **主要职责**:处理试卷文件的保存和读取 **核心函数**: -- `saveExamPaper(String username, List questions)` - 保存试卷 +- `saveExamPaper(String username, List questions)` - 保存试卷(相对路径,与被执行文件同级,每个账号一个文件夹) - `loadHistoryQuestions(String username)` - 加载历史题目 - `getUserOutputPath(String username)` - 获取用户输出路径 -- 2.34.1