자바 14일차

선장원·2021년 10월 21일

자바

목록 보기
16/24

14일차 (10/21)

오늘은 진도를 많이 나간 느낌이지만 쓸거는 없다?

DTO

Service

메인클래스

TraineeService에서 보내고 Main클래스에서 받아서 관리를 한다
훈련생을 추가하는 메서드
리스트에 훈련생을 추가하는 기능을 수행함
main으로부터 리스트를 넘겨받아 훈련생을 추가하고
다시 main으로 넘겨주는 코드가 작성 되어야함


메인클래스에서 리스트를 관리하기 위해


내가 만든 코드

Member

전체 3개의 클래스로 구성된다.
1. MemberMain Class
2. MemberDTO Class
3. MemberService Class
- 회원가입 회원조회 로그인 회원정보변경을 위한 메서드 있음.

회원정보
1. 회원번호, 아이디, 비밀번호, 이름, 이메일주소

주요기능
1. while문을 이용하여 각 기능을 선택하도록 한다.

  1. 회원가입 (memberJoin)
    a. 회원가입시 아이디, 비밀번호, 이름, 이메일주소를 입력받는다.
    b. 회원번호는 자동으로 부여된다.
    - 예를들어 현재 회원이 3명이라면 신규회원의 회원번호는 4가 되어야 함.
    - 회원이 아무도 없을 때는 1번이 되어야 함.
  2. 전체 회원조회 (memberListView)
    • 등록된 전체 회원 목록을 출력함.
  3. 로그인 (memberLogin)
    • 아이디와 비밀번호를 스캐너를 이용하여 입력받고 아이디, 비밀번호 모두 일치하면 'oo님 환영합니다.' 출력. 일치하지 않으면 '아이디 또는 비밀번호가 틀립니다.' 출력
  4. 회원정보 변경 (memberUpdate)
    a. 이메일주소만 변경가능
    b. 아이디와 비밀번호를 다시 확인하고 일치하면 변경할 이메일주소를 입력받고 변경을 진행함.
    c. 아이디와 비밀번호가 틀리면 '아이디 또는 비밀번호가 틀립니다.' 출력
  5. 참고
    • memberList 객체는 MemberMain클래스에서 만든 뒤 관리함.

Main

		Scanner sc = new Scanner(System.in);

		// main 클래스 리스트 관리
		List<MemberDTO> mList = new ArrayList<>();

		MemberService ms = new MemberService();

		int choice = 0;// 선택
		boolean run = true;
		int memberNumber = 1;

		while (run) {
			System.out.println("--------------------------------------------------");
			System.out.println("1.회원가입 | 2.회원조회 | 3.로그인 | 4.이메일변경 | 5.종료");
			System.out.println("--------------------------------------------------");
			System.out.print("번호 > ");
			choice = sc.nextInt();

			switch (choice) {

			case 1: {// 회원가입
				mList = ms.memberJoin(mList, memberNumber);
				memberNumber++;
				break;
			}

			case 2: {// 전체 회원조회
				mList = ms.listView(mList);
				break;

			}

			case 3: {// 로그인
				mList = ms.memberLogin(mList);
				break;
			}
			
			case 4: {//이메일 변경
				mList = ms.memberUpdate(mList);
				break;
			}
			
			case 5: {// 종료
				run=false;
				
			}
			
			default:
				System.out.println("다시입력하세요");
			}

		}

Service

	// 회원가입 회원조회 로그인 회원정보변경
	Scanner sc = new Scanner(System.in);

	List<MemberDTO> memberJoin(List<MemberDTO> mList, int memberNumber) {

		System.out.print("아이디 : ");
		String id = sc.nextLine();
		System.out.print("비밀번호 : ");
		String pw = sc.nextLine();
		System.out.print("이름 : ");
		String name = sc.nextLine();
		System.out.print("이메일 : ");
		String email = sc.nextLine();
		MemberDTO m = new MemberDTO(id, pw, name, email);
		m.setMemberNumber(memberNumber);

		mList.add(m);

		return mList;
	}

	List<MemberDTO> listView(List<MemberDTO> mList) {
		for (MemberDTO m : mList) {
			System.out.println(m);
		}
		return mList;
	}

	List<MemberDTO> memberLogin(List<MemberDTO> mList) {
		System.out.print("아이디 : ");
		String id = sc.nextLine();
		System.out.print("비밀번호 : ");
		String pw = sc.nextLine();
		boolean login = false;
		String loginName = "";
		for (int i = 0; i < mList.size(); i++) {
			if (mList.get(i).getId().equals(id) && mList.get(i).getPw().equals(pw)) {

				login = true;
				loginName = mList.get(i).getName();
			}

		}
		if (login) {
			System.out.println(loginName + "님 환영합니다");

		} else {
			System.out.println("아이디와 비밀번호가 틀렸습니다.");
		}

		return mList;
	}

	List<MemberDTO> memberUpdate(List<MemberDTO> mList) {
		System.out.print("아이디 : ");
		String id = sc.nextLine();
		System.out.print("비밀번호 : ");
		String pw = sc.nextLine();
		MemberDTO m = new MemberDTO();
		boolean login = false;
		String loginName = "";
		int emailnum = 0;
		for (int i = 0; i < mList.size(); i++) {
			if (mList.get(i).getId().equals(id) && mList.get(i).getPw().equals(pw)) {

				login = true;
				emailnum = i;
			}

		}
		if (login) {
			System.out.print("변경 이메일 : ");
			String email = sc.nextLine();
			mList.get(emailnum).setEmail(email);

		} else {
			System.out.println("아이디와 비밀번호가 틀렸습니다.");
		}

		return mList;
	}

DTO

	// 회원 번호 아이디 비밀번호 이메일주소
	private int memberNumber = 0;
	private String id = "";
	private String pw = "";
	private String name = "";
	private String email = "";

	MemberDTO() {// 기본생성

	}

	public MemberDTO(int memberNumber) {
		super();
		this.memberNumber = memberNumber;
	}

	public MemberDTO(String id, String pw, String name, String email) {
		super();
		this.id = id;
		this.pw = pw;
		this.name = name;
		this.email = email;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getMemberNumber() {
		return memberNumber;
	}

	public void setMemberNumber(int memberNumber) {
		this.memberNumber = memberNumber;
	}

	public String getId() {
		return id;
	}

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

	public String getPw() {
		return pw;
	}

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

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	boolean memberLogin(String loginId, String loginPw) {
		if (this.id.equals(loginId) && this.pw.equals(loginPw)) {
			return true;
		} else {
			return false;
		}
	}

	void memberUpdate(String newemail) {
		email = newemail;
	}

	@Override
	public String toString() {
		return "MemberDTO [memberNumber=" + memberNumber + ", id=" + id + ", pw=" + pw + ", email=" + email + "]";
	}

이정도면 하루에 한 두번 하면 끝나겠네

로그인 기능 만들기 힘들었다
리스트를 가져와서 쭉 비교하고 비교를 하는데 다른값은 나오면 안되고
그래서 for문 안에 if문을 넣어서 비교를 하고 맞으면 true 틀리면 false로 하고
그 값을 가져와서 for문 밖에서 if문으로 로그인을 결정했다
DTO에 만드는것이 아니라 Service에서 만드는 것이 였어

순서
DTO만들고
Main구조 만들고
Service에서 메서드만들고

로그인 기능만 아니면 그럭저럭 할만 한 것 같다.

profile
코딩도전기

0개의 댓글