1 #4

Merged
hnu202326010315 merged 5 commits from develop into main 5 months ago

@ -1,2 +0,0 @@
# relentless

@ -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. 为保证查重功能正常,请勿手动修改用户文件夹中的题目文件格式
Loading…
Cancel
Save