JAVA 프로그래밍

[JAVA] 풀스택 개발자 부트캠프 010일차 ① 학생 관리 프로그램(추가, 삭제, 검색, 수정, 모두 출력)

selfdailycoding 2025. 1. 7. 13:38

package main;

import dao.StudentDao;

import java.util.Scanner;

public class MainClass {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //menu
        StudentDao dao = new StudentDao();

        System.out.println("< 학생 관리 프로그램 >");
        while (true){
            System.out.println("1. 학생 추가");
            System.out.println("2. 학생 삭제");
            System.out.println("3. 학생 검색");
            System.out.println("4. 학생 수정");
            System.out.println("5. 모두 출력");

            System.out.print("메뉴 번호를 입력하세요. >> ");
            int menu = sc.nextInt();

            switch (menu) {
                case 1:
                    dao.insert();
                    break;
                case 2:
                    dao.delete();
                    break;
                case 3:
                    dao.select();
                    break;
                case 4:
                    dao.update();
                    break;
                case 5:
                    dao.print();
                    break;
            }
        }
    }
}

 

package dao;

import dto.StudentDto;

import java.util.Scanner;

// Data Access Object
public class StudentDao {
    // CRUD
    private Scanner sc;

    private StudentDto[] students = new StudentDto[10];
    private int count;

    public StudentDao() {
        sc = new Scanner(System.in);
        count = 0;

        //students[0] = new StudentDto(1, "홍길동", 171.2, "서울시");
        //students[1] = new StudentDto(2, "성춘향", 157.3, "남원시");
        //students[2] = new StudentDto(3, "일지매", 180.1, "부산시");

    }

    // 학생 데이터 추가
    public void insert() {

        System.out.println("학생을 추가합니다.");
        System.out.print("번호를 입력하세요. > ");
        int number = sc.nextInt();

        System.out.print("이름을 입력하세요. > ");
        String name = sc.next();

        System.out.print("키를 입력하세요. > ");
        double height = sc.nextDouble();

        System.out.print("주소를 입력하세요. > ");
        String address = sc.next();

        StudentDto dto = new StudentDto(number, name, height, address);
        students[count] = dto;
        count++;
    }

    // 학생 데이터 삭제
    public void delete() {
        System.out.println("학생을 삭제합니다.");
        System.out.print("삭제할 학생의 이름을 입력하세요. > ");
        String name = sc.next();

        // 검색
        int index = search(name);

        /*
        for (int i = 0 ; i < students.length ; i++){
            if(students[i] != null && name.equals(students[i].getName())){
                index = i;
                break;
            }
        }*/

        // 삭제
        if ( index == -1){
            System.out.println("학생 정보를 찾을 수 없습니다.");
            return;
        }
        students[index] = null;
        System.out.println(name + " 학생의 정보가 정상적으로 삭제되었습니다.");

    }


    // 학생 데이터 검색
    public void select() {

        System.out.println("학생을 검색합니다.");
        System.out.print("검색할 학생의 이름을 입력하세요. > ");
        String name = sc.next();

        int index = search(name);

        if ( index == -1){
            System.out.println("학생 정보를 찾을 수 없습니다.");
            return;
        }

        System.out.println(name + " 학생의 정보입니다.");
        System.out.println(students[index].toString());

    }

    // 학생 데이터 수정
    public void update() {
        System.out.println("학생 정보를 수정합니다.");
        System.out.print("수정할 학생의 이름을 입력하세요. > ");
        String name = sc.next();

        int index = search(name);
        if ( index == -1){
            System.out.println("학생 정보를 찾을 수 없습니다.");
            return;
        }

        System.out.println("학생 정보입니다.");
        System.out.println(students[index].toString());

        System.out.print("수정할 주소를 입력하세요. > ");
        String address = sc.next();

        students[index].setAddress(address);
        System.out.println(name + " 학생의 주소가 정상적으로 수정되었습니다.");

    }

    public int search(String name){
        int index = -1;
        for (int i = 0 ; i < students.length ; i++){
            StudentDto dto = students[i];
            if(dto != null && name.equals(dto.getName())){
                index = i;
                break;
            }
        }
        return index;
    }

    public void print(){
        for( int i = 0 ; i < students.length ; i++ ){
            StudentDto st = students[i];
            if(st != null){
                System.out.println(st.toString());
            }
        }
    }

}


/*
    MyClass cls = null;

    // 객체를 할당
    MyClass cls = new MyClass();

    // 배열만 생성
    MyClass arr[] = new MyClass[3];     // 객체를 생성한 것이 아님. 배열을 생성한 것임. arr[0], arr[1], arr[2]

    //객체를 할당
    arr[0] = new MyClass();
    arr[1] = new MyClass();
    arr[2] = new MyClass();

    arr[0].setName("홍길동");

 */

 

package dto;

// Data Transfer Object
public class StudentDto {

    private int number;
    private String name;
    private double height;
    private String address;

    public StudentDto() {
    }

    public StudentDto(int number, String name, double height, String address) {
        this.number = number;
        this.name = name;
        this.height = height;
        this.address = address;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

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

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "StudentDto{" +
                "number=" + number +
                ", name='" + name + '\'' +
                ", height=" + height +
                ", address='" + address + '\'' +
                '}';
    }

}