用JS制作一个简易GPA计算器

本文介绍了作者初次尝试使用JavaScript编写的一个简易GPA计算器,虽然目前程序容错性还有待完善,但已能完成基本功能。欢迎经验丰富的开发者提出改进意见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我第一次使用JS,有问题的地方还希望大佬指出
程序的容错性还没做到完美,日后补充

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>GPA计算工具</title>
    <script>
        function getNum() {
            document.getElementById("in").innerHTML="";
            var cnum = Number(document.getElementById("cNum").value);
            var content;
            for (i = 0; i < cnum; i++) {
                content = document.getElementById("res").innerHTML;
                document.getElementById("in").innerHTML = content + "<br>第" + (i + 1) + "门成绩:  <input id=\"sc" + i +
                    "\" type=\"number\"> 学分:<input id=\"cr" + i + "\" type=\"number\">";
            }
            content = document.getElementById("res").innerHTML;
            document.getElementById("in").innerHTML = content + "<br><button οnclick=\"deal()\">计算</button>";
        }

        function getcr(x) {
            if (x < 60) return Number(0.0);
            else if (x <= 63) return Number(1.0);
            else if (x <= 67) return Number(1.5);
            else if (x <= 71) return Number(2.0);
            else if (x <= 74) return Number(2.3);
            else if (x <= 77) return Number(2.7);
            else if (x <= 81) return Number(3.0);
            else if (x <= 84) return Number(3.3);
            else if (x <= 89) return Number(3.7);
            else return Number(4.0);
        }

        function deal() {
            var score = [];
            var credit = [];
            var cnum = Number(document.getElementById("cNum").value);
            for (i = 0; i < cnum; i++) {
                score.push(Number(document.getElementById("sc" + i).value));
                credit.push(Number(document.getElementById("cr" + i).value));
            }
            var total = 0.0;
            for (i = 0; i < cnum; i++) {
                total = total + credit[i];
            }
            var res = 0.0;
            for (i = 0; i < cnum; i++) {
                res = res + (credit[i] / total) * getcr(score[i]);
            }
            if(isNaN(res) || res<0) alert("抱歉,发生了错误!\n请检查有无漏项或者输入的某个学分为零或负数\n请修正后重新点击计算按钮")
            else alert("您的GPA为" + res + "\n您可以点击刷新进行第二次使用!");
        }
    </script>
</head>

<body>
    课程数:<br>
    <input id="cNum" type="number"><br>
    <button onclick="getNum()">下一步</button>
    <div id="res"></div><br><br><br>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值