일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Oracle
- 맥
- nodejs
- Homebrew
- 객체지향
- crud
- 생활코딩
- 이클립스
- JDBC
- jsp
- ddit
- 자바
- html
- ibatis
- Java
- Error
- FastAPI
- 대덕인재개발원
- 단축키
- API
- 자바문제
- spring
- pyqt
- 배열
- python
- 반복문
- Android
- 컬렉션프레임워크
- Mac
- servlet
Archives
- Today
- Total
romworld
컬렉션 프레임워크 연습문제3(전화번호부) 본문
package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*
문제) 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들고
Map을 이용하여 아래와 같은 메뉴를 처리하여 전화번호 정보를
관리하는 프로그램을 작성하시오.
(Map의 구조는 key값으로 해당 이름으로 사용하고, value값은 'Phone 클래스의 인스턴스'로 한다.)
ex) HashMap<String, Phone> 변수명 = new HashMap<Stirng,Phone>();
구현할 메뉴
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
실행 예시)
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
프로그램을 종료합니다.
*/
public class PhoneBookTest {
private Scanner scan;
private HashMap<String, Phone> phoneBookMap;
// 생성자
public PhoneBookTest() {
scan = new Scanner(System.in);
phoneBookMap = new HashMap<String, Phone>();
}
public static void main(String[] args) {
new PhoneBookTest().phoneBookStart();
}
private void phoneBookStart() {
System.out.println();
System.out.println("++++++++++++++++++++++++++++++++++");
System.out.println(" 전 화 번 호 관 리 프 로 그 램");
System.out.println("++++++++++++++++++++++++++++++++++");
System.out.println();
while(true) {
int choice = displayMenu();
switch (choice) {
case 1: // 등록
insert();
break;
case 2: // 수정
update();
break;
case 3 : // 삭제
delete();
break;
case 4: // 검색
search();
break;
case 5: // 전체 출력
displayAllMember();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("작업 번호를 잘못 입력했습니다. 다시 입력하세요...");
break;
}
}
}
// 전화번호 정보를 검색하는 메서드
private void search() {
System.out.println();
System.out.println("검색할 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = scan.next();
// 등록되지 않은 사람인지 검사
if(!phoneBookMap.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보가 없습니다.");
return;
}
Phone p = phoneBookMap.get(name);
System.out.println(name + "씨의 전화번호 정보");
System.out.println("=============================");
System.out.println("이 름 " + p.getName());
System.out.println("전화번호 " + p.getTel());
System.out.println("주 소 " + p.getAddr());
System.out.println();
}
// 전화번호 정보를 삭제하는 메서드
private void delete() {
System.out.println();
System.out.println("삭제할 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = scan.next();
// 등록되지 않은 사람인지 검사
if(!phoneBookMap.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보가 없습니다.");
System.out.println("삭제 작업을 종료합니다...");
return;
}
phoneBookMap.remove(name);
System.out.println(name + "씨의 전화번호 정보를 삭제했습니다...");
}
// 전화번호 정보를 수정하는 메서드
private void update() {
System.out.println();
System.out.println("수정할 전화번호 정보를 입력하세요...");
System.out.print("이 름 >> ");
String name = scan.next();
// 등록되지 않은 사람인지 검사
if(!phoneBookMap.containsKey(name)) {
System.out.println(name + "씨의 전화번호 정보가 없습니다.");
System.out.println("수정 작업을 종료합니다...");
return;
}
System.out.print("새로운 전화번호 >> ");
String newTel = scan.next();
scan.nextLine();
System.out.print("새로운 주소 >> ");
String newAddr = scan.nextLine();
// 방법1) key 값을 같게해서 추가하면 나중에 저장한 데이터로 덮어쓴다.
//phoneBookMap.put(name, new Phone(name, newTel, newAddr));
// 방법2) ==> 기존에 저장된 Phone객체의 데이터를 새로운 데이터로 변경한다.
phoneBookMap.get(name).setTel(newTel);
phoneBookMap.get(name).setAddr(newAddr);
System.out.println(name + "씨 전화번호 정보를 변경했습니다...");
}
// 전체 전화번호 정보를 출력하는 메서드
private void displayAllMember() {
System.out.println();
Set<String> phoneKeySet = phoneBookMap.keySet();
System.out.println("---------------------------------------");
System.out.println(" 번호 이름 전화번호 주소");
System.out.println("---------------------------------------");
if(phoneKeySet.size() == 0) {
System.out.println("등록된 전화번호 정보가 하나도 없습니다...");
}else {
int num = 0; // 번호 출력용 변수 선언
for(String name : phoneKeySet) {
num++;
Phone p = phoneBookMap.get(name); // 맵에서 네임을 하나 뽑아 오는 거고~
System.out.println(num + "\t" + p.getName() +"\t"+ p.getTel()+ "\t" + p.getAddr() );
}
}
System.out.println("---------------------------------------");
System.out.println("출력 끝 ....");
}
// 새로운 회원 정보를 추가하는 메서드 ==> 이미 등록된 사람은 등록되지 않는다.
private void insert() {
System.out.println();
System.out.println("새롭게 등록할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >>");
String name = scan.next();
// 이미 등록된 사람인지 검사
if(phoneBookMap.containsKey(name)) {
System.out.println(name + "씨는 이미 등록된 사람입니다...");
return;
}
System.out.print("전화번호 >>");
String tel = scan.next();
scan.nextLine(); // 얘는 공백도 포함해야하므로 그냥 한번 더 써줌 전 next()에서 엔터키가 남아있기 때문에
// ==> 입력 버퍼 비우기
// 입력 버퍼 비우기는 nextLine()명령을 사용하기 이전에 next(), nextInt()등의
// 명령이 사용된 후일 경우에 사용한다.
System.out.print("주 소 >>");
String addr = scan.nextLine();
// 입력한 데이터를 Phone객체에 저장한 후 Map에 추가한다.
// Phone p = new Phone(name, tel, addr);
// phoneBookMap.put(name, p);
phoneBookMap.put(name, new Phone(name, tel, addr));
System.out.println(name + "씨 전화번호 등록 완료!!");
}
// 메뉴를 출력하고 작업 번호를 입력받아 반환하는 메서드
private int displayMenu() {
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.print("번호 입력 >>");
return scan.nextInt();
}
class Phone {
private String name;
private String tel;
private String addr;
public Phone(String name, String tel, String addr) {
super();
this.name = name;
this.tel = tel;
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return name + " " + tel + " " + addr;
}
}
}
'JAVA > 문제풀이' 카테고리의 다른 글
Thread 연습문제 1 ( 가위바위보 프로그램) (0) | 2022.10.31 |
---|---|
컬렉션 프레임워크 연습문제4(Hotel) (0) | 2022.10.28 |
컬렉션 프레임워크 연습문제2(로또 프로그램) (0) | 2022.10.28 |
컬랙션 프레임워크 연습 문제 1(베이스볼게임) (0) | 2022.10.28 |
컬렉션 프레임워크 문제 (List, Map) (0) | 2022.10.10 |
Comments