|
|
# 数学试卷生成器 (Math Exam Generator)
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
这是一个基于Java的中小学数学试卷自动生成程序,支持小学、初中和高中三个不同难度级别的数学题目生成。程序包含用户认证、题目生成、文件管理等功能。
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
MathExamGenerator/
|
|
|
├── MathExamGenerator.java # 主程序文件
|
|
|
└── exams/ # 生成的试卷存储目录
|
|
|
├── zhangsan1/ # 用户个人目录
|
|
|
└── ...
|
|
|
```
|
|
|
|
|
|
## 核心类说明
|
|
|
|
|
|
### 1. User类
|
|
|
用户信息管理类,存储用户名、密码和用户类型。
|
|
|
|
|
|
### 2. QuestionGenerator抽象类
|
|
|
题目生成器的基类,定义了生成题目的通用方法。
|
|
|
|
|
|
### 3. 具体题目生成器
|
|
|
- **PrimaryQuestionGenerator**: 小学题目生成器(包含括号运算)
|
|
|
- **JuniorQuestionGenerator**: 初中题目生成器(包含平方和开方运算)
|
|
|
- **SeniorQuestionGenerator**: 高中题目生成器(包含三角函数运算)
|
|
|
|
|
|
### 4. AuthenticationManager类
|
|
|
用户认证管理,验证用户名和密码。
|
|
|
|
|
|
### 5. FileManager类
|
|
|
文件管理功能,包括题目保存和重复检查。
|
|
|
|
|
|
### 6. MathExamGenerator主类
|
|
|
程序入口,处理用户交互和流程控制。
|
|
|
|
|
|
## 编译说明
|
|
|
|
|
|
### 重要:编译时明确指定使用UTF-8编码
|
|
|
|
|
|
由于源代码中包含中文字符,在编译时必须指定UTF-8编码,否则会出现编码错误。
|
|
|
|
|
|
#### Windows系统编译命令:
|
|
|
```cmd
|
|
|
javac -encoding UTF-8 MathExamGenerator.java
|
|
|
```
|
|
|
|
|
|
#### Linux/Mac系统编译命令:
|
|
|
```bash
|
|
|
javac -encoding UTF-8 MathExamGenerator.java
|
|
|
```
|
|
|
|
|
|
#### 运行程序:
|
|
|
```cmd
|
|
|
java MathExamGenerator
|
|
|
```
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
### 用户认证系统
|
|
|
- 预置9个测试账户(小学、初中、高中各3个)
|
|
|
- 用户名格式:张三1/李四1/王五1,密码:123
|
|
|
- 支持用户登录和退出
|
|
|
|
|
|
### 题目生成功能
|
|
|
- **小学**: 2-4个操作数,可能包含括号
|
|
|
- **初中**: 包含平方(^2)和开方(√)运算
|
|
|
- **高中**: 包含三角函数(sin/cos/tan)运算
|
|
|
|
|
|
### 智能去重
|
|
|
- 检查当前会话中的重复题目
|
|
|
- 检查历史文件中的重复题目
|
|
|
- 最大尝试次数限制,避免无限循环
|
|
|
|
|
|
### 文件管理
|
|
|
- 按用户分目录存储试卷
|
|
|
- 使用时间戳命名文件
|
|
|
- 支持GBK编码保存(适合中文Windows环境)
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
### 1. 登录系统
|
|
|
```
|
|
|
请输入用户名和密码(用空格隔开):
|
|
|
张三1 123
|
|
|
当前选择为小学出题
|
|
|
```
|
|
|
|
|
|
### 2. 生成题目
|
|
|
```
|
|
|
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):
|
|
|
15
|
|
|
题目已保存到: exams/张三1/2024-01-20-14-30-25.txt
|
|
|
```
|
|
|
|
|
|
### 3. 切换题目类型
|
|
|
```
|
|
|
切换为初中
|
|
|
准备生成初中数学题目,请输入生成题目数量
|
|
|
```
|
|
|
|
|
|
### 4. 退出登录
|
|
|
```
|
|
|
输入-1将退出当前用户,重新登录
|
|
|
```
|
|
|
|
|
|
## 预置账户
|
|
|
|
|
|
| 用户类型 | 用户名 | 密码 | 说明 |
|
|
|
|---------|--------|------|------|
|
|
|
| 小学 | 张三1, 张三2, 张三3 | 123 | 生成小学题目 |
|
|
|
| 初中 | 李四1, 李四2, 李四3 | 123 | 生成初中题目 |
|
|
|
| 高中 | 王五1, 王五2, 王五3 | 123 | 生成高中题目 |
|
|
|
|
|
|
## 生成的题目示例
|
|
|
|
|
|
### 小学题目
|
|
|
```
|
|
|
1. 45 + (23 - 7)
|
|
|
2. 89 / 4 * 15
|
|
|
```
|
|
|
|
|
|
### 初中题目
|
|
|
```
|
|
|
1. 34 + 56^2 - √78
|
|
|
2. √25 * 16 + 9^2
|
|
|
```
|
|
|
|
|
|
### 高中题目
|
|
|
```
|
|
|
1. 45 + sin(30) * 67
|
|
|
2. cos(45) - 23 / tan(60)
|
|
|
```
|
|
|
|
|
|
## 技术特点
|
|
|
|
|
|
1. **面向对象设计**: 使用继承和多态实现不同难度的题目生成
|
|
|
2. **异常处理**: 完善的输入验证和错误处理
|
|
|
3. **文件操作**: 安全的文件读写操作,避免资源泄漏
|
|
|
4. **编码处理**: 正确处理中文字符编码问题
|
|
|
5. **用户体验**: 友好的命令行交互界面
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
1. **编码一致性**: 确保编辑器和编译环境使用相同的编码(推荐UTF-8)
|
|
|
2. **文件权限**: 确保程序有权限创建exams目录和文件
|
|
|
3. **输入验证**: 程序对用户输入进行了基本验证,但建议输入符合要求的数值
|
|
|
4. **性能考虑**: 题目数量较多时,去重检查可能较慢,但设置了最大尝试次数限制
|
|
|
|
|
|
## 扩展建议
|
|
|
|
|
|
1. 可以添加题目难度分级
|
|
|
2. 支持自定义题目模板
|
|
|
3. 添加题目答案生成和验证
|
|
|
4. 支持更多数学运算和函数
|
|
|
5. 添加图形界面版本
|
|
|
|
|
|
这个程序是一个完整的数学试卷生成解决方案,具有良好的可扩展性和维护性。 |