|
|
|
@ -1,321 +1,321 @@
|
|
|
|
# 数学题目生成系统 - 项目说明
|
|
|
|
# 数学题目生成系统 - 项目说明
|
|
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
|
|
本项目是一个基于Java的数学题目生成系统,专门为不同学段(小学、初中、高中)的教师设计。系统能够根据教师类型自动生成相应难度的数学题目,并支持题目查重、文件存储等功能。
|
|
|
|
本项目是一个基于Java的数学题目生成系统,专门为不同学段(小学、初中、高中)的教师设计。系统能够根据教师类型自动生成相应难度的数学题目,并支持题目查重、文件存储等功能。
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
```
|
|
|
|
Personal_Project/
|
|
|
|
Personal_Project/
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
│ ├── Main.java # 程序入口类
|
|
|
|
│ ├── Main.java # 程序入口类
|
|
|
|
│ ├── SysFunc.java # 系统功能类(登录、操作界面)
|
|
|
|
│ ├── SysFunc.java # 系统功能类(登录、操作界面)
|
|
|
|
│ ├── Teacher.java # 教师抽象基类
|
|
|
|
│ ├── Teacher.java # 教师抽象基类
|
|
|
|
│ ├── PrimaryTea.java # 小学教师类
|
|
|
|
│ ├── PrimaryTea.java # 小学教师类
|
|
|
|
│ ├── JuniorTea.java # 初中教师类
|
|
|
|
│ ├── JuniorTea.java # 初中教师类
|
|
|
|
│ └── SeniorTea.java # 高中教师类
|
|
|
|
│ └── SeniorTea.java # 高中教师类
|
|
|
|
├── doc/ # 文档目录
|
|
|
|
├── doc/ # 文档目录
|
|
|
|
│ └── 项目说明.md # 项目说明文档
|
|
|
|
│ └── 项目说明.md # 项目说明文档
|
|
|
|
├── MANIFEST.MF # JAVA JAR清单文件
|
|
|
|
├── MANIFEST.MF # JAVA JAR清单文件
|
|
|
|
├── 运行程序.bat # Windows批处理文件
|
|
|
|
├── 运行程序.bat # Windows批处理文件
|
|
|
|
├── 张三1/ # 教师个人文件夹(自动生成)
|
|
|
|
├── 张三1/ # 教师个人文件夹(自动生成)
|
|
|
|
├── 张三2/
|
|
|
|
├── 张三2/
|
|
|
|
├── 张三3/
|
|
|
|
├── 张三3/
|
|
|
|
├── 李四1/
|
|
|
|
├── 李四1/
|
|
|
|
├── 李四2/
|
|
|
|
├── 李四2/
|
|
|
|
├── 李四3/
|
|
|
|
├── 李四3/
|
|
|
|
├── 王五1/
|
|
|
|
├── 王五1/
|
|
|
|
├── 王五2/
|
|
|
|
├── 王五2/
|
|
|
|
└── 王五3/
|
|
|
|
└── 王五3/
|
|
|
|
```
|
|
|
|
```
|
|
|
|
## 运行环境
|
|
|
|
## 运行环境
|
|
|
|
|
|
|
|
|
|
|
|
- **语言**:Java21.0.4
|
|
|
|
- **语言**:Java21.0.4
|
|
|
|
- **Windows环境**:Windows11 cmd或powershell终端管理员 (win10或以下版本可能无法识别SysFuc类中的ANSI编码而产生字符乱码) 注意在终端您需要设置编码chcp 936
|
|
|
|
- **Windows环境**:Windows11 cmd或powershell终端管理员 (win10或以下版本可能无法识别SysFuc类中的ANSI编码而产生字符乱码) 注意在终端您需要设置编码chcp 936
|
|
|
|
- **Linux环境**:ubuntu22.04.5 LTS; 注意终端运行时,需要确认编码格式为UTF-8(下述),而后将Main.java中scanner参数"GBK"删去后重新编译并生成.jar文件以解决乱码问题
|
|
|
|
- **Linux环境**:ubuntu22.04.5 LTS; 注意终端运行时,需要确认编码格式为UTF-8(下述),而后将Main.java中scanner参数"GBK"删去后重新编译并生成.jar文件以解决乱码问题
|
|
|
|
- __编译命令如下(进入项目目录):
|
|
|
|
- __编译命令如下(进入项目目录):
|
|
|
|
- __javac src/*.java
|
|
|
|
- __javac src/*.java
|
|
|
|
- __jar cfm MathQuestionGenerator.jar(名称可换) MANIFEST.MF src/*.class
|
|
|
|
- __jar cfm MathQuestionGenerator.jar(名称可换) MANIFEST.MF src/*.class
|
|
|
|
- __java -jar MathQuestionGenerator.jar
|
|
|
|
- __java -jar MathQuestionGenerator.jar
|
|
|
|
- **编码**:WINDOWS下标准输入(scanner)为GBK(支持中文输入),文件保存为UTF-8
|
|
|
|
- **编码**:WINDOWS下标准输入(scanner)为GBK(支持中文输入),文件保存为UTF-8
|
|
|
|
-__您可以在终端通过输入命令chcp查看当前编码,936为GBK,65001为UTF-8 (一般是GBK,这种情况不需要额外设置编码格式)
|
|
|
|
-__您可以在终端通过输入命令chcp查看当前编码,936为GBK,65001为UTF-8 (一般是GBK,这种情况不需要额外设置编码格式)
|
|
|
|
UBUNTU下标准输入(scanner)默认UTF-8,文件保存为UTF-8
|
|
|
|
UBUNTU下标准输入(scanner)默认UTF-8,文件保存为UTF-8
|
|
|
|
-__您可以通过echo $LANG查看当前编码,并通过export LANG=en_US.UTF-8暂时设置编码格式为UTF-8 (一般是UTF-8,只需要删去Main中scanner的"GBK"参数即可)
|
|
|
|
-__您可以通过echo $LANG查看当前编码,并通过export LANG=en_US.UTF-8暂时设置编码格式为UTF-8 (一般是UTF-8,只需要删去Main中scanner的"GBK"参数即可)
|
|
|
|
- **依赖**:纯Java标准库,无需额外依赖
|
|
|
|
- **依赖**:纯Java标准库,无需额外依赖
|
|
|
|
|
|
|
|
|
|
|
|
## 运行方法
|
|
|
|
## 运行方法
|
|
|
|
|
|
|
|
|
|
|
|
- **通用**:-下载MathQuestionGenerator.jar(可自行更改名字)
|
|
|
|
- **通用**:-下载MathQuestionGenerator.jar(可自行更改名字)
|
|
|
|
-完成环境设置以及编码格式设置,见上述运行环境
|
|
|
|
-完成环境设置以及编码格式设置,见上述运行环境
|
|
|
|
-通过java -jar MathQuestionGenerator.jar运行
|
|
|
|
-通过java -jar MathQuestionGenerator.jar运行
|
|
|
|
- **批处理**:Windows11环境下,您可以打开项目目录,双击Math.bat文件直接运行
|
|
|
|
- **批处理**:Windows11环境下,您可以打开项目目录,双击Math.bat文件直接运行
|
|
|
|
-以这种方式运行,您可能会遇到切换不了中文输入的问题,建议您复制一段中文然后粘贴,删除后再输入中文 (小概率)
|
|
|
|
-以这种方式运行,您可能会遇到切换不了中文输入的问题,建议您复制一段中文然后粘贴,删除后再输入中文 (小概率)
|
|
|
|
|
|
|
|
|
|
|
|
## 使用流程
|
|
|
|
## 使用流程
|
|
|
|
|
|
|
|
|
|
|
|
1. **保存文件**:将项目保存至同一目录
|
|
|
|
1. **保存文件**:将项目保存至同一目录
|
|
|
|
2. **启动程序**:见上述"运行方法"
|
|
|
|
2. **启动程序**:见上述"运行方法"
|
|
|
|
3. **用户登录**:根据提示输入预置的用户名和密码(格式:用户名 密码)
|
|
|
|
3. **用户登录**:根据提示输入预置的用户名和密码(格式:用户名 密码)
|
|
|
|
4. **选择模式**:系统显示当前出题类型,可选择切换
|
|
|
|
4. **选择模式**:系统显示当前出题类型,可选择切换
|
|
|
|
5. **切换类型**:输入" 切换** "切换至对应出题类型
|
|
|
|
5. **切换类型**:输入" 切换** "切换至对应出题类型
|
|
|
|
6. **生成题目**:输入题目数量(10-30)
|
|
|
|
6. **生成题目**:输入题目数量(10-30)
|
|
|
|
7. **查看结果**:题目生成后显示保存路径
|
|
|
|
7. **查看结果**:题目生成后显示保存路径
|
|
|
|
8. **重复使用**:题目生成后可选择继续生成或切换难度
|
|
|
|
8. **重复使用**:题目生成后可选择继续生成或切换难度
|
|
|
|
9. **退出登录**:输入题目数量为-1则退出当前用户,可重新登录
|
|
|
|
9. **退出登录**:输入题目数量为-1则退出当前用户,可重新登录
|
|
|
|
10. **退出系统**:可选返回登陆或者退出系统
|
|
|
|
10. **退出系统**:可选返回登陆或者退出系统
|
|
|
|
|
|
|
|
|
|
|
|
## 核心功能
|
|
|
|
## 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 用户管理
|
|
|
|
### 1. 用户管理
|
|
|
|
- **预置用户**:系统预置了9名教师用户(3名小学、3名初中、3名高中)
|
|
|
|
- **预置用户**:系统预置了9名教师用户(3名小学、3名初中、3名高中)
|
|
|
|
- **登录验证**:支持用户名和密码验证登录
|
|
|
|
- **登录验证**:支持用户名和密码验证登录
|
|
|
|
- **个人文件夹**:每个教师登录后自动创建个人文件夹用于存储生成的题目
|
|
|
|
- **个人文件夹**:每个教师登录后自动创建个人文件夹用于存储生成的题目
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 题目生成
|
|
|
|
### 2. 题目生成
|
|
|
|
- **学段适配**:根据教师类型生成相应难度的数学题目
|
|
|
|
- **学段适配**:根据教师类型生成相应难度的数学题目
|
|
|
|
- **类型切换**:可以切换指定类型出题
|
|
|
|
- **类型切换**:可以切换指定类型出题
|
|
|
|
- **题目数量**:支持一次性生成10-30道题目
|
|
|
|
- **题目数量**:支持一次性生成10-30道题目
|
|
|
|
- **随机生成**:题目内容和结构随机生成,确保多样性
|
|
|
|
- **随机生成**:题目内容和结构随机生成,确保多样性
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 题目类型
|
|
|
|
### 3. 题目类型
|
|
|
|
- **小学题目**:包含加减乘除四则运算,支持括号
|
|
|
|
- **小学题目**:包含加减乘除四则运算,支持括号
|
|
|
|
- **初中题目**:在小学基础上增加平方(^2)和开方(√)运算
|
|
|
|
- **初中题目**:在小学基础上增加平方(^2)和开方(√)运算
|
|
|
|
- **高中题目**:在初中基础上增加三角函数(sin, cos, tan)运算
|
|
|
|
- **高中题目**:在初中基础上增加三角函数(sin, cos, tan)运算
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 查重机制
|
|
|
|
### 4. 查重机制
|
|
|
|
- **自动查重**:生成题目时会检查是否与个人历史题目重复
|
|
|
|
- **自动查重**:生成题目时会检查是否与个人历史题目重复
|
|
|
|
- **文件扫描**:扫描教师个人文件夹中的所有历史题目文件
|
|
|
|
- **文件扫描**:扫描教师个人文件夹中的所有历史题目文件
|
|
|
|
- **重复处理**:发现重复题目会自动重新生成
|
|
|
|
- **重复处理**:发现重复题目会自动重新生成
|
|
|
|
|
|
|
|
|
|
|
|
### 5. 文件管理
|
|
|
|
### 5. 文件管理
|
|
|
|
- **自动存储**:生成的题目自动保存到教师个人文件夹
|
|
|
|
- **自动存储**:生成的题目自动保存到教师个人文件夹
|
|
|
|
- **时间戳命名**:文件名包含生成时间,便于管理
|
|
|
|
- **时间戳命名**:文件名包含生成时间,便于管理
|
|
|
|
- **格式规范**:题目按序号排列,格式统一
|
|
|
|
- **格式规范**:题目按序号排列,格式统一
|
|
|
|
|
|
|
|
|
|
|
|
## 技术特点
|
|
|
|
## 技术特点
|
|
|
|
|
|
|
|
|
|
|
|
### 面向对象设计
|
|
|
|
### 面向对象设计
|
|
|
|
- **继承体系**:使用抽象类`Teacher`作为基类,三个具体子类实现不同学段的题目生成
|
|
|
|
- **继承体系**:使用抽象类`Teacher`作为基类,三个具体子类实现不同学段的题目生成
|
|
|
|
- **统一方法**:由'Teacher'实现子类都具有的类似结构
|
|
|
|
- **统一方法**:由'Teacher'实现子类都具有的类似结构
|
|
|
|
- **多态应用**:通过抽象方法实现不同学段题目的差异化生成
|
|
|
|
- **多态应用**:通过抽象方法实现不同学段题目的差异化生成
|
|
|
|
- **封装性**:将用户信息、文件操作等功能封装在相应的类中
|
|
|
|
- **封装性**:将用户信息、文件操作等功能封装在相应的类中
|
|
|
|
|
|
|
|
|
|
|
|
### 算法设计
|
|
|
|
### 算法设计
|
|
|
|
- **随机算法**:使用Java Random类确保题目的随机性
|
|
|
|
- **随机算法**:使用Java Random类确保题目的随机性
|
|
|
|
- **括号处理**:智能添加括号,保证表达式合理性
|
|
|
|
- **括号处理**:智能添加括号,保证表达式合理性
|
|
|
|
- **操作符分布**:合理分布不同难度的操作符
|
|
|
|
- **操作符分布**:合理分布不同难度的操作符
|
|
|
|
|
|
|
|
|
|
|
|
### 文件操作
|
|
|
|
### 文件操作
|
|
|
|
- **NIO API**:使用Java NIO进行高效的文件读写操作
|
|
|
|
- **NIO API**:使用Java NIO进行高效的文件读写操作
|
|
|
|
- **异常处理**:完善的异常处理机制确保程序稳定性
|
|
|
|
- **异常处理**:完善的异常处理机制确保程序稳定性
|
|
|
|
- **路径管理**:自动创建和管理教师个人文件夹以及题目文档
|
|
|
|
- **路径管理**:自动创建和管理教师个人文件夹以及题目文档
|
|
|
|
|
|
|
|
|
|
|
|
## 预置用户信息
|
|
|
|
## 预置用户信息
|
|
|
|
|
|
|
|
|
|
|
|
| 用户名 | 密码 | 类型 | 初始类型 |
|
|
|
|
| 用户名 | 密码 | 类型 | 初始类型 |
|
|
|
|
|--------|------|------|----------|
|
|
|
|
|--------|------|------|----------|
|
|
|
|
| 张三1 | 123 | 小学教师 | 小学 |
|
|
|
|
| 张三1 | 123 | 小学教师 | 小学 |
|
|
|
|
| 张三2 | 123 | 小学教师 | 小学 |
|
|
|
|
| 张三2 | 123 | 小学教师 | 小学 |
|
|
|
|
| 张三3 | 123 | 小学教师 | 小学 |
|
|
|
|
| 张三3 | 123 | 小学教师 | 小学 |
|
|
|
|
| 李四1 | 123 | 初中教师 | 初中 |
|
|
|
|
| 李四1 | 123 | 初中教师 | 初中 |
|
|
|
|
| 李四2 | 123 | 初中教师 | 初中 |
|
|
|
|
| 李四2 | 123 | 初中教师 | 初中 |
|
|
|
|
| 李四3 | 123 | 初中教师 | 初中 |
|
|
|
|
| 李四3 | 123 | 初中教师 | 初中 |
|
|
|
|
| 王五1 | 123 | 高中教师 | 高中 |
|
|
|
|
| 王五1 | 123 | 高中教师 | 高中 |
|
|
|
|
| 王五2 | 123 | 高中教师 | 高中 |
|
|
|
|
| 王五2 | 123 | 高中教师 | 高中 |
|
|
|
|
| 王五3 | 123 | 高中教师 | 高中 |
|
|
|
|
| 王五3 | 123 | 高中教师 | 高中 |
|
|
|
|
|
|
|
|
|
|
|
|
## API文档
|
|
|
|
## API文档
|
|
|
|
|
|
|
|
|
|
|
|
### Teacher 抽象基类
|
|
|
|
### Teacher 抽象基类
|
|
|
|
|
|
|
|
|
|
|
|
#### 构造函数
|
|
|
|
#### 构造函数
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public Teacher(String name, String password, String path)
|
|
|
|
public Teacher(String name, String password, String path)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **参数**:
|
|
|
|
- **参数**:
|
|
|
|
- `name`: 教师用户名
|
|
|
|
- `name`: 教师用户名
|
|
|
|
- `password`: 教师密码
|
|
|
|
- `password`: 教师密码
|
|
|
|
- `path`: 教师文件夹路径(可为null,后续自动创建)
|
|
|
|
- `path`: 教师文件夹路径(可为null,后续自动创建)
|
|
|
|
|
|
|
|
|
|
|
|
#### 公共方法
|
|
|
|
#### 公共方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public boolean checkDuplicate(String question)
|
|
|
|
public boolean checkDuplicate(String question)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 检查题目是否与历史题目重复
|
|
|
|
- **功能**: 检查题目是否与历史题目重复
|
|
|
|
- **参数**: `question` - 待检查的题目字符串
|
|
|
|
- **参数**: `question` - 待检查的题目字符串
|
|
|
|
- **返回**: `true` - 存在重复,`false` - 无重复
|
|
|
|
- **返回**: `true` - 存在重复,`false` - 无重复
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public String generatePath()
|
|
|
|
public String generatePath()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成题目文件的相对存储路径
|
|
|
|
- **功能**: 生成题目文件的相对存储路径
|
|
|
|
- **返回**: 包含时间戳的文件路径
|
|
|
|
- **返回**: 包含时间戳的文件路径
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public String generateEX(int num)
|
|
|
|
public String generateEX(int num)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成指定数量的题目并保存到文件
|
|
|
|
- **功能**: 生成指定数量的题目并保存到文件
|
|
|
|
- **参数**: `num` - 题目数量(10-30)
|
|
|
|
- **参数**: `num` - 题目数量(10-30)
|
|
|
|
- **返回**: 保存题目的文件路径
|
|
|
|
- **返回**: 保存题目的文件路径
|
|
|
|
|
|
|
|
|
|
|
|
#### 抽象方法
|
|
|
|
#### 抽象方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
protected abstract String generateSingleQuestion()
|
|
|
|
protected abstract String generateSingleQuestion()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成单个题目(由子类实现)
|
|
|
|
- **功能**: 生成单个题目(由子类实现)
|
|
|
|
- **返回**: 题目字符串
|
|
|
|
- **返回**: 题目字符串
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public abstract String getType()
|
|
|
|
public abstract String getType()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 返回教师类型
|
|
|
|
- **功能**: 返回教师类型
|
|
|
|
- **返回**: "小学"、"初中"或"高中"
|
|
|
|
- **返回**: "小学"、"初中"或"高中"
|
|
|
|
|
|
|
|
|
|
|
|
### SysFunc 系统功能类
|
|
|
|
### SysFunc 系统功能类
|
|
|
|
|
|
|
|
|
|
|
|
#### 静态字段
|
|
|
|
#### 静态字段
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
static final int LEAST_NUM = 10 // 最小题目数量
|
|
|
|
static final int LEAST_NUM = 10 // 最小题目数量
|
|
|
|
static final int MAX_NUM = 30 // 最大题目数量
|
|
|
|
static final int MAX_NUM = 30 // 最大题目数量
|
|
|
|
static ArrayList<Teacher> teachers // 用户列表
|
|
|
|
static ArrayList<Teacher> teachers // 用户列表
|
|
|
|
static Teacher teacher // 当前用户
|
|
|
|
static Teacher teacher // 当前用户
|
|
|
|
static HashMap<String, Integer> typeMap // 类型映射
|
|
|
|
static HashMap<String, Integer> typeMap // 类型映射
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 静态方法
|
|
|
|
#### 静态方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public static void init()
|
|
|
|
public static void init()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 初始化系统,预加载用户数据
|
|
|
|
- **功能**: 初始化系统,预加载用户数据
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public static Teacher login(Scanner scanner)
|
|
|
|
public static Teacher login(Scanner scanner)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 用户登录界面
|
|
|
|
- **功能**: 用户登录界面
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
- **返回**: 登录成功的教师对象
|
|
|
|
- **返回**: 登录成功的教师对象
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public static void ShiftType(Scanner scanner)
|
|
|
|
public static void ShiftType(Scanner scanner)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 切换出题类型界面
|
|
|
|
- **功能**: 切换出题类型界面
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public static void Operate(Scanner scanner)
|
|
|
|
public static void Operate(Scanner scanner)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 主操作界面,处理题目生成流程
|
|
|
|
- **功能**: 主操作界面,处理题目生成流程
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
- **参数**: `scanner` - 输入扫描器
|
|
|
|
|
|
|
|
|
|
|
|
### PrimaryTea 小学教师类
|
|
|
|
### PrimaryTea 小学教师类
|
|
|
|
|
|
|
|
|
|
|
|
#### 构造函数
|
|
|
|
#### 构造函数
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public PrimaryTea(String name, String password, String path)
|
|
|
|
public PrimaryTea(String name, String password, String path)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 特有方法
|
|
|
|
#### 特有方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public void getRandom()
|
|
|
|
public void getRandom()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成随机操作数和括号位置
|
|
|
|
- **功能**: 生成随机操作数和括号位置
|
|
|
|
|
|
|
|
|
|
|
|
#### 重写方法
|
|
|
|
#### 重写方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成小学难度数学题目(四则运算)
|
|
|
|
- **功能**: 生成小学难度数学题目(四则运算)
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String getType()
|
|
|
|
public String getType()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **返回**: "小学"
|
|
|
|
- **返回**: "小学"
|
|
|
|
|
|
|
|
|
|
|
|
### JuniorTea 初中教师类
|
|
|
|
### JuniorTea 初中教师类
|
|
|
|
|
|
|
|
|
|
|
|
#### 构造函数
|
|
|
|
#### 构造函数
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public JuniorTea(String name, String password, String path)
|
|
|
|
public JuniorTea(String name, String password, String path)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 特有方法
|
|
|
|
#### 特有方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public void getRandom()
|
|
|
|
public void getRandom()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成随机操作数、特殊运算符和括号位置
|
|
|
|
- **功能**: 生成随机操作数、特殊运算符和括号位置
|
|
|
|
|
|
|
|
|
|
|
|
#### 重写方法
|
|
|
|
#### 重写方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成初中难度数学题目(四则运算 + 平方/开方)
|
|
|
|
- **功能**: 生成初中难度数学题目(四则运算 + 平方/开方)
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String getType()
|
|
|
|
public String getType()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **返回**: "初中"
|
|
|
|
- **返回**: "初中"
|
|
|
|
|
|
|
|
|
|
|
|
### SeniorTea 高中教师类
|
|
|
|
### SeniorTea 高中教师类
|
|
|
|
|
|
|
|
|
|
|
|
#### 构造函数
|
|
|
|
#### 构造函数
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public SeniorTea(String name, String password, String path)
|
|
|
|
public SeniorTea(String name, String password, String path)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 特有方法
|
|
|
|
#### 特有方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public void getRandom()
|
|
|
|
public void getRandom()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成随机操作数、三角函数和括号位置
|
|
|
|
- **功能**: 生成随机操作数、三角函数和括号位置
|
|
|
|
|
|
|
|
|
|
|
|
#### 重写方法
|
|
|
|
#### 重写方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
protected String generateSingleQuestion()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 生成高中难度数学题目(四则运算 + 三角函数)
|
|
|
|
- **功能**: 生成高中难度数学题目(四则运算 + 三角函数)
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String getType()
|
|
|
|
public String getType()
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **返回**: "高中"
|
|
|
|
- **返回**: "高中"
|
|
|
|
|
|
|
|
|
|
|
|
### Main 程序入口类
|
|
|
|
### Main 程序入口类
|
|
|
|
|
|
|
|
|
|
|
|
#### 主方法
|
|
|
|
#### 主方法
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
public static void main(String[] args)
|
|
|
|
public static void main(String[] args)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
- **功能**: 程序入口点,启动数学题目生成系统
|
|
|
|
- **功能**: 程序入口点,启动数学题目生成系统
|
|
|
|
- **流程**:
|
|
|
|
- **流程**:
|
|
|
|
1. 初始化系统
|
|
|
|
1. 初始化系统
|
|
|
|
2. 创建GBK编码的Scanner
|
|
|
|
2. 创建GBK编码的Scanner
|
|
|
|
3. 进入主循环(登录 → 操作 → 退出选择)
|
|
|
|
3. 进入主循环(登录 → 操作 → 退出选择)
|
|
|
|
|
|
|
|
|
|
|
|
## 扩展性
|
|
|
|
## 扩展性
|
|
|
|
|
|
|
|
|
|
|
|
系统具有良好的扩展性,可以通过以下方式增强功能:
|
|
|
|
系统具有良好的扩展性,可以通过以下方式增强功能:
|
|
|
|
- 添加用户注册功能
|
|
|
|
- 添加用户注册功能
|
|
|
|
- 添加新的学段类型
|
|
|
|
- 添加新的学段类型
|
|
|
|
- 增加新的数学运算类型
|
|
|
|
- 增加新的数学运算类型
|
|
|
|
- 支持自定义题目难度
|
|
|
|
- 支持自定义题目难度
|
|
|
|
- 添加题目答案计算功能
|
|
|
|
- 添加题目答案计算功能
|
|
|
|
- 支持批量导入导出
|
|
|
|
- 支持批量导入导出
|
|
|
|
|
|
|
|
|
|
|
|
## 项目价值
|
|
|
|
## 项目价值
|
|
|
|
|
|
|
|
|
|
|
|
本项目展示了面向对象编程的实际应用,体现了良好的软件工程实践,包括:
|
|
|
|
本项目展示了面向对象编程的实际应用,体现了良好的软件工程实践,包括:
|
|
|
|
- 清晰的代码结构
|
|
|
|
- 清晰的代码结构
|
|
|
|
- 符合Google编码规范的设计编写
|
|
|
|
- 符合Google编码规范的设计编写
|
|
|
|
- 合理,扩展性良好的类设计
|
|
|
|
- 合理,扩展性良好的类设计
|
|
|
|
- 完善的异常处理
|
|
|
|
- 完善的异常处理
|
|
|
|
- 用户友好的交互界面
|
|
|
|
- 用户友好的交互界面
|
|
|
|
- 实用的业务功能
|
|
|
|
- 实用的业务功能
|
|
|
|
|
|
|
|
|
|
|
|
该系统可以实际应用于教育场景,帮助教师快速生成练习题,提高教学效率。
|
|
|
|
该系统可以实际应用于教育场景,帮助教师快速生成练习题,提高教学效率。
|
|
|
|
|