Java

for 를 이용하여 회원가입 시스템 만들어보기

에어팟맥스 2022. 6. 12. 22:14

※ Main 클래스

package my.day07.c.For;

import java.util.Scanner;

public class Main_member {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("== 첫번째 회원을 가입하세요 ==\n");
		
		Member mbr1 = new Member();
		mbr1.registerMember(sc);
		
		sc.close();
		

	}

}

 

※ 메소드 클래스

 

// 필드 생성

package my.day07.c.For;

import java.util.Scanner;

import my.util.MyUtil;

public class Member {
	
	// field
	String id;      // 필수 입력사항
	String pwd;     // 필수 입력사항, 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 한다.
	String name;    // 필수 입력사항
	String email;   // 필수 입력사항

 

// 회원가입을 해주는 메소드 생성

	// method
	// 회원가입을 해주는 메소드 생성하기
	
	void registerMember(Scanner sc) {
		
		for(;;) {
			System.out.print("1. 아이디: ");
			String id = sc.nextLine();
			
			if( id.trim().isEmpty() ) { // 입력한 것이 없을 때 
				System.out.println("[경고] 아이디를 올바르게 입력하세요!!\n");
			}
			else {
				this.id = id;
				break;
			}
		} // end of for
		
		
		// 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 한다.
		for(;;) {
			System.out.print("2. 비밀번호: ");
			String pwd = sc.nextLine();
			
			if( pwd.trim().isEmpty() ) { // 입력한 것이 없을 때 
				System.out.println("[경고] 비밀번호를 올바르게 입력하세요!!\n");
			}
			else {
				if( MyUtil.checkPwd(pwd) ) { // 예: qwEr1234$
					this.pwd = pwd;
					break;
				}
				else { // 예: qwer1234$ qWer1234 qWer!@#$ qW123$ 
					System.out.println("[경고] 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하이어야 합니다!!");
				}

			}
		} // end of for
		
		
		for(;;) {
			System.out.print("3. 성명: ");
			String name = sc.nextLine();
			
			if( name.trim().isEmpty() ) { 입력한 것이 없을 때 
				System.out.println("[경고] 성명을 올바르게 입력하세요!!\n");
			}
			else {
				this.name = name;
				break;
			}
		} // end of for
		
		for(;;) {
			System.out.print("4. 이메일: ");
			String email = sc.nextLine();
			
			if( email.trim().isEmpty() ) { 입력한 것이 없을 때 
				System.out.println("[경고] 이메일을 올바르게 입력하세요!!\n");
			}
			else {
				this.email = email;
				break;
			}
		} // end of for
		
		System.out.println("== 회원가입이 정상적으로 처리되었습니다. ==");
		
	} // end of void registerMember(Scanner sc)

// 비밀번호가 올바르게 입력되었는지 확인하는 메소드(대문자, 소문자, 숫자, 특수문자가 혼합, 8글자 이상 15글자 이하)

		// 암호는 대문자, 소문자, 숫자, 특수기호가 혼합된 8글자 이상 15글자 이하인지 아닌지 검사를 해주는 메소드 생성하기
		// 파라미터 String pwd 값이 조건에 부합하다면 true 리턴하고,
		// 					   조건에 부합하지 않다면 false 를 리턴한다.
		public static boolean checkPwd(String pwd) {
			
			boolean upperFlag = false;   // 대문자인지 기록하는 용도
			boolean lowerFlag = false;   // 소문자인지 기록하는 용도
			boolean digitFlag = false;   // 숫자인지  기록하는 용도
			boolean specialFlag = false; // 특수문자인지 기록하는 용도
			
			// 입력받은 String pwd 의 글자길이 알아보기 
			// System.out.println( "입력받은 암호 길이: " + pwd.length() );
			
			int pwd_length = pwd.length(); // 비밀번호의 글자수
			
			if( pwd_length < 8 || pwd_length > 15) { // 비밀번호의 글자수가 8글자 이상 15글자 이하가 아닌 경우
				return false;
			}
			else { // 비밀번호의 글자수가 8글자 이상 15글자 이하인 경우
				   // 암호가 어떤 글자로 이루어졌는지 검사를 시도해야 한다.
				
				// pwd   ==> "qwEr1234$"
				// index ==>  012345678
				for(int i=0; i<pwd_length; i++) { // 입력받은 글자의 길이만큼 검사를 해야 한다.
					char ch = pwd.charAt(i);
					
					if( Character.isUpperCase(ch) ) { // 대문자이라면
						upperFlag = true;
					}
					else if( Character.isLowerCase(ch) ) {  // 소문자이라면
						lowerFlag = true;
					}
					else if( Character.isDigit(ch) ) { // 숫자라면
						digitFlag = true;
					}
					else { // 특수문자라면
						specialFlag = true;
					}
				} // end of for
				
				if( upperFlag && lowerFlag && digitFlag && specialFlag ) {
					return true;
				}
				else {
					return false;
				}
				
				
			}
			
			
		} // end of boolean checkPwd(String pwd)
		
}