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

ho's·2022년 5월 23일
0

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

부부개발단 유투브


🥇수정할 회원의 email을 입력하시오.

🛒 수정할 회원의 email을 입력했을때 2가지 경우

  1. 수정할 회원의 email이 있을 경우
  2. 수정할 회원의 email이 없을 경우

🛒 UserUI 클래스에서 회원 정보 수정 하기 추가

메일 주소가 메모리상의 회원정보에 있을 경우
----->
eoho115@naver.com 회원의 정보를 수정합니다.
이름을 입력하세요.
한대호
생년을 입력하세요.
2000
수정되었습니다.

메일 주소가 메모리상의 회원정보에 없을 경우
------->
수정할 회원 정보가 없습니다.

🔑 inputEmail() 메소드 만들기

public String inputEmail(){
	System.out.println("수정할 회원의 email을 입력해주세요.");
    String email = "";
    try{
    	email = br.readLine();
    }catch(Exception ex){
    	ex.printStackTrace();
    }
    return email;
}

🔑 inputUser() 메소드 만들기

public User inputUser(String email){
	try{
    System.out.println(email + "회원정보를 수정합니다.");
    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;
    }
} 

🔑 UserMain 클래스 수정하기

else if(menuId == 3){
	String email = userUI.inputEmail();
    User updateUser = userUI.inputUser(email);
}
  • menuId == 3이면 userUI.inputEmail() 에서 반환되는 값을 email에 저장한다.
  • inputUser메소드를 통해 email을 매개변수로 받고, User형식의 변수명 updateUser에 담는다.

🔑 UserMain 클래스의 삭제기능

🎨 회원관리소스코드

Usermain

package totojava.io;

import java.util.List;

public class UserMain {
    public static void main(String[] args) {
        UserUI userUI = new UserUI();
        UserDao userDao = new UserDao("C:\\tmp\\user.dat");
        List<User> users = userDao.getUsers();

        while(true){
            int menuId = userUI.menu();
            if(menuId ==5){
                System.out.println("종료합니다.");
                userDao.saveUser(users);
                break;
            }else if(menuId == 1){
                User user = userUI.regUser();
                users.add(user);
                System.out.println("등록되었습니다.");
            }else if(menuId == 2){
                userUI.printUserList(users);
            }
            else if(menuId == 3){
                String email = userUI.inputEmail();
                int findIndex = -1;
                for(int i=0;i<users.size();i++){
                    User u = users.get(i);
                    if(u.getEmail().equals(email)){
                        findIndex = i;
                        break;
                    }
                }

                if(findIndex != -1){
                    User updateUser = userUI.inputUser(email);
                    users.remove(findIndex);
                    users.add(updateUser);
                    System.out.println("수정되었습니다.");
                }else{
                    System.out.println("수정할 회원 정보가 없습니다.");
                }

            }else if(menuId == 4){
                String email = userUI.inputEmail();
                int findIndex = -1;
                for(int i=0;i<users.size();i++){
                    User u = users.get(i);
                    if(u.getEmail().equals(email)){
                        findIndex = i;
                        break;
                    }
                }

                if(findIndex != -1){
                    users.remove(findIndex);
                    System.out.println("삭제하였습니다.");
                }
                else{
                    System.out.println("삭제할 회원 정보가 없습니다.");
                }
            }
        }
    }
}

UserDao

package totojava.io;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 파일에서 List<User> 정보를 저장하거나 읽어오는 기능
 */

public class UserDao {
    private String filename;

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

    public void saveUser(List<User> list){
        try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename))){
            out.writeObject(list);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

    public List<User> getUsers(){
        File file = new File(filename);
        if(!file.exists()){
            return new ArrayList<>();
        }

        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

package totojava.io;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

public class UserUI {
    private BufferedReader br;
    public UserUI(){
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    // 3. 회원정보수정하기
    // 수정할 회원의 email을 입력하세요.
    // urstory@gmail.com

    public int menu(){
        System.out.println("1. 회원등록");
        System.out.println("2. 회원목록 보기");
        System.out.println("3. 회원정보 수정하기");
        System.out.println("4. 회원정보 삭제하기");
        System.out.println("5. 종료");
        int menuId = -1;
        try {
            String line = br.readLine();
            menuId = Integer.parseInt(line);
            // 문자열을 정수로 반환
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return menuId;
    }

    public String inputEmail(){
        System.out.println("수정할 회원의 email을 입력해주세요.");
        String email = "";
        try{
            email = br.readLine();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return email;
    }

    public User inputUser(String email){
        try{
            System.out.println(email + "회원 정보를 수정합니다.");
            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;
        }
    }




    public User regUser(){
        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;
        }
    }


    public void printUserList(List<User> users){
        System.out.println("email          이름             생년월일");
        System.out.println("=======================================");
        for(int i=0;i<users.size();i++){
//            User user = users.get(i);
            User user = users.get(i);
            System.out.println(user.getEmail());
            System.out.println("        ");
            System.out.println(user.getName());
            System.out.println("        ");
            System.out.println(user.getBirthYear());
        }
    }
}
profile
그래야만 한다

0개의 댓글