js怎么实现gpa计算
GPA计算方法
GPA(Grade Point Average)通常根据成绩等级对应的点数加权平均计算。假设成绩等级与点数对应关系如下:A=4.0,B=3.0,C=2.0,D=1.0,F=0.0。
数据结构设计
使用数组存储课程信息和对应学分、成绩:
const courses = [
{ name: '数学', credits: 4, grade: 'A' },
{ name: '物理', credits: 3, grade: 'B' },
{ name: '化学', credits: 2, grade: 'C' }
];
等级转点数函数
创建将字母等级转换为对应点数的函数:
function gradeToPoint(grade) {
const gradeMap = { 'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0.0 };
return gradeMap[grade.toUpperCase()] || 0;
}
计算总学分和加权分数
遍历课程数组计算总学分和加权分数总和:
let totalCredits = 0;
let totalWeightedPoints = 0;
courses.forEach(course => {
const points = gradeToPoint(course.grade);
totalCredits += course.credits;
totalWeightedPoints += points * course.credits;
});
计算并输出GPA
最后计算GPA并输出结果:
const gpa = totalWeightedPoints / totalCredits;
console.log(`你的GPA是: ${gpa.toFixed(2)}`);
完整代码示例
function calculateGPA(courses) {
const gradeMap = { 'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0.0 };
let totalCredits = 0;
let totalWeightedPoints = 0;
courses.forEach(course => {
const points = gradeMap[course.grade.toUpperCase()] || 0;
totalCredits += course.credits;
totalWeightedPoints += points * course.credits;
});
return totalWeightedPoints / totalCredits;
}
// 使用示例
const myCourses = [
{ name: '数学', credits: 4, grade: 'A' },
{ name: '物理', credits: 3, grade: 'B' },
{ name: '化学', credits: 2, grade: 'C' }
];
const myGPA = calculateGPA(myCourses);
console.log(`你的GPA是: ${myGPA.toFixed(2)}`);
扩展功能
支持不同GPA标准(如4.3分制):
function gradeToPoint(grade, scale = 4.0) {
if (scale === 4.3) {
const gradeMap = { 'A+': 4.3, 'A': 4.0, 'A-': 3.7, 'B+': 3.3, 'B': 3.0, 'B-': 2.7, 'C+': 2.3, 'C': 2.0, 'C-': 1.7, 'D': 1.0, 'F': 0.0 };
return gradeMap[grade] || 0;
}
// 默认4.0分制
const gradeMap = { 'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0.0 };
return gradeMap[grade.toUpperCase()] || 0;
}






