|
|
|
|
@ -0,0 +1,111 @@
|
|
|
|
|
# 中小学数学卷子自动生成程序
|
|
|
|
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
这是一个命令行界面的数学题目自动生成程序,专为小学、初中和高中数学老师设计。程序可以根据不同难度级别(小学、初中、高中)自动生成符合相应教学要求的数学题目,并支持题目查重功能,确保每位老师生成的题目不会重复。
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
|
|
|
### 1. 用户登录验证
|
|
|
|
|
- 支持小学、初中和高中三个级别的用户账号
|
|
|
|
|
- 每个级别预设3个账号,密码统一为123
|
|
|
|
|
- 登录成功后显示当前选择的出题级别
|
|
|
|
|
|
|
|
|
|
### 2. 题目生成功能
|
|
|
|
|
- 根据账号类型自动选择对应的难度级别生成题目
|
|
|
|
|
- 支持自定义生成题目数量(范围:10-30题)
|
|
|
|
|
- 操作数范围:1-100
|
|
|
|
|
- 操作数个数:2-5个
|
|
|
|
|
|
|
|
|
|
### 3. 多难度级别支持
|
|
|
|
|
- **小学**:仅包含加减乘除四则运算和括号
|
|
|
|
|
- **初中**:在小学基础上增加平方和开根号运算,且每道题至少包含一个平方或开根号
|
|
|
|
|
- **高中**:在初中基础上增加三角函数(sin、cos、tan),且每道题至少包含一个三角函数
|
|
|
|
|
|
|
|
|
|
### 4. 题目类型切换
|
|
|
|
|
- 支持在登录状态下切换不同难度级别的题目生成
|
|
|
|
|
- 输入格式:`切换为 小学/初中/高中`
|
|
|
|
|
|
|
|
|
|
### 5. 题目查重功能
|
|
|
|
|
- 自动检测新生成的题目是否与当前用户历史生成的题目重复
|
|
|
|
|
- 确保每个用户生成的题目都是唯一的
|
|
|
|
|
|
|
|
|
|
### 6. 文件保存功能
|
|
|
|
|
- 题目以文本文件形式保存
|
|
|
|
|
- 文件名格式:`年-月-日-时-分-秒.txt`
|
|
|
|
|
- 每个用户有独立的文件夹存储题目
|
|
|
|
|
- 题目包含题号,每题之间空一行
|
|
|
|
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
|
|
|
|
### 登录
|
|
|
|
|
1. 运行程序后,输入用户名和密码(用空格分隔)
|
|
|
|
|
2. 验证成功后,系统提示当前选择的出题级别
|
|
|
|
|
3. 验证失败则提示重新输入
|
|
|
|
|
|
|
|
|
|
### 生成题目
|
|
|
|
|
1. 登录成功后,系统提示输入题目数量
|
|
|
|
|
2. 输入10-30之间的数字生成对应数量的题目
|
|
|
|
|
3. 输入-1退出当前用户,返回登录界面
|
|
|
|
|
|
|
|
|
|
### 切换难度
|
|
|
|
|
- 在任何提示输入题目数量的界面,输入`切换为 小学/初中/高中`即可切换题目难度
|
|
|
|
|
- 切换成功后,系统会提示新的难度级别
|
|
|
|
|
|
|
|
|
|
## 账号列表
|
|
|
|
|
|
|
|
|
|
| 级别 | 用户名 | 密码 |
|
|
|
|
|
|------|--------|------|
|
|
|
|
|
| 小学 | 张三1 | 123 |
|
|
|
|
|
| 小学 | 张三2 | 123 |
|
|
|
|
|
| 小学 | 张三3 | 123 |
|
|
|
|
|
| 初中 | 李四1 | 123 |
|
|
|
|
|
| 初中 | 李四2 | 123 |
|
|
|
|
|
| 初中 | 李四3 | 123 |
|
|
|
|
|
| 高中 | 王五1 | 123 |
|
|
|
|
|
| 高中 | 王五2 | 123 |
|
|
|
|
|
| 高中 | 王五3 | 123 |
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
```
|
|
|
|
|
quesproject/
|
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
|
│ ├── Main.java # 程序入口类
|
|
|
|
|
│ ├── User.java # 用户类
|
|
|
|
|
│ ├── MathQuestion.java # 数学题目类
|
|
|
|
|
│ ├── QuestionGenerator.java # 题目生成器
|
|
|
|
|
│ ├── QuestionStrategy.java # 题目策略接口
|
|
|
|
|
│ ├── QuestionStrategyFactory.java # 策略工厂类
|
|
|
|
|
│ ├── ElementaryQuestionStrategy.java # 小学题目策略
|
|
|
|
|
│ ├── MiddleSchoolQuestionStrategy.java # 初中题目策略
|
|
|
|
|
│ ├── HighSchoolQuestionStrategy.java # 高中题目策略
|
|
|
|
|
│ └── FileUtils.java # 文件操作工具类
|
|
|
|
|
├── doc/ # 文档目录
|
|
|
|
|
│ └── README.md # 项目说明文档
|
|
|
|
|
├── [用户名]/ # 用户题目文件夹(运行时自动创建)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 技术实现
|
|
|
|
|
|
|
|
|
|
### 设计模式
|
|
|
|
|
- **工厂模式**:通过QuestionStrategyFactory创建不同级别的题目生成策略
|
|
|
|
|
- **策略模式**:通过QuestionStrategy接口及其实现类实现不同难度级别的题目生成
|
|
|
|
|
|
|
|
|
|
### 核心功能实现
|
|
|
|
|
1. **用户验证**:通过预设的账号列表进行验证
|
|
|
|
|
2. **题目生成**:根据不同难度级别使用不同的策略生成题目
|
|
|
|
|
3. **查重功能**:读取用户历史题目文件,确保新生成的题目不重复
|
|
|
|
|
4. **文件管理**:自动创建用户文件夹,按指定格式保存题目文件
|
|
|
|
|
|
|
|
|
|
## 运行环境
|
|
|
|
|
- Java 8及以上版本
|
|
|
|
|
- 支持Windows、Linux、macOS等操作系统
|
|
|
|
|
|
|
|
|
|
## 编译运行
|
|
|
|
|
1. 编译:`javac -d out src/*.java`
|
|
|
|
|
2. 运行:`java -cp out Main`
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
1. 题目数量必须在10-30之间,否则会提示重新输入
|
|
|
|
|
2. 切换难度时,请确保输入格式正确:`切换为 级别名称`
|
|
|
|
|
3. 程序会在当前目录下创建用户文件夹存储题目文件
|
|
|
|
|
4. 为保证查重功能正常,请勿手动修改用户文件夹中的题目文件格式
|