🦁 걸어봐 위엄 라잌어 라이옹/👀 주차별 과제

[대학교멋사🦁/JAVA] Assignment_2회차_2

우주수첩 2023. 4. 28. 05:23
728x90

멋쟁이사자처럼 로그인 프로그램입니다.

1. 로그인 2. 회원가입 3. 종료

의 기능을 하는 프로그램을 제작합니다.

 

조건 : map을 활용하여 과제를 완성합니다

 

 

package week2.assignment_2;

import java.util.*;

public class likelion_201902679_KHJ_02 {

    private Map<String,String> userInfoList = new HashMap<>();
    static Scanner sc = new Scanner(System.in);

    public void createNewUser(String id, String pw){ // 새로운 사용자 생성
        userInfoList.put(id,pw);
    }

    public boolean login(){ // login 기능
        String inputId;
        String inputPw;

        if(userInfoList.isEmpty()){ // 예외처리 : 회원 0명
            System.out.println("\n로그인 프로그램 내에 로그인 정보가 없습니다.");
            System.out.println("회원가입 먼저 잰행 해 주세요\n");
            return false;
        }

        System.out.print("아이디를 입력하세요 : ");
        inputId = sc.next();

        System.out.print("비밀번호를 입력하세요 : ");
        inputPw = sc.next();

        if(checkId(inputId)){ // 로그인 성공 여부 확인 : id 존재 여부 확인
            if(checkPw(inputId,inputPw)){ // 로그인 성공 여부 확인 : pw 일치 확인
                System.out.printf("\n%s 회원 성공적으로 로그인 되었습니다.",inputId);
                System.out.println("프로그램이 종료됩니다.");
                System.exit(0);
            }else{ // 로그인 성공 여부 확인 : 비밀번호 오류
                System.out.println("\n비밀번호가 틀렸습니다.\n");
            }
        }else{ // 로그인 성공 여부 확인 : id 미존재
            System.out.println("\n없는 회원입니다.\n");
        }
        return false;
    }

    public boolean checkId(String id){ // 사용자 id 존재 여부 확인
        if(userInfoList.containsKey(id)) return true;

        return false;
    }

    public boolean checkPw(String id,String pw){ // 사용자 pw 일치 여부 확인
        if(userInfoList.get(id).compareTo(pw)==0) return true;
        return false;
    }

    public boolean signUp(){ // 회원가입
        String inputId;
        String inputPw;

        while (true){
            System.out.print("아이디를 입력하세요 : ");
            inputId = sc.next();

            if(checkId(inputId)){ // id 존재 여부 확인
                System.out.println("이미 있는 아이디입니다.");
                System.out.print("다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :");
                String answer = sc.next();

                switch (answer){
                    case "y" : continue;
                    case "n" : return false;
                }
            }else break;

        }

        System.out.print("비밀번호를 입력하세요 : ");
        inputPw = sc.next();

        createNewUser(inputId,inputPw); // 새로운 회원 생성

        System.out.println("\n정상적으로 회원가입 되었습니다.");

        return true;
    }

    public void exit(){ // 프로그램 종료
        System.out.println("로그인 프로그램이 종료됩니다.");
        System.exit(0);
    }

    public boolean wrongInputNum(){ // 올바르지 않은 숫자 입력
        System.out.println("\n번호를 다시 확인해주세요.\n");
        return false;
    }

    public boolean getInputNum(){ // 프로그램 진행을 위한 입력 숫자 확인
        System.out.print("어떤걸 진행하시겠습니까? :");
        int inputNum = sc.nextInt();
        boolean check = false;

        switch (inputNum){
            case 1:check=login(); break;
            case 2:check=signUp(); break;
            case 3:exit(); break;
            default:wrongInputNum();
        }
        return check;
    }

    public static void printStartOption(){ // 시작 문자열 출력
        System.out.println("==============================");
        System.out.println("1. 로그인\n2. 회원가입\n3. 종료");
        System.out.println("==============================\n");
    }

    public static void main(String args[]){
        likelion_201902679_KHJ_02 assignment = new likelion_201902679_KHJ_02();

        while (true){
            System.out.println("\n멋쟁이사자처럼 로그인 프로그램\n");
            printStartOption();
            if(!assignment.getInputNum()) continue;
        }

    }
}

 

 

 

#1 프로그램 진행 입력 수 예외 처리

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :
4

번호를 다시 확인해주세요.

멋쟁이사자처럼 로그인 프로그램

==============================

...

 


 

#2 로그인_회원 미존재 예외처리

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :1

로그인 프로그램 내에 로그인 정보가 없습니다.
회원가입 먼저 잰행 해 주세요


멋쟁이사자처럼 로그인 프로그램

==============================
...

 


#2 로그인_아이디 미존재 예외처리

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :1
아이디를 입력하세요 : qwer
비밀번호를 입력하세요 : qwer

없는 회원입니다.


