|
|
|
@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 中小学数学卷子自动生成程序 - Java版本说明文档
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
这是一个基于Java开发的中小学数学卷子自动生成程序,支持小学、初中和高中三个年级的数学题目生成,具有用户登录验证、题目生成、年级切换和试卷保存等功能。
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
### 1. 用户登录验证
|
|
|
|
|
|
|
|
|
|
- 支持小学、初中和高中各三个预设账号
|
|
|
|
|
- 用户名和密码用空格隔开输入
|
|
|
|
|
- 登录成功显示当前选择的出题年级
|
|
|
|
|
- 登录失败提示重新输入
|
|
|
|
|
|
|
|
|
|
### 2. 题目生成
|
|
|
|
|
|
|
|
|
|
- **题目数量**:10-30题(或输入-1退出登录)
|
|
|
|
|
- **操作数数量**:1-5个
|
|
|
|
|
- **操作数范围**:1-100
|
|
|
|
|
- **题目去重**:同一老师的题目不会与历史题目重复
|
|
|
|
|
|
|
|
|
|
### 3. 年级切换
|
|
|
|
|
|
|
|
|
|
- 支持在登录状态下切换出题年级
|
|
|
|
|
- 输入"切换为 XX"(XX为小学、初中、高中)
|
|
|
|
|
- 输入错误时提示重新输入
|
|
|
|
|
|
|
|
|
|
### 4. 试卷保存
|
|
|
|
|
|
|
|
|
|
- 按"年-月-日-时-分-秒.txt"格式命名
|
|
|
|
|
- 每个账号独立文件夹
|
|
|
|
|
- 题目有序号,每题间空一行
|
|
|
|
|
|
|
|
|
|
## 年级难度要求
|
|
|
|
|
|
|
|
|
|
### 小学
|
|
|
|
|
|
|
|
|
|
- 四则运算,结果非负
|
|
|
|
|
|
|
|
|
|
### 初中
|
|
|
|
|
|
|
|
|
|
- 包含平方、开根号运算
|
|
|
|
|
- 题目中至少有一个平方或开根号运算符
|
|
|
|
|
|
|
|
|
|
### 高中
|
|
|
|
|
|
|
|
|
|
- 包含三角函数(sin, cos, tan)
|
|
|
|
|
- 题目中至少有一个三角函数
|
|
|
|
|
|
|
|
|
|
## 使用流程
|
|
|
|
|
|
|
|
|
|
### 登录界面
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
== 中小学数学卷子自动生成程序 ==
|
|
|
|
|
欢迎你 张三1 小学
|
|
|
|
|
输入1开始出题
|
|
|
|
|
输入2切换出题年级
|
|
|
|
|
输入-1退出登录,返回开始界面
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 出题流程
|
|
|
|
|
|
|
|
|
|
1. 输入1开始出题
|
|
|
|
|
2. 输入题目数量(10-30)
|
|
|
|
|
3. 系统生成对应年级难度的题目
|
|
|
|
|
4. 题目显示并自动保存
|
|
|
|
|
|
|
|
|
|
### 切换年级
|
|
|
|
|
|
|
|
|
|
例如,切换为初中
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
2
|
|
|
|
|
请输入想要切换的出题年级,输入-1返回操作界面
|
|
|
|
|
初中
|
|
|
|
|
已成功修改出题年级为初中,输入-1返回操作界面
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 登录过程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
请输入用户名和密码(用空格分隔):
|
|
|
|
|
张三1 123
|
|
|
|
|
登录成功!当前选择为小学出题
|
|
|
|
|
|
|
|
|
|
== 中小学数学卷子自动生成程序 ==
|
|
|
|
|
欢迎你 张三1 小学
|
|
|
|
|
输入1开始出题
|
|
|
|
|
输入2切换出题年级
|
|
|
|
|
输入-1退出登录,返回开始界面
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 题目生成示例
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
输入1开始出题
|
|
|
|
|
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户):
|
|
|
|
|
10
|
|
|
|
|
|
|
|
|
|
正在为小学出题,请在10-30的范围内输入出题数目:
|
|
|
|
|
|
|
|
|
|
1. 92 + 96 - (58 / 55 * 62)
|
|
|
|
|
|
|
|
|
|
2. (24 * 13) * 34 + 15
|
|
|
|
|
|
|
|
|
|
3. 68 - 55 - 57 / 85 / 71
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
已出题完成,输入-1返回操作界面
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 年级切换
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
输入2切换出题年级
|
|
|
|
|
请输入想要切换的出题年级(小学、初中、高中):
|
|
|
|
|
初中
|
|
|
|
|
已成功修改出题年级为初中
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 文件保存格式
|
|
|
|
|
|
|
|
|
|
### 目录结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
User-problem/
|
|
|
|
|
├── 张三1/
|
|
|
|
|
│ ├── 2025-09-29-22-30-45.txt
|
|
|
|
|
│ └── 2025-09-29-22-35-20.txt
|
|
|
|
|
├── 李四2/
|
|
|
|
|
│ └── 2025-09-29-22-40-15.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 文件内容格式
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
1. 92 + 96 - (58 / 55 * 62)
|
|
|
|
|
|
|
|
|
|
2. (24 * 13) * 34 + 15
|
|
|
|
|
|
|
|
|
|
3. 68 - 55 - 57 / 85 / 71
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 系统架构
|
|
|
|
|
|
|
|
|
|
### 核心类说明
|
|
|
|
|
|
|
|
|
|
#### 1. Main.java
|
|
|
|
|
|
|
|
|
|
- **功能**: 程序主入口
|
|
|
|
|
- **职责**: 启动用户登录流程
|
|
|
|
|
|
|
|
|
|
#### 2. User.java
|
|
|
|
|
|
|
|
|
|
- **功能**: 用户管理类
|
|
|
|
|
- **职责**:
|
|
|
|
|
- 处理用户登录验证
|
|
|
|
|
- 管理用户账户信息(用户名、密码、年级)
|
|
|
|
|
- 初始化预设用户数据
|
|
|
|
|
|
|
|
|
|
#### 3. ProblemManager.java
|
|
|
|
|
|
|
|
|
|
- **功能**: 问题管理类
|
|
|
|
|
- **职责**:
|
|
|
|
|
- 显示主界面
|
|
|
|
|
- 处理用户交互
|
|
|
|
|
- 协调题目生成流程
|
|
|
|
|
- 提供年级切换功能
|
|
|
|
|
|
|
|
|
|
#### 4. 题目生成器接口和实现类
|
|
|
|
|
|
|
|
|
|
**MathProblemGenerator.java** (接口)
|
|
|
|
|
|
|
|
|
|
- 定义题目生成器的统一接口
|
|
|
|
|
|
|
|
|
|
**PrimarySchoolProblemGenerator.java** (小学题目生成器)
|
|
|
|
|
|
|
|
|
|
- 生成包含基本四则运算的题目
|
|
|
|
|
|
|
|
|
|
**MiddleSchoolProblemGenerator.java** (初中题目生成器)
|
|
|
|
|
|
|
|
|
|
- 在小学基础上增加平方(²)和开方(√)运算
|
|
|
|
|
|
|
|
|
|
**HighSchoolProblemGenerator.java** (高中题目生成器)
|
|
|
|
|
|
|
|
|
|
- 在初中基础上增加三角函数(sin, cos, tan)运算
|
|
|
|
|
|
|
|
|
|
#### 5. 工具类
|
|
|
|
|
|
|
|
|
|
**ExpressionJudge.java**
|
|
|
|
|
|
|
|
|
|
- **功能**: 表达式验证工具
|
|
|
|
|
- **职责**: 检测数学表达式中的语法错误和语义错误
|
|
|
|
|
|
|
|
|
|
**FileManager.java**
|
|
|
|
|
|
|
|
|
|
- **功能**: 文件管理工具
|
|
|
|
|
- **职责**: 处理用户题目文件的读写操作
|
|
|
|
|
|
|
|
|
|
**TimeManager.java**
|
|
|
|
|
|
|
|
|
|
- **功能**: 时间管理工具
|
|
|
|
|
- **职责**: 提供时间戳生成功能
|
|
|
|
|
|
|
|
|
|
## 已知问题:除零错误
|
|
|
|
|
|
|
|
|
|
### 问题描述
|
|
|
|
|
|
|
|
|
|
在生成初中高中题目时,存在**生成除零式子**的风险。
|
|
|
|
|
|
|
|
|
|
在生成初中高中题目时,生成有5个操作数的式子概率比较低,可能一次出题不会有,要多次出题才会出现。
|