•
Book.java
package com.practice;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
public class Book {
// 속성:
// title: String
// isbn: String
// author: String
// year: int
// category: String
private String title;
private String isbn;
private String author;
private int year;
private String category;
public Book() {
}
public Book(String title, String isbn, String author, int year, String category) {
this.title = title;
this.isbn = isbn;
this.author = author;
this.year = year;
this.category = category;
}
@Override
public String toString() {
return "Book[" +
"title='" + title + '\'' +
", isbn='" + isbn + '\'' +
", author='" + author + '\'' +
", year=" + year +
", category='" + category + '\'' +
']';
}
}
Java
복사
•
BookManagementSystem.java
package com.practice;
import java.util.*;
public class BookManagementSystem {
private List<Book> books = new ArrayList<>();
private Set<String> bookIsbns = new HashSet<>();
private Map<String, Book> bookMap = new HashMap<>();
public void addBook(String title, String isbn, String author, int year, String category) {
if (bookIsbns.contains(isbn)) {
System.out.println("같은 ISBN이 존재합니다.");
return;
}
Book b = new Book(title, isbn, author, year, category);
books.add(b);
bookIsbns.add(isbn);
bookMap.put(isbn, b);
}
public void removeBook(String isbn) {
Book b = bookMap.get(isbn);
if (b != null) {
books.remove(b);
bookIsbns.remove(isbn);
bookMap.remove(isbn);
} else {
System.out.println("없는 책입니다.");
}
}
public void updateBook(String isbn, String newTitle, String newAuthor, int newYear, String newCategory) {
Book b = bookMap.get(isbn);
if (b != null) {
b.setTitle(newTitle);
b.setAuthor(newAuthor);
b.setYear(newYear);
b.setCategory(newCategory);
} else {
System.out.println("없는 책입니다.");
}
}
public void listBooks() {
for (Book b : books) {
System.out.println(b);
}
}
public void searchBook(String isbnOrTitle) {
Book b = bookMap.get(isbnOrTitle);
if (b != null) {
System.out.println("\n ISBN으로 검색한 결과입니다.");
System.out.println(b);
return;
}
for (Book book : books) {
if (book.getTitle().contains(isbnOrTitle)) {
System.out.println("\n 제목으로 검색한 결과입니다.");
System.out.println(book);
}
}
System.out.println("찾는 도서가 없습니다.");
}
}
Java
복사
•
BookExample.java
package com.practice;
import java.util.Scanner;
public class BookExample {
public static void main(String[] args) {
BookManagementSystem system = new BookManagementSystem();
Scanner sc = new Scanner(System.in);
boolean run = true;
while (run) {
System.out.print("1. 도서 추가 | 2. 도서 삭제 | 3. 도서 업데이트 | 4. 도서 목록조회 | 5. 도서 검색 | 6. 종료");
int input = sc.nextInt();
String isbn, title, author, category;
int year;
switch (input) {
case 1:
isbn = getTextInput("ISBN");
title = getTextInput("제목");
author = getTextInput("지은이");
year = Integer.parseInt(getTextInput("발행연도"));
category = getTextInput("카테고리");
system.addBook(title, isbn, author, year, category);
break;
case 2:
isbn = getTextInput("ISBN");
system.removeBook(isbn);
break;
case 3:
isbn = getTextInput("ISBN");
title = getTextInput("제목");
author = getTextInput("지은이");
year = Integer.parseInt(getTextInput("발행연도"));
category = getTextInput("카테고리");
system.updateBook(isbn, title, author, year, category);
break;
case 4:
system.listBooks();
break;
case 5:
String isbnOrTitle = getTextInput("ISBN 또는 제목");
system.searchBook(isbnOrTitle);
break;
case 6:
run = false;
break;
}
}
}
public static String getTextInput(String key) {
Scanner sc = new Scanner(System.in);
System.out.print(key + " 을/를 입력하세요");
return sc.nextLine();
}
}
Java
복사