본문 바로가기
Programming Study/명품자바프로그래밍

[명품자바프로그래밍] 7장 Open Challenge

by 푸고배 2018. 9. 27.

<전화번호 관리 프로그램 만들기>

제네릭 해시맵(HashMap)을 이용하여 전화번호 관리 프로그램을 만들어보자. Phone 클래스를 작성하여 하나의 전화번호 정보를 표현한다. 하나의 전화번호 정보는 이름, 주소, 전화번호로 구성된다. 동일한 이름을 가진 사람이 입력되지 않도록 프로그램에서 걸러야 한다. 이 프로그램의 메뉴는 삽입, 삭제, 찾기, 전체 보기, 종료의 총 5가지이다. 실행 사례를 들면 다음과 같다. 문제를 단순화하기 위해 파일 입출력은 하지 않아도 되며 연습문제를 통해 파일 입출력 메뉴를 삽입해보는 것이 좋겠다.

<소스코드>

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
class Phone{
	private String callNumber;
	private String name;
	private String adress;
	String getCallNumber(){
		return callNumber;
	}
	String getName(){
		return name;
	}
	String getAdress(){
		return adress;
	}
	void setCallNumber(String callNumber){
		this.callNumber=callNumber;
	}
	void setName(String name){
		this.name=name;
	}
	void setAdress(String adress){
		this.adress=adress;
	}
}
public class PhoneBookApp {
	static Phone p = null;
	static HashMap<String, Phone> map = new HashMap<String,Phone>();
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("--------------------------------------------------");
		System.out.println("전화번호 관리 프로그램을 시작합니다. 파일로 저장하지 않습니다.");
		System.out.println("--------------------------------------------------");
		while(true){
			System.out.print("삽입:0, 삭제:1, 찾기:2, 전체보기:3, 종료:4>>");
			Scanner sc = new Scanner(System.in);
			int ch = sc.nextInt();
			switch(ch){
				case 0:
					addPhone();
					break;
				case 1:
					deletePhone();
					break;
				case 2:
					selectPhone();
					break;
				case 3:
					printPhone();
					break;
			}
			if(ch == 4){
				break;
			}
		}
	}
	static void addPhone(){
		Scanner sc = new Scanner(System.in);
		p = new Phone();
		System.out.print("이름>>");
		String name= sc.next();
		if(map.get(name)!=null){
			System.out.println(name+"은 이미 등록되어 있는 사람입니다.");
		}else{
			p.setName(name);
			System.out.print("주소>>");
			p.setAdress(sc.next());
			System.out.print("전화번호>>");
			p.setCallNumber(sc.next());
			map.put(name, p);
		}
	}
	static void selectPhone(){
		Scanner sc = new Scanner(System.in);
		System.out.print("이름>>");
		String name = sc.next();
		if(map.get(name)==null){
			System.out.println(name+"는 등록되지 않은 사람입니다.");
		} else {
			Phone uphone = map.get(name);
			System.out.println(uphone.getName()+"\t"+uphone.getAdress()+"\t"+uphone.getCallNumber());
		}
	}
	static void deletePhone(){
		Scanner sc = new Scanner(System.in);
		System.out.print("이름>>");
		String name = sc.next();
		if(map.get(name)==null){
			System.out.println(name+"는 등록되지 않은 사람입니다.");
		} else {
			map.remove(name);
			System.out.println(name+"은 삭제되었습니다.");
		}
		
	}
	static void printPhone(){
		Set<String> keys = map.keySet();
		Iterator<String> it = keys.iterator();
		for(int i=0;i<keys.size();i++){
			String key = it.next();
			Phone uphone = map.get(key);
			System.out.println(uphone.getName()+"\t"+uphone.getAdress()+"\t"+uphone.getCallNumber());
			
		}
	}
}

참고자료 : 생능출판 명품 JAVA Programming

github 주소 : https://github.com/ch1517/First_Step/tree/master/Chapter7/

Open_Challenge

반응형

댓글