From d31cb6fd5ab8436dec1b4ffa36c0bc85b22af2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E5=A5=87=E5=B3=B0?= Date: Sat, 11 Oct 2025 13:39:44 +0800 Subject: [PATCH] sqf commit --- doc/MyApp.jar | Bin 0 -> 38636 bytes doc/README.md | 4 +- .../mathStudyApp/model/Create.class | Bin 5455 -> 5836 bytes src/model/Create.java | 153 +++++++----------- 4 files changed, 64 insertions(+), 93 deletions(-) create mode 100644 doc/MyApp.jar diff --git a/doc/MyApp.jar b/doc/MyApp.jar new file mode 100644 index 0000000000000000000000000000000000000000..01c6564cbbca849b2833227d325514ed6ac7dcfb GIT binary patch literal 38636 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 literal 5455 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 At^fc4 diff --git a/src/model/Create.java b/src/model/Create.java index d27a77a..d39e04e 100644 --- a/src/model/Create.java +++ b/src/model/Create.java @@ -13,105 +13,82 @@ import javax.script.ScriptException; */ public class Create { - // 评估表达式数值(double),若失败抛异常 private static double evalExpression(String expr) throws ScriptException { return ExpressionEvaluator.evaluate(expr); } - /** - * 生成试卷:返回 Paper 对象(questions, options, correctIndex) - */ public static Paper create(int n, Login.Level currentLevel, Login.Account user) { List existing = LoadFile.loadExistingQuestions(user.username); - Generator qg = new Generator(currentLevel, existing); - List paper = qg.generatePaper(n); - if (paper.isEmpty()) { - return null; - } + List paper = generatePaper(n, currentLevel, existing); + if (paper.isEmpty()) return null; - // 为每道题生成 4 个选项:一个正确值(三位有效数)加上 3 个干扰项 List optionsList = new ArrayList<>(); int[] correctIdx = new int[paper.size()]; + for (int i = 0; i < paper.size(); i++) { String q = paper.get(i); - double correctVal; - try { - correctVal = evalExpression(q); - } catch (Exception ex) { - // 如果无法精确计算(如复杂表达式),我们退而使用字符串匹配:将题目文本作为正确选项,生成三个变体文本 - String[] opts = new String[4]; - opts[0] = q; - opts[1] = q + " + 1"; - opts[2] = q + " - 1"; - opts[3] = "错误:" + q; - shuffleArray(opts); - int idx = findIndex(opts, q); - optionsList.add(opts); - correctIdx[i] = idx; - continue; - } - - // 格式化正确值为保留3位小数(若为整数则不显示小数) - String correctStr = formatNumber(correctVal); - - // 判断是否为整数答案 - boolean isIntAnswer = Math.abs(correctVal - Math.round(correctVal)) < 1e-6; - -// 产生三个干扰值 - Set optsSet = new LinkedHashSet<>(); - optsSet.add(correctStr); - Random r = new Random(); - int attempts = 0; - while (optsSet.size() < 4 && attempts < 50) { - attempts++; - double delta; - if (isIntAnswer) { - // 整数题:干扰项也是整数(偏差 ±1~±10) - delta = r.nextInt(10) + 1; - if (r.nextBoolean()) { - delta = -delta; - } - } else { - // 小数题:随机偏差比例 - delta = (Math.abs(correctVal) < 1e-6) - ? (r.nextDouble() * 5 + 1) - : (r.nextGaussian() * Math.max(1, Math.abs(correctVal) * 0.15)); - } - double cand = correctVal + delta; - String s = formatNumber(cand); - optsSet.add(s); - } -// 不足 4 个时补齐 - while (optsSet.size() < 4) { - double cand = isIntAnswer - ? correctVal + (r.nextInt(10) - 5) - : correctVal + (r.nextDouble() * 2 - 1); - optsSet.add(formatNumber(cand)); - } - - String[] optsArr = optsSet.toArray(new String[0]); -// 随机打乱并记录正确项位置 - shuffleArray(optsArr); - int idx = findIndex(optsArr, correctStr); - optionsList.add(optsArr); - correctIdx[i] = idx; + optionsList.add(generateOptions(q, correctIdx, i)); + } + + savePaper(user.username, paper); + + return new Paper(paper, optionsList, correctIdx); + } + + private static List generatePaper(int n, Login.Level level, List existing) { + Generator qg = new Generator(level, existing); + return qg.generatePaper(n); + } + + private static String[] generateOptions(String question, int[] correctIdx, int i) { + double correctVal; + try { + correctVal = evalExpression(question); + return generateNumericOptions(correctVal, correctIdx, i); + } catch (Exception e) { + return generateTextOptions(question, correctIdx, i); + } + } + private static String[] generateTextOptions(String question, int[] correctIdx, int i) { + String[] opts = new String[]{question, question + " + 1", question + " - 1", "错误:" + question}; + shuffleArray(opts); + correctIdx[i] = findIndex(opts, question); + return opts; + } + + private static String[] generateNumericOptions(double correctVal, int[] correctIdx, int i) { + String correctStr = formatNumber(correctVal); + boolean isInt = Math.abs(correctVal - Math.round(correctVal)) < 1e-6; + Set optsSet = new LinkedHashSet<>(); + optsSet.add(correctStr); + Random r = new Random(); + + int attempts = 0; + while (optsSet.size() < 4 && attempts < 50) { + attempts++; + double delta = isInt ? r.nextInt(10) + 1 : (r.nextGaussian() * Math.max(1, Math.abs(correctVal) * 0.15)); + if (isInt && r.nextBoolean()) delta = -delta; + optsSet.add(formatNumber(correctVal + delta)); } - // 保存试卷原文本(题干)到文件(按你的 Save 实现) + while (optsSet.size() < 4) { + double delta = isInt ? r.nextInt(10) - 5 : r.nextDouble() * 2 - 1; + optsSet.add(formatNumber(correctVal + delta)); + } + + String[] optsArr = optsSet.toArray(new String[0]); + shuffleArray(optsArr); + correctIdx[i] = findIndex(optsArr, correctStr); + return optsArr; + } + + private static void savePaper(String username, List paper) { try { - // 为保存,我们保存原题干列表(文本) - java.util.List raw = new ArrayList<>(); - for (String s : paper) { - raw.add(s); - } - Save.savePaper(user.username, raw); + Save.savePaper(username, new ArrayList<>(paper)); } catch (RuntimeException re) { - // 抛给 UI 处理(但仍返回 Paper) System.err.println("保存试卷时出错: " + re.getMessage()); } - - return new Paper(paper, optionsList, correctIdx); } private static void shuffleArray(String[] arr) { @@ -125,19 +102,13 @@ public class Create { } private static int findIndex(String[] arr, String target) { - for (int i = 0; i < arr.length; i++) { - if (arr[i].equals(target)) { - return i; - } - } + for (int i = 0; i < arr.length; i++) if (arr[i].equals(target)) return i; return 0; } private static String formatNumber(double v) { - if (Math.abs(v - Math.round(v)) < 1e-6) { - return String.valueOf((long) Math.round(v)); - } else { - return String.format("%.3f", v); - } + if (Math.abs(v - Math.round(v)) < 1e-6) return String.valueOf((long) Math.round(v)); + return String.format("%.3f", v); } } +