멋쟁이사자처럼 로그인 프로그램

==============================

...

 

#2 로그인_비밀번호 오류 예외처리

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :1
아이디를 입력하세요 : asdf
비밀번호를 입력하세요 : qwer

비밀번호가 틀렸습니다.


멋쟁이사자처럼 로그인 프로그램

==============================

...

 

#2 로그인_성공

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :1
아이디를 입력하세요 : asdf
비밀번호를 입력하세요 : asdf

asdf 회원 성공적으로 로그인 되었습니다.프로그램이 종료됩니다.

Process finished with exit code 0

 

 


#3 회원가입_ID 존재

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :2
아이디를 입력하세요 : asdf
이미 있는 아이디입니다.
다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :y
아이디를 입력하세요 : asdf
이미 있는 아이디입니다.
다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :n

멋쟁이사자처럼 로그인 프로그램

==============================

...

 

#3 회원가입_성공

멋쟁이사자처럼 로그인 프로그램

==============================
1. 로그인
2. 회원가입
3. 종료
==============================

어떤걸 진행하시겠습니까? :2
아이디를 입력하세요 : asdf
비밀번호를 입력하세요 : asdf

정상적으로 회원가입 되었습니다.

멋쟁이사자처럼 로그인 프로그램

==============================

...

 

 

 

 

더보기

조건에 MAP 있는 지 모르고 userInfo 클래스를 냅다 팠던 나의 과거...

package week2.assignment_2;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class likelion_201902679_KHJ_02 {

    private static List<userInfo> userInfoList = new ArrayList<>();
    static Scanner sc = new Scanner(System.in);

    public class userInfo{
        String id;
        String pw;

        public userInfo(String id, String pw) {
            this.id = id;
            this.pw = pw;
        }

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

        public String getId() { return id; }

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

        public String getPw() { return pw; }
    }

    public void createNewUser(String id, String pw){
        userInfo newUser = new userInfo(id,pw);
        userInfoList.add(newUser);
    }


    public boolean login(){
        String inputId;
        String inputPw;

        if(userInfoList.isEmpty()){
            System.out.println("\n로그인 프로그램 내에 로그인 정보가 없습니다.");
            System.out.println("회원가입 먼저 잰행 해 주세요\n");
            return false;
        }
        System.out.print("아이디를 입력하세요 : ");
        inputId = sc.next();

        System.out.print("비밀번호를 입력하세요 : ");
        inputPw = sc.next();

        if(checkId(inputId)){
            if(checkPw(inputPw)){
                System.out.printf("\n%s 회원 성공적으로 로그인 되었습니다.",inputId);
                System.out.println("프로그램이 종료됩니다.");
                System.exit(0);
            }else{
                System.out.println("\n비밀번호가 틀렸습니다.\n");
            }
        }else{
            System.out.println("\n없는 회원입니다.\n");
        }
        return false;
    }

    public boolean checkId(String id){
        for(userInfo user : userInfoList){
            if(id.compareTo(user.getId())==0){return true;}
        }
        return false;
    }

    public boolean checkPw(String pw){
        for(userInfo user : userInfoList){
            if(pw.compareTo(user.getPw())==0){return true;}
        }
        return false;
    }

    public boolean signUp(){
        String inputId;
        String inputPw;

        while (true){
            System.out.print("아이디를 입력하세요 : ");
            inputId = sc.next();

            if(checkId(inputId)){
                System.out.println("이미 있는 아이디입니다.");
                System.out.print("다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :");
                String answer = sc.next();
                switch (answer){
                    case "y" : continue;
                    case "n" : return false;
                }
            }else break;

        }

        System.out.print("비밀번호를 입력하세요 : ");
        inputPw = sc.next();

        createNewUser(inputId,inputPw);

        System.out.println("\n정상적으로 회원가입 되었습니다.");

        return true;
    }

    public void exit(){
        System.out.println("로그인 프로그램이 종료됩니다.");
        System.exit(0);
    }

    public static void printStartOption(){
        System.out.println("==============================");
        System.out.println("1. 로그인\n2. 회원가입\n3. 종료");
        System.out.println("==============================\n");
    }

    public boolean wrongInput(){
        System.out.println("\n번호를 다시 확인해주세요.\n");
        return false;
    }
    public boolean getInputNum(){
        System.out.print("어떤걸 진행하시겠습니까? :");
        int inputNum = sc.nextInt();
        boolean check = false;

        switch (inputNum){
            case 1:check=login(); break;
            case 2:check=signUp(); break;
            case 3:exit(); break;
            default:wrongInput();
        }

        return check;
    }


    public static void main(String args[]){
        likelion_201902679_KHJ_02 assignment = new likelion_201902679_KHJ_02();

        while (true){
            System.out.println("\n멋쟁이사자처럼 로그인 프로그램\n");
            printStartOption();
            if(!assignment.getInputNum()) continue;
        }

    }
}

 

 

728x90