[SECTION06-00. 종합 테스트 문제]
지금까지 배운 기본 타입, 배열, 제어문(if, for, while, switch) 만 사용해서 간단한 학생 정보 관리 프로그램을 작성해 보세요.
학생 정보:
Stringintint학생은 최대 3명까지 저장할 수 있습니다.
3명을 다 등록한 상태에서 또 등록을 시도하면
"더 이상 등록할 수 없습니다." 라는 메시지를 출력해야 합니다.
다음과 같이 서로 관련된 배열 3개를 사용해서 학생 정보를 저장합니다.
String[] names = new String[3]; // 이름들int[] ages = new int[3]; // 나이들int[] scores = new int[3]; // 점수들int studentCount = 0; // 현재 등록된 학생 수한 학생의 정보는 names[i], ages[i], scores[i]가 한 세트입니다.
학생 번호는 배열 인덱스 + 1 (i + 1) 로 생각합니다.
프로그램 실행 후, 아래와 같은 메뉴를 계속 보여줍니다.
=== 학생 관리 프로그램 ===
0. 학생 등록
1. 학생 목록 출력
2. 학생 검색(번호로 검색)
3. 학생 정보 수정
9. 종료
메뉴를 선택하세요:
각 메뉴의 동작은 다음과 같습니다.
studentCount)가 4명 미만일 때만 등록 가능studentCount를 1 증가더 이상 학생을 등록할 수 없습니다. 출력번호 이름 나이 점수
1 홍길동 20 90
2 아무개 22 85
...
등록된 학생이 없습니다. 출력해당 학생은 존재하지 않습니다. 출력해당 학생은 존재하지 않습니다. 출력9를 입력하면 프로그램을 종료합니다.import java.util.Scanner;
public class Exam01 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
final int STUDENT_MAX_COUNT = 3;
String[] names = new String[STUDENT_MAX_COUNT]; // 이름을 저장할 배열
int[] ages = new int[STUDENT_MAX_COUNT]; // 나이를 저장할 배열
int[] scores = new int[STUDENT_MAX_COUNT]; // 점수를 저장할 배열
int studentCount = 0; // 현재 등록된 학생 수
while(true) {
System.out.println("=== 학생 관리 프로그램 ===");
System.out.println("0. 학생 등록");
System.out.println("1. 학생 목록");
System.out.println("2. 학생 검색");
System.out.println("3. 학생 수정");
System.out.println("9. 프로그램 종료\n");
System.out.print("명령어:");
int cmd = scn.nextInt();
scn.nextLine();
switch (cmd) {
case 0:
if (studentCount == STUDENT_MAX_COUNT) {
System.out.println("더 이상 학생을 등록할 수 없습니다.");
}
System.out.println("학생 등록을 시작합니다.\n");
System.out.print("이름:");
String name = scn.nextLine();
System.out.print("나이:");
int age = scn.nextInt();
System.out.print("점수:");
int score = scn.nextInt();
names[studentCount] = name;
ages[studentCount] = age;
scores[studentCount] = score;
studentCount++;
System.out.println("\n학생 등록이 완료되었습니다.\n");
break;
case 1:
System.out.println("\n학생 목록입니다.\n");
for (int i = 0; i < STUDENT_MAX_COUNT; i++) {
if (names[i] != null) {
System.out.println((i + 1) + "번: " + names[i]);
}
}
break;
case 2:
System.out.println("\n학생을 검색입니다.\n");
System.out.print("검색할 학생 번호 입력:");
// 검색할 학생 번호
int searchNum = scn.nextInt();
if (searchNum > studentCount) {
System.out.println("해당 학생은 존재하지 않습니다.");
continue;
}
scn.nextLine();
// 검색할 학생의 실제 인덱스
int searchIdx = searchNum - 1;
System.out.println("\n=== 검색한 학생 정보 ===");
System.out.println("이름: " + names[searchIdx]);
System.out.println("나이: " + ages[searchIdx] + "살");
System.out.println("점수: " + scores[searchIdx] + "점\n");
break;
case 3:
System.out.println("\n학생을 수정합니다.\n");
System.out.print("수정할 학생 번호 입력:");
// 수정할 학생 번호
int modifyNum = scn.nextInt();
if (modifyNum > studentCount) {
System.out.println("해당 학생은 존재하지 않습니다.");
continue;
}
scn.nextLine();
// 수정할 학생의 실제 인덱스
int modifyIdx = modifyNum - 1;
System.out.print("수정할 이름:");
String modifyName = scn.nextLine();
System.out.print("수정할 나이:");
int modifyAge = scn.nextInt();
System.out.print("수정할 점수:");
int modifyScore = scn.nextInt();
names[modifyIdx] = modifyName;
ages[modifyIdx] = modifyAge;
scores[modifyIdx] = modifyScore;
System.out.println("\n" + modifyNum + "번째 학생이 수정이 완료되었습니다.\n");
break;
case 9:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("존재하지 않는 명령어입니다.");
}
}
}
}