Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions src/Book.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

public class Book {
private String bookname;
private String author;
private String isbn;
private int total_books;
private int availablebooks;

//책의 속성을 입력하기 위한 코드
public void setBook(String bookname, String author, String isbn, int total_Books,boolean loan) {
this.bookname = bookname;
this.author = author;
this.isbn = isbn;
this.total_books = total_Books;
this.availablebooks = total_Books;
}

//책 이름 반환
public String getBookname() {
return bookname;
}

//책 저자 반환
public String getAuthor() {
return author;
}

//책 ISBN번호 반환
public String getIsbn() {
return isbn;
}

//책 전체 갯수 반환
public int getTotal_books() {
return total_books;
}

//대출 가능한 책 수 반환
public int getAvailablebooks() {
return availablebooks;
}

//책 갯수 추가
public void addBook(int count) {
this.total_books += count;
this.availablebooks += count;
}

//책 대출, 대출이 된다면 대출 가능한 책 수가 1씩 빠진다.
public boolean borrowBook() {
if(availablebooks > 0) {
availablebooks--;
return true;
}
return false;
}

//책 반납, 반납이 되면 대출 가능한 책 수가 1씩 더해진다
public boolean returnBook() {
if(availablebooks < total_books) {
availablebooks++;
return true;
}
return false;
}
}
105 changes: 105 additions & 0 deletions src/Library.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
public class Library {
private String libraryName;
private Book book1;
private Book book2;
private Book book3;

private User bamdol;
private User iro;

public void setUsers(User bamdol, User iro) {
this.bamdol = bamdol;
this.iro = iro;
}

//도서관 제목을 받음
public Library(String libraryName) {
this.libraryName = libraryName;
}

//첫번째 책의 속성을 입력
public void addBook1() {
this.book1 = new Book();
this.book1.setBook("자바의 정석","남궁성","9788994492032",1,true);
}

//두번째 책의 속성을 입력
public void addBook2() {
this.book2 = new Book();
this.book2.setBook("객체지향의 사실과 오해", "조영호","9788998139766",1,true);
}

//세번째 책의 속성을 입력
public void addBook3() {
this.book3 = new Book();
this.book3.setBook("모던 자바 인 액션", "라울 게이브리얼 우르마", "9791162242025",1,true);
}

//책 제목으로 해당하는 책 찾기
public Book findBook(String bookname) {
if(book1.getBookname() == bookname) { return book1;}
if(book2.getBookname() == bookname) { return book2;}
if(book3.getBookname() == bookname) { return book3;}
return null;
}

//대출자의 이름을 출력하는 메소드
public void printBorrower(String bookname) {
if(bamdol.checkBorrow(bookname)) System.out.print(bamdol.getName() + ",");
if(iro.checkBorrow(bookname)) System.out.print(iro.getName() + ",");
}
//도서관에 있는 책 모두 조회, availablebooks가 0보다 크다면 대출 가능한 책이 있으므로 대출 가능합니다를 출력
//아니라면 대출이 불가능합니다. 라는 메세지를 출력
public void printUnavailableBook() {
System.out.print("대출 불가능한 책 : ");
if(book1.getAvailablebooks()==0) {
System.out.print(book1.getBookname() + ",");
System.out.print(book1.getAuthor() + ",");
System.out.print(book1.getIsbn() + ",");
printBorrower("자바의 정석");
System.out.println("대출이 불가능합니다.");
}

if(book2.getAvailablebooks()==0) {
System.out.print(book2.getBookname() + ",");
System.out.print(book2.getAuthor() + ",");
System.out.print(book2.getIsbn() + ",");
printBorrower("객체지향의 사실과 오해");
System.out.println("대출이 불가능합니다.");
}

if(book3.getAvailablebooks()==0) {
System.out.print(book3.getBookname() + ",");
System.out.print(book3.getAuthor() + ",");
System.out.print(book3.getIsbn() + ",");
printBorrower("모던 자바 인 액션");
System.out.println("대출이 불가능합니다.");
}
}
public void printavailableBook() {
System.out.print("대출 가능한 책 : ");
if(book1.getAvailablebooks() > 0) {
System.out.print(book1.getBookname() + ",");
System.out.print(book1.getAuthor() + ",");
System.out.print(book1.getIsbn() + ",");
printBorrower("자바의 정석");
System.out.println("대출이 가능합니다.");
}

if(book2.getAvailablebooks() > 0) {
System.out.print(book2.getBookname() + ",");
System.out.print(book2.getAuthor() + ",");
System.out.print(book2.getIsbn() + ",");
printBorrower("객체지향의 사실과 오해");
System.out.println("대출이 가능합니다.");
}

if(book3.getAvailablebooks() > 0) {
System.out.print(book3.getBookname() + ",");
System.out.print(book3.getAuthor() + ",");
System.out.print(book3.getIsbn() + ",");
printBorrower("모던 자바 인 액션");
System.out.println("대출이 가능합니다.");
}
}
}
49 changes: 29 additions & 20 deletions src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,74 @@ public static void main(String[] args) {
// 자바의 정석 저자 남궁성 ISBN 9788994492032
// 객체지향의 사실과 오해 저자 조영호 ISBN 9788998139766
// 모던 자바 인 액션 저자 라울 게이브리얼 우르마 ISBN 9791162242025


Library library = new Library("부산소프트웨어마이스터고등학교 도서관");
library.addBook1();
library.addBook2();
library.addBook3();
// TODO-2 이용자 생성
// 도서관 이용자 이밤돌을 생성합니다.

User bamdol = new User("이밤돌");
// 도서관 이용자 김이로를 생성합니다.


User iro = new User("iro");
//도서관에 이용자를 추가
library.setUsers(bamdol, iro);
// TODO-3 도서 추가
// 도서관에 모던 자바 인 액션 저자 라울-게이브리얼-우르마 ISBN 9791162242025 이 한권 더 들어옵니다.

Book modern = library.findBook("모던 자바 인 액션");
modern.addBook(1);

// TODO-4 도서 대출
// 이밤돌이 도서관에서 자바의 정석을 대출합니다.

bamdol.borrowBook(library.findBook("자바의 정석"));
// 이밤돌이 도서관에서 모던 자바 인 액션을 대출합니다.

bamdol.borrowBook(library.findBook("모던 자바 인 액션"));
// 김이로가 도서관에서 모던 자바 인 액션을 대출합니다.
iro.borrowBook(library.findBook("모던 자바 인 액션"));


// TODO-5 이밤돌 도서 초과 대출 시도
// 이밤돌이 도서관에서 객체지향의 사실과 오해를 대출합니다.

bamdol.borrowBook(library.findBook("객체지향의 사실과 오해"));
// 대출은 정상적으로 처리되지 않고, 최대 2권이 책까지만 대출할 수 있다는 메시지를 출력합니다.

//유저 클래스에 있는 borrowBook에서 출력도 같이 됩니다.

// TODO-6 이밤돌 도서 반납
// 이밤돌이 도서관에 자바의 정석을 반납합니다.


bamdol.returnBook(library.findBook("자바의 정석"));
// TODO-7 이밤돌 도서 대출
// 이밤돌이 도서관에서 객체지향의 사실과 오해를 대출합니다.

bamdol.borrowBook(library.findBook("객체지향의 사실과 오해"));

// TODO-8 김이로 이미 대출된 도서 대출 시도
// 김이로가 도서관에서 객체지향의 사실과 오해를 대출합니다.

iro.borrowBook(library.findBook("객체지향의 사실과 오해"));
// 이밤돌이 이미 대출했으므로 대출은 정상적으로 처리되지 않고, 다른 사람이 대출한 책은 대출할 수 없다는 메시지를 출력합니다.

//유저 클래스에 있는 borrowBook에서 출력도 같이 됩니다.

// TODO-9 이밤돌 도서 반납
// 이밤돌이 도서관에 객체지향의 사실과 오해를 반납합니다.

bamdol.returnBook(library.findBook("객체지향의 사실과 오해"));

// TODO-10 김이로 도서 대출
// 김이로가 도서관에서 객체지향의 사실과 오해를 대출합니다.

iro.borrowBook(library.findBook("객체지향의 사실과 오해"));

// TODO-11 김이로 대출하지 않은 책 반납 시도
// 김이로가 도서관에 자바의 정석 반납합니다.
iro.returnBook(library.findBook("자바의 정석"));

// 반납은 정상적으로 처리되지 않고, 대출하지 않은 책은 반납할 수 없다는 메시지를 출력합니다.

//유저 클래스에 있는 returnBook에서 출력도 같이 됩니다.

// TODO-12 전체 조회
// 도서관에서 도서 목록을 조회합니다.

//대출이 불가능한 책 조회
library.printUnavailableBook();
//대출이 가능한 책 조회
library.printavailableBook();
// 이밤돌이 본인이 대출한 도서를 조회합니다.

bamdol.printBorrowBook();
// 김이로가 본인이 대출한 도서를 조회합니다.
iro.printBorrowBook();
}
}
69 changes: 69 additions & 0 deletions src/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

