Skip to content

Instantly share code, notes, and snippets.

@shivaluma
Last active August 2, 2024 06:31
Show Gist options
  • Save shivaluma/e1f420be1d3cf8e6c6287539e8abcf89 to your computer and use it in GitHub Desktop.
Save shivaluma/e1f420be1d3cf8e6c6287539e8abcf89 to your computer and use it in GitHub Desktop.
Tinh diem trung binh hcmus
// tinh diem trung binh hcmus, vao trang diem va paste vao console.
// khong tinh anh van, quoc phong, the duc va nhung mon rot
var tinchi = document.querySelectorAll("td:nth-child(3)");
var monhoc = document.querySelectorAll("td:nth-child(2)");
var diem = document.querySelectorAll("td:nth-child(6)");
var tongdiem = 0,
tongtinchi = 0;
for (var i = 1; i < tinchi.length; i++) {
if (
monhoc[i].innerText.includes("Thể dục") ||
monhoc[i].innerText.includes("Anh văn") ||
monhoc[i].innerText.includes("Giáo dục") || !Number(diem[i].innerText) || Number(diem[i].innerText) < 5
) {
continue;
}
tongdiem += Number(tinchi[i].innerText) * Number(diem[i].innerText);
tongtinchi += Number(tinchi[i].innerText);
}
console.log("Tong tin chi : " + tongtinchi);
console.log("Diem trung binh : " + tongdiem / tongtinchi);
@PhanTrongNhat
Copy link

e xin góp ý trường hợp ở trên chỉ đúng với những SV ko có học phần cải thiện, nếu có học phần cải thiện sẽ tính thành 2 môn và tăng thêm chỉ

@congminh090800
Copy link

congminh090800 commented Apr 26, 2022

var tinchi = document.querySelectorAll("td:nth-child(3)");
var monhoc = document.querySelectorAll("td:nth-child(2)");
var diem = document.querySelectorAll("td:nth-child(6)");
var diemtren = 0,
diemduoi = 0;
for (var i = 1; i < tinchi.length; i++) {
if (
monhoc[i].innerText.includes("Thể dục") ||
monhoc[i].innerText.includes("Anh văn") ||
monhoc[i].innerText.includes("Giáo dục") || Number(diem[i].innerText) < 5 || diem[i].innerText.includes("Vắng")
) {
console.log(monhoc[i]);
continue;
}
diemtren += Number(tinchi[i].innerText) * Number(diem[i].innerText);
diemduoi += Number(tinchi[i].innerText);
}
console.log("Tong tin chi : " + diemduoi);
console.log("Diem trung binh : " + diemtren / diemduoi);
Bạn nào có điểm vắng thì nên dùng cái này nhé, không sẽ bị sai

@trinhvanminh
Copy link

trinhvanminh commented Aug 22, 2022

Đối với những bạn đã pass anh văn (Đạt chuẩn trình độ ngoại ngữ tốt nghiệp đại học) thì phần điểm sẽ không có text nên sẽ xảy ra lỗi.

Các bạn thêm dòng dưới đây vào để chạy ra kết quả mong muốn

//sau dòng 18
if(!Number(diem[i].innerText)) continue

@bpmthanh
Copy link

bpmthanh commented Aug 22, 2023

// Sắp xếp theo A->Z tiếng việt, học cải thiện hoặc rớt môn thì lấy môn mới nhất
function compareVietnameseStrings(str1, str2) {
var collator = new Intl.Collator("vi", { sensitivity: "base" });
return collator.compare(str1, str2);
}

var tinchi = document.querySelectorAll("td:nth-child(3)");
var monhoc = document.querySelectorAll("td:nth-child(2)");
var diem = document.querySelectorAll("td:nth-child(6)");

var excludedSubjects = ["Thể dục", "Anh văn", "Giáo dục", "Tin học"];

var subjectsData = {};

for (var i = 0; i < tinchi.length; i++) {
var subjectName = monhoc[i].innerText;
var credit = Number(tinchi[i].innerText);
var score = Number(diem[i].innerText);

if (
excludedSubjects.some(excludedSubject => subjectName.includes(excludedSubject)) ||
isNaN(score) ||
score < 5
) {
continue;
}

// Tìm vị trí của dấu "- " đầu tiên
var firstDashIndex = subjectName.indexOf(" - ");

// Cắt tên môn học từ dấu "- " đầu tiên nếu có
var nameWithoutCode = firstDashIndex !== -1 ? subjectName.substring(firstDashIndex + 3) : subjectName;

// Ghi đè dữ liệu môn học cuối cùng nếu đã tồn tại
subjectsData[nameWithoutCode] = { credit, score };
}

// Sắp xếp danh sách môn học theo tên
var sortedSubjects = Object.keys(subjectsData).sort(function(a, b) {
return compareVietnameseStrings(a.toUpperCase(), b.toUpperCase());
});

var totalScore = 0,
totalCredits = 0;

// In ra từng môn học và điểm tương ứng
for (var i = 0; i < sortedSubjects.length; i++) {
var subjectName = sortedSubjects[i];
var credit = subjectsData[subjectName].credit;
var score = subjectsData[subjectName].score;
console.log("Môn: " + subjectName + "\nTín chỉ: " + credit + "\nĐiểm: " + score + "\n");

totalScore += credit * score;
totalCredits += credit;
}

console.log("Tổng tín chỉ: " + totalCredits);
console.log("Điểm trung bình: " + (totalScore / totalCredits).toFixed(3));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment