[til 010_002] 연습

김동현·2023년 7월 25일
0

til

목록 보기
19/53
package edu.kh.oop.method.model.vo;

public class Member {

// 필드
private String memberId;
private String memberPw;
private String memberName;
private int memberAge;


// 기본 생성자
// 생성자 규칙 : 반환형이 없고, 클래스와 이름이 같아야한다.
public Member() {}

// 매개변수 생성자( 필드 모두 초기화 )
public Member( String memberId, String memberPw, String memberName, int memberAge) {
	// 오버로딩 적용 (매개 변수의 개수가 다름)
	
	// 매개변수로 전달받은 값을 필드로 대입시키기.
	this.memberId = memberId;
	this.memberPw = memberPw;
	this.memberName = memberName;
	this.memberAge = memberAge;
	
}

public String getMemberId() {
	return memberId;
}

public void setMemberId(String memberId) {
	this.memberId = memberId;
}

public String getMemberPw() {
	return memberPw;
}

public void setMemberPw(String memberPw) {
	this.memberPw = memberPw;
}

public String getMemberName() {
	return memberName;
}

public void setMemberName(String memberName) {
	this.memberName = memberName;
}

public int getMemberAge() {
	return memberAge;
}

public void setMemberAge(int memberAge) {
	this.memberAge = memberAge;
}

public String toString() {
	return "아이디 : "+ memberId + "\n이름 : " + memberName + "\n나이 : " + memberAge;
}




}



-----------------------------------------------------------
package edu.kh.oop.method.model.service;

import java.util.Scanner;

import edu.kh.oop.method.model.vo.Member;

public class MemberService {

// 속성(필드)
private Scanner sc = new Scanner(System.in);

private Member memberInfo = null; // 가입한 회원의 정보를 저장할 변수
private Member loginMember = null; // 로그인한 회원의 정보를 저장할 변수
// 기능(생성자, 메서드)



// 메뉴 화면 출력 기능
public void displayMenu() {
	// 반환형
	
	
	int menuNum = 0; // 메뉴 선택용 변수
	// 무조건 한번은 반복
	do {
		System.out.println("========회원 정보 관리 프로그램========");
		System.out.println("1. 회원가입");
		System.out.println("2. 로그인");
		System.out.println("3. 회원 정보 조회");
		System.out.println("4. 회원 정보 수정");
		System.out.println("0. 프로그램 종료");
		
		System.out.print("메뉴 입력 : ");
		menuNum = sc.nextInt();
		sc.nextLine(); // 입력 버퍼에 남은 개행문자 제거용
		
		switch(menuNum) {
		case 1 : System.out.println(signUp()); break;
		case 2 : System.out.println(login()); break;
		case 3 : System.out.println(selectMember()); break;
		case 4 : 
			
			int result = updateMember();
			
			if(result == -1) {
				System.out.println("로그인 후 이용해주세요.");
			} else if(result == 0) {
				System.out.println("회원 정보 수정 실패 (비밀번호 불일치)");
			} else { // result == 1
				System.out.println("회원 정보가 수정되었습니다.");
			} break;
		case 0 : System.out.println("프로그램 종료.."); break;
		default : System.out.println("잘못 입력 하셨습니다.. 다시 입력해주세요");
		}
		
	} while(menuNum != 0); // menuNum 0이면 반복 종료
	
}
	public String signUp() {
		// (반환형)
		// 해당 메소드가 끝나고 호출한 곳으로 돌아갈 때
		// String 자료형 값을 가지고 돌아간다.
		
		
		System.out.println("\n******* 회원 가입 *******");
		
		System.out.print("아이디 : ");
		String memberId = sc.next();
		
		System.out.print("비밀번호 : ");
		String memberPw = sc.next();
		
		System.out.print("비밀번호 확인 : ");
		String memberPw2 = sc.next();
		
		System.out.print("이름 : ");
		String memberName = sc.next();
		
		System.out.print("나이 : ");
		int memberAge = sc.nextInt();			
		
		// 비밀번호, 비밀번호 확인이 일치하면 회원가입
		// 일치하지 않으면 회원가입 실패
		
		if (memberPw.equals(memberPw2)) { // 일치하는 경우
		
			// 입력받은 정보를 이용해서 Member 객체 생성한 후
			memberInfo = new Member(memberId, memberPw, memberName, memberAge);
			// 생성된 객체의 주소를 필드에 있는 memberInfo에 대입
			
			
			return "회원가입 성공!!";
			/* 출력구문 메소드를 호출한 곳에서 한번만 쓰고,
			 * return을 이용해 전달할 값을 작성
			 */
			// return : 현재 메소드를 종료하고 호출한 곳으로 돌아감
			// return 값; : 호출한 곳으로 돌아갈 때 값을 가지고 감.
		} else { // 일치하지 않는 경우
			
			return "회원가입 실패!!(비밀번호 불일치)";
		}
		

	}
	
	
	public String login() {
		
		System.out.println("\n**********로그인**********");
		
		
			
			
			
			// 회원 가입을 했는지 부터 확인
		if (memberInfo == null) {
			// null : 아무것도 참조하고 있지 않음.
			return "회원 가입부터 진행 해주세요.";	 
		}
		
		System.out.print("아이디 입력 : ");
		String memberId = sc.next();
		
		System.out.print("비밀번호 입력 : ");
		String memberPw = sc.next();
		
		// 회원 가입 정보에서
		// 저장된 아이디, 비밀번호가
		// 입력된 아이디, 비밀번호와 같으면 " 로그인 성공 "
		// 아니면 "아이디 또는 비밀번호가 일치하지 않습니다"
		
		if (memberInfo.getMemberId().equals(memberId) && memberInfo.getMemberPw().equals(memberPw)) {
		
			loginMember = memberInfo; // 얕은 복사
			// 회원가입정보를 loginMember에 대입하여
			// 어떤 회원이 로그인 했는지를 구분할 수 있게 함.
			
			
			
			return loginMember.getMemberName() + "님 환영합니다.";
		} else {
			return "아이디 또는 비밀번호가 일치하지 않습니다";
		}
		
	}
	
