【修改】 判分逻辑稍微优化

This commit is contained in:
DESKTOP-932OMT8\REN
2025-05-29 16:06:19 +08:00
parent 993e4c56c1
commit 06054139c7
3 changed files with 76 additions and 68 deletions

View File

@@ -18,6 +18,7 @@ import pc.exam.pp.module.exam.service.stuPaperScore.StuPaperScoreService;
import pc.exam.pp.module.judgement.controller.admin.autoTools.vo.StuPaperReqVo;
import pc.exam.pp.module.judgement.controller.admin.autoTools.vo.StuPaperScoreInfoVo;
import pc.exam.pp.module.judgement.service.auto_tools.AutoToolsService;
import pc.exam.pp.module.judgement.service.c_programming.JudgementService;
import pc.exam.pp.module.judgement.service.wps_excel.JudgementWpsExcelService;
import pc.exam.pp.module.judgement.service.wps_pptx.JudgementWpsPptxService;
import pc.exam.pp.module.judgement.service.wps_word.JudgementWpsWordService;
@@ -48,28 +49,34 @@ public class AutoToolsController {
@Resource
private JudgementWpsExcelService judgementWpsExcelService;
@Resource
private JudgementService judgementService;
@Resource
IExamQuestionService examQuestionService;
@GetMapping("/get")
public CommonResult<BigDecimal> get(StuPaperReqVo stuPaperReqVo) throws Exception {
return autoToolsService.judgementScore(stuPaperReqVo.getStuId(),stuPaperReqVo.getPaperId());
}
// @GetMapping("/getTest")
// public double gets(StuPaperReqVo stuPaperReqVo) throws Exception {
// ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
// return judgementWpsWordService.judgementWpsWord(15.0, "D:\\", "D:\\stu\\wps_word\\9f7d8f5d7c68cc2bfd03a23c19045efe7ba13a4bebeb833abece146908bcd0c6.docx", examQuestion);
// }
// @GetMapping("/getTests")
// public double getss(StuPaperReqVo stuPaperReqVo) throws Exception {
// ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
// return judgementWpsPptxService.judgementWpsPptx(15.0, "D:\\", "D:\\文档.pptx", examQuestion);
// }
// @GetMapping("/getTestss")
// public double getsss(StuPaperReqVo stuPaperReqVo) throws Exception {
// ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
// return judgementWpsExcelService.judgementWpsXlsx(15.0, "D:\\", "D:\\文档.xlsx", examQuestion);
// }
@GetMapping("/getTest")
public double gets(StuPaperReqVo stuPaperReqVo) throws Exception {
ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
return judgementWpsWordService.judgementWpsWord(15.0, "D:\\", "D:\\stu\\wps_word\\9f7d8f5d7c68cc2bfd03a23c19045efe7ba13a4bebeb833abece146908bcd0c6.docx", examQuestion);
return judgementService.ProgrammingC(15.0, "D:\\", "C语言编程题.c", examQuestion);
}
@GetMapping("/getTests")
public double getss(StuPaperReqVo stuPaperReqVo) throws Exception {
ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
return judgementWpsPptxService.judgementWpsPptx(15.0, "D:\\", "D:\\文档.pptx", examQuestion);
}
@GetMapping("/getTestss")
public double getsss(StuPaperReqVo stuPaperReqVo) throws Exception {
ExamQuestion examQuestion = examQuestionService.selectExamQuestionByQuId(stuPaperReqVo.getPaperId());
return judgementWpsExcelService.judgementWpsXlsx(15.0, "D:\\", "D:\\文档.xlsx", examQuestion);
}
@GetMapping("/getStuScoreInfo")
@Operation(summary = "通过学生ID、试卷ID获取")
public CommonResult<StuPaperScoreInfoVo> getStuScore(StuPaperReqVo stuPaperReqVo){

View File

@@ -326,31 +326,31 @@ public class AutoToolsServiceImpl implements AutoToolsService{
System.out.println(wps_word_score+"wps_word得分");
break;
}
// if ("演示".equals(one_file.getName().split("\\.")[0])) {
// double wps_pptx_score = judgementWpsPptxService.judgementWpsPptx(15.0, one_file.getPath(), file_one.getPath(), examQuestion);
// score += wps_pptx_score;
// stuPaperScoreDO.setScore(new BigDecimal(wps_pptx_score));
// // 原始正确分数
// stuPaperScoreDO.setTrueScore(new BigDecimal("15.0"));
// // 判断题是否正确
// if (wps_pptx_score == 15.0) {
// stuPaperScoreDO.setIsTrue(0);
// } else if (wps_pptx_score == 0) {
// stuPaperScoreDO.setIsTrue(1);
// } else {
// stuPaperScoreDO.setIsTrue(2);
// }
// stuPaperScoreDO.setSubjectName(examQuestion.getSubjectName());
// if (isNull) {
// // 如果之前没做过,则插入该题的分数
// stuPaperScoreService.insertStuPaperScore(stuPaperScoreDO);
// } else {
// // 如果之前做过,则更新该题的分数
// stuPaperScoreService.updateStuPaperScore(stuPaperScoreDO);
// }
// System.out.println(wps_pptx_score+"wps_ppt得分");
// break;
// }
if ("演示".equals(one_file.getName().split("\\.")[0])) {
double wps_pptx_score = judgementWpsPptxService.judgementWpsPptx(15.0, one_file.getPath(), file_one.getPath(), examQuestion);
score += wps_pptx_score;
stuPaperScoreDO.setScore(new BigDecimal(wps_pptx_score));
// 原始正确分数
stuPaperScoreDO.setTrueScore(new BigDecimal("15.0"));
// 判断题是否正确
if (wps_pptx_score == 15.0) {
stuPaperScoreDO.setIsTrue(0);
} else if (wps_pptx_score == 0) {
stuPaperScoreDO.setIsTrue(1);
} else {
stuPaperScoreDO.setIsTrue(2);
}
stuPaperScoreDO.setSubjectName(examQuestion.getSubjectName());
if (isNull) {
// 如果之前没做过,则插入该题的分数
stuPaperScoreService.insertStuPaperScore(stuPaperScoreDO);
} else {
// 如果之前做过,则更新该题的分数
stuPaperScoreService.updateStuPaperScore(stuPaperScoreDO);
}
System.out.println(wps_pptx_score+"wps_ppt得分");
break;
}
// if ("表格".equals(one_file.getName().split("\\.")[0])) {
// double wps_excel_score = judgementWpsExcelService.judgementWpsXlsx(15.0, one_file.getPath(), file_one.getPath(), examQuestion);
// score += wps_excel_score;
@@ -433,36 +433,35 @@ public class AutoToolsServiceImpl implements AutoToolsService{
break;
}
// if ("程序设计".equals(one_file.getName().split("\\.")[0])) {
// System.out.println(one_file);
// File mysql_file = new File(one_file.getPath());
// double judgement = mysqlServerice.Judgement(20.0,mysql_file, examQuestion);
// score+=judgement;
// stuPaperScoreDO.setScore(new BigDecimal(judgement));
// // 原始正确分数
// stuPaperScoreDO.setTrueScore(new BigDecimal("15.0"));
// // 判断题是否正确
// if (judgement == 20.0) {
// stuPaperScoreDO.setIsTrue(0);
// } else if (judgement == 0) {
// stuPaperScoreDO.setIsTrue(1);
// } else {
// stuPaperScoreDO.setIsTrue(2);
// }
// stuPaperScoreDO.setSubjectName(examQuestion.getSubjectName());
// if (isNull) {
// // 如果之前没做过,则插入该题的分数
// stuPaperScoreService.insertStuPaperScore(stuPaperScoreDO);
// } else {
// // 如果之前做过,则更新该题的分数
// stuPaperScoreService.updateStuPaperScore(stuPaperScoreDO);
// }
// System.out.println(judgement+"mysql得分");
// break;
// }
if ("程序设计".equals(one_file.getName().split("\\.")[0])) {
System.out.println(one_file);
File mysql_file = new File(one_file.getPath());
double judgement = mysqlServerice.Judgement(20.0,mysql_file, examQuestion);
score+=judgement;
stuPaperScoreDO.setScore(new BigDecimal(judgement));
// 原始正确分数
stuPaperScoreDO.setTrueScore(new BigDecimal("15.0"));
// 判断题是否正确
if (judgement == 20.0) {
stuPaperScoreDO.setIsTrue(0);
} else if (judgement == 0) {
stuPaperScoreDO.setIsTrue(1);
} else {
stuPaperScoreDO.setIsTrue(2);
}
stuPaperScoreDO.setSubjectName(examQuestion.getSubjectName());
if (isNull) {
// 如果之前没做过,则插入该题的分数
stuPaperScoreService.insertStuPaperScore(stuPaperScoreDO);
} else {
// 如果之前做过,则更新该题的分数
stuPaperScoreService.updateStuPaperScore(stuPaperScoreDO);
}
System.out.println(judgement+"mysql得分");
break;
}
}
}
}
}
}
@@ -479,7 +478,7 @@ public class AutoToolsServiceImpl implements AutoToolsService{
// end、删除文件
System.out.println(stuFilePath);
zip_file.delete();
// folder.delete();
// folder.delete();
deleteFolder(folder);
}
BigDecimal bd = new BigDecimal(Double.toString(score));

View File

@@ -70,8 +70,10 @@ public class JudgementCUtils
try {
boolean hasInput = code.contains("scanf") || code.contains("fgets") || code.contains("getchar");
System.out.println(System.getenv("PATH"));
String programC = pathC + "/program.c";
String programOut = pathC + "/program.out";
// String[] programCList = pathC.split("\\\\");
String programC = pathC + "\\program.c";
String programOut = pathC + "\\program.out";
// 写入 C 源码到文件
File file = new File(programC);
try (FileWriter writer = new FileWriter(file)) {