dtrung98/GPABookmarklet

New four-scale point calculation

Closed this issue · 4 comments

According to the academic transcript from the Office of Academic Affairs (OAA), retrieved in October 2023, the function representing the 4.0 scale is a linear function. For example, based on your current calculation method, if the October grade is 8.8, it corresponds to 3.5 on the 4.0 scale, whereas according to the OAA academic transcript, it is 3.9 [ 3.9 = 3.5 + (8.8 - 8.0) * 0.5 ]

Theo bảng điểm từ Phòng đào tạo, lấy vào tháng 10 năm 2023, hàm số biểu diễn thang hệ 4 là hàm tuyến tính. Chẳng hạn như theo cách tính hiện hành của anh, điểm thang 10 là 8.8 thì đổi sang thang hệ 4 là 3.5, trong khi theo bảng điểm thì là 3.9.

Therefore, the code in the file bookmarklet.js (lines 166 - 182) should be adjusted as follows:

Do đó, code trong file bookmarklet.js (dòng 166 - 182) nên được chỉnh lại như sau:

Old code

let supplementaryGrade = [
    { score: 9, letter: "A+", fourRounding: 4.0},
    { score: 8, letter: "A.", fourRounding: 3.5},
    { score: 7, letter: "B+", fourRounding: 3.0},
    { score: 6, letter: "B.", fourRounding: 2.5},
    { score: 5, letter: "C.", fourRounding: 2.0},
    { score: 4, letter: "D+", fourRounding: 1.5},
    { score: 3, letter: "D.", fourRounding: 1.0},
    { score: 0, letter: "F.", fourRounding: 0.0}
];

data.forEach(item => {
    if (item.score >= 0) {
        item.letter = supplementaryGrade.find(grade => item.score >= grade.score).letter;
        item.fourRounding = supplementaryGrade.find(grade => item.score >= grade.score).fourRounding;
    }
});

New code

let supplementaryGrade = [
    { score: 9, letter: "A+", fourRounding: 4.0},
    { score: 8, letter: "A.", fourRounding: 3.5},
    { score: 7, letter: "B+", fourRounding: 3.0},
    { score: 6, letter: "B.", fourRounding: 2.5},
    { score: 5, letter: "C.", fourRounding: 2.0},
    { score: 4, letter: "D+", fourRounding: 1.5},
    { score: 3, letter: "D.", fourRounding: 1.0},
    { score: 0, letter: "F.", fourRounding: 0.0}
];

data.forEach(item => {
    if (item.score >= 0) {
        const lowerGrade = supplementaryGrade.find(grade => item.score >= grade.score);
        const upperGrade = supplementaryGrade.find(grade => item.score < grade.score);

        if (lowerGrade && upperGrade) {
            const scoreDiff = upperGrade.score - lowerGrade.score;
            const ratio = (item.score - lowerGrade.score) / scoreDiff;

            item.letter = lowerGrade.letter;
            item.fourRounding = lowerGrade.fourRounding + ratio * (upperGrade.fourRounding - lowerGrade.fourRounding);
        } else {
            // Handle edge cases where item.score is higher than the highest score
            item.letter = "A+";
            item.fourRounding = 4.0;
        }
    }
});

Thanks e @thanguyen165.
@DreamyWanderer em xem thử chỗ này nhé.

Xin cảm ơn bạn @thanguyen165 đã tận tâm chỉ ra vấn đề và còn viết code sẵn giùm mình nhé! 😅

Do mình chưa bao giờ có dịp lấy bảng điểm tiếng Anh, nên đã sử dụng Sổ tay Sinh Viên 2023 và bảng điểm tiếng Anh của bạn khác với chú thích scale như trong hình cho mục đích reference implementation! Tuy nhiên có lẽ vì vậy nên mình hiểu nhầm cách sử dụng Hệ 4 của trường và thực thi với cách lấy mốc cứng.

aaee1b76-bb30-4519-b5ca-bbfdab5907b6

Vậy mình xin được chỉnh sửa lại mã nguồn với idea và implementation của bạn. Mình cũng không có nghi ngờ gì đâu, nhưng nếu được không biết bạn có thể chụp phần scale trong tờ điểm của bạn (như ảnh mình đăng) không, để tham khảo thôi, do vừa hay Phòng Đào tạo ở NVC đang sửa nên mình không lấy bảng điểm tiếng Anh xem được! 🥲

Một lần nữa, xin cảm ơn sự đóng góp tận tâm của bạn rất nhiều! 🥰 Mình sẽ chỉnh sửa và thông báo với mọi người nhanh nhất.

image

Đây là một phần nhỏ bảng điểm của em. Ở môn Calculus 2B, điểm hệ 4 của em là 3.9 chứ không phải 3.5; và ở môn General physics 1, điểm hệ 4 của em là 3.3 chứ không phải là 3.0. Em đã kiểm tra lại giả thiết của mình với những môn khác, và kết quả giả thiết của em chính xác.

Bảng điểm trên là bảng điểm toàn khoá, được Phòng đào tạo cấp ngày 02/11/2023. Hi vọng cung cấp được thông tin đến anh!

Cám ơn hai anh vì đã tạo ra và hoàn thiện tính năng còn thiếu này của portal trường. Mong trong đợt xây dựng lại portal mới, trường sẽ tích hợp tính năng này của hai anh vào.

Ồ, anh hiểu rồi, ra là qua mốc 4.0 thì lại tính kiểu khác! Cảm ơn em nhiều lắm, phiền cho em quá!

Anh sẽ cập nhật lại ngay! Và cùng đặt niềm tin vào Portal mới của trường! 😆