본문으로 바로가기

전화번호관리 프로그램 만들기

category Java 2024. 4. 22. 17:50

전화번호부에 저장된 연락처 정보 CRUD 기능 구현

요구 사항

  • 저장: 사용자가 이름과 전화번호를 입력하여 전화번호부에 저장할 수 있어야 합니다.
  • 조회: 전체 연락처 목록을 조회하거나, 특정 이름으로 연락처를 검색하여 조회할 수 있어야 합니다.
  • 수정: 기존 연락처의 전화번호를 변경할 수 있어야 합니다.
  • 삭제: 전화번호부에서 연락처를 삭제할 수 있어야 합니다.
  • 선택 조회 : 이름을 입력하면 해당 전화번호가 출력 되어야 합니다.
  • 프로그램 종료 - 사용자가 프로그램 종료할 때 까지 계속 실행되어야 합니다.
  • Scanner 활용, 입력 받는 데이터 타입은 전부 String 으로 처리
  • 전화번호 저장은 100까지 한정.

PhoneBook.java

 

 

PhoneBookManager.java

package basic.exercise;

import java.util.Scanner;

public class PhoneBookManager {

	static int LAST_INDEX_NUMBER = 0;

	public static void main(String[] args) {

		// 스캐너 사용
		// 배열 선언
		// while

		Scanner sc = new Scanner(System.in);
		PhoneBook[] phonebook = new PhoneBook[100];

		final String SAVE = "1";
		final String SEARCH_BY_TITLE = "2";
		final String SEARCH_ALL = "3";
		final String EDIT = "4";
		final String DELETE = "5";
		final String END = "0";

		boolean flag = true;

		while (flag) {
			System.out.println("@@@ 전화번호관리 메뉴 선택 @@@");
			System.out.println("1.저장 2.선택조회 3.전체조회 4.수정 5.삭제 0.프로그램 종료");

			String selectedNumber = sc.nextLine();
			if (selectedNumber.equals(SAVE)) {
				System.out.println(">> 저장 하기 <<");
				save(sc, phonebook);

			} else if (selectedNumber.equals(SEARCH_BY_TITLE)) {
				System.out.println(">> 선택 조회 하기 <<");
				readByTitle(sc, phonebook);

			} else if (selectedNumber.equals(SEARCH_ALL)) {
				System.out.println(">> 전체 조회 하기 <<");
				readAll(phonebook);

			} else if (selectedNumber.equals(EDIT)) {
				System.out.println(">> 수정 하기 <<");
				EditPhoneNumber(sc, phonebook);

			} else if (selectedNumber.equals(DELETE)) {
				System.out.println(">> 삭제 하기 <<");
				deleteAll(phonebook);

			} else if (selectedNumber.equals(END)) {
				System.out.println("프로그램을 종료합니다.");
				flag = false;

			} else {
				System.out.println("잘못된 입력입니다");
			}

		}

	} // end of main

	// 전체 조회하기

	public static void readAll(PhoneBook[] phonebook) {
		System.out.println("------ 전체 조회하기 ------");
		for (int i = 0; i < phonebook.length; i++) {
			if (phonebook[i] != null) {
				System.out.println(phonebook[i].getName() + "," + phonebook[i].getNumber());
			}
		}
	}

	// 선택 조회하기

	public static void readByTitle(Scanner sc, PhoneBook[] phonebook) {
		System.out.println("------ 선택 조회 하기 ------");
		System.out.println(">>> 이름을 입력하세요 <<<");
		String inputName = sc.nextLine();
		boolean isFind = false;

		for (int i = 0; i < phonebook.length; i++) {
			if (phonebook[i] != null) {
				if (phonebook[i].getName().equals(inputName)) {
					System.out.println(phonebook[i].getName() + "," + phonebook[i].getNumber());
					isFind = true;
					break;
				}
			}
		}
		if (isFind == false) {
			System.out.println("저장되어 있지 않는 정보입니다");
		}
	}

	// 저장하기
	public static void save(Scanner sc, PhoneBook[] phoneBooks) {
		System.out.println("------ 저장 하기 ------");
		System.out.println("저장된 이름을 입력 하세요");
		String name = sc.nextLine();
		System.out.println("저장된 번호를 입력 하세요");
		String number = sc.nextLine();
		PhoneBook phonebook = new PhoneBook(name, number);

		if (LAST_INDEX_NUMBER >= phoneBooks.length) {
			System.out.println("저장할 공간이 없습니다");
			return;

		}
		for (int i = 0; i < phoneBooks.length; i++) {
			if (phoneBooks[i] == null) {
				phoneBooks[i] = phonebook;
				LAST_INDEX_NUMBER++; // 요소의 갯수로 사용해 보자
				break;

			}

		}

	}

	// 전체 삭제하기

	public static void deleteAll(PhoneBook[] phonebooks) {
		System.out.println("----- 전체 삭제하기 -----");
		for (int i = 0; i < phonebooks.length; i++) {
			phonebooks[i] = null;
		}
	}

	public static void EditPhoneNumber(Scanner sc, PhoneBook[] phonebook) {
		System.out.println("변경하고자 하는 이름을 입력하세요");
		String name = sc.nextLine();

		for (int i = 0; i < phonebook.length; i++) {
			if (phonebook[i] != null) {
				if (phonebook[i].getName().equals(name)) {
					System.out.println("수정할 이름을 입력하세요");
					String newName = sc.nextLine();
					System.out.println("수정할 번호를 입력하세요");
					String newPhoneNumber = sc.nextLine();
					phonebook[i].setName(newName);
					phonebook[i].setNumber(newPhoneNumber);
					System.out.println("정보가 수정되었습니다.");
					break;
				} else {
					System.out.println("수정하고자 하는 회원의 정보가 없습니다.");
					break;
				}
			}
		}
	}
} // end of class

 

'Java' 카테고리의 다른 글

상속(Inheritance)  (0) 2024.04.23
메서드 오버로딩  (0) 2024.04.23
배열에 활용(도서관리프로그램)  (0) 2024.04.22
배열에 대해서 알아 보자  (0) 2024.04.22
POWER JAVA 2장 Programming 1~4번 문제  (0) 2024.04.19