You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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