Daily coding

Java Basic : day 5 - Example 03 : 학생성적 프로그램 (내코드) 본문

Language/Java_basic

Java Basic : day 5 - Example 03 : 학생성적 프로그램 (내코드)

sunnnkim 2019. 11. 22. 19:15
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();
	
	}				
}