diff --git a/doc/README.md b/doc/README.md index 71940b4..de1334c 100755 --- a/doc/README.md +++ b/doc/README.md @@ -1,164 +1,157 @@ -# 数学题目生成系统 - -## 项目简介 - -这是一个基于 Java 的命令行应用程序,用于为小学、初中和高中教师生成数学题目试卷。系统支持用户登录、题目查重、按难度生成题目,并保存为文本文件。 - -## 功能特点 - -- **多角色登录**:支持小学、初中、高中教师登录 -- **题目生成**:根据学段生成不同难度的数学题目 -- **题目查重**:自动检查题目是否重复,确保唯一性 -- **试卷保存**:将生成的题目保存为带时间戳的文本文件 -- **模式切换**:教师可在登录后切换出题学段 -- **多次生成**:教师登录后能生成无限次试卷 -# 项目结构图 - -``` -GenerateMath/ -├── doc/ # 文档和资源目录 -│ ├── 张三1/ # 教师个人文件夹(存储生成的试卷) -│ ├── 张三2/ -│ ├── 张三3/ -│ ├── 李四1/ -│ ├── 李四2/ -│ ├── 李四3/ -│ ├── 王五1/ -│ ├── 王五2/ -│ ├── 王五3/ -│ ├── 小学老师账号密码本 # 小学教师认证文件(格式:用户名 密码) -│ ├── 初中老师账号密码本 # 初中教师认证文件 -│ └── 高中老师账号密码本 # 高中教师认证文件 -├── out/ # 编译输出目录 -├── src/ # 源代码目录 -│ ├── paper/ # 试卷生成模块 -│ │ ├── Paper.java # 抽象试卷类(提供文件路径检查功能) -│ │ │ └── checkPath(File file) # 检查并创建文件路径 -│ │ ├── PrimaryPaper.java # 小学试卷生成 -│ │ │ └── PrimaryPaper(int problemNumber, String teacherName) # 构造函数:生成小学试卷文件 -│ │ ├── JuniorPaper.java # 初中试卷生成 -│ │ │ └── JuniorPaper(int problemNumber, String teacherName) # 构造函数:生成初中试卷文件 -│ │ └── SeniorPaper.java # 高中试卷生成 -│ │ └── SeniorPaper(int problemNumber, String teacherName) # 构造函数:生成高中试卷文件 -│ ├── problem/ # 题目生成模块 -│ │ ├── MathProblem.java # 抽象题目类(定义题目基本结构) -│ │ │ ├── content # 题目内容字符串 -│ │ │ ├── op2[] # 基础运算符数组(+,-,×,÷) -│ │ │ └── examine(String teacherName) # 抽象查重方法 -│ │ ├── PrimaryMathProblem.java # 小学数学题目生成 -│ │ │ ├── PrimaryMathProblem() # 构造函数:生成2-5个数字的小学题目 -│ │ │ └── examine(String teacherName) # 查重:检查教师文件夹中是否已有相同题目 -│ │ ├── JuniorMathProblem.java # 初中数学题目生成 -│ │ │ ├── JuniorMathProblem() # 构造函数:生成含平方、开方的初中题目 -│ │ │ ├── opBack[] # 后缀运算符(平方、括号) -│ │ │ ├── opFront[] # 前缀运算符(开方、括号) -│ │ │ └── examine(String teacherName) # 查重方法 -│ │ └── SeniorMathProblem.java # 高中数学题目生成 -│ │ ├── SeniorMathProblem() # 构造函数:生成含三角函数的高中题目 -│ │ ├── opBack[] # 后缀运算符(平方、括号) -│ │ ├── opFront[] # 前缀运算符(三角函数) -│ │ └── examine(String teacherName) # 查重方法 -│ └── teacher/ # 教师管理模块 -│ ├── Teacher.java # 抽象教师类(定义教师基本属性和行为) -│ │ ├── rank (枚举) # 教师等级:PRIMARY, JUNIOR, SENIOR -│ │ ├── mode # 当前出题模式 -│ │ ├── userName # 教师用户名 -│ │ ├── initMode() # 抽象方法:初始化出题模式提示 -│ │ └── generatePaper(int number) # 抽象方法:生成试卷 -│ ├── PrimaryTeacher.java # 小学教师类 -│ │ ├── PrimaryTeacher(String name) # 构造函数 -│ │ ├── initMode() # 输出小学出题提示信息 -│ │ └── generatePaper(int number) # 创建PrimaryPaper对象生成试卷 -│ ├── JuniorTeacher.java # 初中教师类 -│ │ ├── JuniorTeacher(String name) # 构造函数 -│ │ ├── initMode() # 输出初中出题提示信息 -│ │ └── generatePaper(int number) # 创建JuniorPaper对象生成试卷 -│ └── SeniorTeacher.java # 高中教师类 -│ ├── SeniorTeacher(String name) # 构造函数 -│ ├── initMode() # 输出高中出题提示信息 -│ └── generatePaper(int number) # 创建SeniorPaper对象生成试卷 -│ -├── Main.java # 程序主入口类 -│ ├── primary/junior/senior (静态List) # 内置账号密码列表(备用验证) -│ ├── log1(String bookName, String password) # 内置账号验证方法 -│ ├── log(String bookName, String password) # 文件账号验证方法(优先读取文件) -│ ├── generate(Teacher teacher) # 交互式出题循环控制 -│ └── main(String[] args) # 主方法:处理登录和用户交互 -├── README.md # 项目说明文档 -└── 其他配置文件... # IDE配置文件等 -``` - -## 目录说明 - -- **doc/**: 存储教师生成的试卷文件和账号密码本 -- **src/paper/**: 试卷生成相关类,负责创建和保存试卷 -- **src/problem/**: 题目生成相关类,负责生成各类数学题目 -- **src/teacher/**: 教师管理相关类,处理教师登录和权限 -- **out/**: Java编译后的class文件输出目录 - -## 类说明 - -- **paper**: 存储教师生成的试卷文件和账号密码本 -- **src/paper/**: 试卷生成相关类,负责创建和保存试卷 -- **src/problem/**: 题目生成相关类,负责生成各类数学题目 -- **src/teacher/**: 教师管理相关类,处理教师登录和权限 -- **out/**: Java编译后的class文件输出目录 - -## 使用说明 - -### 登录系统 - -运行程序后,输入用户名和密码(格式:`用户名 密码`),系统会根据密码本验证身份并进入对应学段的出题模式。 - -### 生成题目 - -登录成功后,系统会提示输入题目数量(10-30之间,包括10和30),输入后即可生成试卷并保存至 `./doc/教师姓名/` 目录下。 - -### 切换学段 - -在出题模式下,可输入以下指令切换学段: -- `切换为小学出题` -- `切换为初中出题` -- `切换为高中出题` - - -### 退出登录 - -输入 `-1` 可退出当前用户,返回登录界面。 - -## 题目类型示例 - -- **小学**:四则运算,如 `12+(34-56)÷7=` -- **初中**:含平方和开方,如 `√25+3²=` -- **高中**:含三角函数,如 `sin30+cos60=` - -## 文件存储 - -- 生成的试卷以当前时间命名,格式为:`yyyy-MM-dd-HH-mm-ss.txt` - -- 保存在对应用户的文件夹下,例如:`./doc/张老师/2025-09-26-14-30-15.txt` - -- 若不存在该路径,程序将自动在运行目录中创建该路径的相关文件夹 - -## 运行环境 - -1. Java 8 或更高版本的IDE -2. PowerShell控制台环境(支持标准输入输出):
-- 方式1(不使用JAR包):在GenerateMath文件夹下进入终端,使用命令
`[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `
- `[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`
`java -cp "out\production\GenerateMath" Main -Dfile.encoding=UTF-8` -- 方式2(使用JAR包):在存放JAR包的文件目录下打开终端,使用命令
`[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `
- `[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`
`java -jar GenerateMath.jar` -3. cmd模式下:将PowerShell环境下的前两条命令修改为`chcp 65001` - -## 注意 -1. 登陆时账号和密码之间只能间隔一个空格,且密码后不能携带任何空白字符 -2. 任何命令语句都要严格按照所给字符串输入,其前后不能携带任何空白字符 -3. 填写出题数量时数字前后不能携带任何空白字符 - - -## 未来展望 - -未来可考虑添加以下功能: -- 图形用户界面 -- 自定义题目模板 +# 数学题目生成系统 + +## 项目简介 + +这是一个基于 Java 的命令行应用程序,用于为小学、初中和高中教师生成数学题目试卷。系统支持用户登录、题目查重、按难度生成题目,并保存为文本文件。 + +## 功能特点 + +- **多角色登录**:支持小学、初中、高中教师登录 +- **题目生成**:根据学段生成不同难度的数学题目 +- **题目查重**:自动检查题目是否重复,确保唯一性 +- **试卷保存**:将生成的题目保存为带时间戳的文本文件 +- **模式切换**:教师可在登录后切换出题学段 +- **多次生成**:教师登录后能生成无限次试卷 +# 项目结构图 + +``` +GenerateMath/ +├── doc/ # 文档和资源目录 +│ ├── 张三1/ # 教师个人文件夹(存储生成的试卷) +│ ├── 张三2/ +│ ├── 张三3/ +│ ├── 李四1/ +│ ├── 李四2/ +│ ├── 李四3/ +│ ├── 王五1/ +│ ├── 王五2/ +│ ├── 王五3/ +│ ├── 小学老师账号密码本 # 小学教师认证文件(格式:用户名 密码) +│ ├── 初中老师账号密码本 # 初中教师认证文件 +│ └── 高中老师账号密码本 # 高中教师认证文件 +├── out/ # 编译输出目录 +├── src/ # 源代码目录 +│ ├── paper/ # 试卷生成模块 +│ │ ├── Paper.java # 抽象试卷类(提供文件路径检查功能) +│ │ │ └── checkPath(File file) # 检查并创建文件路径 +│ │ ├── PrimaryPaper.java # 小学试卷生成 +│ │ │ └── PrimaryPaper(int problemNumber, String teacherName) # 构造函数:生成小学试卷文件 +│ │ ├── JuniorPaper.java # 初中试卷生成 +│ │ │ └── JuniorPaper(int problemNumber, String teacherName) # 构造函数:生成初中试卷文件 +│ │ └── SeniorPaper.java # 高中试卷生成 +│ │ └── SeniorPaper(int problemNumber, String teacherName) # 构造函数:生成高中试卷文件 +│ ├── problem/ # 题目生成模块 +│ │ ├── MathProblem.java # 抽象题目类(定义题目基本结构) +│ │ │ ├── content # 题目内容字符串 +│ │ │ ├── op2[] # 基础运算符数组(+,-,×,÷) +│ │ │ └── examine(String teacherName) # 抽象查重方法 +│ │ ├── PrimaryMathProblem.java # 小学数学题目生成 +│ │ │ ├── PrimaryMathProblem() # 构造函数:生成2-5个数字的小学题目 +│ │ │ └── examine(String teacherName) # 查重:检查教师文件夹中是否已有相同题目 +│ │ ├── JuniorMathProblem.java # 初中数学题目生成 +│ │ │ ├── JuniorMathProblem() # 构造函数:生成含平方、开方的初中题目 +│ │ │ ├── opBack[] # 后缀运算符(平方、括号) +│ │ │ ├── opFront[] # 前缀运算符(开方、括号) +│ │ │ └── examine(String teacherName) # 查重方法 +│ │ └── SeniorMathProblem.java # 高中数学题目生成 +│ │ ├── SeniorMathProblem() # 构造函数:生成含三角函数的高中题目 +│ │ ├── opBack[] # 后缀运算符(平方、括号) +│ │ ├── opFront[] # 前缀运算符(三角函数) +│ │ └── examine(String teacherName) # 查重方法 +│ └── teacher/ # 教师管理模块 +│ ├── Teacher.java # 抽象教师类(定义教师基本属性和行为) +│ │ ├── rank (枚举) # 教师等级:PRIMARY, JUNIOR, SENIOR +│ │ ├── mode # 当前出题模式 +│ │ ├── userName # 教师用户名 +│ │ ├── initMode() # 抽象方法:初始化出题模式提示 +│ │ └── generatePaper(int number) # 抽象方法:生成试卷 +│ ├── PrimaryTeacher.java # 小学教师类 +│ │ ├── PrimaryTeacher(String name) # 构造函数 +│ │ ├── initMode() # 输出小学出题提示信息 +│ │ └── generatePaper(int number) # 创建PrimaryPaper对象生成试卷 +│ ├── JuniorTeacher.java # 初中教师类 +│ │ ├── JuniorTeacher(String name) # 构造函数 +│ │ ├── initMode() # 输出初中出题提示信息 +│ │ └── generatePaper(int number) # 创建JuniorPaper对象生成试卷 +│ └── SeniorTeacher.java # 高中教师类 +│ ├── SeniorTeacher(String name) # 构造函数 +│ ├── initMode() # 输出高中出题提示信息 +│ └── generatePaper(int number) # 创建SeniorPaper对象生成试卷 +│ +├── Main.java # 程序主入口类 +│ ├── primary/junior/senior (静态List) # 内置账号密码列表(备用验证) +│ ├── log1(String bookName, String password) # 内置账号验证方法 +│ ├── log(String bookName, String password) # 文件账号验证方法(优先读取文件) +│ ├── generate(Teacher teacher) # 交互式出题循环控制 +│ └── main(String[] args) # 主方法:处理登录和用户交互 +├── README.md # 项目说明文档 +└── 其他配置文件... # IDE配置文件等 +``` + +## 目录说明 + +- **doc/**: 存储教师生成的试卷文件和账号密码本 +- **src/paper/**: 试卷生成相关类,负责创建和保存试卷 +- **src/problem/**: 题目生成相关类,负责生成各类数学题目 +- **src/teacher/**: 教师管理相关类,处理教师登录和权限 +- **out/**: Java编译后的class文件输出目录 + + +## 使用说明 + +### 登录系统 + +运行程序后,输入用户名和密码(格式:`用户名 密码`),系统会根据密码本验证身份并进入对应学段的出题模式。 + +### 生成题目 + +登录成功后,系统会提示输入题目数量(10-30之间,包括10和30),输入后即可生成试卷并保存至 `./doc/教师姓名/` 目录下。 + +### 切换学段 + +在出题模式下,可输入以下指令切换学段: +- `切换为小学出题` +- `切换为初中出题` +- `切换为高中出题` + + +### 退出登录 + +输入 `-1` 可退出当前用户,返回登录界面。 + +## 题目类型示例 + +- **小学**:四则运算,如 `12+(34-56)÷7=` +- **初中**:含平方和开方,如 `√25+3²=` +- **高中**:含三角函数,如 `sin30+cos60=` + +## 文件存储 + +- 生成的试卷以当前时间命名,格式为:`yyyy-MM-dd-HH-mm-ss.txt` + +- 保存在对应用户的文件夹下,例如:`./doc/张老师/2025-09-26-14-30-15.txt` + +- 若不存在该路径,程序将自动在运行目录中创建该路径的相关文件夹 + +## 运行环境 + +1. Java 8 或更高版本的IDE +2. PowerShell控制台环境(支持标准输入输出):
+- 方式1(不使用JAR包):在GenerateMath文件夹下进入终端,使用命令
`[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `
+ `[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`
`java -cp "out\production\GenerateMath" Main -Dfile.encoding=UTF-8` +- 方式2(使用JAR包):在存放JAR包的文件目录下打开终端,使用命令
`[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `
+ `[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`
`java -jar GenerateMath.jar` +3. cmd模式下:将PowerShell环境下的前两条命令修改为`chcp 65001` + +## 注意 +1. 登陆时账号和密码之间只能间隔一个空格,且密码后不能携带任何空白字符 +2. 任何命令语句都要严格按照所给字符串输入,其前后不能携带任何空白字符 +3. 填写出题数量时数字前后不能携带任何空白字符 + + +## 未来展望 + +未来可考虑添加以下功能: +- 图形用户界面 +- 自定义题目模板 - 试卷导出为多种格式 \ No newline at end of file