=============== 아직 정리중..
class Member
package com.kh.hw.member.model.vo;
public class Member {
private String id;
private String name;
private String password;
private String email;
private char gender;
private int age;
public Member() {
}
public Member(String id, String name, String password, String email, char gender, int age) {
this.id = id;
this.name = name;
this.password = password;
this.email = email;
this.gender = gender;
this.age = age;
}
public String inform() {
return String.format("# %s | %s | %s | %s | %c | %d "
, id, name, password, email, gender, age);
}
public String getId() {
return id;
}
public boolean setId(String id) {
if (id.length() < 7 && id.length() > 2) {
return true;
} else {
return false;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class MemberController
package com.kh.hw.member.controller;
import com.kh.hw.member.model.vo.Member;
public class MemberController {
private Member[] m = new Member[SIZE];
public static final int SIZE = 10;
public MemberController() {
m[0] = new Member("a", "김철수", "1234", "abc@naver.com", 'M', 24);
m[1] = new Member("b", "김철수", "1234", "abc@naver.com", 'M', 24);
m[2] = new Member("c", "김철수", "1234", "abc@naver.com", 'M', 24);
m[3] = new Member("d", "박영희", "4321", "def@naver.com", 'F', 32);
m[4] = new Member("e", "김철수", "6544", "ghi@naver.com", 'M', 44);
}
/**
* 실제로 배열에 저장되어 있는 회원객체의 숫자를 세는 메서드
*
* @return count - 실제 저장된 회원의 수
*/
public int existMemberNum() {
int mcount = 0; // 실제 저장된 회원의 수
for (Member member : m) {
if (member == null) {
break;
}
mcount++;
}
return mcount;
}
/**
* 아이디 중복을 체크하는 메서드
*
* @param inputId - 중복을 확인할 사용자의 입력 아이디
* @return 중복되었으면 true, 아니면 false
*/
public boolean checkId(String inputId) {
return findIndexById(inputId) != -1;
}
//멤버 배열 리턴
public Member[] printAll() {
return m;
}
//회원정보를 배열 m에 저장하는 메서드
public void insertMember(String id, String name, String password
, String email, char gender, int age) {
int count = existMemberNum();
m[count] = new Member(id, name, password, email, gender, age);
}
/**
* 아이디를 입력하면 해당 회원 객체를 리턴
*
* @param inputId - 검색할 회원의 아이디
* @return Member - 찾은 경우 해당 아이디를 가진 회원의 전체정보를 가진 객체
* - 못 찾은 경우 null 리턴
*/
public Member searchId(String inputId) {
int index = findIndexById(inputId);
return (index != -1) ? m[index] : null;
}
/* public Member searchId(String inputId) {
if (findIndexById(inputId) != -1)
return m[findIndexById(inputId)];
return null;
}*/
/**
* @param name - 검색할 회원의 이름
* @return 동명이인 포함 해당 이름과 일치하는 모든 회원정보 배열
*/
public Member[] searchName(String name) {
Member[] nameArr = new Member[existMemberNum()];
int count = 0;
for (int i = 0; i < existMemberNum(); i++) {
if (name.equals(m[i].getName())) {
nameArr[count] = m[i];
count++;
}
}
Member[] temp = new Member[count];
for (int j = 0; j < count; j++) {
temp[j] = nameArr[j];
}
nameArr = temp;
return nameArr;
}
/**
* 회원의 비밀번호를 변경하는 메소드
*
* @param id - 변경을 요청한 회원의 아이디
* @param newPassword - 새로운 비밀번호
* @return - 변경 성공 여부
*/
public boolean updatePassword(String id, String newPassword) {
if (checkId(id)) {
m[findIndexById(id)].setPassword(newPassword);
return true;
}
return false;
}
/**
* @param id - 수정할 회원의 아이디
* @param newName - 새롭게 수정될 새로운 이름
* @return 수정 성공시 true
*/
public boolean updateName(String id, String newName) {
if (checkId(id)) {
m[findIndexById(id)].setName(newName);
return true;
}
return false;
}
/**
* @param id - 수정할 회원의 아이디
* @param newEmail - 새롭게 수정될 새로운 이메일
* @return 수정 성공시 true
*/
public boolean updateEmail(String id, String newEmail) {
if (checkId(id)) {
m[findIndexById(id)].setEmail(newEmail);
return true;
}
return false;
}
/**
* 아이디를 통해 회원배열에서 특정 회원이 저장된 인덱스를 알려주는 기능
*
* @param id - 찾을 회원의 아이디값
* @return 찾은 회원의 인덱스값, 못찾을 시 -1 리턴
*/
private int findIndexById(String id) {
int index = -1;
for (int i = 0; i < existMemberNum(); i++) {
if (id.equals(m[i].getId())) {
index = i;
break;
}
}
return index;
}
//회원정보 하나를 삭제하는 메서드
/**
* @param id - 삭제를 원하는 회원의 아이디정보
* @return 삭제성공시 true, 회원이 존재하지 않아 실패시 false
*/
public boolean delete(String id) {
int delIdx = findIndexById(id); // 삭제할 인덱스
if(delIdx != -1) {
for (int i = delIdx; i < existMemberNum()-1 ; i++) {
m[i] = m[i + 1];
}
m[existMemberNum()-1] = null;
return true;
}
return false;
}
//회원정보 전체 삭제
public void delete() {
int count = existMemberNum();
for (int i = 0; i < count; i++) {
m[i] = null;
}
}
/*public int existMemberNum() {
int mcount = 0; // 실제 저장된 회원의 수
for (Member member : m) {
if (member == null) {
break;
}
mcount++;
}
return mcount;
}*/
}
class MemberMenu
package com.kh.hw.member.view;
import com.kh.hw.member.controller.MemberController;
import com.kh.hw.member.model.vo.Member;
import day09.objarr.Account;
import day09.objarr.Person;
import java.util.Scanner;
public class MemberMenu {
private Scanner sc = new Scanner(System.in);
private MemberController mc = new MemberController();
// 메인 메뉴 출력 메서드
public void mainMenu() {
while (true) {
System.out.printf("\n# 최대 등록 가능한 회원수는 %d명입니다.\n", mc.SIZE);
int count = mc.existMemberNum();
System.out.printf("# 현재 등록된 회원 수는 %d명입니다.\n", count);
System.out.println("======================================");
System.out.println("# 1. 새 회원 등록");
System.out.println("# 2. 회원 검색");
System.out.println("# 3. 회원 정보 수정");
System.out.println("# 4. 회원 삭제");
System.out.println("# 5. 모두 출력");
System.out.println("# 9. 끝내기");
System.out.print("\n# 메뉴 번호: ");
int menu = sc.nextInt();
switch (menu) {
case 1:
// 회원가입 진행
insertMember();
break;
case 2:
// 회원 검색
searchMember();
break;
case 3:
// 정보 수정
updateMember();
break;
case 4:
// 회원 탈퇴
deleteMember();
break;
case 5:
// 전체 조회 출력
printAll();
break;
case 9:
// 프로그램 종료
System.out.println("프로그램을 종료합니다.");
System.exit(0); // 프로세스 종료
break;
default:
System.out.println("잘못 입력했습니다. 다시 입력하세요!");
}
}
}
// 4번 메뉴 처리 메서드
private void deleteMember() {
System.out.println("\n======= 회원 정보 삭제 =======");
System.out.println("# 1. 특정 회원 삭제하기");
System.out.println("# 2. 모든 회원 삭제하기");
System.out.println("# 9. 메인으로 돌아가기");
int menu = inputNumber("- 메뉴 입력: ");
switch (menu) {
case 1:
delete();
break;
case 2:
deleteAll();
break;
case 9:
return;
default:
System.out.println("메뉴를 잘못 입력했습니다.");
}
}
private void delete() {
String targetId = inputStr("\n# 삭제 대상 아이디:");
if (mc.checkId(targetId)) {
System.out.println("\n# 회원 정보가 삭제됩니다. [Y/N]");
String answer = inputStr(">> ");
switch (answer.toUpperCase().charAt(0)) {
case 'Y': case 'ㅛ':
mc.delete(targetId);
System.out.printf("\n- [%s]회원님의 데이터가 삭제되었습니다.\n", targetId);
break;
case 'N': case 'ㅜ':
System.out.println("\n- 삭제를 취소합니다.");
break;
}
}
}
private void deleteAll() {
System.out.println("\n# 모든 정보가 삭제됩니다. [Y/N]");
String answer = inputStr(">> ");
switch (answer.toUpperCase().charAt(0)) {
case 'Y': case 'ㅛ':
mc.delete();
System.out.println("\n- 모든 데이터가 삭제되었습니다.");
break;
case 'N': case 'ㅜ':
System.out.println("\n- 삭제를 취소합니다.");
break;
}
}
// 3번 메뉴 처리 메서드
private void updateMember() {
System.out.println("\n======= 회원 정보 수정 =======");
System.out.println("# 1. 비밀번호 수정하기");
System.out.println("# 2. 이름 수정하기");
System.out.println("# 3. 이메일 수정하기");
System.out.println("# 9. 메인으로 돌아가기");
int menu = inputNumber("- 메뉴 입력: ");
switch (menu) {
case 1:
// 비밀번호 수정
updatePassword();
break;
case 2:
// 이름 수정
updateName();
break;
case 3:
// 이메일 수정
updateEmail();
break;
case 9:
return;
default:
System.out.println("메뉴를 잘못 입력했습니다.");
}
}
private void updatePassword() {
String id = inputStr("- 아이디: ");
// 원래 비밀번호
String oldPw = mc.searchId(id).getPassword();
String newPw = inputStr("- 새로운 비밀번호("+ oldPw +"): ");
if (mc.updatePassword(id, newPw)) {
System.out.println("\n비밀번호 수정 완료!");
} else {
System.out.println("\n수정 실패!");
}
}
private void updateName() {
String id = inputStr("- 아이디: ");
String newName = inputStr("- 새로운 이름: ");
if (mc.updateName(id, newName)) {
System.out.println("\n이름 수정 완료!");
} else {
System.out.println("\n수정 실패!");
}
}
private void updateEmail() {
String id = inputStr("- 아이디: ");
String newEmail = inputStr("- 새로운 이메일: ");
if (mc.updateEmail(id, newEmail)) {
System.out.println("\n이메일 수정 완료!");
} else {
System.out.println("\n수정 실패!");
}
}
// 2번 메뉴 처리 메서드
private void searchMember() {
System.out.println("\n======= 회원 정보 검색 =======");
System.out.println("# 1. 아이디로 검색하기");
System.out.println("# 2. 이름으로 검색하기");
System.out.println("# 9. 메인으로 돌아가기");
int menu = inputNumber("- 메뉴 입력: ");
switch (menu) {
case 1:
// 아이디 검색
searchId();
break;
case 2:
// 이름 검색
searchName();
break;
case 9:
return;
default:
System.out.println("메뉴를 잘못 입력했습니다.");
}
}
// 메뉴 2-1번 처리
private void searchId() {
String targetId = inputStr("- 조회할 아이디: ");
Member member = mc.searchId(targetId);
if (member != null) {
System.out.println("\n=========== 검색된 회원 정보 ============");
System.out.println(member.inform());
} else {
System.out.println("\n- 존재하는 회원이 아닙니다.");
}
}
// 메뉴 2-2번 처리
private void searchName() {
String targetName = inputStr("- 조회할 이름: ");
Member[] members = mc.searchName(targetName);
if (members.length > 0) {
System.out.println("\n=========== 검색된 회원 정보 ============");
for (Member m : members) {
System.out.println(m.inform());
}
} else {
System.out.println("\n- 존재하는 회원이 아닙니다.");
}
}
// 5번 메뉴 처리 메서드
private void printAll() {
Member[] members = mc.printAll();
System.out.println("\n========== 전체 회원 정보 =============");
for (Member m : members) {
if (m == null) break;
System.out.println(m.inform());
}
}
// 1번 메뉴 처리 메서드
private void insertMember() {
System.out.println("\n# 새 회원을 등록합니다.");
String id = null;
while (true) {
id = inputStr("- 아이디: ");
if (!mc.checkId(id)) break;
System.out.println("- 중복된 아이디입니다!");
}
String name = inputStr("- 이름: ");
String password = inputStr("- 비밀번호: ");
String email = inputStr("- 이메일: ");
char gender = inputStr("- 성별(M/F): ").toUpperCase().charAt(0);
int age = inputNumber("- 나이: ");
mc.insertMember(id, name, password, email, gender, age);
System.out.println("\n# 회원가입 성공!");
}
// 입력처리를 간단하게 만드는 메서드
private String inputStr(String msg) {
System.out.printf(msg);
return sc.next();
}
private int inputNumber(String msg) {
System.out.printf(msg);
return sc.nextInt();
}
}
class Run
package com.kh.hw.member.run;
import com.kh.hw.member.view.MemberMenu;
public class Run {
public static void main(String[] args) {
MemberMenu mm = new MemberMenu();
mm.mainMenu();
}
}
'JAVA' 카테고리의 다른 글
java_상속_22.06.08(day12) (0) | 2022.06.08 |
---|---|
java_캡슐화_22.06.08(day12) (0) | 2022.06.08 |
java_객체배열(실습예제/학생들 점수합계,평균)_22.05.31(day10) (0) | 2022.05.31 |
java_객체(getter와setter)_22.05.31(day10) (0) | 2022.05.31 |
java_객체배열_22.05.30(day9) (0) | 2022.05.30 |