/*
* 문제) 이름, 주소, 전화번호를 멤버로 갖는 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 ;
}
}