도서관 책을 추가, 조회, 수정, 삭제를 할 수 있는 도서관 시스템을 만들었다.
이번에 3개의 클래스를 만들어서 간단하게 구현해보았다. 각 클래스의 역할은 다음과 같다.
package com.oop12;
public class Book {
private String title;
private String author;
private int totalPage;
private 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;
}
public int getTotalPage() {
return totalPage;
}
public String getAuthor() {
return author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void setAuthor(String author) {
this.author = author;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public void showInfo() {
System.out.println("제목 : " + title);
System.out.println("저자 : " + author);
System.out.println("총 페이지 수 : " + totalPage);
}
}
package com.oop12;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Library {
private List<Book> saveBookData = new ArrayList<>();
private Scanner scan = new Scanner(System.in);
public boolean checkMessage() {
String check;
while (true) {
System.out.print(" (Y/N) : ");
check = scan.next();
if (check.equalsIgnoreCase("Y")) {
return true;
} else if (check.equalsIgnoreCase("N")) {
return false;
} else {
System.out.println("Y 또는 N이 아닙니다 다시 시도해주세요.");
}
}
}
public void sampleBookAdd(String title, String author, int totalPage){
Book book = new Book(title, author, totalPage);
saveBookData.add(book);
}
public void addSampleBooks() {
sampleBookAdd("프린세스전설", "김근호", 100);
sampleBookAdd("무공남김이파업니다", "김지명", 300);
sampleBookAdd("흐르는강물처럼", "파울로코엘료", 250);
sampleBookAdd("리딩으로리드하라", "이지성", 420);
sampleBookAdd("사피엔스", "유발하라리", 650);
}
public void addBook() {
String title;
String author;
int totalPage;
while(true) {
System.out.print("추가할 제목을 입력해주세요. : ");
title = scan.next();
System.out.print("책의 저자를 입력해주세요. : ");
author = scan.next();
System.out.print("책의 총 페이지를 입력해주세요. : ");
totalPage = scan.nextInt();
System.out.print("추가하시겠습니까?");
if (checkMessage()){
Book book = new Book(title, author, totalPage);
saveBookData.add(book);
System.out.println("책이 " + saveBookData.size() + "번 index에 추가 되었습니다.");
System.out.println("계속 추가하시겠습니까?");
if (!checkMessage()){
break;
}
}else {
break;
}
}
}
public void searchBook() {
for (int i = 0; i < saveBookData.size(); i++) {
System.out.printf(">>> %d번 책 정보 <<<\n", (i + 1));
saveBookData.get(i).showInfo();
System.out.println("======================");
}
}
public void updateBookName(int choose) {
System.out.print("수정할 제목을 입력해주세요 : ");
String changeName = scan.next();
System.out.print("수정하시겠습니까? ");
if (checkMessage()) {
System.out.println("성공적으로 수정 완료되었습니다.");
saveBookData.get(choose - 1).setTitle(changeName);
}else {
System.out.println("취소되었습니다.");
}
}
public void updateBookAuthor(int choose) {
System.out.print("수정할 저자명을 입력해주세요 : ");
String changeName = scan.next();
System.out.print("수정하시겠습니까? ");
if (checkMessage()) {
System.out.println("성공적으로 수정 완료되었습니다.");
saveBookData.get(choose - 1).setAuthor(changeName);
}else {
System.out.println("취소되었습니다.");
}
}
public void updateBookTotalPage(int choose) {
int changePage = 0;
while (true) {
System.out.print("수정할 페이지를 입력해주세요 : ");
changePage = scan.nextInt();
if (changePage <= 0) {
System.out.println("세상에 0 페이지인 책이 어디있습니까 휴먼");
continue;
}
break;
}
System.out.print("수정하시겠습니까? ");
if (checkMessage()) {
System.out.println("성공적으로 수정 완료되었습니다.");
saveBookData.get(choose - 1).setTotalPage(changePage);
}else {
System.out.println("취소되었습니다.");
}
}
public void updateBook() {
int choose = 0;
while (true) {
System.out.println("수정할 책번호를 골라주세요.");
System.out.println("====================");
searchBook();
System.out.println("====================");
System.out.print("책 번호 : ");
choose = scan.nextInt();
if (choose <= 0 || choose > saveBookData.size()) {
System.out.println("저장된 책목록에 없는 번호입니다.");
continue;
}
break;
}
while (true) {
System.out.println("1. 제목\n2. 저자\n3. 페이지 수\n4. 전체수정\n0. 취소");
System.out.print("수정할 부분을 선택해주세요. : ");
int menuChoose = scan.nextInt();
if (menuChoose == 1) {
updateBookName(choose);
} else if (menuChoose == 2) {
updateBookAuthor(choose);
} else if (menuChoose == 3) {
updateBookTotalPage(choose);
} else if (menuChoose == 4) {
updateBookName(choose);
updateBookAuthor(choose);
updateBookTotalPage(choose);
} else if (menuChoose == 0) {
System.out.println("이전 화면으로 돌아갑니다.");
return;
} else {
System.out.println("없는 기능입니다. 다시 시도해주세요.");
continue;
}
break;
}
}
public void deleteBook() {
int choose = 0;
while (true) {
System.out.println("삭제할 책번호를 골라주세요.");
System.out.println("====================");
searchBook();
System.out.println("====================");
System.out.print("책 번호 : ");
choose = scan.nextInt();
if (choose <= 0 || choose > saveBookData.size()) {
System.out.println("저장된 책목록에 없는 번호입니다.");
continue;
}
break;
}
System.out.print("정말로 삭제하시겠습니까?");
if (checkMessage()) {
System.out.println("정상적으로 삭제되었습니다.");
saveBookData.remove(choose - 1);
}
}
}
package com.oop12;
import java.util.Scanner;
public class UserInterface {
public static void main(String[] args) {
Library library = new Library();
Scanner scan = new Scanner(System.in);
library.addSampleBooks();
System.out.println("도서관에 오신걸 환영합니다.");
while (true) {
System.out.println("1. 책 추가\n2. 등록된 책 조회\n3. 책 정보 수정\n4. 책 삭제\n0. 프로그램 종료");
System.out.print("원하시는 메뉴를 선택해주세요. : ");
int menuChoose = scan.nextInt();
if (menuChoose == 1) {
library.addBook();
} else if (menuChoose == 2) {
library.searchBook();
} else if (menuChoose == 3) {
library.updateBook();
} else if (menuChoose == 4) {
library.deleteBook();
} else if (menuChoose == 0) {
System.out.println("프로그램을 종료합니다.");
return;
} else {
System.out.println("없는 기능입니다. 다시 시도해주세요.");
}
}
}
}
점점 클래스로 코드짜는게 안정화가 되어가고 있는 느낌이다.