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.

161 lines
4.3 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.

# 数学试卷生成器 (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. 添加图形界面版本
这个程序是一个完整的数学试卷生成解决方案,具有良好的可扩展性和维护性。