본문 바로가기
혼자서 개발새발

JAVA) 간단한 회원가입 페이지를 만들어보자!

by 휴일이 2022. 10. 4.

배운 ArrayList를 토대로

회원가입 페이지를 만들었다ㅠㅠ

 

객체타입을 list에 넣는 것이 좀 어려웠는데

그래도 해냈습니다!!

 

 

 

회원 정보 클래스

package studentArray;

public class Member {
	//private이라 바로 접근이 안 되어, 입력 출력 해주는 메소드 따로 작성
		private String name;
		private String pw;
		private String tel;
		private String addr;
		
		Member() {}
		
		Member(String name, String pw, String tel, String addr) {
			//<생성자>회원가입이 완료 될 때 사용
			this.name = name;
			this.pw = pw;
			this.tel = tel;
			this.addr = addr;
			
		}
		
		
		public String getName() { //출력메소드
			return name;
		}
		
		public String getTel() {
			return tel;
		}
		
		public String getAddr() {
			return addr;
		}
		
		public String getPw() {
			return pw;
		}
		
		public void setName(String name) { //입력 메소드
			this.name = name; //Member메소드의 name에 매개변수 name 값을 집어넣는다
		}
		
		public void setPw(String pw) {
			this.pw = pw;
		}
		
		public void setTel(String tel) {
			this.tel = tel;
		}
		
		public void setAddr(String addr) {
			this.addr = addr;
		}
		
		@Override
		public String toString() {
			//객체를 꺼내올 때 주소값이 아니라 밑에 값으로 반환 될 수 있게 설정
			return "이름 :"+name+" 전화번호 :"+tel+" 주소 :"+addr;
		}
	

}

 

@override 사용이 제일 난해했는데

객체를 출력하게 되면 객체 주소가 뜨는데

toString() 메소드로 문자열로 변환해서 보여주는 모양이다

그래서 내가 toString()을 override해서 써버리면

java에서 정한 toString이 아니라 내가 지정한 toString 으로 출력된다ㅋㅋ개꿀띵

 

 

 

실행할 메소드가 모여있는 클래스