	// 회원 정보 조회 기능
	public String selectMember() {
		System.out.println("\n***** 회원 정보 조회 *****");
		
		// 1) 로그인 여부 확인
		// 로그인 안했을때 "로그인 후 이용해주세요"
		// 2) 로그인이 되어있는 경우
		// 회원 정보를 출력할 문자열을 만들어서 반환
		// 단, 비밀번호는 제외
		
		if (loginMember==null) {
			// loginMember가 참조하는 개체가 없을 경우
			return "로그인 후 이용해 주세요";
		} else {
			
			String str = "이름 : " + loginMember.getMemberName();
			str += "\n아이디 : " + loginMember.getMemberId();
			str += "\n나이 : " + loginMember.getMemberAge();
			return str;
			// return loginMember.toString();
		}
		
	}
	// 회원 정보 수정 기능
	public int updateMember() {
		System.out.println("\n*****회원정보수정*****");
		// 1) 로그인 여부 판별
		// 로그인이 되어있지 않으면 -1 반환
		if (loginMember == null) {
			return -1;
		}
		// 2) 로그인이 되어있을때
		// 2-1) 수정할 회원 정보 입력 받기 (이름, 나이)
		else {
			System.out.println("수정할 정보를 입력하세요");
			System.out.print("이름 : ");
			String memberName = sc.next();
			System.out.print("나이 : ");
			int memberAge = sc.nextInt();
			
			System.out.print("비밀번호 : ");
			String memberPw = sc.next();
			
			// 2-2) 비밀번호를 입력받아서 로그인한 회원의 비밀번호와 일치하는지 확인
			// -> 비밀번호가 같을 경우 로그인한 회원의 이름, 나이 정보를 입력받은 값으로 변경후
			// 1반환
			if (memberPw.equals(loginMember.getMemberPw())) {
				loginMember.setMemberName(memberName);
				loginMember.setMemberAge(memberAge);
				return 1;
			} else { // 비밀번호가 다를 경우 0 반환
				return 0;
			}
		}
		
	}
		
		
	



}

package edu.kh.oop.method.run;

import edu.kh.oop.method.model.service.MemberService;

public class MemberRun {

public		 static		 void	 main	(String[] args) {
// [접근제한자] [예약어]   [반환형]메서드명		(매개변수)		
	// => 대괄호 안에 있는건 생략 가능
	MemberService service = new MemberService();
	// MemberService의 기본생성자가 작성되어 있지 않지만
	// 컴파일러가 코드를 번역할 때
	// 클래스 내부에 생성자가 하나도 없다면
	// 자동으로 기본 생성자를 추가해주기 때문에
	// 문제없이 사용 가능!!!
	// 만약에 생성자가 하나라도 있으면 자동생성 안해준다!
	
	service.displayMenu(); // 메서드 호출
	

}

}

완성~

0개의 댓글

관련 채용 정보