[Java] 배열 - 도서 정보 등록·조회·삭제 프로그램 구현

2023. 2. 8. 17:01·Java/Base
728x90
728x90

코드

#  Book 클래스

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(int totalPage, String title, String author) {
		this(title, author);
		this.totalPage = totalPage;
	}

	public int getTotalPage() {
		return this.totalPage; // 가독성을 높이려면 this
	}

	public String getTitle() {
		return this.title;
	}

	public String getAuthor() {
		return this.author;
	}
	
}

#  프로그램 설계

import java.util.Scanner;

public class BookStoreManager {

    public static void main(String[] args) {

        // 1. 저장 2. 전체 조회 3. 선택 조회 4. 전체 삭제 0. 종료

        // 도구 준비
        Scanner scanner = new Scanner(System.in);

        // 책 배열 
        Book[] books = new Book[100];

        // 메뉴 선택 변수
        String choice = null;

        // 임시로 책 제목과 작가명을 입력 받을 변수
        String tempTitle;
        String tempAuthor;

        // 상수 선언
        final String SAVE = "1";
        final String ALL_SHOW = "2";
        final String SELECT_SHOW = "3";
        final String ALL_DELETE = "4";
        final String BREAK = "0";

        // 프로그램 종료 여부를 판단할 변수 (true : 진행, false : 종료)
        boolean flag = true; 

        // 임시로 선택 조회에서 사용할 변수
        boolean temp = false; 

        // 프로그램 시작 //
        while (flag) {

            System.out.println("원하시는 기능이 무엇인가요?");
            System.out.println("1. 저장\t2. 전체조회\t3. 선택조회\t4. 전체삭제\t0. 종료");
            choice = scanner.nextLine();

            // 0. 종료 // 
            if (choice.equals(BREAK)) {
                flag = false;
                System.out.println("프로그램 종료");

            // 1. 저장 // 
            } else if (choice.equals(SAVE)) {
                System.out.println("1번, 책 저장을 선택하셨습니다.");
                System.out.println("책 제목을 입력해주세요.");
                tempTitle = scanner.nextLine(); // 임시 책 제목 저장
                System.out.println("작가명을 입력해주세요.");
                tempAuthor = scanner.nextLine(); // 임시 작가명 저장

                for (int i = 0; i < books.length; i++) {
                    // 기능 : 가장 처음 나오는 null 배열 공간을 찾아서,
                    // 그 공간에 tempTitle, tempAuthor 할당
                    if (books[i] == null) { 
                        books[i] = new Book(tempTitle, tempAuthor);
                        tempTitle = null; // 사용한 값은 null로 초기화
                        tempAuthor = null; // 사용한 값은 null로 초기화
                        break; // for 빠져 나오기
                    }
                }

            // 2. 전체 조회 //
            } else if (choice.equals(ALL_SHOW)) {
                System.out.println("2번, 전체 조회를 선택하셨습니다.");
                for (int i = 0; i < books.length; i++) {
                    if (books[i] != null) {
                        System.out.println(
                            (i + 1) + ". 책 제목 : " + books[i].getTitle() 
                            + ", 저자 : " + books[i].getAuthor());
                    }
                }

            // 3. 선택 조회 // 
            } else if (choice.equals(SELECT_SHOW)) {
                System.out.println("3번, 선택 조회를 선택하셨습니다.");
                System.out.println("조회할 책 제목을 입력해주세요.");
                tempTitle = scanner.nextLine();
                for (int i = 0; i < books.length; i++) {
                    // 방어적 코드
                    if (books[i] != null) {
                        if (books[i].getTitle().equals(tempTitle)) {
                            System.out.println(
                                "책 제목 : " + books[i].getTitle() 
                                + ", 저자 : " + books[i].getAuthor());
                            temp = true; // 검색한 책이 존재함을 의미함
                            break;
                        }
                    }
                } // end of for

                // 기능 : 입력한 제목에 해당하는 책이 존재하지 않는다고 알림 띄우기
                if (temp == false) {
                    System.out.println("책이 존재하지 않습니다.");
                }
                temp = false; // 임시 변수는 다시 false로 초기화

            // 4. 전체 삭제 //
            } else if (choice.equals(ALL_DELETE)) {
                System.out.println("4번, 전체 삭제를 선택하셨습니다.");
                for (int i = 0; i < books.length; i++) {
                    books[i] = null; // 참조 자료형의 기본값은 null
                } // end of for
                System.out.println("삭제가 완료되었습니다.");

            // 번호를 잘못 입력한 경우 //
            } else {
                System.out.println("번호를 잘못 입력하셨습니다.");
            }
            System.out.println("=================================="); // 구분선
        } // end of while

    } // end of main
} // end of class

 

실행

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] static 키워드  (0) 2023.02.09
[Java] this 키워드와 super 키워드  (0) 2023.02.08
[Java] 접근 제어 지시자와 get(), set() 메서드  (0) 2023.02.07
[Java] 객체와 클래스 3 : 생성자  (0) 2023.02.06
[Java] 객체와 클래스 2 : 메서드 (멤버 함수)  (0) 2023.02.06
'Java/Base' 카테고리의 다른 글
  • [Java] static 키워드
  • [Java] this 키워드와 super 키워드
  • [Java] 접근 제어 지시자와 get(), set() 메서드
  • [Java] 객체와 클래스 3 : 생성자
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    http
    HTML
    SQL
    C#
    git
    CSS
    typeScript
    오블완
    티스토리챌린지
    Wordpress
    개발일지
    jsp
    Swing
    cs
    면접
    php
    vuejs
    Hotkeys
    errorNote
    js
    tailwindcss
    Android
    SEO
    jQuery
    Codeigniter
    java
    SWAGGER
    SpringBoot
    zapier
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 배열 - 도서 정보 등록·조회·삭제 프로그램 구현
상단으로

티스토리툴바