修改了bug

develop
hs0120 5 months ago
commit 1b3e5097d3

55
.gitignore vendored

@ -0,0 +1,55 @@
# 编译后的类文件
*.class
# 打包文件
*.jar
*.war
*.ear
# IDE 文件
/.idea/
/.settings/
/*.iml
/*.ipr
/*.iws
# 构建工具目录
/target/
/build/
/out/
# 日志文件
*.log
# 系统文件
.DS_Store
Thumbs.db### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: Main
Class-Path: .

@ -0,0 +1,164 @@
# 数学题目生成系统
## 项目简介
这是一个基于 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控制台环境支持标准输入输出<br>
- 方式1不使用JAR包在GenerateMath文件夹下进入终端使用命令 <br> `[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `<br>
`[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`<br> `java -cp "out\production\GenerateMath" Main -Dfile.encoding=UTF-8`
- 方式2使用JAR包在存放JAR包的文件目录下打开终端使用命令<br>`[Console]::InputEncoding = [System.Text.Encoding]::UTF8 `<br>
`[Console]::OutputEncoding = [System.Text.Encoding]::UTF8`<br> `java -jar GenerateMath.jar`
3. cmd模式下将PowerShell环境下的前两条命令修改为`chcp 65001`
## 注意
1. 登陆时账号和密码之间只能间隔一个空格,且密码后不能携带任何空白字符
2. 任何命令语句都要严格按照所给字符串输入,其前后不能携带任何空白字符
3. 填写出题数量时数字前后不能携带任何空白字符
## 未来展望
未来可考虑添加以下功能:
- 图形用户界面
- 自定义题目模板
- 试卷导出为多种格式

@ -0,0 +1,3 @@
李四1 123
李四2 123
李四3 123

@ -0,0 +1,3 @@
张三1 123
张三2 123
张三3 123

@ -0,0 +1,20 @@
1、62÷30-18+84=
2、56÷95÷80✖13=
3、89-36✖64+10=
4、52+33÷64÷23✖30=
5、81÷21÷64✖18=
6、37+90+40-22=
7、11+12÷54÷44=
8、94÷78+52÷69✖22=
9、50+50-91÷67=
10、13-23=

@ -0,0 +1,20 @@
1、62÷69✖22÷92=
2、55÷27÷79=
3、74✖65=
4、73+25-12-20=
5、93+81-70÷9-14=
6、86✖33+79-99✖9=
7、48-44+18+80÷57=
8、4+27+37-100✖4=
9、45-28=
10、81-66=

@ -0,0 +1,40 @@
1、33²=
2、√14-80✖4=
3、73²✖70✖4✖27÷86=
4、39²-39✖72=
5、√92+99=
6、√19✖98-62✖68=
7、√55÷9÷47÷14=
8、√100=
9、√16÷36-72÷47=
10、64²✖50+67✖28=
11、64²-30=
12、53²-87-44=
13、√88=
14、86²÷43+5=
15、√35-33✖20+38=
16、67²+99÷58÷25=
17、√7+30÷5÷47=
18、33²-47÷27-6+93=
19、√21✖5✖38=
20、√32-34=

@ -0,0 +1,60 @@
1、tan13+56✖31=
2、sin100✖14+√79=
3、sin17✖68✖cos87+√92+24=
4、tan42+82-94✖cos89÷tan82=
5、cos58✖100=
6、tan99✖31-76=
7、tan50✖98=
8、tan96÷52=
9、sin89=
10、sin33✖23=
11、cos22✖27+1=
12、sin2✖67=
13、tan89-97-83÷tan16=
14、sin48-75=
15、tan51✖69✖83=
16、cos83-21-21÷44=
17、sin1+95-sin15=
18、cos64÷60÷9=
19、tan92÷12✖41=
20、tan27+17+4+√64-sin57=
21、cos7+100÷19÷54=
22、cos68=
23、sin52=
24、tan57÷4✖8+√55=
25、cos41=
26、tan30-11+41=
27、sin100+38✖cos60+√30+62=
28、cos2÷45-67-72÷tan96=
29、sin87✖15=
30、tan48✖58÷26+√92=

@ -0,0 +1,40 @@
1、sin20=
2、cos83÷43+87=
3、sin98=
4、cos31-52+77+72-sin68=
5、sin37-84-sin40-sin50÷82=
6、cos75÷63÷60=
7、cos50+7✖24=
8、tan77-8-6=
9、tan98÷80+9✖cos99÷tan76=
10、tan99✖9÷9-sin58=
11、tan61-93-41=
12、sin67=
13、cos51÷31-35=
14、tan40÷52+47✖cos83=
15、cos25+10=
16、cos27÷18-96+72+√86=
17、sin97÷54+√9+√4-33=
18、sin25+42÷tan89=
19、cos48+91=
20、cos22+18+70=

@ -0,0 +1,44 @@
1、cos27=
2、sin45✖33=
3、cos88÷83✖20+88=
4、tan79-70=
5、sin6=
6、sin49+24-sin73=
7、tan90÷51✖90-sin33=
8、sin75✖93✖cos10+√4✖47=
9、sin90÷89+√56-sin39+5=
10、tan8+34+25÷tan19=
11、sin37=
12、cos90+92✖59=
13、sin62✖29+√24+√43+80=
14、sin74✖87=
15、cos47✖34=
16、sin99✖74-sin77÷tan3+86=
17、cos96÷45+76✖72=
18、sin38-83-sin86÷tan99-30=
19、sin48-19✖cos92-sin8✖22=
20、cos71+14=
21、cos24✖68÷85=
22、tan100÷64=

@ -0,0 +1,3 @@
王五1 123
王五2 123
王五3 123

@ -0,0 +1,97 @@
import teacher.JuniorTeacher;
import teacher.PrimaryTeacher;
import teacher.SeniorTeacher;
import teacher.Teacher;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
static List<String> primary = Arrays.asList("张三1 123", "张三2 123", "张三3 123");
static List<String> junior = Arrays.asList("李四1 123", "李四2 123", "李四3 123");
static List<String> senior = Arrays.asList("王五1 123", "王五2 123", "王五3 123");
static boolean log1(String bookName, String password) {
if (bookName.matches(".*小学.*") && primary.contains(password)) {
return true;
} else if (bookName.matches(".*初中.*") && junior.contains(password)) {
return true;
} else return bookName.matches(".*高中.*") && senior.contains(password);
}
static boolean log(String bookName, String password) {
try (BufferedReader fr = new BufferedReader(new FileReader(bookName))) {
String line;
while ((line = fr.readLine()) != null) {
if (line.equals(password)) {
return true;
}
}
return false;
} catch (IOException e) {
return log1(bookName, password);
}
}
static void generate(Teacher teacher) {
Scanner sc = new Scanner(System.in);
while (true) {
teacher.initMode();
String line = sc.nextLine();
int number;
if (line.matches("-?\\d+")) {
try {
number = Integer.parseInt(line);
} catch (NumberFormatException n) {
number = 40;
}
if (number == -1) {
return;
} else if (number >= 10 && number <= 30) {
teacher.generatePaper(number);
} else {
System.out.println("请输入10-30以内的数字");
}
} else if (line.equals("切换为小学")) {
teacher = new PrimaryTeacher(teacher.userName);
} else if (line.equals("切换为初中")) {
teacher = new JuniorTeacher(teacher.userName);
} else if (line.equals("切换为高中")) {
teacher = new SeniorTeacher(teacher.userName);
} else {
System.out.println("请输入有效的数字或指令!");
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名和密码,两者之间用一个空格隔开");
String s;
while (sc.hasNextLine()) {
s = sc.nextLine();
if (s.matches("\\s*")) {
System.out.println("输入不能为空!");
} else {
String name = s.split(" ")[0];
if (log("./doc/小学老师账号密码本", s)) {
Teacher teacher = new PrimaryTeacher(name);
generate(teacher);
} else if (log("./doc/初中老师账号密码本", s)) {
Teacher teacher = new JuniorTeacher(name);
generate(teacher);
} else if (log("./doc/高中老师账号密码本", s)) {
Teacher teacher = new SeniorTeacher(name);
generate(teacher);
} else {
System.out.println("请输入正确的用户名、密码:");
}
}
System.out.println("请输入用户名和密码,两者之间用一个空格隔开");
}
}
}

@ -0,0 +1,41 @@
package paper;
import problem.JuniorMathProblem;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
public class JuniorPaper extends Paper {
public JuniorPaper(int problemNumber, String teacherName) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String formattedDate = "./doc/" + teacherName + "/" + sdf.format(new Date()) + ".txt";
File file = new File(formattedDate);
try {
if (!file.exists()) {
checkPath(file);
} else {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
BufferedWriter bw = new BufferedWriter(osw);
for (int i = 1; i <= problemNumber; i++) {
JuniorMathProblem pmp = new JuniorMathProblem();
if (pmp.examine(teacherName)) {
String line = String.valueOf(i) + "、" + pmp.content;
bw.write(line);
bw.newLine();
bw.newLine();
} else {
i--;
}
}
bw.close();
System.out.println("已完成出题。");
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,17 @@
package paper;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public abstract class Paper {
protected void checkPath(File file) throws IOException {
if (!file.exists()) {
Path filePath = Paths.get(file.getPath());
Files.createDirectories(filePath.getParent());
Files.createFile(filePath);
}
}
}

@ -0,0 +1,41 @@
package paper;
import problem.PrimaryMathProblem;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PrimaryPaper extends Paper {
public PrimaryPaper(int problemNumber, String teacherName) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String formattedDate = "./doc/" + teacherName + "/" + sdf.format(new Date()) + ".txt";
File file = new File(formattedDate);
try {
if (!file.exists()) {
checkPath(file);
} else {
file.createNewFile();
}
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
for (int i = 1; i <= problemNumber; i++) {
PrimaryMathProblem pmp = new PrimaryMathProblem();
if (pmp.examine(teacherName)) {
String line = String.valueOf(i) + "、" + pmp.content;
bw.write(line);
bw.newLine();
bw.newLine();
} else {
i--;
}
}
bw.close();
System.out.println("已完成出题。");
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,41 @@
package paper;
import problem.SeniorMathProblem;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SeniorPaper extends Paper {
public SeniorPaper(int problemNumber, String teacherName) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String formattedDate = "./doc/" + teacherName + "/" + sdf.format(new Date()) + ".txt";
File file = new File(formattedDate);
try {
if (!file.exists()) {
checkPath(file);
} else {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
BufferedWriter bw = new BufferedWriter(osw);
for (int i = 1; i <= problemNumber; i++) {
SeniorMathProblem pmp = new SeniorMathProblem();
if (pmp.examine(teacherName)) {
String line = String.valueOf(i) + "、" + pmp.content;
bw.write(line);
bw.newLine();
bw.newLine();
} else {
i--;
}
}
bw.close();
System.out.println("已完成出题。");
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,76 @@
package problem;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;
public class JuniorMathProblem extends MathProblem {
String[] opBack = {"²", ""};
String[] opFront = {"√", ""};
public JuniorMathProblem() {
// 生成初中题的函数
Random random = new Random();
int total = random.nextInt(5) + 1;
if (total == 1) {
int op = random.nextInt(2);
int number = random.nextInt(100) + 1;
if (op == 0) {
content = String.valueOf(number) + "²";
} else {
content = "√" + String.valueOf(number);
}
} else {
int[] number = new int[total];
number[0] = random.nextInt(100) + 1;
int choice = random.nextInt(2);
if (choice == 0) {
content = String.valueOf(number[0]) + "²";
} else {
content = "√" + String.valueOf(number[0]);
}
for (int i = 1; i < total; i++) {
number[i] = random.nextInt(100) + 1;
int op = random.nextInt(4);
if (i == choice + 1 && total > choice + 2) {
content += op2[op] + "" + String.valueOf(number[i]);
} else if (i == choice + 2) {
content += op2[op] + String.valueOf(number[i]) + "";
} else {
content += op2[op] + String.valueOf(number[i]);
}
}
}
content += "=";
}
@Override
public boolean examine(String teacherName) {
try {
File folder = new File("./doc/" + teacherName);
if (!folder.exists() || !folder.isDirectory()) {
System.out.println("文件夹不存在或不是目录!");
}
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
BufferedReader fr = new BufferedReader(new FileReader(file));
String line;
while ((line = fr.readLine()) != null) {
if (line.equals(content)) {
return false;
}
}
fr.close();
}
}
}
} catch (IOException e) {
System.out.println(e);
}
return true;
}
}

@ -0,0 +1,10 @@
package problem;
public abstract class MathProblem {
public String content = "";
public String[] op2 = {"+", "-", "✖", "÷"};
boolean examine(String teacherName) {
return true;
}
}

@ -0,0 +1,59 @@
package problem;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;
public class PrimaryMathProblem extends MathProblem {
public PrimaryMathProblem() {
// 生成小学题的函数
Random random = new Random();
int total = random.nextInt(4) + 2;
int[] number = new int[total];
number[0] = random.nextInt(100) + 1;
content += String.valueOf(number[0]);
int choice = random.nextInt(2);
for (int i = 1; i < total; i++) {
number[i] = random.nextInt(100) + 1;
int op = random.nextInt(4);
if (i == choice + 1 && total > choice + 2) {
content += op2[op] + "" + String.valueOf(number[i]);
} else if (i == choice + 2) {
content += op2[op] + String.valueOf(number[i]) + "";
} else {
content += op2[op] + String.valueOf(number[i]);
}
}
content += "=";
}
@Override
public boolean examine(String teacherName) {
try {
File folder = new File("./doc/" + teacherName);
if (!folder.exists() || !folder.isDirectory()) {
System.out.println("文件夹不存在或不是目录!");
}
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
BufferedReader fr = new BufferedReader(new FileReader(file));
String line;
while ((line = fr.readLine()) != null) {
if (line.equals(content)) {
return false;
}
}
fr.close();
}
}
}
} catch (IOException e) {
System.out.println(e);
}
return true;
}
}

@ -0,0 +1,77 @@
package problem;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;
public class SeniorMathProblem extends MathProblem {
String[] opFront = {"√", "sin", "cos", "tan"};
public SeniorMathProblem() {
// 生成高中题的函数
Random random = new Random();
int total = random.nextInt(5) + 1;
if (total == 1) {
int op = random.nextInt(3);
int number = random.nextInt(100) + 1;
if (op == 0) {
content = "sin" + String.valueOf(number);
} else if (op == 1) {
content = "cos" + String.valueOf(number);
} else {
content = "tan" + String.valueOf(number);
}
} else {
int[] number = new int[total];
number[0] = random.nextInt(100) + 1;
int choice = random.nextInt(3);
if (choice == 0) {
content = "sin" + String.valueOf(number[0]);
} else if (choice == 1) {
content = "tan" + String.valueOf(number[0]);
} else {
content = "cos" + String.valueOf(number[0]);
}
for (int i = 1; i < total; i++) {
number[i] = random.nextInt(100) + 1;
int op = random.nextInt(4);
if (i == choice + 2 || i == choice + 3) {
content += op2[op] + opFront[op] + String.valueOf(number[i]);
} else {
content += op2[op] + String.valueOf(number[i]);
}
}
}
content += "=";
}
@Override
public boolean examine(String teacherName) {
try {
File folder = new File("./doc/" + teacherName);
if (!folder.exists() || !folder.isDirectory()) {
System.out.println("文件夹不存在或不是目录!");
}
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
BufferedReader fr = new BufferedReader(new FileReader(file));
String line;
while ((line = fr.readLine()) != null) {
if (line.equals(content)) {
return false;
}
}
fr.close();
}
}
}
} catch (IOException e) {
System.out.println(e);
}
return true;
}
}

@ -0,0 +1,21 @@
package teacher;
import paper.JuniorPaper;
public class JuniorTeacher extends Teacher {
public JuniorTeacher(String name) {
mode = Teacher.rank.JUNIOR.toString();
userName = name;
}
@Override
public void initMode() {
System.out.println("当前选择为初中出题");
System.out.println("准备生成初中数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录");
}
@Override
public void generatePaper(int number) {
paper = new JuniorPaper(number, userName);
}
}

@ -0,0 +1,21 @@
package teacher;
import paper.PrimaryPaper;
public class PrimaryTeacher extends Teacher {
public PrimaryTeacher(String name) {
mode = Teacher.rank.JUNIOR.toString();
userName = name;
}
@Override
public void initMode() {
System.out.println("当前选择为小学出题");
System.out.println("准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录");
}
@Override
public void generatePaper(int number) {
paper = new PrimaryPaper(number, userName);
}
}

@ -0,0 +1,21 @@
package teacher;
import paper.SeniorPaper;
public class SeniorTeacher extends Teacher {
public SeniorTeacher(String name) {
mode = Teacher.rank.SENIOR.toString();
userName = name;
}
@Override
public void initMode() {
System.out.println("当前选择为高中出题");
System.out.println("准备生成高中数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录");
}
@Override
public void generatePaper(int number) {
paper = new SeniorPaper(number, userName);
}
}

@ -0,0 +1,19 @@
package teacher;
import paper.Paper;
public abstract class Teacher {
enum rank {
PRIMARY,
JUNIOR,
SENIOR
}
public String mode = "";
public String userName = "";
public Paper paper;
public void initMode() {}
public void generatePaper(int number) {}
}
Loading…
Cancel
Save