中小学数学卷子自动生成系统 - 项目说明文档 ## 项目概述 本项目是一个基于 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 可用空间 --- *本系统专为中小学数学教育设计,致力于为教师提供高效、便捷的试卷生成工具。 ```