언어(Language)/Java

CURD기능 활용해서 책스토어 프로그램 만들어보기

송기동 2023. 8. 11. 12:40
728x90

C R U D 란 무엇일까?

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


Book 클래스

package ch09;

public class Book {

	private String title;
	private String author;
	private int totalPage;

	// 생성자 오버로딩
	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}

	public Book(String title, String author, int totalPage) {
		this(title, author);
		this.totalPage = totalPage;
	}

	// get, set 메서드
	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	// 기능
	public void showInfo() {
		System.out.println(">>>책정보<<<");
		System.out.println(">>>제목<<<" + this.title);
		System.out.println(">>>작가<<<" + this.author);
		System.out.println("--------------------");
	}
} // end of class

 

C R U D를 기능을 구현하고 실행해보기

package com.tenco.books;

import java.util.Scanner;

import ch09.Book;

/**
 * @author 송기동 책을 관리하는 프로그램 C R U D 기능을 구현해보자
 */
public class TencoBooks {

	public static void main(String[] args) {
		// 삭제는 null
		// 준비물
		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 AND = "0";

		boolean flag = true;
		// 마지막에 저장된 인덱스 번호를 기억해두자
		int lastIndexNumber = 0;

		// todo(앞으로 해야 할 일) 샘플 데이터 주후 삭제
		books[0] = new Book("홍길동전", "허균");
		books[1] = new Book("사피엔스", "유발하라리");
		lastIndexNumber = 2;

		while (flag) {
			// while 사용하자
			System.out.println("** 메뉴 선택 **");
			System.out.println("1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료");
			System.out.println("------------------------------------");
			String selectedNumber = sc.nextLine();

			if (selectedNumber.equals("0")) {
				flag = false;

			} else if (selectedNumber.equals(SAVE)) {
				lastIndexNumber = save(sc, books, lastIndexNumber);

			} else if (selectedNumber.equals(SEARCH_ALL)) {
				searchAll(books);

			} else if (selectedNumber.equals(SEARCH_TITLE)) {
				searchTitle(sc, books);

			} else if (selectedNumber.equals(DELETE_ALL)) {

				deleteAll(sc, books);

			} else if (selectedNumber.equals(UPDATE)) {

				update(sc, books);

			} else {
				System.out.println("잘못 입력했습니다. 다시 선택하세요.");
			}

		} // end of while
		System.out.println("프로그램 종료");
	} // end of main

	// 저장하는 기능 static 메서드로 만들어보기
	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;
	} // end of save

	// 전체 조회
	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("--------------");
			}
		}
	} // end of searchAll

	// 선택조회 - 책 제목으로 검색하기
	public static void searchTitle(Scanner scanner, Book[] books) {
		System.out.println(">> 선택 조회하기 <<");
		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)) {

					// 같은 책 제목이 존재한다 ! <- true
					books[i].showInfo();
					break; // 여기서는 선택조회라 데이터를 찾았다면 굳이 모든 반복문을 동작 시킬 필요가 없음

				}
			}
		}

	} // end of searchTitle

	// 전체삭제
	public static void deleteAll(Scanner scanner, Book[] books) {
		System.out.println(">> 전체 삭제하기 <<");
		for (int i = 0; i < books.length; i++) {
			if (books[i] != null) {
				books[i].setTitle(null);
				books[i].setAuthor(null);
				books[i].showInfo();
			}
		}
	} // end of deleteAll

	// 수정하기
	public static void update(Scanner scanner, Book[] books) {
		System.out.println(">> 수정하기 <<");
		System.out.println("수정할 책 제목을 입력하세요");
		String bookUpdate = scanner.nextLine();

		// 수정 --
		/// 검색한 녀셕이 어디에 존재하는가??? books[??] 몇번째 인덱스인지 알아야 한다.
		// 0 <---
		// 책
		// book[0] = new (); -- 1

		// book[0].setTitle(""); -- 2
		// book[0].setAuthor("") -- 2

		for (int i = 0; i < books.length; i++) {
			if (books[i] != null) {
				if (books[i].getTitle().equals(bookUpdate)) {
					books[i].showInfo();
					System.out.println("책 제목을 수정해주세요");
					String bookTitle = scanner.nextLine();
					books[i].setTitle(bookTitle);
					System.out.println("저자 이름을 수정해주세요");
					String bookAuthor = scanner.nextLine();
					books[i].setAuthor(bookAuthor);

					System.out.println(bookTitle + " 으로 책을 수정 했습니다.");
					System.out.println("===============================");

					books[i].getTitle().equals(bookTitle);

					// 같은 책 제목이 존재한다 ! <- true
					books[i].showInfo();
				}

			}
		}

	} // end of update

} // end of class

결과

** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
2
>> 전체 조회하기 <<
>>>책정보<<<
>>>제목<<<홍길동전
>>>작가<<<허균
--------------------
--------------
>>>책정보<<<
>>>제목<<<사피엔스
>>>작가<<<유발하라리
--------------------
--------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
1
>> 저장하기 <<
책 제목을 입력하세요
해리포터
저자 이름을 입력하세요
J.K 롤링
해리포터 책을 생성 했습니다.
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
5
>> 수정하기 <<
수정할 책 제목을 입력하세요
해리포터
>>>책정보<<<
>>>제목<<<해리포터
>>>작가<<<J.K 롤링
--------------------
책 제목을 수정해주세요
해리포터1
저자 이름을 수정해주세요
J.K 롤링1
해리포터1 으로 책을 수정 했습니다.
===============================
>>>책정보<<<
>>>제목<<<해리포터1
>>>작가<<<J.K 롤링1
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
3
>> 선택 조회하기 <<
책 제목을 입력하세요
해리포터1
>>>책정보<<<
>>>제목<<<해리포터1
>>>작가<<<J.K 롤링1
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
0
프로그램 종료
728x90