- [Java] 34. 배열 활용 : 도서 관리 프로그램 만들기2024년 04월 22일
- Song hyun
- 작성자
- 2024.04.22.:10
728x90반응형34. 배열 활용 : 도서 관리 프로그램 만들기
1. Book 클래스를 만들고, 내부에 생성자/get 메서드/showInfo 메서드를 만들어보자.
2. BookTest 파일을 만들고,CRUD 형식에 맞추어 소스코드를 작성해보자.
(1) Book 클래스
package basic.ch15; public class Book { private int totalPage; private String title; private String author; // 생성자 public Book(String title, String author) { this.title=title; this.author=author; } // 생성자 오버로딩 public Book(String title, String author, int totalpPage) { this(title, author); this.totalPage=totalPage; } // getter 메서드 public int getPage() { return this.totalPage; } public String getTitle() { return this.title; } public String getAuthor() { return this.author; } // showInfo 메서드 public void showInfo() { System.out.println(">>>책 정보<<<"); System.out.println("제목 : "+title); System.out.println("저자 : "+author); System.out.println("총 페이지 수 : "+totalPage); } }
(2). TestBook 파일
package basic.ch15; import java.util.Scanner; 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("팔묘촌", "요코미조 세이시"); // 메뉴 생성-상수 선언 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)) { // String 비교할 땐 equals 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 // 1. 저장하기 public static void save(Scanner sc, Book[] books) { // 배열에 저장하려면, book[3]=new 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; } for(int i=0; i<books.length; i++) { if(books[i]==null) { books[i]=book; LAST_INDEX_NUMBER++; break; } } System.out.println(">> 저장이 완료되었습니다. <<"); } // 함수를 활용해보자. // 2. 전체 조회하기 public static void readAll(Book[] books) { // 모든 책을 보고 싶음->배열 활용 System.out.println("-----전체 조회하기-----"); if (books.length <= 0) { System.out.println("책이 하나도 없습니다."); } for (int i = 0; i < books.length; i++) { // 방어적 코드 if (books[i] != null) { System.out.println(books[i].getTitle() + "," + books[i].getAuthor()); } } } // 3. 선택 조회하기 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(bookTitle) //books[0].getTitle().equals() // ㄴ만약 배열 안에 객체가 없다면, null pointer exception이 발생할 수 있다. // 만약 사용자가 입력한 책 제목과 배열 요소 안에 title 값이 같다면 // 화면에 책 제목, 책 저자 이름을 출력하고 // 아니라면, 해당하는 책이 없습니다. 라는 문구를 출력하시오. for(int i=0; i<books.length; i++) { if(books[i]!=null) { if(books[i].getTitle().equals(bookTitle)) { System.out.println(" 책 제목 "+books[i].getTitle()); System.out.println(" 책 저자 "+books[i].getAuthor()); isFind=true; break; } } } if(isFind==false) { System.out.println("해당 제목의 책은 존재하지 않습니다."); } } // 4. 전체 삭제 메서드 public static void deleteAll(Book[] books) { System.out.println("-----전체 삭제하기-----"); for (int i = 0; i < books.length; i++) { books[i] = null; // 오브젝트 타입은 null을 넣어주면 삭제된다. } } } // end of class
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 36. 배열 활용: 랜덤 숫자 생성기 (0) 2024.04.22 [Java] 35. 배열 활용: 전화번호부 만들기 (0) 2024.04.22 [Java] 33. 배열의 길이와 요소 (0) 2024.04.22 [Java] 32. 자료구조와 배열 (0) 2024.04.22 [Java] 31. 버블 정렬 (0) 2024.04.19 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)