基于目前我们学校教务处的管理系统, 依靠Javascript的帮忙, 我们可以很方便地计算成绩.
测试用HTML:
style="width: 100%; border-collapse: collapse;">
课程代码
课程名称
课程性质
成绩
补考成绩
重修成绩
学分
绩点
辅修标记
24109505
数据库系统实验
专业基础课
优秀
0.5
4.50
24100320
单片机原理及应用
专业基础选修课
78
2.0
2.80
24100915
UML
校选修课
63
1.5
1.30
24200510
数据库系统课程设计
设计(论文)
优秀
1.0
4.50
24203910
可编程序控制器与工业控制网络课程设计
设计(论文)
良好
1.0
3
JavaScript:
//一学年的平均学分绩点=该学年修全部课程的学分绩点之和÷所修课程的总学分(校选修不计算在内)
//学业成绩平均分=一学年平均学分绩点折合为百分制的得数
//考通过的课程,按实际成绩记分,并给予学分,但其绩点均为“0”。重修的课程在该年度中按不及格科目计算,绩点为0。
function Calculate() {
var table = document.getElementById("DataGrid1");
var totalMark = 0;
var failCount = 0;
var subjectCount = 0;
var totalRate = 0;
var totalRawRate = 0;
for(var i = 1; i < table.rows.length; i++) {
if(table.rows[i].cells[2].innerHTML == "校选修课") continue;
subjectCount++;
var mark = getMark(table.rows[i].cells[3].innerHTML);
if(mark < 60) {
failCount++;
}
totalMark += mark;
totalRate += getMark(table.rows[i].cells[7].innerHTML)
* getMark(table.rows[i].cells[6].innerHTML);
totalRawRate += getMark(table.rows[i].cells[6].innerHTML);
}
var resultRow = document.getElementById("resultRow");
if(!resultRow) {
resultRow = document.createElement("tr");
resultRow.id = "resultRow";
}
resultRow.innerHTML = "";
var results = ["总分:", totalMark, "平均分:", (totalMark/subjectCount).toFixed(3),
"平均学分绩点:", (totalRate/totalRawRate).toFixed(3), "不及格数:",failCount];
for(var i = 0; i < results.length; i++) {
var td = document.createElement("td");
td.innerHTML = results[i];
resultRow.appendChild(td);
}
table.lastChild.appendChild(resultRow);
}
function getMark(markStr) {
switch(markStr) {
case "优秀": return 95;
case "良好": return 85;
case "中等": return 75;
case "及格": return 65;
case "不及格":
case "" :
case " ": return 0;
default: return parseFloat(markStr);
}
}
Calculate();