PhoneBookTest(전화번호 등록/수정/삭제/검색/전체출력)

조수경·2021년 11월 2일
0

고급자바

목록 보기
11/97

/*
 * 문제) 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들고,
 *      Map을 이용하여 전화번호 정보를 관리하는 프로그램을 작성하시오.
 *      이 프로그램에는 아래와 같은 메뉴가 있는데 이 기능을 모두 구현하시오.
 *      
 *     메뉴예시)
 *       1. 전화번호 등록
 *       2. 전화번호 수정
 *       3. 전화번호 삭제
 *       4. 전화번호 검색
 *       5. 전화번호 전체 출력
 *       0. 프로그램 종료
 *       
 *       (Map의 구조는 key값으로 저장되는 사람의 이름을 사용하고,
 *        value값으로는 'Phone클래스의 인스턴스'로 한다.)
 *        
 *        실행 예시) 
 *       -----------------
 *        다음 메뉴를 선택하세요.
 *       -----------------
 *       1. 전화번호 등록
 *       2. 전화번호 수정
 *       3. 전화번호 삭제
 *       4. 전화번호 검색
 *       5. 전화번호 전체 출력
 *       0. 프로그램 종료
 *       -----------------
 *       번호 입력 >> 1
 * 
 *       새롭게 등록할 전화번호 정보를 입력하세요.
 *       이 름 >> 홍길동(키값)
 *       전화번호 >> 010-1111-1111
 *       주 소 >> 대전시 중구 대흥동
 *       
 *       '홍길동'전화번호 등록 완료!!
 *       -----------------
 *        다음 메뉴를 선택하세요.
 *       -----------------
 *       1. 전화번호 등록
 *       2. 전화번호 수정
 *       3. 전화번호 삭제
 *       4. 전화번호 검색
 *       5. 전화번호 전체 출력
 *       0. 프로그램 종료
 *       -----------------
 *       번호 입력 >> 1
 * 
 *       새롭게 등록할 전화번호 정보를 입력하세요.
 *       이 름 >> 홍길동
 *       
 *       '홍길동'은 이미 등록된 사람입니다.
 *       
 *       -----------------
 *        다음 메뉴를 선택하세요.
 *       -----------------
 *       1. 전화번호 등록
 *       2. 전화번호 수정
 *       3. 전화번호 삭제
 *       4. 전화번호 검색
 *       5. 전화번호 전체 출력
 *       0. 프로그램 종료
 *       -----------------
 *       번호 입력 >> 5
 *       
 *      ------------------------------------
 *       번호     이름    전화번호       주소
 *      ------------------------------------
 *        1  홍길동  010-1111-1111  대전시 중구 대흥동
 *        ~~~~
 *      ------------------------------------
 *      출력완료..
 *       
 *      -----------------
 *        다음 메뉴를 선택하세요.
 *       -----------------
 *       1. 전화번호 등록
 *       2. 전화번호 수정
 *       3. 전화번호 삭제
 *       4. 전화번호 검색
 *       5. 전화번호 전체 출력
 *       0. 프로그램 종료
 *       -----------------
 *       번호 입력 >> 0
 *       
 *       프로그램을 종료합니다.
 */
package kr.or.ddit.basic;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class PhoneBookTest {
	
	static String name;
	static String tell;
	static String add;
	
	static Scanner sc = new Scanner(System.in);
	static HashMap<String, Phone> map = new HashMap<>();
	
	public static void add() {
		
		System.out.println("새롭게 등록할 전화번호 정보를 입력하세요.");
		System.out.println("이 름 >>");
	        name = sc.nextLine();
		if(map.get(name)!=null){
			System.out.println("이미 등록된 사람입니다.");
			add();
		}
		System.out.println("전화번호 >>");
		tell = sc.nextLine();
		System.out.println("주 소 >>");
		add = sc.nextLine();
		map.put(name, new Phone(name, tell, add));
		System.out.println(map.get(name).getName()+"전화번호 등록 완료!!");
                //name안에 있는 name만 출력
		System.out.println(map.get(name));
                //name은 키라서 값이 다나옴(이름,번호,주소)
	}
	
	public static void update(){
		System.out.println("수정할 전화번호 정보를 입력하세요.");
		System.out.println("이 름 >>");
		name = sc.nextLine();
		System.out.println("전화번호 >>");
		tell = sc.nextLine();
		System.out.println("주 소 >>");
		add = sc.nextLine();
		map.put(name,new Phone(name, tell, add));
		System.out.println("전화번호 수정 완료!!");
		System.out.println(map.get(name));
	}
	
	public static void delete(){
		System.out.println("삭제할 전화번호 정보를 입력하세요.");
		System.out.println("이 름 >>");
		name = sc.nextLine();
		if(map.get(name)==null){
			System.out.println("등록된 이름이 없습니다.");
			delete();
		}
        map.remove(name);
        System.out.println("전화번호 삭제 완료!!");
	}
	
	public static void surf(){
		System.out.println("검색할 전화번호 정보를 입력하세요.");
		  System.out.println("이 름 >>");
		  String name = sc.nextLine();
		  System.out.println(map.get(name).getName());
		  System.out.println(map.get(name).getTell());
		  System.out.println(map.get(name).getAdd());
	}
	
	Set<String> keySet = map.keySet();
	public static void list(){
		System.out.println("--------전화 번호 전체 출력----------");
		for(String key : map.keySet()){
			Phone value = map.get(key);
			System.out.println(key + " => "+ value);
		}
		System.out.println("---------------------------------------");
		
	}
	
	public static void start(){
    while(true){
			
			System.out.println("-----------------");
			System.out.println("다음 메뉴를 선택하세요.");
			System.out.println("-----------------");
			System.out.println("1. 전화번호 등록");
			System.out.println("2. 전화번호 수정");
			System.out.println("3. 전화번호 삭제");
			System.out.println("4. 전화번호 검색");
			System.out.println("5. 전화번호 전체 출력");
			System.out.println("0. 프로그램 종료");
			System.out.println("-----------------");
			System.out.println("번호입력>");
			
			int input = sc.nextInt();
			 sc.nextLine();
			switch(input){
			
			case 1:
				add();
				break;
				
			case 2:
				update();
				break;
				
			case 3:
				delete();
				break;

			  case 4:
				  surf();
				  break;
		     
			  case 5:
				  list();
				  break;
		      case 0:
		            System.out.println("프로그램을 종료합니다.");
		          return;
		          

			}
		}
	}


	public static void main(String[] args) {
		PhoneBookTest p = new PhoneBookTest();
		p.start();
	}
	


	
}

class Phone{
	private String name;
	private String add;
	private String tell;
	
	public Phone(String name, String add, String tell) {//생성자 만들어주기
		super();
		this.name = name;
		this.add = add;
		this.tell = tell;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAdd() {
		return add;
	}

	public void setAdd(String add) {
		this.add = add;
	}

	public String getTell() {
		return tell;
	}

	public void setTell(String tell) {
		this.tell = tell;
	}

	@Override
	public String toString() {
		return "이름=" + name + ", 주소=" + add + ", 전화번호 =" + tell ;
	}
	
}
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보