본문 바로가기

개발자노트

클래스) CRUD를 포함한 학생부 예제

package class01;

import java.util.Scanner;

class Student {
	String name; // 학생이름
	int score; // 학생 점수
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	void showInfo() {
		System.out.println(this.name + "학생은 " + this.score + "점입니다."); // 내 멤버변수니까 가독성 위해 this 붙이는게 좋음
	}

	Student(String name, int score) {
		this.name = name;
		this.score = score;
		System.out.println(this.name + "학생 입력완료!");
	}
}

public class Test02 {
	public static void main(String[] args) {

		Student[] data = new Student[3]; // 3명의 학생을 저장받을 것이다.
		int index = 0; // 현재 저장되어있는 학생의 수 관리
		// 최대 크기 : data.length

		Scanner sc = new Scanner(System.in); // 사용자의 입력을 받아줄 스캐너
		while (true) {

			// 학생부 프로그램
			// 학생 정보를 배열에 저장해서 관리하는 프로그램
			// CRUD
			// 비즈니스 메서드
			// 핵심 로직
			System.out.println("1. 추가");
			System.out.println("2. 출력");
			System.out.println("3. 변경");
			System.out.println("4. 종료");
			System.out.print("입력) ");
			int act = sc.nextInt();
			// 사용자가 입력하면 -> 유효성 검사!

			if (act == 1) {
				if (index == data.length) { // 학생 공간을 넣을 배열을 넘게되면,
					System.out.println("데이터공간이 부족!");
					continue;
				}
				System.out.print("학생이름 입력: ");
				String name = sc.next();
				System.out.print("학생성적 입력: ");
				int score = sc.nextInt();

				data[index] = new Student(name, score); // 입력 받은 내용을 학생저장
				index++;
			} else if (act == 2) {
				if (index == 0) {
					System.out.println("저장한 정보가 없습니다!");
					continue;
				}
				System.out.println("===학생목록===");
				for (int i = 0; i < index; i++) { // 0명 생성되있는 경우도 있으니까. index로
					data[i].showInfo();
				}
			} else if (act == 3) {
				if (index == 0) {
					System.out.println("저장한 정보가 없습니다!"); // 사용자 편의성 증가
					continue;
				}
				System.out.print("정보를 변경할 학생의 번호입력: ");
				int num = sc.nextInt();
				num--; // 번호와 인덱스넘버의 차이
				if (num < 0 || index <= num) { // 유효성 검사
					System.out.println("없는 번호입니다! 확인후 다시이용해주세요~~");
					continue;
				}

				System.out.print("변경할 점수입력: ");
				data[num].score = sc.nextInt();
				System.out.println(data[num].name + "학생 정보 변경완료!");
			} else if (act == 4) {
				if(index==0) { // 만약 인덱스가 없다면 , 유효성 검사 
					System.out.println("삭제할 데이터가 없습니다"); 
				}
				System.out.println(" 최근 데이터 삭제중...");
				index--; // 인덱스를 --; 함으로 그 전에 있던 배열을 삭제함
				System.out.println("삭제 완료");

			} else if (act == 5) { // 만약 사용자가 종료버튼을 누른다면 종료합니다.
				System.out.println("종료됩니다...");
				break;
			} else {
				System.out.println("잘못된 입력입니다."); // 유효성 검사
			}
		}

	}
}

'개발자노트' 카테고리의 다른 글

클래스) private , getter, setter  (0) 2022.06.20
클래스) 접근제어자  (0) 2022.06.20
클래스) 기본 용어, 정의 복습  (0) 2022.06.20
반복문 while을 통해 소수 구하기  (0) 2022.06.17
정렬) 퀵정렬 기본  (0) 2022.06.17