본문 바로가기
Back/JAVA

[문제] 학생 관리 프로그램

by 시월해 2021. 3. 5.

<처리조건>

• 1. 데이터구조 : 이름(String),학번(int),학과(String),전화번호(String)

• 2. 학생수 결정 : 키보드로 입력 받는다.

• 3. 메뉴 선택 : 다음 메뉴를 구성하여 프로그램을 관리한다.

 

[메뉴 구성]

• 1. 학생등록 : 키보드로 학생정보 입력 -> 배열저장 : 학번은 고유한 데이터이므로 중복되면 안됨.

• 2. 전체출력 : 등록학생 전체출력

• 3. 학생조회 : 학번 입력 -> 이름, 학번, 학과, 전화번호 출력

• 4. 정보수정 : 학번 입력 -> 학과와 전화번호 수정

• 5. 프로그램 종료 : 프로그램을 종료하시겠습니다?(y/n) y입력-> 종료(System.exit(0), n입력 -> 프로그램 반복

 

* 위 5개의 메뉴는 별도의 메서드로 정의해 놓고, 메뉴 선택 시 해당 메서드가 호출되어 실행되도록 하시오.

package method;

import java.util.Scanner;

public class Exam_01 {
	
	public static void regi(Scanner sc, String[] name, int[] id, String[] dept, String[] ph) {
		int count = 0;
		boolean over = true;
		while(count<id.length) {
			System.out.print("학     번 입력 : ");
			id[count] = sc.nextInt();

			if(count == 0) {
				System.out.print("이     름 입력 : ");
				name[count] = sc.next();
				System.out.print("학     과 입력 : ");
				dept[count] = sc.next();
				System.out.print("전화번호 입력 : ");
				ph[count] = sc.next();
				System.out.println("----------------------");
				count++;
			} else {
				for(int j=(count-1); j>=0; j--) {
					if(id[count] == id[j]) {
						System.out.println("[동일한 학번입니다. 다시 입력하세요.]");
						over = false;
						break;
					}
					over = true;
				}
				if(over) {
					System.out.print("이     름 입력 : ");
					name[count] = sc.next();
					System.out.print("학     과 입력 : ");
					dept[count] = sc.next();
					System.out.print("전화번호 입력 : ");
					ph[count] = sc.next();
					System.out.println("----------------------");
					count++;
				}
						
			}
		}
	}
	
	public static void print(String[] name, int[] id, String[] dept, String[] ph) {
		for(int i=0; i<id.length; i++) {
			System.out.println("학  번:" + id[i]);
			System.out.println("이  름:" + name[i]);
			System.out.println("학  과:" + dept[i]);
			System.out.println("연락처: " + ph[i]);
			System.out.println("----------------------");
		}
	}
	
	public static void search(int sid, String[] name, int[] id, String[] dept, String[] ph) {
		for(int i=0; i<id.length; i++) {
			if(id[i] == sid) {
				System.out.println("학  번:" + id[i]);
				System.out.println("이  름:" + name[i]);
				System.out.println("학  과:" + dept[i]);
				System.out.println("연락처: " + ph[i]);
				System.out.println("----------------------");
				break;
			} else if(i == (id.length-1)){
				System.out.println("[일치하는 학번이 없습니다.]");
			}
		}
	}
	
	public static void modify(Scanner sc, int sid, String[] name, int[] id, String[] dept, String[] ph) {
		for(int i=0; i<id.length; i++) {
			if(id[i] == sid) {
				System.out.println("학     번 : " + id[i]);
				System.out.println("이     름 : " + name[i]);
				System.out.print("학     과 입력 : ");
				dept[i] = sc.next();
				System.out.print("전화번호 입력 : ");
				ph[i] = sc.next();
				System.out.println("----------------------");
				break;
			} else if(i == (id.length-1)){
				System.out.println("[일치하는 학번이 없습니다.]");
			}
		}
	}
	
	public static void end(Scanner sc) {
		System.exit(0);
		sc.close();
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("학생 수 입력 : ");

		int[] id = new int[sc.nextInt()];
		String[] name = new String[id.length];
		String[] dept = new String[id.length];
		String[] ph = new String[id.length];
		
		while(true) {
			System.out.println("**** 학생 관리 프로그램 ****");
			System.out.println("1.학생 등록");
			System.out.println("2.전체 출력");
			System.out.println("3.학생 조회");
			System.out.println("4.정보 수정");
			System.out.println("5.프로그램 종료");
			
			System.out.print("관리 번호를 입력하세요. : ");
			int num = sc.nextInt();
			System.out.println("----------------------");
			
			if(num > 5 || num < 0) {
				System.out.println("[잘못된 관리 번호 입니다. 다시 입력 하십시오.]");
			} else {
				switch (num) {
				case 1:
					System.out.println("[학생을 등록합니다.]");
					regi(sc, name, id, dept, ph);
					break;
					
				case 2:
					System.out.println("====== 전체 학생 출력 ======");
					print(name, id, dept, ph);
					break;
					
				case 3:
					System.out.println("[학생을 조회 합니다.]");
					System.out.print("학번을 입력하십시오. : ");
					search(sc.nextInt(), name, id, dept, ph);
					break;
					
				case 4:
					System.out.println("[학생 정보를 수정합니다.]");
					System.out.print("학번을 입력하십시오. : ");
					modify(sc, sc.nextInt(), name, id, dept, ph);
					break;
	
				default:
					System.out.println("[프로그램을 종료합니다.]");
					end(sc);
					break;
				}
			}
			
		}

		
	}

}

학생 수는 3명이다. 1번 메뉴 등록을 선택하면 학번을 먼저 입력한 뒤 중복체크를 한다. 중복 체크 후에 나머지 정보를 입력한다. 만약 학번이 중복되면 학번을 다시 입력한다.
전체 학생이 배열에 저장된 것을 볼 수 있다.
학번으로 학생을 조회할 수 있다. 맞는 학번인 경우 해당 학생의 정보를 출력하며 없는 학번인 경우 일치하는 학번이 없다고 출력한다.
학생 정보 수정은 학번을 통해 이루어진다. 해당하는 학번이 있는 경우 학과와 전화번호를 수정할 수 있고, 없는 경우 일치하는 학번이 없다고 출력한다.
전체 출력을 다시 해보면 학번 20211234 학생의 정보가 수정된 것을 볼 수 있다.
5번을 선택하면 안내 문구 출력 후 프로그램을 종료한다.