|
|
|
|
@ -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 可用空间
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
*本系统专为中小学数学教育设计,致力于为教师提供高效、便捷的试卷生成工具。*
|