JAVA

▶︎회원가입◀︎

chojdsj 2023. 5. 2. 23:27
728x90
회원가입 기능 코드 작성

 

 

 

- 첫번째로 Member 라는 클래스를 만들어 주고 Member 클래스에 필드를 선언해준다. 이때 필드들은 캡슐화의 원칙에 의해서 접근제한자를 private 으로 선언해준다. 

 

- 기본 생성자를 하나 생성해주고 그 다음 매개변수 생성자를 이용해서 ( ) 안에 로그인에 사용할 매개변수들을 넣어준다.

     또한 this 를 이용해서 private 으로 선언된 필드들에 값을 대입해 줄것이다. 

 

 

 

 

 

- getter/setter 메소드를 이용해서 private으로 선언된 필드들에 외부에서 접근할것이다. 

 

 

- MemberService 클래스를 생성하고 여기에 회원가입 하는 기능들을 작성할 클래스로 사용할 것이다.

 

- 먼저 회원가입을 하기위해서는 입력받아야 하기 때문에 Scanner를 선언해줬고, Member 클래스를 참조하는 memberArr 객체배열을 선언해줬다. 그리고 나중에 로그인한 회원의 정보를 저장할 loginMember 변수를 선언한다. 

 

(기본 생성자를 만든 이유는 회원 찾기 기능에서 보다 수월하게 찾게 하기위해 미리 회원들을 생성해줬다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 이제 메뉴화면 출력 기능을 수행할 displayMenu 메소드를 작성한다. 메뉴선택용 변수 menuNum 을 선언 및 초기화 해주고, 무조건 한번은 반복해야하는  do/while 문을 사용해서 do{ } 안에 switch문을 이용하여 몇번 메뉴 선택시 어떤 화면을 출력할것인지 어떤 기능을 수행할것인지 각 번호들마다 메소드를 넣어준다. 

 

 

 

- 1번을 선택하면 수행될 signUp 회원가입 메소드를 작성한다. 일단 index 변수에 memberArr 배열에 비어있는 인덱스의 값(emptyIndex메소드를 통해 값을 반환받을것이다 )을 대입해주고 index를 통해서 현재 회원수를 출력할것이다.

 

- 만약 memberArr[3] 인덱스가 비어있다면 memberArr[0,1,2] 인덱스는 값이 들어가있는것이고 이것은 배열 인덱스안에 회원들의 값이 들어있다는 뜻이므로 현재 회원수가 몇명이 있는지 index 값을 통해서 알수있다. 

 

- 그리고 회원가입에 필요한 입력값을 받고 if문을 이용해서 비밀번호와 비밀번호 확인 값이 일치하면 비어있는 member[index] 인덱스에 Member 객체를 이용해서 입력받은 값들을 배열 인덱스에 대입시켜준다. 그러고나서 회원가입 성공이라는 값을 반환한다. 

 

 

 - 위에서 말한 memberArr[ ] 배열 안에 비어있는 인덱스 번호를 찾기위해 for문을 사용해서 배열의 인덱스를 반복해주고 참조하는 값이 null일 경우, 즉 아무것도 참조하지 않는 경우 메소드를 종료하고

 

- 1번 signUp 메소드에서 선언한 index 변수에 null값에 해당하는 배열 인덱스 값( i ) 을 가지고 돌아가서 대입시켜준다.

 

- 만약 for문에서 i 값이 리턴되지 않았다 == 배열에 빈칸이 없다, 즉 회원들로 꽉 차있는 경우는 -1을 반환한다. -1 값을 이용해서 signUp 메소드에서 "회원가입이 불가합니다" 라는 문구를 출력한다. 

 

 

 

 

- 2번을 선택하면 실행되는 login 메소드를 작성한다. 아이디와 비밀번호를 먼저 입력받는다. 

 

- 그리고 for문을 이용해서 memberArr[ i ] 의 모든값에 순서대로 접근하고, null 이 아니라면 == 회원이 정보가 담겨져있다면 다시한번 if문을 이용해서 입력받은값인 아이디와 비밀번호가 배열요소 안에 있는 아이디와 비밀번호값과 일치한지 확인한다.

 

- 이 때 아까 Member 클래스에서 필드들은 private으로 선언해서 외부에서 접근하기 위해 getter/setter 메소드를 사용했다. 지금 로그인에 필요한 아이디와 비밀번호 값이 일치한지 확인하기 위해 get메소드로 아이디와 비밀번호값에 접근하고 입력받은값과 일치하는지 확인할수 있다.

 

- 만약 일치한다면 위에서 선언해둔 loginMember 변수안에 일치하는 값인 member[ i ] 값의 주소를 얕은 복사를 이용해서 대입시킨다. 그리고 더이상 같은 아이디와 비밀번호는 없기때문에 break를 사용해서 for문을 종료시킨다.

 

- loginMember 안에 값이 담겨져 있다면 if문을 사용해서 그에 맞는 값을 반환한다.

 

 

- 3번 회원정보 조회 메소드 selectMember 메소드를 작성한다. 로그인 여부를 확인하기 위해서 loginMember 변수에 담아둔 값이 있는지 없는지 null을 사용해서 확인한다.

 

- null 이 아니라 있다면 String str 변수에 로그인한 회원의 이름, 아이디, 나이, 지역 등을 get메소드를 이용해 가져와서 str 변수에 대입시키고 누적시켜서 마지막에 str 값을 반환한다.

 

 

- 회원 정보 수정 메소드인 updateMember 메소드를 작성한다. 먼저 로그인 여부를 판별하고 로그인하지 않았다면 위에 switch문 안에 case4번에서 선언해둔 result 변수에 -1을 반환한다. 

 

- if 문이 실행되지 않으면 (로그인 되어있다면) 수정할 이름, 나이, 지역을 입력받고 비밀번호를 입력받아서 로그인한 회원의 비밀번호와 일치한지 확인을 받는다. 

 

- 비밀번호가 같을경우 이번에는 set메소드를 이용해서 수정한 입력받은값들을 넣어준다. 그리고 1을 반환하고 비밀번호가 다를경우 0을 반환한다. 

 

 

- 마지막 회원 검색(지역) 메소드 serchRegion 메소드를 작성한다. 먼저 검색할 지역을 입력받고 for문을 사용해서 memberArr[ i ] 값에 순차적으로 접근한다. 

 

- 배열 요소값이 null 이라면 바로 break문을 사용해서 반복을 종료시키고 그게 아니라면 빠져나와서 if문을 이용해서 검색한 지역과 배열 요소에 저장된 지역이 같은지 확인하고 같다면 회원의 아이디와 이름을 get메소드로 가져와서 출력한다. 

 

- 그리고 그렇지 않다면 밖으로 빠져나와서 "일치하는 검색 결과가 없습니다" 문구를 출력하는데 여기서 flag 를 쓰는 이유는

이 문구를 for문 안에서 쓰면 반복되서 출력되어지고 밖에서 쓰면 지역이 같아도 마지막에 문구가 출력되기 때문에 

 

- boolean 의 논리값인 true, false 값을 이용해서 flag 변수에 for문 전에 선언 및 true 값으로 초기화를 시켜주고 for문 안에서는 false 값을 대입시켜준다. 그리고 for문이 끝나고 나와서 flag가 true일 경우에만 "일치하는 검색 결과가 없습니다" 라는 문구를 출력시키게 만들었다. 

 

 

---------------- 회원가입 실행 ----------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'JAVA' 카테고리의 다른 글

▶︎상속◀︎  (0) 2023.05.03
▶︎객체 배열◀︎  (0) 2023.05.03
▶︎클래스◀︎  (0) 2023.04.30
▶︎객체(OOP)◀︎  (0) 2023.04.30
▶︎2차원 배열◀︎  (0) 2023.04.27