Skip to content

Commit 37ae082

Browse files
fix(plugins/score): 修复了未评教时,对成绩为 -999 的课程仍会加入绩点计算的 bug
修复了未评教时,对成绩为 -999 的课程仍会加入绩点计算的 bug,需要在计算绩点时,过滤掉负数成绩的非法科目。 fix #41
1 parent 46deaf4 commit 37ae082

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

src/plugins/score/utils.ts

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ function mapScore(arr: CourseScoreRecord[]): {
5454
return arr.map((v) => ({ value: v.courseScore || 0, weight: v.credit }))
5555
}
5656

57+
/**
58+
* 从一个课程数组里筛选出所有成绩合法的课程
59+
*
60+
* @param {CourseScoreRecord[]} arr 一个课程数组
61+
* @returns 筛选出的所有成绩合法的课程(成绩存在且非负)
62+
*/
63+
function removeIllegalScoreCourses(
64+
arr: CourseScoreRecord[]
65+
): CourseScoreRecord[] {
66+
return arr.filter((v) => v.courseScore && v.courseScore > 0)
67+
}
68+
5769
/**
5870
* 从一个课程数组里筛选出所有的必修课程
5971
*
@@ -91,7 +103,11 @@ function getCompulsoryCoursesGPA(arr: CourseScoreRecord[]): number {
91103
* @returns 必修加权平均分
92104
*/
93105
function getSelectedCoursesScore(arr: CourseScoreRecord[]): number {
94-
return reserveDigits(getWeightedAverage(mapScore(getSelectedCourses(arr))))
106+
return reserveDigits(
107+
getWeightedAverage(
108+
mapScore(removeIllegalScoreCourses(getSelectedCourses(arr)))
109+
)
110+
)
95111
}
96112

97113
/**
@@ -101,7 +117,11 @@ function getSelectedCoursesScore(arr: CourseScoreRecord[]): number {
101117
* @returns 选中课程加权平均绩点
102118
*/
103119
function getSelectedCoursesGPA(arr: CourseScoreRecord[]): number {
104-
return reserveDigits(getWeightedAverage(mapGPA(getSelectedCourses(arr))))
120+
return reserveDigits(
121+
getWeightedAverage(
122+
mapGPA(removeIllegalScoreCourses(getSelectedCourses(arr)))
123+
)
124+
)
105125
}
106126

107127
/**
@@ -111,7 +131,11 @@ function getSelectedCoursesGPA(arr: CourseScoreRecord[]): number {
111131
* @returns 必修加权平均分
112132
*/
113133
function getCompulsoryCoursesScore(arr: CourseScoreRecord[]): number {
114-
return reserveDigits(getWeightedAverage(mapScore(getCompulsoryCourses(arr))))
134+
return reserveDigits(
135+
getWeightedAverage(
136+
mapScore(removeIllegalScoreCourses(getCompulsoryCourses(arr)))
137+
)
138+
)
115139
}
116140

117141
/**
@@ -121,7 +145,9 @@ function getCompulsoryCoursesScore(arr: CourseScoreRecord[]): number {
121145
* @returns 全部课程加权平均绩点
122146
*/
123147
function getAllCoursesGPA(arr: CourseScoreRecord[]): number {
124-
return reserveDigits(getWeightedAverage(mapGPA(arr)))
148+
return reserveDigits(
149+
getWeightedAverage(mapGPA(removeIllegalScoreCourses(arr)))
150+
)
125151
}
126152

127153
/**
@@ -131,7 +157,9 @@ function getAllCoursesGPA(arr: CourseScoreRecord[]): number {
131157
* @returns 全部课程加权平均分
132158
*/
133159
function getAllCoursesScore(arr: CourseScoreRecord[]): number {
134-
return reserveDigits(getWeightedAverage(mapScore(arr)))
160+
return reserveDigits(
161+
getWeightedAverage(mapScore(removeIllegalScoreCourses(arr)))
162+
)
135163
}
136164

137165
/**

0 commit comments

Comments
 (0)