자료구조 에서 배열을 배웠습니다.
이제 좀 더 활용 해보겠습니다
아래 링크를 참고해 주세요.
https://velog.io/@jinwoo2025/CS-%EC%9E%90%EB%A3%8C-%EA%B5%AC%EC%A1%B01
// Menu.class
public class Menu {
static void Menu() {
System.out.println("데이터입력");
System.out.println("데이터검색");
System.out.println("데이터삭제");
System.out.println("프로그램 종료");
}
}
static을 사용하면서 다른 클래스에서도 메소드를 사용할 수 있게 한다 메뉴선택을 반복해서 물어보기 때문에 메소드로 간략하게 한다.
//PhoneInfo Class
public class PhoneInfo {
String name;
String number;
String birth;
public PhoneInfo(String name, String number, String birth) {
this.name = name;
this.number = number;
this.birth = birth;
}
public void showPhoneInfo() {
System.out.println("name : " + this.name);
System.out.println("number : " + this.number);
System.out.println("birth : " + this.birth);
}
}
//PhoneBookManager class
public class PhoneBookManager {
final int MAX = 100; //배열의 크기를 설정해 주었다
PhoneInfo[] info = new PhoneInfo[MAX];
int cnt = 0; // 인덱스 번호를 설정해 주었다
void read(String name, String number, String birth) {
info[cnt] = new PhoneInfo(name, number, birth);
cnt++;
}// 배열에 데이터를 추가 해주는 메소드 이다.
void search(String name) {
for (int i = 0; i < cnt; i++) {
if(info[i].name.equals(name)) {
info[i].showPhoneInfo();
}
}
}// 배열에 데이터를 검색 해주는 메소드 이다.
void deleteData(String name) {
for (int i = 0; i < cnt; i++) {
if(info[i].name.equals(name)) { // 배열의 이름과 입력한 이름의 값이 같은지 확인후 null값을 넣어 삭제시킨다
info[i] = null;
cnt--;
info[i] = info[i+1]; // 인덱스 앞의 값을 null값이 된곳에 넣어서 땡긴다
}
}// 배열에서 데이터를 삭제 시켜주는 메소드 이다.
}
}
//PhoneBook Class
import java.util.Scanner;
public class PhoneBook {
public static void main(String[] args) {
PhoneBookManager pbm = new PhoneBookManager();
Scanner sc = new Scanner(System.in);
while (true) {
Menu.Menu();
int x = sc.nextInt();
if (x == 1) {
System.out.println("이름");
String name = sc.next();
System.out.println("전화번호");
String number = sc.next();
System.out.println("생년월일");
String birth = sc.next();
PhoneInfo ph = new PhoneInfo(name, number, birth);
pbm.read(name, number, birth);
ph.showPhoneInfo();
}
else if(x == 2) {
System.out.println("이름을 입력하세요");
String name = sc.next();
pbm.search(name);
}
else if(x == 3) {
System.out.println("이름을 입력하세요");
String name = sc.next();
pbm.deleteData(name);
}
else if(x == 4) {
System.out.println("프로그램을 종료 합니다");
break;
}
}
}
}
//Menu Class
public class Menu {
static void showMenu(){
System.out.println("데이터 입력");
System.out.println("데이터 검색");
System.out.println("데이터 삭제");
System.out.println("데이터 종료");
}
}
//PhoneInfo Class
public class PhoneInfo {
private String name;
private String number;
private String birthday;
Public PhoneInfo(String name, String number, String birthday){
this.name = name;
this.number = number;
this.birthday = birthday;
}
public void showPhoneInfo() {
System.out.println("name :" + this.name);
System.out.println("number :" + this.number);
System.out.println("birthday :" + this.birthday);
}
}
PhoneBookManaber.class
import java.util.Scanner;
public class PhoneBookManager {
final int MAX = 100;
PhoneInfo[] info = new PhoneInfo[MAX];
int cnt = 0;
Scanner sc = new Scanner(System.in);
void read() {
System.out.print("이름");
String name = sc.next();
System.out.print("번호");
String number = sc.next();
System.out.print("생년월일");
String birthday = sc.next();
info[cnt] = new PhoneInfo(name, number, birthday);
cnt++;
}
void searchData() {
System.out.println("데이터 검색을 시작합니다");
sc.nextLine();
System.out.print("이름: ");
String name = sc.next();
int i = searchIndex(name);
if (i != 200 ) {
info[i].showPhoneInfo();
}
else {
System.out.println("찾는 값이 없습니다");
}
}
int searchIndex(String name) {
int index = 200;
for (int i = 0; i < cnt; i++) {
if(name.equals(info[i].getName())) { //getter와 setter는 private 값을 가져올 수있다
index = i;
}
}
return index;
}
void deleteData() {
System.out.println("데이터를 삭제합니다");
sc.nextLine();
System.out.print("이름 :");
String name = sc.next();
int i = searchIndex(name);
if(i != 200) {
arrSort(i);
System.out.println(i + "번째 데이터가 삭제 되었습니다");
cnt--;
}
else {
System.out.println("찾는 값이 없습니다");
}
}
void arrSort(int index) {
for(int i = index ; i< cnt ; i++) {
info[i] = info[i+1];
}
info[cnt] = null;
}
}
import java.util.Scanner;
public class PhoneBook {
public static void main(String[] args) {
PhoneBookManager pbm = new PhoneBookManager();
Scanner sc = new Scanner(System.in);
while (true) {
Menu.showMenu();
int x= sc.nextInt();
if(x==1) {
pbm.read();
}
else if(x == 2) {
pbm.searchData();
}
else if(x == 3) {
pbm.deleteData();
}
else if(x == 4) {
System.out.println("프로그램이 종료되었습니다");
break;
}
}
}
}
//