본문 바로가기

Java/본격 Java 상속

[Java] 간단한 로그인 프로그램 만들어보기

상속과 오버라이딩을 사용하여 간단한 로그인 프로그램을 만들어보자

클래스 이름들을 정의하면

 

MemberInfo : 한 명의 회원정보를 저장하기 위한 클래스이다. 기본정보로는 아이디(uid), 비밀번호(pwd), 이름(name)을 저장하고 get, set을 이용하여 각각의 변수들을 저장하거나 가져다 쓸 수 있다.

 

MemberHandler : 로그인과 회원가입을 할 수 있게 메소드들을 저장한다.

 

로그인 부분에서 MemberLogin과 MemberLoginEx 두 가지를 만들어 봤습니다.

import java.util.*;

/*
1. 회원가입
2. 로그인
*/

class MemberInfo // 한 명의 회원정보를 저정하기 위한 클래스
{
	private String uid, pwd, name;
	public MemberInfo(String uid, String pwd, String name){
		this.uid = uid;
		this.pwd = pwd;
		this.name = name;
	}
	public String getUid(){ return uid; }
	public String getPwd(){ return pwd; }
	public void setPwd(String pwd){ this.pwd = pwd; }
	public String getName(){ return name; }
	public void setName(String name){ this.name = name; }
}

class MemberHandler
{
	private MemberInfo[] members;
	private int idx;

	public MemberHandler(int num){
		members = new MemberInfo[num];
		idx = 0;
	}

	public void memberInsert(){ //회원가입용 메소드
		String uid, pwd, name;
		Scanner sc = new Scanner(System.in);
		System.out.print("아이디 : "); uid = sc.nextLine();
		if (!isUniqueID(uid)) // 아이디가 중복되었으면
		{
			System.out.println("이미 사용중인 아이디 입니다. \n");
			return;
		}
		System.out.print("암 호 : "); pwd = sc.nextLine();
		System.out.print("이 름 : "); name = sc.nextLine();

		members[idx] = new MemberInfo(uid, pwd, name);
		idx++;
		System.out.println("가입 완료!! \n");
	}

	private boolean isUniqueID(String uid){ // 아이디의 중복 여부를 리턴
		if (idx == 0) return true;

		for (int i = 0 ; i < idx ; i ++)
		{
			if (members[i].getUid().equals(uid))
			{
				return false;
			}
		}
		return true;
	}

	public void memberLoginEx(){ // 회원로그인용 메소드
		Scanner sc = new Scanner(System.in);
		System.out.print("아이디 : "); String uid = sc.nextLine();
		System.out.print("패스워드 : "); String pwd = sc.nextLine();

		for (int i = 0 ; i < idx ; i++)
		{
			if (members[i].getUid().equals(uid) && members[i].getPwd().equals(pwd))
			{
				System.out.println("환영합니다.");
				System.out.println("로그인에 성공하였습니다. \n");
				return;
			}else if (!members[i].getUid().equals(uid))
			{
				System.out.println("존재하지 않는 아이디입니다. \n");
				return;
			}
			else if (members[i].getUid().equals(uid) && !members[i].getPwd().equals(pwd))
			{
				System.out.println("암호가 잘못되었습니다. \n");
				return;
			}
		}
		// System.out.println("아이디와 비밀번호를 확인해주세요.");

		/*
		로그인 성공시 : "로그인 되었습니다." 메세지 출력
		로그인 실패시 : "존재하지 않는 아이디 입니다." or "암호가 잘못되었습니다." 중 하나를 출력
		*/
	}

	public void memberLogin(){
		Scanner sc = new Scanner(System.in);
		System.out.print("아이디 : "); String uid = sc.nextLine();
		System.out.print("패스워드 : "); String pwd = sc.nextLine();
		String msg = "존재하지 않는 아이디 입니다.";

		for (int i = 0 ; i < idx ; i++ )
		{
			if (members[i].getUid().equals(uid))
			{// members배열에 입력한 아이디가 있으면
				if (members[i].getPwd().equals(pwd))
				{
					msg = "로그인 되었습니다.";
				} else{
					msg = "암호가 잘못되었습니다.";
				}
			}
		}
		System.out.println(msg);
	}
}

class MemberManage
{
	public static void main(String[] args) 
	{
		MemberHandler handler = new MemberHandler(100);

		while (true)
		{
			System.out.println("------- 메뉴 선택 -------");
			System.out.println("1. 회원가입");
			System.out.println("2. 로 그 인");
			System.out.println("9. 프로그램 종료");

			Scanner sc = new Scanner(System.in);
			int choice = sc.nextInt();

			switch (choice)
			{
			case 1:
				handler.memberInsert(); break;
			case 2:
				handler.memberLogin(); break;
			case 9:
				System.out.println("프로그램 종료");
				return;
			}

		}
	}
}
728x90
반응형