方便我们计算学分绩点的JavaScript
2007-09-05 22:33
281 查看
基于目前我们学校教务处的管理系统, 依靠Javascript的帮忙, 我们可以很方便地计算成绩.
测试用HTML:
<table class="datagridstyle" cellspacing="0" cellpadding="3" border="0" id="DataGrid1"
style="width: 100%; border-collapse: collapse;">
<tr class="datagridhead">
<td>
课程代码</td>
<td>
课程名称</td>
<td>
课程性质</td>
<td>
成绩</td>
<td>
补考成绩</td>
<td>
重修成绩</td>
<td>
学分</td>
<td>
绩点</td>
<td>
辅修标记</td>
</tr>
<tr class="datagrid1212">
<td>
24109505</td>
<td>
数据库系统实验</td>
<td>
专业基础课</td>
<td>
优秀</td>
<td>
</td>
<td>
</td>
<td>
0.5</td>
<td>
4.50</td>
<td>
</td>
</tr>
<tr>
<td>
24100320</td>
<td>
单片机原理及应用</td>
<td>
专业基础选修课</td>
<td>
78</td>
<td>
</td>
<td>
</td>
<td>
2.0</td>
<td>
2.80</td>
<td>
</td>
</tr>
<tr class="datagrid1212">
<td>
24100915</td>
<td>
UML</td>
<td>
校选修课</td>
<td>
63</td>
<td>
</td>
<td>
</td>
<td>
1.5</td>
<td>
1.30</td>
<td>
</td>
</tr>
<tr>
<td>
24200510</td>
<td>
数据库系统课程设计</td>
<td>
设计(论文)</td>
<td>
优秀</td>
<td>
</td>
<td>
</td>
<td>
1.0</td>
<td>
4.50</td>
<td>
</td>
</tr>
<tr class="datagrid1212">
<td>
24203910</td>
<td>
可编程序控制器与工业控制网络课程设计</td>
<td>
设计(论文)</td>
<td>
良好</td>
<td>
</td>
<td>
</td>
<td>
1.0</td>
<td>
3</td>
<td>
</td>
</tr>
</table>
JavaScript:
<script type="text/javascript" language="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();
</script>
测试用HTML:
<table class="datagridstyle" cellspacing="0" cellpadding="3" border="0" id="DataGrid1"
style="width: 100%; border-collapse: collapse;">
<tr class="datagridhead">
<td>
课程代码</td>
<td>
课程名称</td>
<td>
课程性质</td>
<td>
成绩</td>
<td>
补考成绩</td>
<td>
重修成绩</td>
<td>
学分</td>
<td>
绩点</td>
<td>
辅修标记</td>
</tr>
<tr class="datagrid1212">
<td>
24109505</td>
<td>
数据库系统实验</td>
<td>
专业基础课</td>
<td>
优秀</td>
<td>
</td>
<td>
</td>
<td>
0.5</td>
<td>
4.50</td>
<td>
</td>
</tr>
<tr>
<td>
24100320</td>
<td>
单片机原理及应用</td>
<td>
专业基础选修课</td>
<td>
78</td>
<td>
</td>
<td>
</td>
<td>
2.0</td>
<td>
2.80</td>
<td>
</td>
</tr>
<tr class="datagrid1212">
<td>
24100915</td>
<td>
UML</td>
<td>
校选修课</td>
<td>
63</td>
<td>
</td>
<td>
</td>
<td>
1.5</td>
<td>
1.30</td>
<td>
</td>
</tr>
<tr>
<td>
24200510</td>
<td>
数据库系统课程设计</td>
<td>
设计(论文)</td>
<td>
优秀</td>
<td>
</td>
<td>
</td>
<td>
1.0</td>
<td>
4.50</td>
<td>
</td>
</tr>
<tr class="datagrid1212">
<td>
24203910</td>
<td>
可编程序控制器与工业控制网络课程设计</td>
<td>
设计(论文)</td>
<td>
良好</td>
<td>
</td>
<td>
</td>
<td>
1.0</td>
<td>
3</td>
<td>
</td>
</tr>
</table>
JavaScript:
<script type="text/javascript" language="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();
</script>
相关文章推荐
- c++计算学分绩点代码
- Python爬取信息管理系统计算学分绩点
- 方便60进制的角度计算时的数据格式转换算法
- javascript获取元素的计算样式
- 田溯宁:我们随身物品五年后都应该有计算能力
- JavaScript 获取计算后的样式
- javascript数值计算得注意精度问题
- 结构体中得函数指针,让我们更加方便~
- 童年经典小游戏,俄罗斯方块,让我们一起用javascript来制作自己的童年吧
- JavaScript如何获取/计算页面元素的offset?
- 在FireBug中计算Javascript 运行时间
- javascript精确计算
- JavaScript由单价、数量计算总价
- 【我们开发有力量之二】利用javascript制作批量网络投票机器人(自动改IP)
- [💯原]Javascript,我们来用js在网页中识别鼠标手势
- javascript挑战编程技能-第二题:计算字符数
- Javascript 计算字符串在localStorage中所占字节数
- javascript计算两个日期差的函数代码
- javascript 计算时间差
- PyQt5学习随笔01--计算一个目录里我们码的代码行数&&PyQt的多线程通信