문제
아래 3개의 클래스 파일을 작성하고, 메인에서 아래와 같은 실행결과가 나오도록 코딩하시오
Phone클래스
멤버변수
private String name
private String address
private String telNum
멤버함수
생성자 구현
getter() 구현
toString() 재정의
PhoneBookApp클래스
멤버변수
final int INSERT = 1
final int DELETE = 2
final int SEARCH = 3
final int SHOWALL = 4
final int EXIT = 5
private Scanner scanner
private HashMap<String, Phone> map
멤버함수
생성자 구현
public void run()
*무한루프 돌면서 사용자 입력받아 각 메서드 실행
public void insert ()
public void delete ()
public void search ()
public void showall ()
PhoneBookAppExaple(실행클래스)
실행화면
결과
전화번호 관리 프로그램을 시작합니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>1
이름>>신은혁
주소>>대구 달성군 구지면
전화번호>>010-1234-5678
신은혁님이 저장되었습니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>1
이름>>신은혁
신은혁님은 이미 등록되었습니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>1
이름>>김연아
주소>>대구 달서구 진천동
전화번호>>010-4433-2222
김연아님이 저장되었습니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>3
이름>>김수아
김수아님은 등록되지 않은 사람입니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>1
이름>>박한지
주소>>부산광역시 매호동
전화번호>>010-1234-5432
박한지님이 저장되었습니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>3
이름>>박한지
이름 : 박한지
주소 : 부산광역시 매호동
전화번호 : 010-1234-5432
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>4
현재 저장되어 있는 고객 정보 리스트입니다.
이름 : 김연아
주소 : 대구 달서구 진천동
전화번호 : 010-4433-2222
이름 : 신은혁
주소 : 대구 달성군 구지면
전화번호 : 010-1234-5678
이름 : 박한지
주소 : 부산광역시 매호동
전화번호 : 010-1234-5432
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>2
이름>>박한지
박한지님의 정보가 삭제되었습니다.
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>4
현재 저장되어 있는 고객 정보 리스트입니다.
이름 : 김연아
주소 : 대구 달서구 진천동
전화번호 : 010-4433-2222
이름 : 신은혁
주소 : 대구 달성군 구지면
전화번호 : 010-1234-5678
1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>5
프로그램을 종료합니다...
코드
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
class Phone {
private String name;
private String address;
private String telNum;
public Phone(String name, String address, String telNum) {
this.name = name;
this.address = address;
this.telNum = telNum;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public String getTelNum() {
return telNum;
}
public String toString() {
String info = "이름 : " + name + "\n" + "주소 : " + address + "\n" + "전화번호 : " + telNum;
return info;
}
}
class PhoneBookApp {
final int INSERT = 1;
final int DELETE = 2;
final int SEARCH = 3;
final int SHOWALL = 4;
final int EXIT = 5;
private Scanner scanner;
private HashMap<String, Phone> map;
public PhoneBookApp() { // 생성자에서 Scanner, HashMap 초기화
scanner = new Scanner(System.in);
map = new HashMap<>();
}
public void run() {
// PhoneBookApp phoneBookApp = new PhoneBookApp();
System.out.println("전화번호 관리 프로그램을 시작합니다.");
while (true) {
System.out.print("1.삽입 2.삭제 3.찾기 4.전체 보기, 5. 종료 >>");
int select = scanner.nextInt();
if (select == INSERT) {
insert();
}
else if (select == DELETE) {
delete();
}
else if (select == SEARCH) {
search();
}
else if (select == SHOWALL) {
showall();
}
else if (select == EXIT) {
System.out.println("프로그램을 종료합니다...");
break;
}
}
}
public void insert() {
String name, address, tel;
System.out.print("이름>>");
name = scanner.next();
if (map.get(name) != null) {
System.out.println(name + "님은 이미 등록되었습니다.");
return;
}
scanner.nextLine();
System.out.print("주소>>");
address = scanner.nextLine();
// scanner.nextLine();
System.out.print("전화번호>>");
tel = scanner.next();
Phone phone = new Phone(name, address, tel);
map.put(name, phone); // phone에 왜 name 또 들어감? -> 정보 담아서 쓰기 위해서
System.out.println(name + "님이 저장되었습니다.");
}
public void delete() {
String name; // insert랑 중복이라 밖으로 빼는 게 나을듯
System.out.print("이름>>");
name = scanner.next();
if (map.get(name) != null) {
map.remove(name);
System.out.println(name + "님의 정보가 삭제되었습니다.");
} else {
System.out.println(name + "님의 정보가 없습니다.");
}
}
public void search() {
String name;
System.out.print("이름>>");
name = scanner.next();
if (map.get(name) != null) {
System.out.println("이름 : " + name);
System.out.println("주소 : " + map.get(name).getAddress());
System.out.println("전화번호 : " + map.get(name).getTelNum());
} else {
System.out.println(name + "님은 등록되지 않은 사람입니다.");
}
}
public void showall() {
System.out.println("현재 저장되어 있는 고객 정보 리스트입니다.");
Set<String> keys = map.keySet();
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String info = it.next();
System.out.println(map.get(info)); // 객체 부르면 toString 불림
}
}
}
public class PhoneBookAppExample {
public static void main(String[] args) {
PhoneBookApp phoneBookApp = new PhoneBookApp();
phoneBookApp.run();
}
}
insert는 사람 이름을 가져와서 있으면 에이 이미 있네 있다 하고 return 시켜. 뒤에 안 넣어도 돼
이런 느낌이고
delete와 search는 사람 이름 가져와서 보고 있으면 있다 없으면 없다 하고 각자 해야 할 동작을 하는 느낌이다.
'Java' 카테고리의 다른 글
| 문자열 (0) | 2024.01.06 |
|---|---|
| 이클립스 초기 화면으로 돌리는 법 (perspective 화면 초기화) (0) | 2023.09.27 |
| [Java] TreeSet 사용 예제 (23-3) (0) | 2023.09.14 |
| [Java] Map 사용 예제 (23-2) (0) | 2023.09.14 |
| [Java] Map 사용 예제 (23-1) (0) | 2023.09.14 |