2020.10.26 고급자바 과제 내 코드

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  끝 

댓글