package studentArray;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentTest {


	private String name;
	private String tel;
	private String addr;
	private String pw;
	int a;
	Scanner sc;

	Member mem;

	ArrayList<Member> mList = new ArrayList<>(); //객체 Member담을 list 생성


	StudentTest() { //미리 회원 설정
		mList.add(new Member("고양이", "1234", "010", "부천"));
		mList.add(new Member("강아지", "1111", "011", "경기"));

	}


	public void run(Scanner sc) {
		boolean flag = true;

		while(flag) {
			System.out.println("1.로그인 2.회원가입 3.정보수정"); //기본 반복문
			System.out.println("4.회원보기 5.탈퇴 6.종료");
			a=sc.nextInt();
			
			switch(a) {
			case 1: //로그인
				login(sc);
				break;
			case 2: //회원가입
				signUp(sc);
				break;
			case 3: //정보수정
				setInfo(sc);
				break;
			case 4: //회원보기
				output();
				break;
			case 5: //탈퇴
				sec(sc);
				break;
			case 6: //종료
				flag=false;
				break;
			}
		}
	}

	public void login(Scanner sc) { //로그인
		System.out.println("이름 입력");
		name=sc.next();
		System.out.println("비밀번호 입력");
		pw=sc.next();

		if(!nameCheck(name)) { //입력한 이름을 가지고 namecheck 메소드로 감(반환값은 boolean)
			System.out.println("아이디가 틀립니다");
		} else if(!pwCheck(pw)) { //입력한 pw를 가지고 pw체크 메소드로 감
			System.out.println("비밀번호가 틀립니다");
		} else { //name이 객체에 저장되어있고 그 객체의 pw와 같다면
			System.out.println(name+"님 로그인을 축하합니다!");
		}
	}

	public boolean pwCheck(String pw) { //name과 pw값을 비교하는 메소드
		boolean check = true;
		for (Member m : mList) {
			if(m.getName().equals(name)) { //객체의 name과 name값이 같을 때
				if(m.getPw().equals(pw)) { //객체에 저장된 pw값과 입력값pw가 같은지 확인 
				}
			} else {
				check=false; //같지 않다면 false 반환
			}
		}
		return check;
	}

	public void setInfo(Scanner sc) { //정보 수정

		System.out.println("이름을 입력하세요");
		name = sc.next();
		boolean a = true;
		for(Member m : mList) {
			if(m.getName().equals(name)) { //객체에 있는 name과 입력한 name이 같은지 확인
				System.out.println("수정할 password를 입력하세요");
				pw = sc.next();
				m.setPw(pw);
				System.out.println("수정할 전화번호를 입력하세요");
				tel = sc.next();
				m.setTel(tel);
				System.out.println("수정할 주소를 입력하세요");
				addr = sc.next();
				m.setAddr(addr);
				System.out.println("정보가 수정되었습니다");
				a = false; //false로 바꿔야지 아래 이름 없음이 실행 안 됨
			}
		}
		if(a) {
			System.out.println("해당하는 이름이 없습니다");
		}

	}



	public void signUp(Scanner sc) {
		String pw;
		String pw2;


		System.out.print("이름 입력");
		name=sc.next();
		System.out.print("비밀번호 입력");
		pw=sc.next();
		System.out.print("비밀번호 확인");
		pw2=sc.next();
		System.out.print("주소 입력");
		addr=sc.next();
		System.out.print("전화번호 입력");
		tel=sc.next();


		if(nameCheck(name)) { //입력된 이름을 가지고 namecheck->값이 같다면 true로 반환
			System.out.println("이름이 중복됩니다");
		} else if(!pw.equals(pw2)) { //위 값이 fasle(아이디는 다른데 pw와 pw2가 다르다면(비밀번호 중복확인)
			System.out.println("비밀번호가 틀립니다");
		} else {
			Member mem =new Member(name,pw,tel,addr); //입력된 정보를 토대로 객체에 입력해줌
			mList.add(mem); //그 객체를 list에 추가
			System.out.println(name+"님 가입을 환영합니다");
		}

	}

	public boolean nameCheck(String name) { //name 중복확인
		boolean check = true; //return값 boolean 설정
		for (Member m : mList) { //mList의 인스턴스들을 반복문으로 하나하나 m에 대입
			if(m.getName().equals(name)) { //객체의 이름과 입력받은 이름이 같다면
				return check; //true값 반환
			} else {
				check=false; //이름이 다르면 false
			}
		}
		return check;
	}

	public void output() { //회원 전체 출력

		for(Member m : mList) {
			System.out.println(m.toString()); //list에 있는 객체 하나씩 출력
		}
	}

	public void sec(Scanner sc) { //회원 탈퇴

		System.out.println("탈퇴할 아이디를 입력하세요");
		name = sc.next();
		boolean a = true;
		
		
		try { 
			for(Member m : mList) {
				if(m.getName().equals(name)) { //입력한 이름의 객체가 있을 경우
					mList.remove(m); //객체를 리스트에서 지운다
					System.out.println("탈퇴가 완료되었습니다");
					a = false; //해당하는 id가 없음을 출력하지 않기 위해 false값으로 바꿈
				}

			}
		} catch(Exception e) {
			//객체를 삭제할 경우 오류가 뜸, 그걸 막기 위해 예외처리
		}
		if(a) {
			System.out.println("해당하는 아이디가 없습니다");
		}
	}



}

 

 

실행 메인 클래스

package studentArray;

import java.util.Scanner;

public class StudentService {

	public static void main(String[] args) {
		
		StudentTest t = new StudentTest();
		Scanner sc = new Scanner(System.in);
		
		t.run(sc); //실행
		
		
		
		






	}

}

 

 

로그인,회원가입,수정

 

회원보기, 탈퇴, 종료

 

 

탈퇴를 할 때 예외를 안 써주면

객체가 삭제되는 동시에 오류가 떠서

예외를 써주었다 ㅎㅎ

 

 

이것저것 공부하면서 만들었는데

매우 뿌듯 :)

728x90