JAVA

JAVA Practice - Address Book

명주_^ 2022. 6. 8. 11:12
  • CRUD - Create Read Update Delete
  • DAO - Data Access Object

 

Address Book

column : 이름, 나이, 전화번호, 주소, 메모
2차원 배열 row = 100
데이터 파일에서 불러오기 -> 2차원 배열에 저장

0. Main

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String[][] human = load("addressBook");
		int humanCount = 0;
		for (int i = 0; i < human.length; i++) {
			if (human[i][0] != null && !human[i][0].equals("")) {
				humanCount++;
			}
		}

		while (true) {
			System.out.println("<<MENU>>");
			System.out.println("1. 추가");
			System.out.println("2. 삭제");
			System.out.println("3. 검색");
			System.out.println("4. 수정");
			System.out.println("5. 출력");
			System.out.println("6. 저장");
			System.out.println("7. 종료");
			System.out.print("메뉴 번호를 입력해 주세요 : ");
			int input = scanner.nextInt();

			switch (input) {
			case 1:
				insert(human, humanCount);
				break;
			case 2:
				delete(human);
				break;
			case 3:
				select(human);
				break;
			case 4:
				update(human);
				break;
			case 5:
				print(human);
				break;
			case 6:
				save(human, "addressBook");
				break;
			case 7:
				break;

			default:
				break;
			}

		}

	}

 

1. 추가

	static int insert(String[][] human, int humanCount) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("이름 = ");
		String name = scanner.next();

		System.out.print("나이 = ");
		int age = scanner.nextInt();

		System.out.print("전화번호 = ");
		String phone = scanner.next();

		System.out.print("주소 = ");
		String address = scanner.next();

		System.out.print("메모 = ");
		String memo = scanner.next();

		human[humanCount][0] = name;
		human[humanCount][1] = age + "";
		human[humanCount][2] = phone;
		human[humanCount][3] = address;
		human[humanCount][4] = memo;

		humanCount++;
		return humanCount;
	}

 

2. 삭제

	static void delete(String[][] human) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("삭제하고 싶은 이름 = ");
		String name = scanner.next();

		int index = search(human, name);
		if (index == -1) {
			System.out.println("회원 정보를 찾을 수 없습니다.");
			return;
		}

		human[index][0] = "";
		human[index][1] = "";
		human[index][2] = "";
		human[index][3] = "";
		human[index][4] = "";

		System.out.println("정보를 삭제하였습니다.");

	}

 

3. 검색 - 이름 (중복허용)

	static void select(String[][] human) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("검색하고 싶은 이름 = ");
		String name = scanner.next();

		String findMember[][] = searchAll(human, name);

		if (findMember == null) {
			System.out.println("정보를 찾을 수 없습니다.");
			return;
		}

		for (int i = 0; i < findMember.length; i++) {
			System.out.println(Arrays.toString(findMember[i]));
		}

	}

 

4. 수정

	static void update(String[][] human) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("수정하고 싶은 이름 = ");
		String name = scanner.next();

		int index = search(human, name);
		if (index == -1) {
			System.out.println("정보를 찾을 수 없습니다.");
			return;
		}

		System.out.print("수정할 전화번호 = ");
		String phone = scanner.next();

		human[index][2] = phone;
	}

 

5. 모든 데이터 출력

	static void print(String[][] human) {
		for (int i = 0; i < human.length; i++) {
			if (human[i][0] != null && !human[i][0].equals("")) {
				System.out.println(Arrays.toString(human[i]));
			}
		}
	}

 

6. 데이터 파일 저장

 

+ 데이터 검색

	static int search(String[][] human, String name) {
		int index = -1;
		for (int i = 0; i < human.length; i++) {
			if (human[i][0].equals(name)) {
				index = i;
				break;
			}
		}
		return index;
	}

+ 데이터 검색 (중복)

	static String[][] searchAll(String[][] human, String name) {

		int count = 0;

		// 카운터
		for (int i = 0; i < human.length; i++) {
			if (human[i][0] != null && human[i][0].equals(name)) {
				count++;
			}
		}

		if (count == 0) {
			return null;
		}

		// 할당
		String[][] findMember = new String[count][5];

		// 데이터 저장
		int idx = 0;
		for (int i = 0; i < human.length; i++) {
			if (human[i][0] != null && human[i][0].equals(name)) {
				findMember[idx] = human[i];
				idx++;
			}
		}
		return findMember;
	}