From 54fc02ecb36a7b81f4e1c96db33092f16c8643f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=B4=81=E5=BD=B1?= Date: Tue, 18 Mar 2025 22:11:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/action/ToolTemplateAction.java | 10 + .../com/wetoband/template/dao/GradeDao.java | 11 + .../template/dao/impl/GradeDaoImpl.java | 55 ++++ .../com/wetoband/template/entity/Grade.java | 26 ++ .../template/service/GradeService.java | 9 + .../service/impl/GradeServiceImpl.java | 24 ++ TeacherHomeWork-vite/package-lock.json | 106 ++++++- TeacherHomeWork-vite/package.json | 3 +- .../views/GradeManager/GradeLMangerList.vue | 262 ++++++++---------- TeacherHomeWork-vite/yarn.lock | 58 ++++ 10 files changed, 415 insertions(+), 149 deletions(-) create mode 100644 HomeWork-java/src/com/wetoband/template/dao/GradeDao.java create mode 100644 HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java create mode 100644 HomeWork-java/src/com/wetoband/template/entity/Grade.java create mode 100644 HomeWork-java/src/com/wetoband/template/service/GradeService.java create mode 100644 HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java diff --git a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java index 5520ddc..1ce5a05 100644 --- a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java +++ b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java @@ -27,6 +27,7 @@ import java.util.*; QuestionService questionService = IOC.getBean(QuestionServiceImpl.class); NoticeService noticeService = IOC.getBean(NoticeServiceImpl.class); SubmitService submitService = IOC.getBean(SubmitServiceImpl.class); + GradeService gradeService = IOC.getBean(GradeServiceImpl.class); WordService wordService = IOC.getBean(WordServiceImpl.class); @@ -246,4 +247,13 @@ import java.util.*; List homeWork = homeWorkService.getHomeWorkByStatus(id,submitStatus); return R.ok().put("data", homeWork); } + + //教师端获取成绩 + @Action + public R getScore(HttpServletRequest request) throws Exception { + Integer id = Integer.parseInt(request.getParameter("id")); + List score = gradeService.getScore(id); + return R.ok().put("data", score); + + } } \ No newline at end of file diff --git a/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java b/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java new file mode 100644 index 0000000..ae58337 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/dao/GradeDao.java @@ -0,0 +1,11 @@ +package com.wetoband.template.dao; + +import com.wetoband.template.entity.Grade; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public interface GradeDao { + List getScore(Connection connection, int id) throws SQLException; +} diff --git a/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java b/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java new file mode 100644 index 0000000..e0b7977 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/dao/impl/GradeDaoImpl.java @@ -0,0 +1,55 @@ +package com.wetoband.template.dao.impl; + +import com.wetoband.template.dao.GradeDao; +import com.wetoband.template.entity.Grade; +import org.springframework.stereotype.Repository; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@Repository +public class GradeDaoImpl implements GradeDao { + @Override + public List getScore(Connection connection, int id) throws SQLException { + + // SQL语句 + String sql = "SELECT student.sno,student.name,homework.homework_name,submit.submitTime,submit.score,submit.submitStatus,submit.correct " + + "FROM submit JOIN student ON submit.student_id = student.id " + + "JOIN homework ON submit.homework_id = homework.homework_id " + + "WHERE submit.teacher_id = ?"; + + List gradeList = new ArrayList<>(); + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setInt(1, id); + try (ResultSet rs = pstm.executeQuery()) { + while (rs.next()) { + Grade grade = new Grade(); + grade.setSno(rs.getString("sno")); + grade.setName(rs.getString("name")); + grade.setHomeworkName(rs.getString("homework_name")); + grade.setSubmitTime(rs.getString("submitTime")); + grade.setScore(rs.getDouble("score")); + if (rs.getInt("submitStatus") == 0){ + grade.setSubmitStatus("否"); + }else { + grade.setSubmitStatus("是"); + } + if (rs.getInt("correct") == 0){ + grade.setCorrect("否"); + }else { + grade.setCorrect("是"); + } + gradeList.add(grade); + } + } + } catch (SQLException e) { + // 处理异常,这里只是简单地让异常继续抛出,但实际应用中可能需要更详细的错误处理 + throw e; + } + return gradeList; + } +} diff --git a/HomeWork-java/src/com/wetoband/template/entity/Grade.java b/HomeWork-java/src/com/wetoband/template/entity/Grade.java new file mode 100644 index 0000000..f85dc3d --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/entity/Grade.java @@ -0,0 +1,26 @@ +package com.wetoband.template.entity; + +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Table; + +@Data +@Table(name = "grade") +public class Grade { + @Column(name = "sno") + private String sno; + @Column(name = "name") + private String name; + @Column(name = "homework_name") + private String homeworkName; + @Column(name = "submit_time") + private String submitTime; + @Column(name = "score") + private double score; + @Column(name = "submitStatus") + private String submitStatus; + @Column(name = "correct") + private String correct; +} + diff --git a/HomeWork-java/src/com/wetoband/template/service/GradeService.java b/HomeWork-java/src/com/wetoband/template/service/GradeService.java new file mode 100644 index 0000000..08f1c15 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/GradeService.java @@ -0,0 +1,9 @@ +package com.wetoband.template.service; + +import com.wetoband.template.entity.Grade; + +import java.util.List; + +public interface GradeService { + public List getScore(int id) throws Exception; +} diff --git a/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java b/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java new file mode 100644 index 0000000..3304a35 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/impl/GradeServiceImpl.java @@ -0,0 +1,24 @@ +package com.wetoband.template.service.impl; + +import com.fy.basejar.tool.ActionToolBase; +import com.wetoband.template.dao.GradeDao; +import com.wetoband.template.entity.Grade; +import com.wetoband.template.service.GradeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.util.List; + +@Service +public class GradeServiceImpl implements GradeService { + @Autowired + private GradeDao gradeDao; + + @Override + public List getScore(int id) throws Exception { + final Connection connection = ActionToolBase.getDBConnection(); + return gradeDao.getScore(connection,id); + } + +} diff --git a/TeacherHomeWork-vite/package-lock.json b/TeacherHomeWork-vite/package-lock.json index 48f7493..7ca28aa 100644 --- a/TeacherHomeWork-vite/package-lock.json +++ b/TeacherHomeWork-vite/package-lock.json @@ -16,7 +16,8 @@ "qs": "^6.11.2", "vue": "^3.3.11", "vue-echarts": "^7.0.3", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "xlsx": "^0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", @@ -880,6 +881,15 @@ } } }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", @@ -953,6 +963,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", @@ -981,6 +1004,15 @@ "fsevents": "~2.3.2" } }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", @@ -993,6 +1025,18 @@ "node": ">= 0.8" } }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -1158,6 +1202,15 @@ "node": ">= 6" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", @@ -1590,6 +1643,18 @@ "node": ">=0.10.0" } }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1743,6 +1808,45 @@ "vue": "^3.2.0" } }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/zrender": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", diff --git a/TeacherHomeWork-vite/package.json b/TeacherHomeWork-vite/package.json index c384ba9..552e1d1 100644 --- a/TeacherHomeWork-vite/package.json +++ b/TeacherHomeWork-vite/package.json @@ -17,7 +17,8 @@ "qs": "^6.11.2", "vue": "^3.3.11", "vue-echarts": "^7.0.3", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "xlsx": "^0.18.5" }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.2", diff --git a/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue b/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue index 5c5a9ba..baa121e 100644 --- a/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue +++ b/TeacherHomeWork-vite/src/views/GradeManager/GradeLMangerList.vue @@ -1,56 +1,53 @@