|
|
# 数学题目生成系统项目说明文档
|
|
|
|
|
|
## 1. 项目概述
|
|
|
|
|
|
### 1.1 项目名称
|
|
|
中小学数学卷子自动生成程序 (Math Puzzle System)
|
|
|
|
|
|
### 1.2 项目简介
|
|
|
数学题目生成系统是一个基于Java开发的教育类应用程序,专门用于生成不同教育级别的数学题目。系统支持小学、初中和高中三个级别的题目生成,并提供用户管理、题目去重、试卷保存等功能。
|
|
|
|
|
|
### 1.3 项目目标
|
|
|
- 为不同教育级别的学生提供定制化的数学练习题目
|
|
|
- 避免生成重复题目,提高学习效率
|
|
|
- 提供用户管理功能,支持多用户使用
|
|
|
- 生成的题目可保存为文件,便于打印和复习
|
|
|
|
|
|
## 2. 功能特性
|
|
|
|
|
|
### 2.1 用户管理
|
|
|
- **用户注册/登录**:支持现有用户登录系统
|
|
|
- **用户级别切换**:支持在小学、初中、高中三个级别间动态切换
|
|
|
- **个性化存储**:为每个用户创建独立的目录存储历史题目
|
|
|
|
|
|
### 2.2 题目生成
|
|
|
- **小学级别**:生成包含四则运算和括号的简单数学题目,且保证运算结果不会出现负数
|
|
|
- **初中级别**:生成包含四则运算、平方、开根号的数学题目
|
|
|
- **高中级别**:生成包含四则运算和三角函数(sin、cos、tan)的数学题目
|
|
|
|
|
|
### 2.3 题目去重
|
|
|
- **历史题目检查**:自动检查用户历史题目,避免生成与前述txt文件中的重复题目
|
|
|
- **会话内去重**:防止同一次生成过程中出现重复题目
|
|
|
|
|
|
### 2.4 文件管理
|
|
|
- **自动目录创建**:为每个用户创建专属目录
|
|
|
- **时间戳命名**:生成的试卷以时间戳命名,确保唯一性
|
|
|
- **格式化输出**:题目按照标准格式:前有题号,题干之间添加一行间隔,便于阅读
|
|
|
|
|
|
## 3. 系统架构
|
|
|
|
|
|
### 3.1 核心模块
|
|
|
|
|
|
#### 3.1.1 控制器层 (Controller)
|
|
|
- `StartController`:系统主控制器,处理用户交互和系统流程控制
|
|
|
|
|
|
#### 3.1.2 服务层 (Service)
|
|
|
- `QuestionGenerator`:题目生成器接口
|
|
|
- `PrimarySchoolGenerator`:小学题目生成器
|
|
|
- `JuniorHighGenerator`:初中题目生成器
|
|
|
- `SeniorHighGenerator`:高中题目生成器
|
|
|
- `CaculatePrimary`:小学数学表达式计算器(保证结果不出现负数)
|
|
|
- `FileHandler`:文件处理器
|
|
|
- `QuestionDeduplicator`:题目去重器
|
|
|
|
|
|
#### 3.1.3 实体层 (Entity)
|
|
|
- `User`:用户实体类,包含用户名、密码和级别信息
|
|
|
|
|
|
### 3.2 交互流程
|
|
|
1. 用户启动程序
|
|
|
2. 系统要求用户登录
|
|
|
3. 用户选择题目数量和级别
|
|
|
4. 系统生成相应级别的数学题目
|
|
|
5. 题目去重检查
|
|
|
6. 生成结果展示并保存到文件
|
|
|
|
|
|
## 4. 使用说明
|
|
|
|
|
|
### 4.1 操作系统要求
|
|
|
- Windows 10/11
|
|
|
|
|
|
### 4.2 启动程序
|
|
|
```bash
|
|
|
java -jar .\mathpuzzle.jar
|
|
|
```
|
|
|
|
|
|
### 4.3 cmd/powershell编码要求
|
|
|
```bash
|
|
|
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
|
```
|
|
|
|
|
|
### 4.4 JDK/JRE版本要求
|
|
|
- JDK/JRE 17或更高版本
|
|
|
|
|
|
|
|
|
### 4.5 用户操作
|
|
|
1. **登录**:输入用户名和密码进行登录
|
|
|
2. **输入题目数量**:输入10-30之间的数字(输入-1退出当前用户)
|
|
|
3. **切换级别**:输入"切换为XX"指令切换到相应级别(如"切换为初中")
|
|
|
4. **查看结果**:系统生成题目并显示,同时保存到用户目录
|
|
|
|
|
|
### 4.6 文件结构
|
|
|
```
|
|
|
./
|
|
|
├── [用户名]/
|
|
|
│ ├── 2024-01-01-12-00-00.txt
|
|
|
│ ├── 2024-01-01-12-05-30.txt
|
|
|
│ └── ...
|
|
|
```
|
|
|
|
|
|
## 5. 技术特点
|
|
|
|
|
|
### 5.1 设计模式
|
|
|
- **策略模式**:不同级别的题目生成器实现统一接口
|
|
|
- **工厂模式**:根据用户级别动态创建相应的题目生成器
|
|
|
|
|
|
### 5.2 算法特色
|
|
|
- **双栈算法**:用于计算小学级别的数学表达式
|
|
|
- **随机生成算法**:确保题目多样性和随机性
|
|
|
- **智能去重算法**:避免生成重复题目
|
|
|
|
|
|
### 5.3 代码规范
|
|
|
- 遵循Google Java编码规范
|
|
|
- 完整的Javadoc文档
|
|
|
- 清晰的包结构和类设计
|
|
|
|
|
|
## 6. 系统要求
|
|
|
|
|
|
### 6.1 运行环境
|
|
|
- Java 8或更高版本
|
|
|
- 至少50MB可用磁盘空间(用于存储题目文件)
|
|
|
|
|
|
### 6.2 权限要求
|
|
|
- 需要文件读写权限(用于创建用户目录和保存题目文件)
|
|
|
|
|
|
## 7. 扩展性说明
|
|
|
|
|
|
### 7.1 可扩展功能
|
|
|
- 支持更多教育级别的题目生成
|
|
|
- 添加更多数学运算符和函数
|
|
|
- 实现题目难度分级
|
|
|
- 增加图形界面支持
|
|
|
|
|
|
### 7.2 代码扩展
|
|
|
- 通过实现`QuestionGenerator`接口添加新的题目生成器
|
|
|
- 通过继承或修改现有生成器类调整题目生成规则
|
|
|
- 扩展用户实体类添加更多用户属性
|
|
|
|
|
|
## 8. 项目维护
|
|
|
|
|
|
### 8.1 代码维护
|
|
|
- 遵循单一职责原则,每个类只负责特定功能
|
|
|
- 使用接口编程,便于功能扩展和替换
|
|
|
- 完整的异常处理机制
|
|
|
|
|
|
### 8.2 版本管理
|
|
|
- 建议使用Git进行版本控制
|
|
|
- 遵循语义化版本控制规范
|
|
|
- 定期备份重要数据文件
|
|
|
|
|
|
## 9. 注意事项
|
|
|
|
|
|
1. 题目数量限制在10-30道之间,确保生成效率
|
|
|
2. 系统会自动过滤负数结果,确保题目合理性
|
|
|
3. 生成的题目文件会自动保存,建议定期清理过期文件
|
|
|
4. 初中和高中题目包含高级运算符,需要相应的数学知识
|
|
|
5. 设置循环上限,在无法生成完全不重复的题目时自动退出并给出错误信息
|
|
|
|
|
|
## 10. 联系方式
|
|
|
|
|
|
如需技术支持或功能定制,请联系项目维护者。
|
|
|
|
|
|
---
|
|
|
|
|
|
**版本**:1.0
|
|
|
**最后更新**:2025年
|
|
|
**文档状态**:正式版 |