【修改】修改判分格式

This commit is contained in:
huababa1
2025-08-21 20:19:57 +08:00
parent a668bb8c08
commit d0abf2f015
2 changed files with 56 additions and 60 deletions

View File

@@ -238,14 +238,14 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (table1Columns.equals(table2Columns)) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】" + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【✅】");
appendToFile(answerLogPath, "【执行】" + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuSQL, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】 " + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【❌】");
appendToFile(answerLogPath, "【执行】 " + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + showCreateTableSql + "】【验证】【表】【" + tableName + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuSQL, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -323,15 +323,15 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (isEquivalent) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】" + "" + yanzheng + "】【验证】【表】【" + tableName + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + yanzheng + "】【验证】【表】【" + tableName + "】【✅】");
appendToFile(answerLogPath, "【执行】" + "" + yanzheng + "】【验证】【表】【" + tableName + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + yanzheng + "】【验证】【表】【" + tableName + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuSql, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】" + "" + yanzheng + "】【验证】【表】【" + tableName + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + yanzheng + "】【验证】【表】【" + tableName + "】【❌】");
appendToFile(answerLogPath, "【执行】" + "" + yanzheng + "】【验证】【表】【" + tableName + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + yanzheng + "】【验证】【表】【" + tableName + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuSql, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -388,15 +388,15 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
//累加删除语句的所有权值 examQuestionKeywords累加scorerate
// appendToFile(answerLogPath, "验证通过:符合 DELETE 条件的记录已删除。");
// judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "验证通过:符合 DELETE 条件的记录已删除。");
appendToFile(answerLogPath, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【✅】");
appendToFile(answerLogPath, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, sql, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【❌】");
appendToFile(answerLogPath, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + verifySql + "】 【验证】 【表】 【" + tableName + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(null, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -498,15 +498,15 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
//
if (isEquivalent) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【✅】");
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuSql, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【❌】");
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】【验证】【表】【" + tableName + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuSql, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -604,16 +604,16 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (isEquivalent) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "执行" + sql + "验证文件【" + fileName.get() + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行" + sql + "验证文件【" + fileName.get() + "】【✅】");
appendToFile(answerLogPath, "执行" + sql + "验证】【文件" + fileName.get() + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行" + sql + "验证】【文件" + fileName.get() + "】【结果】【✅】");
//todo 得分
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, String.valueOf(stuAnswer), totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "执行" + sql + "验证文件【" + fileName.get() + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行" + sql + "验证文件【" + fileName.get() + "】【❌】");
appendToFile(answerLogPath, "执行" + sql + "验证】【文件" + fileName.get() + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行" + sql + "验证】【文件" + fileName.get() + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(String.valueOf(stuAnswer), examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -687,7 +687,7 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
}
} else {
appendToFile(answerLogPath, "【记录数】【" + result1.size() + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【记录数】【" + result1.size() + "");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【记录数】【" + result1.size() + "【❌】");
}
}
// 比较两个视图的结果
@@ -698,15 +698,15 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (isEquivalent) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + " 【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【✅】");
appendToFile(answerLogPath, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuSQL, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】 " + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【❌】");
appendToFile(answerLogPath, "【执行】 " + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + "" + showCreateViewSql + "】【验证】【视图】【" + viewNam1 + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuSQL, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -783,7 +783,7 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (StringUtils.isBlank(stuAnswer.get())) {
SourceAndText sourceAndTextError = new SourceAndText();
appendToFile(answerLogPath, "考生SQL文件丢失或未作答无法评分得分0.0【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "考生SQL文件丢失或未作答无法评分得分0.0【×");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "考生SQL文件丢失或未作答无法评分得分0.0【");
sourceAndTextError.setText(judgementStr);
sourceAndTextError.setScore(0.0);
continue;
@@ -813,16 +813,16 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
if (flag) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + extractCallStatements + "【验证】【文件】 【" + fileName.get() + "】【✅】");
appendToFile(answerLogPath, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + extractCallStatements + "【验证】【文件】 【" + fileName.get() + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuAnswer.get(), totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【×】");
appendToFile(answerLogPath, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【❌】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】" + extractCallStatements + "【验证】【文件】【" + fileName.get() + "】【结果】【❌】");
//得分
SourceAndText studentScorePojo = calculateTotalScoreRate(stuAnswer.get(), examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
@@ -906,7 +906,7 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
Statement stmtstu = connstu.createStatement()) {
if (StringUtils.isBlank(stuAnswer.get())) {
SourceAndText sourceAndTextError = new SourceAndText();
appendToFile(answerLogPath, "考生SQL文件丢失或未作答无法评分得分0.0【");
appendToFile(answerLogPath, "考生SQL文件丢失或未作答无法评分得分0.0【×");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "考生SQL文件丢失或未作答无法评分得分0.0【❌】");
sourceAndTextError.setText(judgementStr);
sourceAndTextError.setScore(0.0);
@@ -949,23 +949,23 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
boolean equals = normalizedTriggerSql1.equals(normalizedTriggerSql2);
if (equals) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【文件】 【" + fileName.get() + "】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【文件】 【" + fileName.get() + "】【✅】");
appendToFile(answerLogPath, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【结果】【✅】");
//todo 得分
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, stuAnswer.get(), totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
appendToFile(answerLogPath, "【文件】 【" + fileName.get() + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【文件】 【" + fileName.get() + "】【❌】");
appendToFile(answerLogPath, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【验证】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuAnswer.get(), examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
}
} else {
appendToFile(answerLogPath, "【文件】 【" + fileName.get() + "】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【文件】 【" + fileName.get() + "】【❌】");
appendToFile(answerLogPath, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【结果】【×】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "执行】"+answerSQL+"【验证】【文件】 【" + fileName.get() + "】【结果】【❌】");
SourceAndText studentScorePojo = calculateTotalScoreRate(stuAnswer.get(), examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
@@ -991,7 +991,7 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
Matcher matcher = pattern.matcher(sql);
if (!matcher.find()) {
throw new IllegalArgumentException("无法解析 UPDATE 语句");
appendToFile(answerLogPath, "无法解析 UPDATE 语句");
}
String tableName = matcher.group(1);
@@ -1034,16 +1034,14 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
//
if (isEquivalent) {
correctCount++; // 完全正确
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【√】");
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【结果】【√】");
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【结果】【✅】");
SourceAndText studentScorePojo = accumulateScoreAndLog(examMysqlKeywordList, total, answerLogPath, sql, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
} else {
judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【结果】【❌】");
if (answerListStu.size() >= 2) {
List<String> fieldMeta = answerListStu.get(0);
List<String> fieldValue = answerListStu.get(1);
@@ -1052,19 +1050,18 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
for (int i = 0; i < fieldMeta.size() && i < fieldValue.size(); i++) {
columnInfo.put(fieldMeta.get(i), fieldValue.get(i));
}
String alterSQL = buildAlterFromShowColumn(tableName, columnInfo);
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【×】");
appendToFile(answerLogPath, "【执行】 " + "" + selectSql + "】 【验证】 【表】 【" + tableName + "】【结果】【×】");
SourceAndText studentScorePojo = calculateTotalScoreRate(alterSQL, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
}else {
SourceAndText studentScorePojo = calculateTotalScoreRate(null, examMysqlKeywordList, totalKeyScore, score, answerId, scoreTotal, judgementStr);
scoreTotal += studentScorePojo.getScore();
judgementStr = studentScorePojo.getText();
}
}
}
}
// //删除临时创建的数据库databaseName
@@ -1076,7 +1073,12 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
// stmt.executeUpdate(dropDbSql2);
} finally {
}
}
appendToFile(answerLogPath, "共得分:" + String.format("%.2f", scoreTotal));
// judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "共得分:" + String.format("%.2f", scoreTotal));
folderzip.delete();
deleteFolder(folder);
//删除临时创建的数据库databaseName
try (Connection conn = DriverManager.getConnection(newDbUrl, user, password);
Statement stmt = conn.createStatement()) {
@@ -1086,12 +1088,6 @@ public class IMysqlLocalServiceImpl implements IMysqlLocalService {
} catch (SQLException e) {
e.printStackTrace();
}
}
}
appendToFile(answerLogPath, "共得分:" + String.format("%.2f", scoreTotal));
// judgementStr = HtmlAppender.appendHtmlLine(judgementStr, "共得分:" + String.format("%.2f", scoreTotal));
folderzip.delete();
deleteFolder(folder);
// 全部题目处理完成后
if (correctCount == totalQuestions) {
scoreTotal = score; // 全对,直接给满分

View File

@@ -17,7 +17,7 @@ public class MySQLExporterUtil {
public MySQLExporterUtil(String databaseName, String user, String password,String outputFilePath) {
this.databaseName = databaseName;
this.jdbcUrl = "jdbc:mysql://localhost:6033/" + databaseName + "?useSSL=false&serverTimezone=Asia/Shanghai";
this.jdbcUrl = "jdbc:mysql://localhost:48086/" + databaseName + "?useSSL=false&serverTimezone=Asia/Shanghai";
this.user = user;
this.password = password;
this.outputFilePath = outputFilePath;