ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] C R U D
    Java 2023. 8. 21. 12:31

    1. C R U D 란?

    • Create - 새로운 데이터를 생성하는것을 의미 합니다.
    • Read - 데이터를 조회 하는 것을 의미합니다.
    • Upate - 기본에 데이러를 수정하는 것을 의미합니다.
    • Delete - 기본에 데이터를 삭제하는 것을 의미합니다.

     

    2 - 1. 책스토어 프로그램 C R U D 만들기

    • 1을 입력하면 Create , 2를 입력하면 Read, 3을 입력하면 Read_Title , 4를 입력하면 Update, 5를 입력하면 Delete, 0을 입력하면 프로그램이 종료되는 코드를 작성하자
    • C R U D는 각각 함수로 작성하고 불러오는 방식 사용
    • 1 ~ 5 번을 모두 상수로 선언

    2 - 2. 책스토어 프로그램 C R U D 만들기 - 클래스 생성

     

    [Java] Class 만들기

    책 클래스 만들기 1. 멤버 변수 선언 책 이름, 작가, 총 페이지를 멤버변수로 선언 private 접근제어 지시자를 이용하여 같은 클래스 내부에서만 접근 가능하게 설계 private String title; private String auth

    stunote.tistory.com

    2 - 3. 책스토어 프로그램 C R U D 만들기 - 필요 준비물 선언

    • 입력을 받기위해 Scanner 를 호출
    • C R U D 종료는 각각상수 선언
    • 배열에 저장된 마지막 인덱스 번호를 받기위해 int형 변수 선언후 배열 첫번째 인덱스 번호인 0으로 초기화

    Scanner sc = new Scanner(System.in);

    Book[] books = new Book[100];

    final String SAVE = "1";

    final String SEARCH_ALL = "2";

    final String SEARCH_TITLE = "3";

    final String DELETE_ALL = "4";

    final String UPDATE = "5";

    final String END = "0";

     

    int lastIndexNumber = 0;

    2 - 4 반복문 작성(반드시 한번은 실행)

    • 반복횟수가 정해저 있는 반복문이 아니기 때문애 while 문으로 작성
    • 메뉴선택 부분은 반복문 종료 까지 무한 반복
    • 앞서 초기화한 상수를 사용하기위해서 String 자료형으로 Scanner 사용

    while(true) {

    System.out.println("** 메뉴 선택 **");

    System.out.println("**1.저장 2.전체 조회 3.선택 조회 4.전체 삭제 5.수정 0.종료 **");

    System.out.println("----------------------------------------------------------");

    String selectedNumber = sc.nextLine();

    }

    2 - 5 반복문 작성(조건문)

    • 입력받은 숫자로 실행할 조건식을 선택 if문으로 작성
    • if문 조건식 은 앞서 입력받은 숫자로 초기화 되어 있는 상수명으로 선언(가독성을 높여주기 위함)
    • else문에는 다른 수를 입력 받았을때 다시입력해 달라는 문자를 출력하는 실행문 입력

    if (selectedNumber == SAVE) {

     

    } else if (selectedNumber == SEARCH_ALL) {

     

    } else if (selectedNumber == SEARCH_TITLE) {

     

    } else if (selectedNumber == DELETE_ALL) {

     

    }else if (selectedNumber == UPDATE) {

    }else if (selectedNumber == END) {

    } else {

    System.out.println("잘못 입력하셨습니다. 0 ~ 5번을 입력해 주세요");

    }

    2 - 6 함수 선언 ( SAVE )

    • main 클래스 밖에 함수 선언
    • 매개변수는 입력값을 받기위해 "Scanner",인스턴스를 사용하기 위해 "클래스 배열", 마지막 인덱스 번호를 return 하기위해 "int index"로 선언
    • 책이름 과 작가를 입력받기 위한 스캐너 변수를 String형으로 2번 선언
    • 배열에 책이름과, 작가를 저장
    • index 변수를 함수가 실행될때 마다 1씩 올라가게 설정하고 return 해줌  

    }// end of main

    public static int save(Scanner scanner, Book[] books, int Index) {

    System.out.println(">> 저장하기 <<");

    System.out.println("책 제목을 입력하세요");

    String bookTitle = scanner.nextLine();

    System.out.println("저자 이름을 입력하세요");

    String bookAuthor = scanner.nextLine();

    Book book = new Book(bookTitle, bookAuthor);

    books[Index] = book;

    Index++;

    System.out.println(bookTitle + "책을 생성 했습니다");

    return Index;

    }

    2 - 7 함수 사용 ( SAVE)

    • 처음 선언한 "lastIndexNumber"에 return 값을 저장 하기위해 변수를 "lastIndexNumber"로 선언
    • save 함수 사용과 매개변수를(스캐너 함수, 클래스 배열 명, lastIndexNumber로 설정)

    if (selectedNumber == SAVE) {

    lastIndexNumber = save(sc, books, lastIndexNumber);

    }

    2 - 8 함수 선언 (SEARCH_ALL)

    • 저장된 모든 책을 검색하는 함수 작성
    • 매개변수는 조회하기 위한 클래스 배열로 선언
    • 전체조회를 위해 배열을 길이만큼 반복하는 반복문 작성
    • 클래스 배열내에 저장된것이 존재할때만 실행할수 있게 조건문 작성 ( 방어적 코드 )

    public static void searchAll(Book[] books) {

    System.out.println(">> 전체 조회 하기 << ");

    for(int i = 0; i < books.length; i++) {

    if(books[i] != null) {

    books[i].showInfo();

    System.out.println("----------");

            }

        }

    }

    2 - 9 함수 사용 (SEARCH_ALL)

    • 매개변수는 클래스 배열 변수명인 "books" 로 설정 하고 함수 선언

    else if (selectedNumber == SEARCH_ALL) {

    searchAll(books);

    }

    2 - 10 함수 선언 (SEARCH_TITLE)

    • 책제목을 입력받고 입력받은 책제목과 같은 제목을 가진 책이 있다면 책 정보를 보여주는 함수
    • 반복문을 사용해 배열내 모든 index를 확인하는 코드
    • 방어적 코드 작성을 위해 이중 조건문 작성
    • .equals을 활용하여 책제목 비교
    • 책을 찾을시 반복시킬 필요 없으므로 break문으로 반복문 종료

    public static void searchTitle(Scanner scanner, Book[] books) {

    System.out.println(">> 선택 조회하기 <<");

    String bookTitle = scanner.nextLine();

    for (int i = 0; i < books.length; i++) { // 방어적 코드 작성

    if (books[i] != null) {

    // "책제목".equals("사용자가 입력한 값)

    if (books[i].getTitle().equals(bookTitle)) {

    // 같은책 제목이 존재 한다.

    books[i].showInfo();

    break; // 여기서는 선택 조회라 데이터를 찾았다면 굳이 모든 반복문을 동작 시킬 필요가 없다

            }

          }

     

        }

    }

    2 - 10 함수 사용(SEARCH_TITLE)

    • 매개변수는 스캐너 변수명  "sc" 와 클래스 배열 변수명인 "books" 로 설정 

    else if (selectedNumber == SEARCH_TITLE) {

    searchTitle(sc, books);

    }

    2 - 11 함수 선언(DELETE_ALL)

    • 클래스 배열에 저장된 모든 데이터 삭제
    • 반복문의 사용해 클래스 배열 모든 주소값을 참조하는 방식
    • 방어적 코드 작성을 위해 반복문내 조건문 작성

    public static void deleteAll(Book[] books) {

    System.out.println(">> 전체 삭제 <<");

    for (int i = 0; i < books.length; i++) {

    if (books[i] != null) {

    books[i] = null;

          }

        }

    }

    2 - 12 함수 사용(DELETE_ALL)

    • 매개변수는 클래스 배열 변수명 "books"로 설정한후 함수 선언

    else if (selectedNumber == DELETE_ALL) {

    deleteAll(books);

    }

    2 - 13 함수 선언(UPDATE)

    • 책제목을 입력받고 입력받은 책제목과 같은 제목을 가진 책이 있다면 해당 책 정보를 수정하는 함수
    • 반복문을 사용해 배열내 모든 index를 확인하는 코드
    • 방어적 코드 작성을 위해 반복문내에 조건문 작성
    • .equals을 활용하여 책제목 비교
    • boolean 데이터 타입을 이용해 책을 찾으면 true 로 초기화
    • 반복문 종료후 boolean 데이터 타입 = flase 일때 책이 없어요 출력

    public static void upDate(Scanner scanner, Book[] books) {

    System.out.println("수정");

    System.out.println("수정할 책을 검색 하세요");

    String bookTitle = scanner.nextLine();

    // 0 , 1 ... 5

    // 4 --> 책없

    // 5 --> 책없

    boolean isFind = false;

    for (int i = 0; i < books.length; i++) {

    if (books[i] != null) {

    if (books[i].getTitle().equals(bookTitle)) {

    isFind = true;

    System.out.println("무엇을 수정하시겠 습니까? 1번: 제목 2번 작가:");

    String upDateNumber = scanner.nextLine();

    if (upDateNumber.equals("1")) {

    System.out.println("변경할 제목을 입력해 주세요 :");

     

    String upDateBookTitle = scanner.nextLine();

    books[i].setTitle(upDateBookTitle);

    } else if (upDateNumber.equals("2")) {

    System.out.println("변경할 작가이름을 입력해주세요");

     

    String upDateAuthor = scanner.nextLine();

    books[i].setAuthor(upDateAuthor);

    }

    }

    }

    }

    if(isFind == false) {

    System.out.println("찾는 책이 없어요 ~ ");

    }

     

    }

    2 - 14 함수 사용(UPDATE)

    • 매개변수는 스캐너 변수명  "sc" 와 클래스 배열 변수명인 "books" 로 설정

    else if (selectedNumber == UPDATE) {

    upDate(sc, books);

    }

    2 - 15 반복문 종료(END)

    • 종료를 위해  boolean자료형 선언후 해당 자료형에 true를 초기화시키고 while문에 true 를 해당 변수로 변경

    boolean flag = true;

    while (flag)

    • END 선택시 조건문에 지정한 변수를 false로 변경시켜 반복문 종료

    else if (selectedNumber == END) {

    flag = false;

    }

    'Java' 카테고리의 다른 글

    [Java] 상속  (0) 2023.08.22
    [Java] Class 만들기  (0) 2023.08.21
    [Java] 배열  (0) 2023.08.21
    [Java] 싱글톤 패턴  (0) 2023.08.18
    [Java] static 변수, static 메소드  (0) 2023.08.17
Designed by Tistory.