1. 해시맵을 이용한 풀이
import java.util.HashMap;
import java.util.Scanner;
public class management {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int menu,member,size,number=1,memberNumber=0,delete=0;
String memberId,memberName,memberRegion;
HashMap<Integer, String> id = new HashMap<Integer, String>();
HashMap<Integer, String> name = new HashMap<Integer, String>();
HashMap<Integer, String> region = new HashMap<Integer, String>();
while(true) {
System.out.println("=======헬스클럽 회원관리 프로그램=======");
System.out.println("1.회원 정보관리 | 2. 프로그램 종료");
System.out.println("================================");
System.out.println("메뉴를 선택하세요. >>");
menu = scanner.nextInt();
switch (menu) {
case 1:
while (true) {
System.out.println("===========================일반회원 정보관리===========================");
System.out.println("11.일반회원 정보 입력 | 22. 일반회원 정보 삭제 | 33. 일반회원 정보 확인 | 0. 이전단계");
System.out.println("==================================================================");
System.out.println("메뉴를 선택하세요 >>");
menu = scanner.nextInt();
if (menu == 11) {
System.out.println("가입할 회원 수를 입력하세요 >>");
member = scanner.nextInt();
for (int i = 0; i < member; i++) {
System.out.println("회원정보를 입력하세요.");
System.out.print("회원 아이디 :");
memberId = scanner.next();
if(id.containsValue(memberId)) {
System.out.println("이미 존재하는 아이디입니다.");
break;
} else {
id.put(number, memberId);
}
System.out.print("회원 이름 :");
memberName = scanner.next();
name.put(number, memberName);
System.out.print("회원 지역 :");
memberRegion = scanner.next();
region.put(number, memberRegion);
number++;
}
} else if (menu == 22) {
System.out.println("삭제할 회원 번호를 입력하세요.");
memberNumber = scanner.nextInt();
id.remove(memberNumber);
name.remove(memberNumber);
region.remove(memberNumber);
System.out.println("회원 번호 "+memberNumber+"번의 정보가 삭제되었습니다.");
delete++;
} else if (menu == 33) {
size = id.size();
System.out.println("등록된 회원수는 "+size+"입니다.");
for (int i = 1; i <= size+delete; i++) {
if (id.containsKey(i)) {
System.out.println("회원 번호 "+i);
System.out.println("회원 아이디 : "+id.get(i));
System.out.println("회원 이름 : "+name.get(i));
System.out.println("회원 지역 : "+region.get(i));
}
}
} else if (menu == 0) {
System.out.println("메인 메뉴로 돌아갑니다.");
break;
} else {
System.out.println("숫자를 다시 입력하세요.");
}
}
break;
case 2:
System.out.println("프로그램을 종료합니다.");
scanner.close();
return;
default:
System.out.println("숫자를 다시 입력하세요.");
}
}
}
}
- 스캐너 객체를 생성해 숫자나 문자를 입력받는다.
- 메인에서 메뉴 번호를 입력받아 1번이면 세부메뉴, 2번이면 프로그램 종료, 없는 번호면 다시 입력하라는 메시지를 출력한다.
- 이를 위해 While 반복문안에 입력하고 switch 문을 통해 각 조건에 맞는 코드들을 입력한다. 이때, 프로그램을 종료하기 위해 2번이 입력됐을 때, return; 을 입력해 메소드를 종료시킨다.
- 세부 메뉴에서 11이 입력되면 회원정보를 등록하게 되는데 이때 아이디, 이름, 지역 해시맵을 따로 객체 생성하여 Key가 같지만 Value가 다르게 했다. 또한 해시맵에 값을 넣을 때 Key 값으로 number라는 속성값으로 넣은 이유는 한번에 모든 정보를 입력하는게 아니라 조회나 삭제를 했다가 다시 입력할 경우를 위해 Key 값에 최대값을 계속 넣게 하기 위해서이다.
- 또한, 해시맵의 경우 Key는 중복이 안되지만 Value값은 중복이 된다. 하지만 if 문안에 containsValue라는 메소드를 이용해 해당 Value값이 존재할 경우 반복문을 빠져나가게해 등록을 못하게한다.
- 세부 메뉴에서 22가 입력되면 삭제할 회원 번호를 입력받아 해당 번호랑 일치하는 Key를 가진 해시맵을 삭제한다.
- 세부 메뉴에서 33이 입력되면 해시맵의 크기만큼 반복을 시키는데 이때, 중간에 삭제된 키가 있을 수 있기때문에 반복 횟수에 삭제한 회원 수인 delete 속성값을 더해줘 반복문에 포함시키며, containsKey 메소드를 이용해 반복하면서 키 값이 없는것은 출력이 되지 않게 조건을 걸었다.
2. ArrayList를 이용한 풀이
package test;
import java.util.ArrayList;
import java.util.Scanner;
class Member {
public String ID;
public String name;
public String area;
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public Member(String iD, String name, String area) {
ID = iD;
this.name = name;
this.area = area;
}
}
public class MemberAct {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Member> list = new ArrayList<Member>();
int menu = 0;
while (true) {
System.out.println("=======헬스클럽 회원관리 프로그램=======");
System.out.println("1.회원 정보관리 | 2.프로그램 종료");
System.out.println("================================");
System.out.println("메뉴를 선택하세요. >>>");
menu = scanner.nextInt();
if (menu == 1) {
while(true) {
System.out.println("=====================일반회원 정보관리=====================");
System.out.println("11.일반회원 정보입력 | 22. 일반회원 정보삭제 | 33.일반회원 정보확인 | 0.이전단계");
System.out.println("======================================================");
System.out.println("메뉴를 선택하세요. >>>");
int menu1 = scanner.nextInt();
if (menu1 == 11) {
System.out.println("가입할 회원 수를 입력하세요>>");
int insertNum = scanner.nextInt();
for (int i = 0; i < insertNum; i++) {
System.out.println("회원정보를 입력하세요.");
System.out.print("회원 아이디 :");
String insertID = scanner.next();
System.out.print("회원 이름 :");
String insertName = scanner.next();
System.out.print("회원 지역 :");
String insertArea = scanner.next();
list.add(new Member(insertID, insertName, insertArea));
}
} else if (menu1 == 22) {
System.out.println("삭제할 회원번호를 입력하세요.");
int removeNum = scanner.nextInt();
list.remove(removeNum-1);
for (int i = 0; i < list.size(); i++) {
Member member = list.get(i);
System.out.println("회원 번호"+(i+1));
System.out.println("회원 아이디"+member.getID());
System.out.println("회원 이름"+member.getName());
System.out.println("회원 지역"+member.getArea());
}
} else if (menu1 == 33) {
System.out.println("등록된 회원수는 "+list.size()+"입니다.");
for (int i = 0; i < list.size(); i++) {
Member member = list.get(i);
System.out.println("회원 번호"+(i+1));
System.out.println("회원 아이디"+member.getID());
System.out.println("회원 이름"+member.getName());
System.out.println("회원 지역"+member.getArea());
}
} else if (menu1 == 0) {
break;
}
}
} else if(menu == 2) {
System.out.println("================================");
System.out.println("프로그램을 종료합니다.");
System.out.println("================================");
break;
}
}
scanner.close();
}
}
- Member 클래스에 정보들을 넣을 수 있게 getter, setter를 생성하고 생성자를 만들어둔다
- ArrayList<Member> 객체를 생성해 회원정보를 입력받으면 member 객체를 생성하면서 저장할 수 있게 한다.
'java,jsp,spring > 연습' 카테고리의 다른 글
자바 빈 연습문제 (0) | 2022.08.19 |
---|---|
네트워크 송신 - 계산기 (0) | 2022.08.18 |
Lotto 랜덤 배열,중복 제거, 오름차순 정렬 (0) | 2022.08.01 |