전화번호부에 저장된 연락처 정보 CRUD 기능 구현
요구 사항
- 저장: 사용자가 이름과 전화번호를 입력하여 전화번호부에 저장할 수 있어야 합니다.
- 조회: 전체 연락처 목록을 조회하거나, 특정 이름으로 연락처를 검색하여 조회할 수 있어야 합니다.
- 수정: 기존 연락처의 전화번호를 변경할 수 있어야 합니다.
- 삭제: 전화번호부에서 연락처를 삭제할 수 있어야 합니다.
- 선택 조회 : 이름을 입력하면 해당 전화번호가 출력 되어야 합니다.
- Scanner 활용, 입력 받는 데이터 타입은 전부 String 으로 처리
- 전화번호 저장은 100까지 한정.
package basic.exercise;
import java.util.Scanner;
public class PhoneBookManager {
static int phoneIndexNumber = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
PhoneBook[] phonebooks = new PhoneBook[100];
// 샘플데이터
phonebooks[0] = new PhoneBook("010-0000-0000", "김씨");
phonebooks[1] = new PhoneBook("010-1111-1111", "이씨");
phonebooks[2] = new PhoneBook("010-2222-2222", "박씨");
phonebooks[3] = new PhoneBook("010-3333-3333", "전씨");
boolean flag = true;
while (flag) {
System.out.println("======= 메뉴 선택 =======");
System.out.println("1. 저장 | 2. 전체 조회 | 3. 전화 번호로 검색 | 4. 이름으로 검색 | 5. 수정 | 6. 선택 삭제 | 7. 초기화 | 0. 종료");
final int SELECT = sc.nextInt();
if (SELECT == 1) { // 저장
phonNumberSave(sc, phonebooks, phoneIndexNumber);
} else if (SELECT == 2) { // 전체 조회
totalRead(phonebooks);
} else if (SELECT == 3) { // 전화 번호로 검색
readByPhoneNumber(sc, phonebooks);
} else if (SELECT == 4) { // 이름으로 검색
readByPhoneName(sc, phonebooks);
} else if (SELECT == 5) { // 수정
phoneDataUpdate(sc, phonebooks);
} else if (SELECT == 6) { // 선택 삭제
selectDataDelete(sc, phonebooks);
} else if (SELECT == 7) { // 초기화
phoneDataDelete(phonebooks);
} else if (SELECT == 0) { // 종료
System.out.println("종료 합니다.");
flag = false;
} else { // 잘못된 입력
System.out.println("잘못된 입력입니다.");
}
}
}
// 저장
public static void phonNumberSave(Scanner sc, PhoneBook[] phonebooks, int phoneIndexNumber) {
System.out.println("----- 저장 하기 -----");
System.out.println("등록하실 전화번호를 입력하세요. : ");
String phoneNumber = sc.next();
System.out.println("등록하실 이름을 입력하세요 : ");
String phoneName = sc.next();
PhoneBook phonebook = new PhoneBook(phoneNumber, phoneName);
if (phoneIndexNumber >= phonebooks.length) {
System.out.println("저장 공간이 부족합니다");
return;
}
for (int i = 0; i < phonebooks.length; i++) {
if (phonebooks[i] == null) {
phonebooks[i] = phonebook;
phoneIndexNumber++;
break;
}
}
}
// 전체 조회
public static void totalRead(PhoneBook[] phoneBooks) {
System.out.println("------ 전체 조회 ------");
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null) {
System.out.println(phoneBooks[i].getPhoneNumber() + " , " + phoneBooks[i].getName());
}
}
}
// 전화 번호로 검색
public static void readByPhoneNumber(Scanner sc, PhoneBook[] phoneBooks) {
System.out.println("------ 전화 번호로 검색 ------");
System.out.println("전화 번호 입력");
String phoneNumber = sc.next();
boolean flag = false;
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null && phoneBooks[i].getPhoneNumber().equals(phoneNumber)) {
System.out.println(phoneBooks[i].getPhoneNumber() + " , " + phoneBooks[i].getName());
flag = true;
break;
}
}
if (flag == false) {
System.out.println("저장된 번호가 없습니다.");
}
}
// 이름으로 검색
public static void readByPhoneName(Scanner sc, PhoneBook[] phoneBooks) {
System.out.println("------ 이름으로 검색 ------");
System.out.println("이름 입력");
String phoneName = sc.next();
boolean flag = false;
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null && phoneBooks[i].getName().equals(phoneName)) {
System.out.println(phoneBooks[i].getPhoneNumber() + " , " + phoneBooks[i].getName());
flag = true;
break;
}
}
if (flag == false) {
System.out.println("저장된 번호가 없습니다.");
}
}
// 수정
public static void phoneDataUpdate(Scanner sc, PhoneBook[] phoneBooks) {
System.out.println("------ 수정 ------");
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null) {
System.out.println(phoneBooks[i].getPhoneNumber() + " , " + phoneBooks[i].getName());
}
}
System.out.println("몇번째 숫자를 수정하겠습니까?(0번부터 시작)");
int updateNumber = sc.nextInt();
for (int i = 0; i < phoneBooks.length; i++) {
if (i == updateNumber) {
System.out.println("수정할 전화번호를 입력하세요. : ");
String phoneNumber = sc.next();
System.out.println("수정할 이름을 입력하세요 : ");
String phoneName = sc.next();
PhoneBook phonebook = new PhoneBook(phoneNumber, phoneName);
phoneBooks[i] = phonebook;
break;
}
}
}
// 선택 삭제
public static void selectDataDelete(Scanner sc, PhoneBook[] phoneBooks) {
System.out.println("------ 선택 삭제 ------");
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null) {
System.out.println(phoneBooks[i].getPhoneNumber() + " , " + phoneBooks[i].getName());
}
}
System.out.println("몇번째 번호를 삭제하겠습니까?(0번부터 시작)");
int deleteNumber = sc.nextInt();
for (int i = 0; i < phoneBooks.length; i++) {
if (i == deleteNumber) {
phoneBooks[i] = null;
break;
}
}
}
// 초기화
public static void phoneDataDelete(PhoneBook[] phoneBooks) {
System.out.println("------ 초기화 ------");
for (int i = 0; i < phoneBooks.length; i++) {
if (phoneBooks[i] != null) {
phoneBooks[i] = null;
}
}
}
} // end of class
package basic.exercise;
public class PhoneBook {
private String name;
private String phoneNumber;
public PhoneBook(String phoneNumber,String name) {
this.phoneNumber = phoneNumber;
this.name = name;
}
public String getName() {
return name;
}
public String getPhoneNumber() {
return phoneNumber;
}
}
// 인스턴스에 속하지 않는 함수 만들기
public static int[] makeNumbers() {
int[] numbers = new int[6];
Random random = new Random();
// 중복된 랜덤 1 ~ 45 숫자가 나온다면
// 다시 반복문을 돌려서 중복 안되게 만들어야 한다.
for(int i = 0; i < 6; i++) {
int num = random.nextInt(45) + 1;
// for -> 중복된 숫자가 없도록 코드를 완성하시오
//[0] 3.
//[1] 3.
numbers[i] = num;
}
return numbers;
}
'Java > JAVA 2 - 객체지향 핵심' 카테고리의 다른 글
JAVA 2 - 상속(Inheritance) (0) | 2024.04.23 |
---|---|
JAVA 2 - 메서드 오버로딩 (0) | 2024.04.23 |
JAVA 2 - 배열의 활용(도서 관리프로그램) (0) | 2024.04.22 |
JAVA 2 - 배열에 대해서 알아보자 (1) | 2024.04.22 |
JAVA 2 - static 메소드(함수) (0) | 2024.04.19 |