주소록 만들기

조회수 1126회

package address2b.controller;

import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Scanner;

import address2b.model.Student; import address2b.model.StudentDAO; import address2b.view.StudentView;

public class StudentController implements Controller { StudentDAO studentDAO = new StudentDAO(); Student student = null; // 참조변수는 있지만 참고하는 객체가 null(참조하는 객체 없음) 상태임 Scanner sc = null; @Override public void process(String command) { // TODO Auto-generated method stub switch(command) { case "register" : register(); break; case "list" : list(); break; case "update" : update(); break; case "delete" : delete(); break; case "listAll" : listAll(); break; case "open" : open(); break; case "save" : save(); break; } } public void process1(String command1) { // TODO Auto-generated method stub switch(command1) { case "name" : System.out.println("이름 : ");name(); break; case "hakbun" : System.out.println("학번 : ");hakbun(); break; case "email" : System.out.println("이메일 : ");email(); break; case "dept" : System.out.println("학과 : ");dept(); break; default: System.out.println("명령에 해당하는 숫자 코드를 입력하시오");break; } } private void dept() { student = new Student(); sc = new Scanner(System.in); student.setDept(sc.next()); System.out.println("학과 : "+student.getDept());

}
private void email() {
    student = new Student();
    sc = new Scanner(System.in);
    student.setEmail(sc.next());
    System.out.println("이메일 : "+student.getEmail());
}
private void hakbun() {
    student = new Student();
    sc = new Scanner(System.in);
    student.setHakbun(sc.next());
    System.out.println("학번 : "+student.getHakbun());
}
private void name() {
    student = new Student();
    sc = new Scanner(System.in);
    student.setName(sc.next());
    System.out.println("이름 : "+student.getName());
}
StudentView studentView = new StudentView(); // 인스턴스 변수, 멤버 필드
private void update() {
    // TODO Auto-generated method stub
    student = new Student();
    sc = new Scanner(System.in);
    System.out.print("수정할 학번 : ");
    student.setHakbun(sc.next());
    //studentDAO.update(student);
    System.out.print("수정할 항목을 고르시오 : ");
    String[] menus1 = {"0.이름", "1.학번", "2.이메일", "3.학과","4.이전으로"};

    for(String m1 : menus1)
        System.out.print(m1 + " | "); // 집합 객체 - 문자열 배열을 순차적으로 접근
    System.out.print("\n");
    student.setHakbun(sc.next());
    StudentController studentCtrl1 = new StudentController();

    //Scanner sc1 = new Scanner(System.in);//입력받음
    int key1 = sc.nextInt();
    while (true) {
        switch(key1) {
            case 0: studentCtrl1.process1("name");break;
            case 1: studentCtrl1.process1("hakbun");break;
            case 2: studentCtrl1.process1("email");break;
            case 3: studentCtrl1.process1("dept");break;
            case 4: sc.close(); // 자원 회수하는 문장
                    System.exit(1);break;
            default: System.out.println("명령에 해당하는 숫자 코드를 입력하시오");break;
        }
    }
}
private void delete() {
    student = new Student();
    sc = new Scanner(System.in);
    System.out.print("삭제할 학번 : ");
    student.setHakbun(sc.next());
    studentDAO.delete(student); 
    System.out.println("삭제되었습니다! ");
}
private void open() {
    studentDAO.open();
}
private void save() {
    studentDAO.save();
}
private void listAll() {
    // Controller의 역할 : 요청을 받아 (기본적인 처리 후) DAO에게 전달하고, 
    //                   DAO가 처리한 내용을 받아서(추가적인 처리 후) 뷰에게 전달
    studentView.printStudentList(studentDAO.readList()); // VIEW에게 전달
    /*
    ArrayList<Student> studentList = studentDAO.readList();
    for(Student s : studentList)
        System.out.print(s.getName() + "|" + s.getHakbun() + "\n");         
    */
}
private void list() {
    student = new Student(); 
    sc = new Scanner(System.in);
    System.out.print("학번 : ");
    student.setHakbun(sc.next());
    Student found = null;
    if((found = studentDAO.read(student)) != null)
        studentView.printStudent(found);
        /*
        System.out.print(found.getHakbun() + "|" + found.getName() + 
                " | " + found.getEmail() + " | " + found.getDept() + "\n");
                */
    else
        studentView.printException("입력한 학번의 학생은 존재하지 않습니다");
        //System.out.print("입력한 학번의 학생은 존재하지 않습니다\n");
}
private void register() {
    student = new Student();
    sc = new Scanner(System.in);
    System.out.print("이름 : ");
    student.setName(sc.next());
    System.out.print("학번 : ");
    student.setHakbun(sc.next());
    System.out.print("이메일 : ");
    String email = sc.next();
    student.setEmail(email);
    System.out.print("학과 : ");
    student.setDept(sc.next());

    // egyou@induk.ac.kr vs a@a.com : e-mail : @ 기호가 있고, @ 기호 앞에 글자수는 3자 이상
    if(isValidEmail(email)) {
        studentDAO.create(student);
        studentView.printRegister(student);
    }

    else
        System.out.println("이메일 형식을 확인하십시요");

}

private boolean isValidEmail(String email) {
    boolean ok = false;
    int i = email.indexOf('@');
    try {
        if(i < 0) {
            throw new Exception("@이 있어야 합니다.");
        }
        else if(email.substring(0, i).length() < 3) {
            throw new Exception("아이디는 3자 이상.");
        }
        else {
            ok = true;  
        }
    } catch(Exception e) {
        System.out.println(e.getMessage());
    }
    return ok;
}

}

주소록 만들기를 하는데 데이터 값을 수정을 하고 빠져 나와야 하는데 빠져 나와 지지가 않네요..ㅠㅠ 어떻게 해야 하나요...??

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)