본문으로 바로가기

배열에 활용(도서관리프로그램)

category Java 2024. 4. 22. 17:47

 

package basic.ch15;

public class BooTest {

	public static void main(String[] args) {
		
		// 배열이란 - 연관된 데이터를 하나의 변수의 통으로 관리하고 싶다면 - 자료구조 
		// 배열을 사용할때 반드시 크기가 지정되어야 한다. 
		Book[] books = new Book[10]; // 배열에 메모리 공간 선언 
		
		books[0] = new Book("플러터UI실전", "김근호");
		books[1] = new Book("무궁화꽃이피었습니다", "김진명");
		books[2] = new Book("흐르는강물처럼", "파울로코엘료");
		books[3] = new Book("리딩으로리드하라", "이지성");
		books[4] = new Book("사피엔스", "유발하라리");
		books[9] = new Book("홍길동전", "허균");
		
		// 배열은 반복문과 함께 많이 활용된다. 
		// 배열에 크기와 요소에 크기는 꼭 동일한것은 아니다. 
		
		// books[3]  --> Book
		//System.out.println(books[3].getTitle());
		//System.out.println(books[3].getAuthor());
		
		// System.out.println(books[5].getTitle()); <-- null pointer 에러 
		
		for(int i = 0; i < books.length; i++) {
			// 방어적 코드를 작성해주어야 한다. 
			if(books[i] != null) {
				System.out.println(books[i].getTitle());
				System.out.println(books[i].getAuthor());
				System.out.println("---------------------");
			}
		}

	} // end of main 

} //end of class

 

 

 

package basic.ch15;

import java.util.Scanner;

/**
 * author - 김근호 
 * 모든 프로그래밍의 기본은 C R U D 이다. 
 */
public class MyBookStore {

	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_BY_TITLE = "3";
		final String DELETE_ALL = "4";
		final String END = "0";
		boolean flag = true; 
		
		while(flag) {
			System.out.println("** 메뉴 선택 ** ");
			System.out.println("1.저장 2.전체조회 3.선택조회 4.전체삭제 0.프로그램 종료");
			// 문자열 + 다음줄로 이동 처리 
			String selectedNumber = sc.nextLine();
			System.out.println("selectedNumber : " + selectedNumber);
			
			if(selectedNumber.equals(SAVE)) {
				System.out.println(">> 저장 하기 << ");
				
			} else if(selectedNumber.equals(SEARCH_ALL)) {
				System.out.println(">> 전체 조회 하기  << ");
				
			} else if(selectedNumber.equals(SEARCH_BY_TITLE)) {
				System.out.println(">> 선택 조회 하기  << ");
				
			} else if(selectedNumber.equals(DELETE_ALL)) {
				System.out.println(">> 전체 삭제 하기  << ");
				
			} else if(selectedNumber.equals(END)){
				System.out.println(">> 프로그램 종료 << ");
				flag = false; 
			} else {
				System.out.println(">> 잘못된 선택 입니다.  << ");
				
			}
			
		}
		
		
 
	} // end of main 

} // end of class

 

 

package basic.ch15;

import java.util.Scanner;

/**
 * author - 김근호 모든 프로그래밍의 기본은 C R U D 이다.
 */
public class MyBookStore {

	static int LAST_INDEX_NUMBER = 0;

