본문 바로가기
[JAVA]/[자바 기초]

[자바 기초] 책 스토어 프로그램 만들어보기 C R U D

by 북방바다코끼리표범 2023. 8. 4.

 

💡 배웠던 부분을 활용해서 CRUD 기능을 구현하는 프로그램을 만들어 보자. 

1. 배열 활용 
2. Scanner 활용 
3. static 메서드 활용 
4. 다른 패키지에 존재하는 Book 클래스 활용 
5. 접근 제어 지시자 
6. 객체와 객체간에 상호 작용

코드 작성

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) {
		
		// 준비물 
		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";
		
		boolean flag = true; 
		
		
		while(flag) {
			System.out.println("** 메뉴 선택 **");
			System.out.println("1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0. 종료");
			String selctedNumber = sc.nextLine();
			
			if(selctedNumber.equals(END)) {
				flag = false;
			} else if(selctedNumber.equals(SAVE)) {
				
			} else if(selctedNumber.equals(SEARCH_ALL)) {
				
			} else if(selctedNumber.equals(SEARCH_TITLE)) {
				
			} else if(selctedNumber.equals(DELETE_ALL)) {
				
			} else if(selctedNumber.equals(UPDATE)) {
				
			}
			
		} // end of while
		
		System.out.println("프로그램이 종료 되었습니다.");
		
	} // end of main 
	
} // end of class

 

기능 구현하기

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.종료
------------------------------------
1
>> 저장하기 <<
책 제목을 입력하세요
난중일기
저자 이름을 입력하세요
이순신
난중일기 책을 생성 했습니다.
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
2
>> 전체 조회하기 <<
>>> 책 정보 <<<
제목 : 홍길동전
작가 : 허균
--------------------
--------------
>>> 책 정보 <<<
제목 : 사피엔스
작가 : 유발하라리
--------------------
--------------
>>> 책 정보 <<<
제목 : 난중일기
작가 : 이순신
--------------------
--------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
3
>> 선택 조회하기 <<
책 제목을 입력하세요
난중일기
>>> 책 정보 <<<
제목 : 난중일기
작가 : 이순신
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
5
>> 수정하기 <<
수정할 책 제목을 입력하세요
홍길동전
>>> 책 정보 <<<
제목 : 홍길동전
작가 : 허균
--------------------
책 제목을 수정해주세요
춘향전
저자 이름을 수정해주세요
허균
춘향전 으로 책을 수정 했습니다.
===============================
>>> 책 정보 <<<
제목 : 춘향전
작가 : 허균
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
3
>> 선택 조회하기 <<
책 제목을 입력하세요
춘향전
>>> 책 정보 <<<
제목 : 춘향전
작가 : 허균
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------
4
>> 전체 삭제하기 <<
>>> 책 정보 <<<
제목 : null
작가 : null
--------------------
>>> 책 정보 <<<
제목 : null
작가 : null
--------------------
>>> 책 정보 <<<
제목 : null
작가 : null
--------------------
** 메뉴 선택 **
1.저장 2.전체조회 3.선택조회 4.전체삭제 5.수정 0.종료
------------------------------------

 

 

'[JAVA] > [자바 기초]' 카테고리의 다른 글

[자바 기초] 상속 활용하기  (0) 2023.08.08
[자바 기초] 상속  (0) 2023.08.07
[자바 기초] 배열  (0) 2023.08.04
[자바 기초] static  (0) 2023.08.03
[자바 기초] C R U D 의 개념  (0) 2023.08.02