WEB Archive

[HTML] Javascript - 여러명의 성적 데이터를 입력받고 등수를 부여하여 출력하는 페이지 구현 prompt() 활용

universedevelope 2024. 8. 21. 14:20
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test023.html</title>
<style type="text/css">
	*
	{
		background-color: black;
		font-family: 나눔고딕코딩;
		font-size: 20pt;
		color: grey;
		font-weight: bold;
	}
</style>

<script type="text/javascript">
	function leadingZeros(n)
	{
		var zero = "";
		n = n.toString();
		
		if (n.length<3)
		{
			for (var i = 0; i < 3-n.length; i++)
			{
				zero += " ";
			}
		}
		return zero + n;
	}

	
	function addScore()
	{
		//alert("함수");
		var arr = new Array();
		var tot = new Array();
		var grade = new Array();
		var count = 0;

		var str = "";
		arr = new Array(new Array(), new Array(), new Array(), new Array(), new Array(), new Array())
				//        이름들       국어점수들   영어점수들     수학점수들  총점들     등수들		
		do
		{
			str = prompt("이름 국어 영어 수학(" + (count+1) + ")");
			
			if (str == " " || str == "." || str == null)
				break;
			
			//alert(str);
			
			// 배열로 이름 / 국어 / 영어 / 수학 / 총점 / 등수(디폴트 1) 반환
			var member = str.split(" ");
			/*
			alert(member[0]);
			alert(member[1]);
			alert(member[2]);
			alert(member[3]);
			*/		
			// 이름
			arr[0][count] = member[0];
			// 국어
			arr[1][count] = leadingZeros(member[1]);
			// 영어
			arr[2][count] = leadingZeros(member[2]);
			// 수학
			arr[3][count] = leadingZeros(member[3]);
			// 총점
			arr[4][count] = leadingZeros((parseInt(member[1]) + parseInt(member[2]) + parseInt(member[3])).toString());
			// 등수
			arr[5][count] = "1"; // 등수는 죄다 1로 통일하고 성적으로 비교해서 1씩증가
			
			//alert(arr[count]);
			
			count++; 
		} while (true);
		
		for (var i = 0; i < arr[0].length; i++)
		{
			for (var j = 0; j < arr[0].length; j++)
			{
				if (i==j)
				{
					// 비교용 인덱스... i와 j가 같은 경우
					// i가 0일때 j는 1 2 3 4 .. 이름배열 arr[0]의 길이(사람수)만큼 비교하고
					// i가 1로넘어와서 j는 0 2 3 4 .. 
					// i가 2로넘어와서 j는 0 1 3 4 ..
					// 서로 비교한게 없을때까지 (자기자신과비교하는거제외) 비교한다.
					continue; // 뒷부분 미실시
				}
				// i와 j가 다른경우 비교하는건데 밑 조건
				// → arr[5][변수] 항은 성적의 총합... 
				// i보다 j가 크다면(기존것보다 비교인자가 더 크다면)
				// → arr[1][변수] 항은 등수(디폴트 1 )이므로.. 성적들의 숫자를
				// 낮은 인자에 1씩높이기
				// 그렇다면 등수 배열은
				// 1 3 5 7 2 6 8 4 9 11 10 ... 이런식으로 형성될것임
				// 왜 문자로 했는지는 모르겠지만..
				if (Number(arr[4][i]) < Number(arr[4][j]) )
				{
					arr[5][i] = (Number(arr[5][i])+1).toString();
				}
			}
		}
		
		var result = "";
		
		for (var j = 0; j < arr[0].length; j++)
		{
			for (var k = 0; k < arr.length; k++)
			{
				// 6개속성배열     0번째(첫번째학생)
				// arr        [0]  [0]  → 0 : 이름 
				// arr        [1]  [0]  → 1 : 국어
				// arr        [2]  [0]	→ 2 : 영어
				// arr        [3]  [0]	→ 3 : 수학
				// arr        [4]  [0]  → 4 : 총점
				// arr        [5]  [0]	→ 5 : 등수
				result += arr[k][j] + " "+" "+" ";
			}
			result += "\n";
		}
		document.getElementById("count").value = arr[0].length;
		document.getElementById("students").value = "  이름  국어  영어  수학  총점  등수";
		document.getElementById("students").value += "====================================\n";
		document.getElementById("students").value += result;
	}
</script>
</head>
<body>

<!-- 
	prompt() 를 활용하여 여러 명의 성적 데이터를 입력받고.
	등수를 부여하여, 리스트를 출력하는 페이지를 구성한다.
	HTML, CSS, Javascript 활용.
	
	페이지 레이아웃
	-----------------------------------------------------
	<성적 정보 입력> → → → → →  prompt() → → → →  이름 국어 영어 수학(1) : 
	전체 인원 수 : [         ] 명 (배열 길이)
	----------------------------------------
	이름   국어   영어   수학   총점   등수
	----------------------------------------
	
	
	---------------------------------------- 
	-----------------------------------------------------
 -->
<div>
	<h1> 성적입력 및 등수 산출 </h1>
	<hr>
</div>

<div>
	<form>
		<table>
			<tr>
				<td>
					<input type = "button" id = "score" value = "성적정보입력" onclick = "addScore()">
				</td>
			</tr>
			<tr>
				<th>
					전체 인원 수 :
					<input type = "text" id = "count" style = "width: 20px">
					명 
				</th>
			</tr>
		</table>
	</form>
</div>

<div>
	<form>
		<textarea rows="30" cols="40" id = "students" readonly = "readonly"></textarea>
	</form>
	
</div>

</body>
</html>
728x90