	public static void main(String[] args) {

		// 준비물
		Scanner sc = new Scanner(System.in);
		// 배열 선언
		Book[] books = new Book[100];

		// 샘플 데이터 만들어 놓기
		books[0] = new Book("플러터UI실전", "김근호");
		books[1] = new Book("무궁화꽃이피었습니다", "김진명");
		books[2] = new Book("흐르는강물처럼", "파울로코엘료");
		books[3] = new Book("리딩으로리드하라", "이지성");
		books[4] = new Book("사피엔스", "유발하라리");
		LAST_INDEX_NUMBER = 5;

		final String SAVE = "1";
		final String SEARCH_ALL = "2";
		final String SEARCH_BY_TITLE = "3";
		final String DELETE_ALL = "4";
		final String END = "0";
		boolean flag = true;

		while (flag) {
			System.out.println("** 메뉴 선택 ** ");
			System.out.println("1.저장 2.전체조회 3.선택조회 4.전체삭제 0.프로그램 종료");
			// 문자열 + 다음줄로 이동 처리
			String selectedNumber = sc.nextLine();
			if (selectedNumber.equals(SAVE)) {
				System.out.println(">> 저장 하기 << ");
				save(sc, books);

			} else if (selectedNumber.equals(SEARCH_ALL)) {
				System.out.println(">> 전체 조회 하기  << ");
				readAll(books);
			} else if (selectedNumber.equals(SEARCH_BY_TITLE)) {
				System.out.println(">> 선택 조회 하기  << ");
				readByTitle(sc, books);
			} else if (selectedNumber.equals(DELETE_ALL)) {
				System.out.println(">> 전체 삭제 하기  << ");
				deleteAll(books);
			} else if (selectedNumber.equals(END)) {
				System.out.println(">> 프로그램 종료 << ");
				flag = false;
			} else {
				System.out.println(">> 잘못된 선택 입니다.  << ");

			}
		}

	} // end of main


	// 전체 조회 하기 
	public static void readAll(Book[] books) {
		System.out.println("-----전체 조회하기-----");
		for (int i = 0; i < books.length; i++) {
			// 방어적 코드 작성
			if (books[i] != null) {
				System.out.println(books[i].getTitle() + ", " + books[i].getAuthor());
			}
		}
	}

	// 전체 삭제하기
	public static void deleteAll(Book[] books) {
		System.out.println("-----전체 삭제하기-----");
		for (int i = 0; i < books.length; i++) {
			// Object --> null
			books[i] = null;
		}
	}

	// 저장하기(하나의 북 객체를 저장)
	public static void save(Scanner sc, Book[] books) {
		System.out.println("-----저장 하기 -----");
		System.out.println("책의 제목을 입력 하세요");
		String bookTitle = sc.nextLine();
		System.out.println("책의 저자를 입력 하세요");
		String bookAuthor = sc.nextLine();
		Book book = new Book(bookTitle, bookAuthor);

		if (LAST_INDEX_NUMBER >= books.length) {
			System.out.println("더이상 책을 저장할 공간이 없습니다.");
			return;
		}

		// [0] <--
		// [1] <--
		// [2] <--
		// [3] <-- null = new Book(bookTitle, bookAuthor)
		// [4] <-- null = new Book(bookTitle, bookAuthor)
		for (int i = 0; i < books.length; i++) {
			if (books[i] == null) {
				books[i] = book;
				LAST_INDEX_NUMBER++; // 요소의 갯수로 사용해 보자
				break;
			}
		}
		System.out.println("책이 저장 되었습니다");
	}
	
	// 선택 조회 
	public static void readByTitle(Scanner sc, Book[] books) {
		System.out.println("----- 선택 조회 하기 ----");
		System.out.println(">>> 책 제목을 입력해주세요 <<< ");
		String bookTitle = sc.nextLine();
		boolean isFind = false; 
		// 사용자가 입력한 책 제목 
		// books 전부 조사  books[0] --> 객체 --> 객체.getTitle()
		// 문자열 --> equals
		// books[0].getTitle().equals()  // 배열안에 객체가 없다면 --> null pointer --> 방어적 코드 
		for(int i = 0; i < books.length; i++) {
			// 방어적 코드 작성  
			if(books[i] != null) {
				if(books[i].getTitle().equals(bookTitle)) {
					System.out.println(books[i].getTitle() + ", " + books[i].getAuthor());
					isFind = true; 
					break;
				}
			}
		}
		
		if(isFind == false) {
			System.out.println("해당 제목에 책은 존재하지 않습니다");
		} 
	}

} // end of class

 

'Java' 카테고리의 다른 글

메서드 오버로딩  (0) 2024.04.23
전화번호관리 프로그램 만들기  (0) 2024.04.22
배열에 대해서 알아 보자  (0) 2024.04.22
POWER JAVA 2장 Programming 1~4번 문제  (0) 2024.04.19
POWER JAVA 2장 예제) 2-11  (0) 2024.04.19