본문 바로가기

Java

회원관리-배열

MemberMain

  • 콘솔에 메뉴를 출력하는 클래스
package memberArray;

import java.util.Scanner;


public class MemberMain {

    // member 저장 배열
    static MemberVo[] members = new MemberVo[0];

    public static void main(String[] args) {

        MemberService ms = new MemberService();
        Action action = null;
        Scanner sc = new Scanner(System.in);
        boolean isStop = false;
        do {
            System.out.println("메뉴를 선택하세요.");
            System.out.println("1. 회원 가입");
            System.out.println("2. 회원 목록보기");
            System.out.println("3. 회원 정보수정");
            System.out.println("5. 종료");

            String command = sc.next();
            switch (command) {
            case "1":
                System.out.println("회원가입 시작");
                action = new AddAction();
                ms.process(action, sc);
                break;
            case "2":
                System.out.println("회원 목록보기");
                action = new ListAction();
                ms.process(action, sc);
                break;
            case "3":
                System.out.println("회원 정보수정");
                action = new UpdateAction();
                ms.process(action, sc);
                break;
            case "5":
                System.out.println("5");
                isStop = true;
            }



        }while(!isStop);

    }

}

MemberService

  • 요청을 제어하는 서비스
  • 실질적인 비즈니스 로직을 정의하는 Service
import java.util.Scanner;

public class MemberService {

    void process(Action action,Scanner sc){

        action.execute(sc);

    }

}

MemberVo

  • 회원 정보 저장
package memberArray;

public class MemberVo {
    private String id;
    private String pw;
    private String name;
    private int age;

    public MemberVo() {
    }

    public MemberVo(String id, String pw, String name, int age) {
        super();
        this.id = id;
        this.pw = pw;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPw() {
        return pw;
    }

    public void setPw(String pw) {
        this.pw = pw;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "MemverVo [id=" + id + ", pw=" + pw + ", name=" + name + ", age=" + age + "]";
    }

}

Action

  • 요청 처리 규격을 정의(인터페이스)
  • 다형성 지원을 위해 사용
import java.util.Scanner;

public interface Action {

    void execute(Scanner sc);

}

각 액션들

AddAction

  • 회원 가입 요청을 처리해 주는 클래스
package memberArray;

import java.util.Scanner;

public class AddAction implements Action{

    @Override
    public void execute(Scanner sc) {
        System.out.println("회원 정보 입력");
        System.out.print("ID :");
        String id = sc.next();
        System.out.print("PW :");
        String pw = sc.next();
        System.out.print("NAME :");
        String name = sc.next();
        System.out.print("AGE :");
        int age = sc.nextInt();

        MemberVo member = new MemberVo(id, pw, name, age);
        MemberVo[] temp = new MemberVo[MemberMain.members.length+1];
        for(int i=0;i<MemberMain.members.length;i++) {
            temp[i] = MemberMain.members[i]; // 기존회원 복사
        }
        temp[temp.length -1] = member;
        MemberMain.members = temp;
    }

}

ListAction

  • 회원 목록보기 요청 처리
package memberArray;

import java.util.Scanner;

public class ListAction implements Action{

    @Override
    public void execute(Scanner sc) {
        MemberVo[] members =  MemberMain.members;
        System.out.printf("=== Member Count %s명 === \n",members.length);
        for(int i=0;i<members.length;i++) {
            System.out.print("ID: " + members[i].getId() +" / ");
            System.out.print("PW: " + members[i].getPw() +" / ");
            System.out.print("Name: " + members[i].getName() +" / ");
            System.out.print("Age: " + members[i].getAge() );
            System.out.println();
        }
        System.out.printf("=== Member Count %s명 ===\n",members.length);
        for(MemberVo m: members) {
            System.out.print("ID: " + m.getId() +" / ");
            System.out.print("PW: " + m.getPw() +" / ");
            System.out.print("Name: " + m.getName() +" / ");
            System.out.print("Age: " + m.getAge() );
            System.out.println();
        }
    }
}

UpdateAction

  • 회원 정보 수정 처리
package memberArray;

import java.util.Scanner;

import chapter13.Member;

public class UpdateAction implements Action{

    @Override
    public void execute(Scanner sc) {
        System.out.println("회원 정보 수정");

        // 수정할 id 찾기
        System.out.print("수정할 ID :");
        String id = sc.next(); // 1111
        MemberVo member = null;
        MemberVo[] members = MemberMain.members;
        for(MemberVo m:members) {
            if(m.getId().equals(id)) {
                member = m;
                break;
            }
        }

        // id 있으면 PW,NAME,AGE 수정
        if(member != null) {
            System.out.println("기존 PW :");
            System.out.print("수정 PW :");
            String pw = sc.next();
            System.out.println("기존 NAME :");
            System.out.print("수정 NAME :");
            String name = sc.next();
            System.out.println("기존 AGE :");
            System.out.print("수정 AGE :");
            int age = sc.nextInt();

            // 1. setXXX()
            member.setPw(pw);
            member.setName(name);
            member.setAge(age);

            // 2. MememberVo 주소 변경
            MemberVo m = new MemberVo(member.getId(), pw, name, age);
            member = m;

        }else {
            System.out.println("없는 ID입니다.");
        }


    }

}

DeleteAction

  • 회원 정보 삭제 처리
package memberArray;

import java.util.Scanner;

public class DeleteAction implements Action{

    @Override
    public void execute(Scanner sc) {
        // id 찾기
        System.out.print("삭제할 ID :");
        String id = sc.next(); // 1111
        MemberVo member = null;
        MemberVo[] members = MemberMain.members;
        int deleteIndex = -1;
        for(int i=0;i<members.length;i++) {
            if(members[i].getId().equals(id)) {
                deleteIndex = i;
                break;
            }
        }
        if(deleteIndex != -1) {


            MemberVo[] temp = new MemberVo[members.length -1];
            for(int i=0;i<members.length;i++) {
                if(i == deleteIndex) {
                    continue;
                }else if(i > deleteIndex){
                    temp[i-1] = members[i];
                }else {
                    temp[i] = members[i];                    
                }
            }

            MemberMain.members = temp;


        }else {
            System.out.println("삭제할 ID가 없습니다.");
        }

    }

}

'Java' 카테고리의 다른 글

회원관리-File  (0) 2022.03.07
회원관리 - ArrayList  (0) 2022.03.07
JDBC  (0) 2022.03.07
네트워크 network  (0) 2022.03.07
입출력 Input / Output  (0) 2022.03.07