[JAVA] 회원관리 프로그램 만들기

ho's·2022년 5월 22일
0

위 글은 김성박선생님의 자바 강의를 바탕으로 쓰여졌습니다.
더 자세한 내용은 아래 링크를 통해 알아보실 수 있습니다.

부부개발단 유투브


회원 관리 프로그램 만들기

  • 프로그램을 실행하면 /tmp/users.dat 파일에서 회원정보를 읽어온다.
  • 해당 파일이 없을 경우 읽어오지 않는다.
  • 프로그램 종료시, 메모리에 있는 회원 정보를 /tmp/user.dat에 저장한다.
  • 프로그램을 강제 종료하면 입력된 회원 정보는 저장이 안될 수도 있다.

기능을 나타내어 보자

소스코드

UserDao

UserDao의 코드 분석

사용자의 정보를 저장하고 읽어오는 기능을 갖는다.

public UserDao(String filename){
	this.filename = filename;
}

생성자로 filename을 갖는다.

생성자를 가져야하는 이유

https://www.inflearn.com/questions/277163

UserDao의 saveUser()

public void saveUSer(List<User> list){
	try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename))){
    	out.writeObject(list);
    }catch(Exception ex){
     	ex.printStackTrace();
    }
}
  • saveUser 메소드는 List<User> User를 목록으로 받는다.(list로 받아들여서 저장한다)
  • getUser 메소드
  1. 파일의 생성자를 만든다.
  2. 파일이 존재하지 않으면 아무것도 없는 ArrayList를 만들어서 return해준다.
public List<User> getUser(){
	File file = new File(filename);
    if(!file.exists()){
    	return new ArrayList<>();
    }
   
}

파일이 존재하면, 읽어들이는 코드
User형식의 List객체를 만든다.

List<User> list = null;
try(ObjectInputStream in) = new ObjectInputStream(new FileInputStream(filename))){
	list = (List<User>)in.readObject();
} catch(Exception ex){
	ex.printStackTrace();
}
return list;

UserUI 클래스

UserUI 소스코드

  1. BufferedReader타입의 br 변수 선언 후 생성자 만들기
private BufferedReader br;
public UserUI(){
	br = new BufferedReader(new InputStreamReader(System.in));
}
public int menu(){
	System.out.println("1. 회원등록");
    System.out.println("2. 회원목록보기");
    System.out.println("5. 종료");
    int menuId = -1;
    try {
    	String line = br.readLine();
        menuId = Integer.parseInt(line);
        // 문자열을 정수로 변환
    }catch(Exception ex){
    	ex.printStackTrace();
    }
    return menuId;
}

menu메소드는
선택지를 출력하고, UserUI에서 입력받은 br을 Integer로 변환한 후, 반환하는 메소드이다.

regMenu() 메소드

regMenu() 메소드는 User형식을 반환하는 메소드이다.
br.readLine()으로 email, name, strBirthYear를 입력받고, user 객체에 넣어준다. 예외처리를 해주고 예외발생시 예외출력 후 null 값을 반환해준다.

public User regMenu(){
	try{
    	System.out.println("email을 입력하세요.");
        String email = br.readLine();
        System.out.println("이름을 입력하세요.");
        String name = br.readLine();
        System.out.println("생년을 입력하세요.");
        String strBirthYear = br.readLine();
        int birthYear = Integer.parseInt(strBirthYear);
        
        User user = new User(email, name, birthYear);
        return user;
    }catch(Exception ex){
    	ex.printStackTrace();
        return null;
    }

}

printUserList 메소드

public void printUserList(List<User> users)
public필드에 반환 타입은 없고 메소드명은 printUserList이다
User타입의 users를 매개변수로 갖는다.

for(int i=0;i<users.size();i++)
users의 사이즈만큼 반복해서 user객체의 이메일, 이름, 생년월일을 출력한다.

UserMain 클래스

profile
그래야만 한다

0개의 댓글