package day5;
import java.util.Arrays;
import java.util.Scanner;
public class Ex03_2dArrayDAO {
public static void main(String[] args) {
/*
[0] : 회원번호
[1] : 이름
[2] : 나이
[3] : 주소
1. 데이터 추가
2. 데이터 삭제
3. 데이터 검색
4. 데이터 수정
5. 데이터 모두 출력
* DAO : Data Access Object (insert/delete/select/update)
- 데이터에 접근하여 관리하는 객체
(참고 : C R U D)
*/
Scanner sc = new Scanner(System.in);
// 선언
//[회원 수][회원정보]
String datas[][] = new String[10][4];
String dataName[] = new String[4];
// 초기화
int dataSize=0;
dataName[0] = "회원번호";
dataName[1] = "이름";
dataName[2] = "나이";
dataName[3] = "주소";
while(true) {
int choice;
System.out.println("-------------------");
System.out.println("1.데이터 추가(insert)");
System.out.println("2.데이터 삭제(delete)");
System.out.println("3.데이터 검색(select)");
System.out.println("4.데이터 수정(update)");
System.out.println("5.데이터 모두 출력");
System.out.println("6.종료");
System.out.println("-------------------");
System.out.print("메뉴 번호를 입력해 주십시오 >> ");
try {
choice = sc.nextInt();
} catch (Exception e) {
choice = -1;
sc = new Scanner(System.in);
}
System.out.println("-------------------");
if(choice == 1) {
// 데이터 추가
// 배열에 공간없음
if(dataSize== datas.length) {
System.out.println("< 데이터를 추가할 곳이 없습니다.>");
System.out.println("--------------------------");
}else {
// 입력
System.out.println("-- 데이터 추가 --");
System.out.print("회원번호 : ");
String number = sc.next();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("나이 : ");
String age = sc.next();
System.out.print("주소 : ");
String address = sc.next();
datas[dataSize][0] = number;
datas[dataSize][1] = name;
datas[dataSize][2] = age;
datas[dataSize][3] = address;
dataSize++;
System.out.println("< 데이터 추가완료! >");
}
}else if( choice == 2) {
// 데이터 삭제
// (배열은 데이터 삭제가 안되서 ""로 해줌)
// 삭제할 공간에 데이터를 다시 넣을 것이 아니라 dataSize는 줄이지 않는다.
int findIndex = -1;
System.out.println("-- 데이터 삭제 --");
System.out.print("삭제할 회원의 이름 : ");
String name = sc.next();
for (int i = 0; i < dataSize; i++) {
if(datas[i][1].equals(name)) {
findIndex = i;
}
}
// 이름이 있는 경우
if(findIndex != -1) {
for (int i = 0; i < datas[0].length; i++) {
datas[findIndex][i] = "";
}
System.out.println("< 데이터 삭제 완료! >");
}
// 회원 이름이 없는 경우
else {
System.out.println("< 해당 회원이 없습니다.>");
System.out.println("------------------");
}
}
// 데이터 검색
else if( choice == 3) {
int findIndex = -1;
System.out.println("-- 데이터 검색 --");
System.out.print("검색할 회원의 이름 : ");
String name = sc.next();
for (int i = 0; i < dataSize; i++) {
if(datas[i][1].equals(name)) {
findIndex = i;
}
}
// 이름이 있는 경우
if(findIndex != -1) {
System.out.println("< 회원정보 >");
for (int i = 0; i < datas[0].length; i++) {
System.out.println(dataName[i] + " : "+ datas[findIndex][i]);
}
}
// 회원 이름이 없는 경우
else {
System.out.println("< 해당 회원이 없습니다 >");
System.out.println("------------------");
}
}
else if (choice == 4) {
// 데이터 수정
int findIndex = -1;
System.out.println("-- 데이터 수정 --");
System.out.print("수정할 회원의 이름 : ");
String name = sc.next();
for (int i = 0; i < dataSize; i++) {
if(datas[i][1].equals(name)) {
findIndex = i;
}
}
// 이름이 있는 경우
if(findIndex != -1) {
System.out.println("< 정보수정 >");
System.out.print("회원번호 : ");
String number = sc.next();
System.out.print("이름 : ");
name = sc.next();
System.out.print("나이 : ");
String age = sc.next();
System.out.print("주소 : ");
String address = sc.next();
datas[findIndex][0] = number;
datas[findIndex][1] = name;
datas[findIndex][2] = age;
datas[findIndex][3] = address;
System.out.println("< 데이터 수정완료 >");
}
// 회원 이름이 없는 경우
else {
System.out.println("< 해당 회원이 없습니다 >");
System.out.println("------------------");
}
}else if(choice==5) {
// 데이터 모두 출력
// 정렬해서 출력해보기
String sortData[][] = new String[dataSize][4];
for (int i = 0; i < dataSize; i++) {
for (int j = 0; j <4 ; j++) {
sortData[i][j] = datas[i][j];
}
}
String temp[]= new String[dataSize];
for (int i = 0; i < dataSize -1; i++) {
for (int j = i+1; j < dataSize; j++) {
if(Integer.parseInt(sortData[i][0]) > Integer.parseInt(sortData[j][0])
&& !sortData[i][0].equals("")) {
temp = sortData[i];
sortData[i] = sortData[j];
sortData[j] = temp;
}
}
}
System.out.println(" 회원번호\t이름\t나이\t주소");
for (int i = 0; i < sortData.length; i++) {
for (int j = 0; j < sortData[0].length; j++) {
System.out.print(" "+sortData[i][j] + "\t");
}System.out.println();
}
}
else if(choice == 6) {
System.out.println("< 종료합니다 >");
break;
}
else {
System.out.println("! 잘못입력했습니다 !");
}
}
sc.close();
}
}