상속과 오버라이딩을 사용하여 간단한 로그인 프로그램을 만들어보자
클래스 이름들을 정의하면
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
반응형
'Java > 본격 Java 상속' 카테고리의 다른 글
[Java] 실습 - 구글 출제문제 풀어보기(1~1000사이의 정수 중 8의 총 개수) (0) | 2020.07.01 |
---|---|
[Java] String toString() (0) | 2020.07.01 |
[Java] 실습 - 전화번호부 만들기 - 2 (0) | 2020.06.30 |
[Java] 실습 - 전화번호부 만들기 - 1 (0) | 2020.06.30 |
[Java] InstanceOf 하위클래스 형변환 (0) | 2020.06.30 |