@ -0,0 +1 @@
|
|||||||
|
#个人项目:中小学数学卷子自动生成程序
|
@ -0,0 +1,34 @@
|
|||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
public class Generator {
|
||||||
|
public static void generate(Users users, int count, ProblemsGenerator problemsGenerator) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 1; i <= count; i++) {
|
||||||
|
builder.append(i).append(". ").append(problemsGenerator.generate()).append("\n\n");
|
||||||
|
}
|
||||||
|
save(users, builder.toString());
|
||||||
|
System.out.println("题目生成完成。");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void save(Users users, String content) {
|
||||||
|
try {
|
||||||
|
String folder = "doc/" + users.getType();
|
||||||
|
java.io.File dir = new java.io.File(folder);
|
||||||
|
if (!dir.exists()) {
|
||||||
|
dir.mkdirs();
|
||||||
|
}
|
||||||
|
String filename = LocalDateTime.now()
|
||||||
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss")) + ".txt";
|
||||||
|
FileWriter writer = new FileWriter(folder + "/" + filename);
|
||||||
|
writer.write(content);
|
||||||
|
writer.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("保存失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class JuniorProblem implements ProblemsGenerator{
|
||||||
|
private static final Random RANDOM = new Random();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
int count = RANDOM.nextInt(5) + 1; // 1~5个数
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
int num = RANDOM.nextInt(20) + 1;
|
||||||
|
if (RANDOM.nextBoolean()) {
|
||||||
|
sb.append(num).append("^2");
|
||||||
|
} else {
|
||||||
|
sb.append("√").append(num);
|
||||||
|
}
|
||||||
|
if (i < count - 1) {
|
||||||
|
sb.append(" + ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ExamSystem system = new ExamSystem();
|
||||||
|
while (true) {
|
||||||
|
Users users = system.login();
|
||||||
|
system.generateProblems(users);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class PrimaryProblem implements ProblemsGenerator {
|
||||||
|
private static final Random RANDOM = new Random();
|
||||||
|
private static final char[] OPS = {'+', '-', '*', '/'};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
int count = RANDOM.nextInt(5) + 1; // 1~5个数
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
int num = RANDOM.nextInt(100) + 1;
|
||||||
|
sb.append(num);
|
||||||
|
if (i < count - 1) {
|
||||||
|
sb.append(" ").append(OPS[RANDOM.nextInt(OPS.length)]).append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
public interface ProblemsGenerator {
|
||||||
|
String generate();
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class SeniorProblem implements ProblemsGenerator{
|
||||||
|
private static final Random RANDOM = new Random();
|
||||||
|
private static final String[] FUNCS = {"sin", "cos", "tan"};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
int count = RANDOM.nextInt(5) + 1; // 1~5个数
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
int angle = RANDOM.nextInt(90) + 1;
|
||||||
|
String func = FUNCS[RANDOM.nextInt(FUNCS.length)];
|
||||||
|
sb.append(func).append("(").append(angle).append("°)");
|
||||||
|
if (i < count - 1) {
|
||||||
|
sb.append(" + ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
public class Users {
|
||||||
|
private final String name;
|
||||||
|
private final String password;
|
||||||
|
private final String type;
|
||||||
|
|
||||||
|
private static final Users[] USERS = {
|
||||||
|
new Users("张三1", "123", "小学"),
|
||||||
|
new Users("张三2", "123", "小学"),
|
||||||
|
new Users("张三3", "123", "小学"),
|
||||||
|
new Users("李四1", "123", "初中"),
|
||||||
|
new Users("李四2", "123", "初中"),
|
||||||
|
new Users("李四3", "123", "初中"),
|
||||||
|
new Users("王五1", "123", "高中"),
|
||||||
|
new Users("王五2", "123", "高中"),
|
||||||
|
new Users("王五3", "123", "高中")
|
||||||
|
};
|
||||||
|
|
||||||
|
public Users(String name, String password, String type) {
|
||||||
|
this.name = name;
|
||||||
|
this.password = password;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Users login(String name, String password) {
|
||||||
|
for (Users users : USERS) {
|
||||||
|
if (users.getName().equals(name) && users.getPassword().equals(password)) {
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue