간단한 로그인 프로그램 구현하기

이동엽·2022년 3월 2일
0

java

목록 보기
1/18

간단한 로그인 프로그램 구현하기

주된 사용 기술 : Class, 배열

📍 기본 구성
- User(사용자) 클래스

  • 필드(로그인 아이디, 패스워드, 닉네임)를 포함한다.
  • 필드는 모두 접근 제한자 private를 사용한다.
  • 메소드(각 필드에 대한 Setter, Getter)를 사용한다.
  • LoginApplication 클래스(main 메소드 선언 지점)
  • User 배열의 크기는 10으로 설정한다.

📍 요구 사항
- 회원 가입
1. 사용자는 회원 가입을 할 수 있다.
2. 회원 가입은 생성자를 통해 실행되고, 필요한 정보들(아이디, 패스워드, 닉네임)을 파라미터로 입력받는다.
3. 회원 가입을 하게 되면 프로그램의 User 배열에 담긴다.
4. 만약 배열이 가득 차 있다면 담지 않고, 콘솔에 회원 가입을 할 수 없다는 메시지를 보여준다.

  • 로그인
  1. 사용자는 로그인을 할 수 있다.
  2. 로그인은 사용자의 로그인 아이디와 패스워드를 입력받아 수행된다.
  3. 사용자가 로그인을 성공하면 자신의 아이디와 닉네임이 메시지로 출력된다.
  4. 로그인 아이디와 패스워드가 일치하지 않는다면 로그인을 실패하였다는 메시지를 출력한다.
  • 사용자 조회
  1. 사용자 조회 기능은 현재 회원가입 회원들의 목록을 출력하게 된다.
  2. 회원들의 목록을 출력할 때 향상된 for문을 사용한다.
  3. 회원들의 목록은 각 회원의 닉네임이 출력되게 한다. (자신도 포함)
  4. 모든 목록을 출력할 때 null은 출력하지 않는다.
  • 탈퇴
  1. 회원은 탈퇴를 할 수 있다.
  2. 탈퇴 기능은 회원의 로그인 아이디와 패스워드를 입력받은 뒤 해당 회원의 정보를 배열에서 null로 만든다.
  3. 만약 일치하는 로그인 아이디가 없거나 패스워드가 일치하지 않는다면 탈퇴에 실패하였다는 메시지를 콘솔에 출력한다.

코드 및 실행결과

public class User {
    private String id;
    private String password;
    private String nickname;

    User() {} //기본 생성자
    User(String id,String password,String nickname) {
        this.id = id;
        this.password = password;
        this.nickname = nickname;
    }
    //각 필드의 Getter, Setter
    void setId(String id) { this.id = id; }
    void setPassword(String password) { this.password = password; }
    void setNickname(String nickname) { this.nickname = nickname; }
    String getId() { return id;}
    String getPassword() { return password;}
    String getNickname() { return nickname;}
}

<User 클래스>

import java.util.Scanner;

public class LoginApplication {
    private static int usernum = 0;
    private static User user[] = new User[10];
    private static Scanner scanner = new Scanner(System.in);
    private static String inputId, inputPassword, inputNickname;
    public static void main(String[] args) {
        for (int i=0;i<10;i++)
            { user[i] = new User(); } //NullpointerException방지 배열 초기화

        boolean run = true;

        do {
            System.out.println("원하는 메뉴를 숫자로 입력하여 선택하세요: ");
            System.out.println("1.회원가입 2.로그인 3.사용자조회 4.탈퇴 5.종료");
            System.out.print("선택 > ");

            int select = scanner.nextInt();
            if (select == 1){ //회원가입 선택
                if (usernum == 10) {
                    System.out.println("용량 초과 회원가입 실패");
                    break;
                }
                else
                    createAccount();
            } else if (select == 2) {    //로그인 선택
                loginAccount();
            } else if (select == 3) {    //사용자조회 선택
                lookAccount();
            } else if (select == 4) {    //탈퇴 선택
                deleteAccount();
            } else {                     //종료 선택
                run = false;
            }
        }while (run);
        System.out.println("프로그램 종료");
    }

    private static void createAccount() {    //회원가입 선택
        System.out.print("아이디를 입력하세요 : ");
        inputId = scanner.next(); user[usernum].setId(inputId);
        System.out.print("비밀번호를 입력하세요 : ");
        inputPassword = scanner.next(); user[usernum].setPassword(inputPassword);
        System.out.print("닉네임을 입력하세요 : ");
        inputNickname = scanner.next(); user[usernum].setNickname(inputNickname);

        usernum++;
    }

    private static void loginAccount() {    //로그인 선택
        System.out.print("아이디를 입력하세요 : ");
        inputId = scanner.next();
        System.out.print("비밀번호를 입력하세요 : ");
        inputPassword = scanner.next();

        int loginSuccess = 0;
        for (int i=0;i < user.length;i++){
            if (inputId.equals(user[i].getId())&&inputPassword.equals(user[i].getPassword()))
            {
                System.out.println("로그인 성공");
                System.out.println(user[i].getId() + " " + user[i].getNickname());
                loginSuccess = 1;
                break;
            }
        }
        if (loginSuccess == 0)
            System.out.println("로그인 실패");
    }

    private static void lookAccount() {    //사용자조회 선택
        for (User users : user) {
            if (users.getNickname() != null)
                System.out.println(users.getNickname());
        }
    }

    private static void deleteAccount() {    //탈퇴 선택
        System.out.print("아이디를 입력하세요 : ");
        inputId = scanner.next();
        System.out.print("비밀번호를 입력하세요 : ");
        inputPassword = scanner.next();
        int deleteSuccess = 0;
        for (int i=0;i < user.length;i++){
            if (inputId.equals(user[i].getId())&&inputPassword.equals(user[i].getPassword()))
            {
                System.out.println("탈퇴 성공");
                user[i].setId(null); user[i].setPassword(null); user[i].setNickname(null);
                deleteSuccess = 1;
            }
        }
        if (deleteSuccess == 0)
            System.out.println("일치하는 정보 없음");
    }
}

<LoginApplication 클래스>

profile
백엔드 개발자로 등 따숩고 배 부르게 되는 그 날까지

0개의 댓글