JS/JS 수업분

[JS] day11_mapEx

congs 2023. 4. 18. 21:54

 

 

Map 예제 과목 :
점수 :

     

     

     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Map 예제</title>
        <!-- input :  과목, 점수를 받기
            추가버튼 : map에 추가
            출력버튼 : map을 출력 (ul-li로 출력)
            결과버튼 : 합계, 평균, 합격여부 (60이상 합격) 출력-->
    </head>
    <body>

        과목 : <input type="text" name="" id="sub"> <br>
        점수 : <input type="text" name="" id="score"> <br> <hr>
        <button type="button" id="add">추가버튼</button>
        <button type="button" id="print">출력버튼</button>
        <button type="button" onclick="result();">결과버튼</button>

        <!-- 출력버튼 출력 -->
        <h3>
        <ul id="print1"></ul>
        </h3>
        <!-- 결과버튼 출력 -->
        <h3 id="result1"></h3>

        <script>
           
            const myScore = new Map();
           
            // 추가버튼
            document.getElementById('add').addEventListener('click',function(){
                let sub = document.getElementById('sub').value;
                let score = parseInt(document.getElementById('score').value);
                myScore.set(sub, score);
                document.getElementById('print1').innerText = `${sub} : ${score}점 추가되었습니다`;
            })
           
            // 출력버튼
            document.getElementById('print').addEventListener('click',()=>{
                let str =" ";

                for(const k of myScore.entries()){
                    str += `<li> ${k}점 </li>`;
                }

                // myScore.forEach(function(value, key){
                //     str += `<li>과목: ${key} / 점수: ${value} </li>`;
                // })

                document.getElementById('print1').innerHTML = str;
            })

            // 결과버튼
            function result() {
                let sum = 0;
                let avg = 0;
                let pass = "";

                // 합계
                for(const v of myScore.values()){
                    sum += v;
                }
               
                // 평균
                avg = (sum / myScore.size).toFixed(2);
               
                // 합격여부
                if(avg >= 60){
                    pass = '합격';
                }else{
                    pass = '불합격';
                }
                // pass= (avg>=60)? '합격' : '불합격';

                document.getElementById('result1').innerText = `합계: ${sum}, 평균: ${avg}, 합격여부: ${pass}`;
            }


        </script>
    </body>
    </html>
     

    <
     
    body>
        <!--
            input 2개 생성 => 과목, 점수
            추가버튼 => map에 추가
            출력버튼 => map을 출력  => ul태그안에 li로 추가
            결과버튼 => 합계, 평균, 합격여부 (60이상이면 합격) => h3
         -->
         <form action="">
            과목 : <input type="text" id="sub"> <br>
            점수 : <input type="text" id="num"> <br>
            <button type="button" onclick="add();">추가</button>
            <button type="button" id="printBtn">출력</button>
            <button type="button" id="totBtn">결과</button>
         </form>
         <ul id="result"></ul>
         <h3 id="tot"></h3>

         <script>
            const sub = document.getElementById('sub');
            const num = document.getElementById('num');
            const result = document.getElementById('result');
            const tot = document.getElementById('tot');
            const printBtn = document.getElementById('printBtn');
            const totBtn = document.getElementById('totBtn');
            const myMap = new Map();
            let sum=0;
            let avg=0;
            let pass='';  //합격여부

            function add(){
                let subVal = sub.value;
                let numVal = Number(num.value); // 숫자로 변환
                myMap.set(subVal, numVal);
                sum+=numVal;
                console.log(myMap);
                console.log(sum);
            }

            printBtn.addEventListener('click',function(){
                let str=''; //결과 누적 변수
                myMap.forEach(function(v, k){
                    str += `<li> ${k}:${v} </li>`;
                })
                result.innerHTML = str;
            })
            totBtn.addEventListener('click', function(){
                avg = (sum / myMap.size);
                pass = (avg>=60)? '합격':'불합격';
                tot.innerText= `과목의 점수합계: ${sum}, 평균:${avg.toFixed(2)}, 합격여부:${pass}`;
            })

         </script>
    </body>
     
     

    'JS > JS 수업분' 카테고리의 다른 글

    [JS] day11_classEx (입금, 출금, 송금)  (0) 2023.04.18
    [JS] day11_class, 객체, 생성자  (0) 2023.04.18
    [JS] day11_count생성 (더하기 버튼 : +1 / 빼기버튼 : -1)  (0) 2023.04.18
    [JS] day11_try~catch  (0) 2023.04.18
    [JS] day11_map  (0) 2023.04.18