사이먼's 코딩노트

[Java] 게시판 제작(7) 본문

프로젝트/[Java] 게시판 제작

[Java] 게시판 제작(7)

simonpark817 2024. 2. 26. 21:00

[게시판 제작 ~ing]

 

GitHub - psm817/full_stack_proj_2024_03

Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.

github.com

 

[회원가입 기능 추가]

  • 다음은 "member join" 이라는 명령어를 통해 회원가입 기능을 추가해봅시다.
  • 회원가입 기능은 아이디 중복확인, 비밀번호 확인 기능이 포함되도록 구현해봅시다.
class Mem {
    int id;
    String regDate;
    String loginId;
    String loginPw;
    String name;

    public Mem(int id, String regDate, String loginId, String loginPw, String name) {
        this.id = id;
        this.regDate = regDate;
        this.loginId = loginId;
        this.loginPw = loginPw;
        this.name = name;
    }
}
  • 회원가입에 필요한 정보는 ID, 최초등록날짜, PW, 확인용PW, 회원이름이 있고 위 코드는 Mem 클래스를 추가하여 해당 정보를 관리한다.

 

public class Main {
    private static List<Article> articles;
    private static List<Mem> members;

    static {
        articles = new ArrayList<>();
        members = new ArrayList<>();
    }
  • 그 다음 위 코드와 같이 등록된 회원의 정보를 저장한 리스트를 생성한다.

 

else if(cmd.equals("member join")) {
    int id = members.size() + 1;
    String regDate = Util.getNowDateStr();


    String loginId = null;
    String loginPw = null;
    String loginPwConfirm = null;

    while(true) {
        System.out.printf("로그인 아이디 : ");
        loginId = scanner.nextLine();

        if(inJoinableLoginId(loginId) == false) {
            System.out.printf("%s(은)는 이미 사용중인 아이디 입니다.\n", loginId);
            continue;
        }
        break;
    }

    while(true) {
        System.out.printf("로그인 비밀번호 : ");
        loginPw = scanner.nextLine();

        System.out.printf("비밀번호 확인 : ");
        loginPwConfirm = scanner.nextLine();

        if(loginPw.equals(loginPwConfirm) == false) {
            System.out.println("비밀번호를 다시 입력해주세요");
            continue;
        }
        break;
    }

    System.out.printf("이름 : ");
    String name = scanner.nextLine();

    Mem member = new Mem(id, regDate, loginId, loginPw, name);

    members.add(member);

    System.out.printf("%d번 회원이 가입되었습니다.\n", id);
}
  • "article write" 명령어와 유사하게 출력문과 스캐너를 이용해서 회원 정보를 저장한다.
  • 통상적으로 회원 가입은 회원 등록하는 사용자가 비밀번호를 입력하고 비밀번호를 한번 더 입력해서 일치한지 확인하고 가입 승인을 내준다.
  • 위 코드에서도 마찬가지로 무한 루프와 조건문을 통해 기능을 구현할 수 있다.
  • 고유 번호가 같은 지 비교할 때는 자료형 타입이 int여서 단순히 == 을 이용해서 숫자를 비교할 수 있었지만, 비밀번호는 자료형 타입이 String 이기 때문에 equals를 이용해서 비교를 한다.
  • 만약 확인용 비밀번호가 일치하지 않는다면 비밀번호가 일치하지 않는다는 출력문과 함께 비밀번호를 다시 입력하도록 하고 일치하면 해당 무한루프를 종료하게 된다.
  • 이와 같은 방식으로 아이디 중복확인 기능도 구현할 수 있다.
  • 다만 아이디 중복 확인은 사용자가 따로 확인용 아이디를 입력하지 않기 때문에 false를 체크하는 메서드를 하나 만들어줘야한다.

 

private static boolean inJoinableLoginId(String loginId) {
    int index = getMemberIndexByLoginId(loginId);

    if(index == -1) {
        return true;
    }
    return false;
}

private static int getMemberIndexByLoginId(String loginId) {
    int i = 0;
    for(Mem member : members) {
        if(member.loginId.equals(loginId)) {
            return i;
        }
        i++;
    }
    return -1;
}
  • 아이디 중복 검사를 위해서 inJoinableLoginId() 라는 메서드를 선언했고 해당 메서드는 다음과 같이 정의할 수 있다.
  • index라는 변수를 만들어서 getMemberIndexByLoginId() 라는 메서드를 통해 인덱스 값을 구한다.
  • getMemberIndexByLoginId() 메서드는 members에 저장된 회원 정보를 반복문을 통해 하나씩 loginId와 사용자가 입력한 loginId가 일치한지 equals를 통해 비교하고 일치하면 해당 리스트 번호를 return 해주고 그렇지 않으면 -1을 return 한다.
  • 이 때 return 된 인덱스의 숫자가 -1이면 중복되는 아이디가 없다는 뜻이기 때문에 Main 메서드에 참을 반환한다.

 

  • 현재까지 작성된 코드를 실행하면 다음과 같이 게시판이 동작한다.

게시판 7차 동작

 

반응형

'프로젝트 > [Java] 게시판 제작' 카테고리의 다른 글

[Java] 게시판 제작(9)  (0) 2024.03.04
[Java] 게시판 제작(8)  (0) 2024.03.04
[Java] 게시판 제작(6)  (0) 2024.02.23
[Java] 게시판 제작(5)  (0) 2024.02.22
[Java] 게시판 제작(4)  (0) 2024.02.21