본문 바로가기

java,jsp,spring/연습

JAVA - 헬스클럽 회원관리 예제

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