package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
/*
* 문제 ) 이름 . 주소, 전화번호를 멤버로 갖는 phone클래스를 만들고 ㅣ
* Map 을 이용해서 전화번호 정보를 관리하는 프로그램을 작성하시오.
* 이 프로그램에는 전화번호 등록, 수정, 삭제, 검색, 전체 출력하는 기능이 있다.
*
* Map 의 구조는 key 값으로 "이름"을 사용하고 value 값으로는 phone 클래스의 인스턴스' 로 한다.
* <String , phone클래스>
*
* 삭제나 검색 기능은 이름을 입력받아 처리한다.
*
* 다음 메뉴를 선택하세요
*
* 1. 전화번호 등록
* 새롭게 등록할 전화번호 정보를 입력하세요
* 이름 > 홍길동
* 전화번호 : 010-1234-5678
* 주소 : 대전시 중구 대흥동
*
* '홍길동' 전화번호 등록 완료 !
*
* 만약 '홍길동' 이름을 또 입력하면
* '홍길동'은 이미 등록된 사람입니다.
*
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
*
* 5번
*
* ----------------------------------
* 번호 이름 전화번호 주소
* ----------------------------------
* 나오도록
*
*
* 출력완료
*
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
*
*
* 0번입력 :
* 프로그램 종료합니다..
*
*
*/
public class PhoneBookTest {
Scanner sc = new Scanner(System.in);
HashMap<String , Phone> map = new HashMap<>();
public static void main(String[] args) {
PhoneBookTest a = new PhoneBookTest();
a.start();
} //main 끝
void start(){
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. 시스템 종료 ");
int num = sc.nextInt();
switch(num) {
case 1 : putAll(); break;
case 2 : numberUpdate(); break;
case 3 : delete(); break;
case 4 : view (); break;
case 5 : viewAll() ; break;
case 0 :
System.out.println("시스템이 종료됩니다.");
System.exit(0);
}
} //start 메소드 끝
void putAll(){
System.out.println();
String name ;
do {
sc.nextLine(); //설명내일
System.out.println("등록하실 이름을 말씀해주세요");
name = sc.nextLine();
if(map.containsKey(name) == true) {
System.out.println("이름을 다시 등록해주세요");
}
}while(map.containsKey(name) == true);
System.out.println("등록하실 주소를 말씀해 주세요");
String address = sc.nextLine();
System.out.println("등록하실 번호를 입력해주세요");
int number = sc.nextInt();
Phone phone = new Phone(name, address, number);
map.put(name, phone);
System.out.println(name + " 의 정보가 입력되었습니다.");
/*System.out.println(map);
return map;*/
start();
} //putNumber 메소드 끝
void numberUpdate() {
System.out.println("전화번호 수정 페이지");
sc.nextLine();
String name;
do {
System.out.println("수정하고 싶은 사람의 이름을 입력하세요");
name = sc.nextLine();
if (map.containsKey(name) == true) {
System.out.println( "이름 : " + name + " 주소 : " + map.get(name).getAddress() + " 전화번호" + map.get(name).getNumber() );
System.out.println("의 정보를 수정합니다.");
}
else {
System.out.println(name + "의 정보가 없습니다.");
}
}while(map.containsKey(name) == false);
System.out.println("변경하길 원하는 주소를 입력해주세요");
String address = sc.nextLine();
System.out.println("변경을 원하는 전화번호를 입력해 주세요");
int number = sc.nextInt();
map.get(name).setAddress(address);
map.get(name).setNumber(number);
System.out.println("주소와 전화번호가 변경되었습니다.");
System.out.println("이름 : " + name + "\t주소 : " + map.get(name).getAddress() + "\t전화번호 : " + map.get(name).getNumber());
start();
/*
// 다른 방법 2
map.put(name, new Phone(name, address , number));
//다른 방법 3
Phone p = map.get(name);
p.setAddress(address);
p.setNumber(number);*/
}
void delete () {
System.out.println("정보 삭제 페이지");
sc.nextLine();
System.out.println("삭제를 원하는 사람의 이름을 입력해주세요");
String name = sc.nextLine();
if (!map.containsKey(name)) {
System.out.println( name + "씨의 정보는 존재하지 않는 정보입니다.");
System.out.println("삭제작업불가");
return;
}
map.remove(name);
System.out.println(name + "의 정보가 삭제되었습니다.");
start();
}
void view () {
System.out.println("정보 검색 페이지 ");
sc.nextLine();
System.out.println("정보를 검색하기 원하는 사람의 이름을 입력해주세요");
String name = sc.nextLine();
if(!map.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보는 없습니다.");
return;
}
System.out.println("이름 : " + map.get(name).getName() +
"\t 주소 : " + map.get(name).getAddress() + "\t 번호 " + map.get(name).getNumber() );
start();
}
void viewAll() {
System.out.println("전화번호 부에 있는 모든 사람 정보 검색");
for( String key : map.keySet()) {
System.out.println("-------------------------------------------------");
System.out.println("이름\t" + "주소\t" + "번호");
System.out.println("-------------------------------------------------");
System.out.println(map.get(key).getName() + "\t" + map.get(key).getAddress() + "\t" +
map.get(key).getNumber());
}
start();
/*// 선생님 코드 iterator 로 만들었음
if(map.size() == 0 ) {
System.out.println("등록된 데이터가 하나도 없습니다.");
}else {
int cnt = 1 ;
Iterator<String> phoneIt = map.keySet().iterator();
while(phoneIt.hasNext()) {
cnt++;
String name = phoneIt.next();
Phone p = map.get(name);
System.out.println(" " + cnt + " " + p.getName() + " " + p.getAddress()
+ " " + p.getNumber());
} //while문
}// else 문
System.out.println("-------------------------------------------------");
System.out.println(" 출력작업 끝 ");
*/
}
//} //class PhoneBookTest 끝
public class Phone {
private String name ;
private String address;
private int number;
public Phone (String name , String address, int number ) {
super();
this.name = name ;
this.address = address;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
} //class PhoneBookTest 끝
댓글
댓글 쓰기