public class User {
private String name;
private Book borrow_book = null;
private Book borrow_book2 = null;

//도서관 이용자 이름을 받음
public User(String name) {
this.name = name;
}

//이용자 이름을 반환
public String getName() {
return name;
}

//대출 여부를 판단, 빌릴 수 있으면 borrow_book이나 borrow_book2에 저장
//책을 2개 초과로 대출하려 할 시 메세지 출력, 다른 사람이 대출 중인 책을 대출하려해도 메세지 출력
public boolean borrowBook(Book book) { // 책 대출
if (borrow_book != null && borrow_book2 != null) {
System.out.println("책은 최대 두 권까지만 대출할 수 있습니다.");
return false;
}
if(book.borrowBook()) {
if(borrow_book == null) borrow_book = book;
else if(borrow_book2 == null) borrow_book2 = book;
return true;
}
else {
System.out.println("다른 사람이 대출 중인 책은 대출할 수 없습니다.");
return false;
}
}

//책 반납하는 코드
//borrow_book,borrow_book2에 책이 있다면 null이 되고 Book 클래스에 책 반납 코드가 실행됨(반납했으므로 대출 가능한 책 수가 늘어남)
//borrow_book,borrow_book2에 없는 책을 반납하려 하면 대출하지 않은 책은 반납할 수 없습니다.라는 메세지가 출력
public boolean returnBook(Book book) {
if (borrow_book == book) {
borrow_book = null;
book.returnBook();
return true;
}
else if(borrow_book2 == book) {
borrow_book2 = null;
book.returnBook();
return true;
}
else {
System.out.println("대출하지 않은 책은 반납할 수 없습니다.");
return false;
}
}

//이용자가 대출한 책을 조회
public void printBorrowBook() {
if (borrow_book != null) {
System.out.println(name + ":" + borrow_book.getBookname());
}
if (borrow_book2 != null) {
System.out.println(name + ":" + borrow_book2.getBookname());
}
}

//대출 여부 확인
public boolean checkBorrow(String bookname) {
return (borrow_book != null && borrow_book.getBookname().equals(bookname)) || (borrow_book2 != null && borrow_book2.getBookname().equals(bookname));
}
}