🍏 개발일기

MCV 연습하기 - 3. 주민 1명 출력

보배 진 2025. 10. 24. 17:13

 

 

 

 

 

 

 

 

 

 

사용자가 view에서 3을 입력했을 때는 주민 1명을 출력해야 합니다

 

코딩 순서

1. 주민의 고유 번호를 사용자에게 입력받는다

2. Model 객체를 생성하여 그 번호를 찾아온다

3. 그 번호가 가지고 있는 나머지 데이터(이름 또는 종류)도 view에 출력한다

 

 


 

 

 

int num = view.getNum();

주민의 고유번호를 사용자에게 입력받는다

이미 컴퓨터가 지정해준 번호를 말한다 == PK

 

 

// 번호 받아오기
public int getNum() {
    int num; // scope(유효범위) 이슈
    while(true) {
        try {
            System.out.print("주민번호입력 >> ");
            num = scanner.nextInt();
        } 
        catch(InputMismatchException e) {
            scanner.nextLine();
            System.out.println("정수만 입력가능합니다!");
            System.out.println("다시 확인 후 입력해주세요");
            continue; // 밑에 진행 막기
        }
        if(100 <num && num < 200) { // 제대로 입력시
            break;
        }
        System.out.println("번호확인후 다시 입력해주세요..");
    } 
    return num;
}

View의 getNum() 함수

 

getNum에서는 

주민번호를 입력받는다

 

while(true)문을 이용해 현재 가지고 있는 주민 번호만 입력을 받을 수 있도록한다

ex) 101, 102 주민이 있다고  하면 103주민을 입력시 다시 입력을 받기 위함

 

정수가 아닌 다른 숫자를 입력했을 경우

try~catch문을 이용해 예외 처리를 해준다

catch 안의 continue는 잘 못 입력했을 때 break에 도달하지 못하도록 코딩을 했다

 

 


 

Model에서 DB 정보 데이터를 가져오는 것이기 때문에

PersonDTO personDTO = new PersonDTO();

객체 생성 

 

 

 

personDTO.setNum(num);

입력한 주민 번호 setNum으로 멤버변수 할당

 

 

PersonDTO data = model.selectOne(personDTO);

selectOne() 메서드에 그 입력받은 주민 번호를 넘겨

 

// 지금보고 있는 데이터 주민이 검색어를 포함하고 있다면
public PersonDTO selectOne(PersonDTO personDTO) {
    // 내가 보고 있는 데이터의 번호와 입력받은 번호 비교
    for(int i=0; i<this.datas.size(); i++) {
        if(this.datas.get(i).getNum() == personDTO.getNum()) {
            int num = this.datas.get(i).getNum();
            String name = this.datas.get(i).getName();
            String type = this.datas.get(i).getType();

            PersonDTO data = new PersonDTO();
            data.setNum(num);
            data.setName(name);
            data.setType(type);
            return data;
        }
    }	
    return null;
}

PersonDTO personDTO 에는 번호가 넘어옴.

this.datas.get(i).getNum() == personDTO.getNum()

찾는 값과 내가 갖고 있는 데이터에 그 번호(PK)가 있으면~~

 

그 번호의 getNum, getName, getType 한다

 

 

view.printData(data);

한 줄 출력을 한다

 

 

 

 

 

 

else if(command == 3) {
    int num = view.getNum();

    PersonDTO personDTO = new PersonDTO();
    personDTO.setNum(num);
    PersonDTO data = model.selectOne(personDTO);

    view.printData(data);
}

Controller의 코드 일부분

'🍏 개발일기' 카테고리의 다른 글

MVC연습하기 - 5. 삭제  (0) 2025.10.28
interface 이해하기 (with 추상클래스)  (0) 2025.10.26
MVC 연습하기 - 2.전체 출력  (0) 2025.10.24
MVC 연습하기 - 1. 주민 추가  (0) 2025.10.24
MVC디자인패턴  (0) 2025.10.23