From 1d3f419c0ca469cfd84b410e63bd003870250fbb Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:29:33 +0800 Subject: [PATCH 01/11] ADD file via upload --- src | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src diff --git a/src b/src new file mode 100644 index 0000000..319b429 --- /dev/null +++ b/src @@ -0,0 +1,59 @@ +import java.util.Scanner; + +public class ExamSystem { + private final Scanner scanner = new Scanner(System.in); + public Users login() { + Users users = null; + while (users == null) { + System.out.print("请输入用户名和密码: "); + String input = scanner.nextLine(); + String[] parts = input.split(" "); + if (parts.length == 2) { + users = Users.login(parts[0], parts[1]); + } + if (users == null) { + System.out.println("请输入正确的用户名、密码"); + } + } + System.out.println("当前选择为" + users.getType() + "出题"); + return users; + } + + public void generateProblems(Users users) { + while (true) { + + System.out.print("准备生成" + users.getType() + + "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"); + String input = scanner.nextLine().trim(); + + if (input.equals("-1")) { + break; + } + + ProblemsGenerator generator = switch (users.getType()) { + case "小学" -> new PrimaryProblem(); + case "初中" -> new JuniorProblem(); + case "高中" -> new SeniorProblem(); + default -> null; + }; + + if (input.startsWith("切换为")) { + String target = input.replace("切换为", ""); + if (target.equals("小学") || target.equals("初中") || target.equals("高中")) { + users = new Users(users.getName(), users.getPassword(), target); + System.out.println("系统提示:准备生成" + users.getType() + "数学题目"); + } else { + System.out.println("请输入小学、初中和高中三个选项中的一个"); + } + continue; + } + + int num = Integer.parseInt(input); + if (num >= 10 && num <= 30 && generator != null) { + Generator.generate(users, num, generator); + } else { + System.out.println("请输入 10-30 之间的数字"); + } + } + } +} -- 2.34.1 From b88e3b6271a944765a030c2206c4700b81a21886 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:30:20 +0800 Subject: [PATCH 02/11] Delete 'src' --- src | 59 ----------------------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 src diff --git a/src b/src deleted file mode 100644 index 319b429..0000000 --- a/src +++ /dev/null @@ -1,59 +0,0 @@ -import java.util.Scanner; - -public class ExamSystem { - private final Scanner scanner = new Scanner(System.in); - public Users login() { - Users users = null; - while (users == null) { - System.out.print("请输入用户名和密码: "); - String input = scanner.nextLine(); - String[] parts = input.split(" "); - if (parts.length == 2) { - users = Users.login(parts[0], parts[1]); - } - if (users == null) { - System.out.println("请输入正确的用户名、密码"); - } - } - System.out.println("当前选择为" + users.getType() + "出题"); - return users; - } - - public void generateProblems(Users users) { - while (true) { - - System.out.print("准备生成" + users.getType() - + "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"); - String input = scanner.nextLine().trim(); - - if (input.equals("-1")) { - break; - } - - ProblemsGenerator generator = switch (users.getType()) { - case "小学" -> new PrimaryProblem(); - case "初中" -> new JuniorProblem(); - case "高中" -> new SeniorProblem(); - default -> null; - }; - - if (input.startsWith("切换为")) { - String target = input.replace("切换为", ""); - if (target.equals("小学") || target.equals("初中") || target.equals("高中")) { - users = new Users(users.getName(), users.getPassword(), target); - System.out.println("系统提示:准备生成" + users.getType() + "数学题目"); - } else { - System.out.println("请输入小学、初中和高中三个选项中的一个"); - } - continue; - } - - int num = Integer.parseInt(input); - if (num >= 10 && num <= 30 && generator != null) { - Generator.generate(users, num, generator); - } else { - System.out.println("请输入 10-30 之间的数字"); - } - } - } -} -- 2.34.1 From 816836ecb0d78bb171da077f0163476b9f952bb4 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:30:47 +0800 Subject: [PATCH 03/11] ADD file via upload --- src/ExamSystem.java | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/ExamSystem.java diff --git a/src/ExamSystem.java b/src/ExamSystem.java new file mode 100644 index 0000000..319b429 --- /dev/null +++ b/src/ExamSystem.java @@ -0,0 +1,59 @@ +import java.util.Scanner; + +public class ExamSystem { + private final Scanner scanner = new Scanner(System.in); + public Users login() { + Users users = null; + while (users == null) { + System.out.print("请输入用户名和密码: "); + String input = scanner.nextLine(); + String[] parts = input.split(" "); + if (parts.length == 2) { + users = Users.login(parts[0], parts[1]); + } + if (users == null) { + System.out.println("请输入正确的用户名、密码"); + } + } + System.out.println("当前选择为" + users.getType() + "出题"); + return users; + } + + public void generateProblems(Users users) { + while (true) { + + System.out.print("准备生成" + users.getType() + + "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):"); + String input = scanner.nextLine().trim(); + + if (input.equals("-1")) { + break; + } + + ProblemsGenerator generator = switch (users.getType()) { + case "小学" -> new PrimaryProblem(); + case "初中" -> new JuniorProblem(); + case "高中" -> new SeniorProblem(); + default -> null; + }; + + if (input.startsWith("切换为")) { + String target = input.replace("切换为", ""); + if (target.equals("小学") || target.equals("初中") || target.equals("高中")) { + users = new Users(users.getName(), users.getPassword(), target); + System.out.println("系统提示:准备生成" + users.getType() + "数学题目"); + } else { + System.out.println("请输入小学、初中和高中三个选项中的一个"); + } + continue; + } + + int num = Integer.parseInt(input); + if (num >= 10 && num <= 30 && generator != null) { + Generator.generate(users, num, generator); + } else { + System.out.println("请输入 10-30 之间的数字"); + } + } + } +} -- 2.34.1 From dd93877b96932bc3de9cdd671326c35665a9d8b7 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:30:59 +0800 Subject: [PATCH 04/11] ADD file via upload --- src/Generator.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Generator.java diff --git a/src/Generator.java b/src/Generator.java new file mode 100644 index 0000000..200797f --- /dev/null +++ b/src/Generator.java @@ -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()); + } + } +} + + -- 2.34.1 From 375f36cc2a73f8070411a5036f2290e84b81adce Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:31:09 +0800 Subject: [PATCH 05/11] ADD file via upload --- src/JuniorProblem.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/JuniorProblem.java diff --git a/src/JuniorProblem.java b/src/JuniorProblem.java new file mode 100644 index 0000000..8933d87 --- /dev/null +++ b/src/JuniorProblem.java @@ -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(); + } +} \ No newline at end of file -- 2.34.1 From 5a743058c2dd72ba52a10dc1685631d299d40ed1 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:31:20 +0800 Subject: [PATCH 06/11] ADD file via upload --- src/Main.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/Main.java diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..374dc2d --- /dev/null +++ b/src/Main.java @@ -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); + } + } +} \ No newline at end of file -- 2.34.1 From df8fa87dde36815ea3a8520955521e170ae8c411 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:31:29 +0800 Subject: [PATCH 07/11] ADD file via upload --- src/PrimaryProblem.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/PrimaryProblem.java diff --git a/src/PrimaryProblem.java b/src/PrimaryProblem.java new file mode 100644 index 0000000..4b5e693 --- /dev/null +++ b/src/PrimaryProblem.java @@ -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(); + } +} \ No newline at end of file -- 2.34.1 From 3176f34b858fea29be71fdd5cae3fb8855d00335 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:31:40 +0800 Subject: [PATCH 08/11] ADD file via upload --- src/ProblemsGenerator.java | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/ProblemsGenerator.java diff --git a/src/ProblemsGenerator.java b/src/ProblemsGenerator.java new file mode 100644 index 0000000..94b8bee --- /dev/null +++ b/src/ProblemsGenerator.java @@ -0,0 +1,3 @@ +public interface ProblemsGenerator { + String generate(); +} -- 2.34.1 From f7c2c3005bd53d48816a3035c609a8fbecd6f0fc Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:31:52 +0800 Subject: [PATCH 09/11] ADD file via upload --- src/SeniorProblem.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/SeniorProblem.java diff --git a/src/SeniorProblem.java b/src/SeniorProblem.java new file mode 100644 index 0000000..a5675bf --- /dev/null +++ b/src/SeniorProblem.java @@ -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(); + } +} \ No newline at end of file -- 2.34.1 From d4f8cd980bd10e80eaf1d62b2d39dc3998208a0e Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:32:02 +0800 Subject: [PATCH 10/11] ADD file via upload --- src/Users.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/Users.java diff --git a/src/Users.java b/src/Users.java new file mode 100644 index 0000000..b77898d --- /dev/null +++ b/src/Users.java @@ -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; + } +} \ No newline at end of file -- 2.34.1 From c78efa673d94631b776956f1e68acfc49a9e45db Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sat, 27 Sep 2025 01:32:21 +0800 Subject: [PATCH 11/11] ADD file via upload --- doc/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/README.md diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..01062e8 --- /dev/null +++ b/doc/README.md @@ -0,0 +1 @@ +#个人项目:中小学数学卷子自动生成程序 -- 2.34.1