Menu
CoddyTech

Sistem Peminjaman

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 57 dari 64.

challenge icon

Tantangan

Sedang

Dalam tantangan ini, kamu akan menambahkan fitur peminjaman ke sistem manajemen perpustakaan.

Edit library.py dan implementasikan method borrow_book dengan mengikuti komentar TODO.

File lainnya sudah disediakan dan dikunci:

  • book.py: class Book yang kamu buat pada tantangan sebelumnya
  • user.py: class User, yang menyimpan user_id, name, dan books_borrowed
  • driver.py: menjalankan skenario pengujian terhadap implementasimu

borrow_book(book_isbn, user_id) harus mengembalikan tepat satu dari: "Book not found", "User not found", "Book is not available", atau "Book borrowed successfully".

Coba sendiri

from book import Book
from user import User
from library import Library

# Penanganan kasus uji yang menyeluruh
test_case = input()

# Pengujian fungsi dasar
if test_case == "borrow_success":
    library = Library("Community Library")
    
    # Tambahkan buku dan pengguna
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    library.add_book(book)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Pinjam buku
    result = library.borrow_book("123456", "U001")
    print(result)
    print(f"Book available: {book.available}")
    print(f"Books borrowed by user: {len(user.books_borrowed)}")

elif test_case == "book_not_found":
    library = Library("Community Library")
    user = User("U001", "Alice")
    library.add_user(user)
    
    result = library.borrow_book("nonexistent", "U001")
    print(result)

elif test_case == "user_not_found":
    library = Library("Community Library")
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    library.add_book(book)
    
    result = library.borrow_book("123456", "nonexistent")
    print(result)
    
elif test_case == "book_not_available":
    library = Library("Community Library")
    
    # Tambahkan buku dan pengguna
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    book.available = False  # Buku sudah dipinjam
    library.add_book(book)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Coba pinjam buku yang tidak tersedia
    result = library.borrow_book("123456", "U001")
    print(result)

# Kasus khusus dan pengujian tambahan
elif test_case == "multiple_books":
    library = Library("Community Library")
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Buat beberapa buku
    books = [
        Book("Book 1", "Author 1", "111"),
        Book("Book 2", "Author 2", "222"),
        Book("Book 3", "Author 3", "333")
    ]
    
    for book in books:
        library.add_book(book)
    
    # Pinjam beberapa buku
    results = []
    for book in books:
        results.append(library.borrow_book(book.isbn, "U001"))
    
    for result in results:
        print(result)
    
    print(f"Total books borrowed: {len(user.books_borrowed)}")

elif test_case == "multiple_users":
    library = Library("Community Library")
    book = Book("Popular Book", "Famous Author", "999")
    library.add_book(book)
    
    # Buat beberapa pengguna
    users = [
        User("U001", "Alice"),
        User("U002", "Bob"),
        User("U003", "Charlie")
    ]
    
    for user in users:
        library.add_user(user)
    
    # Coba pinjam buku yang sama dengan pengguna yang berbeda
    result1 = library.borrow_book("999", "U001")
    result2 = library.borrow_book("999", "U002")  # Seharusnya gagal
    
    print(result1)
    print(result2)
    print(f"Book's borrower: {book.borrower.name}")

elif test_case == "return_book":
    library = Library("Community Library")
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    library.add_book(book)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Pinjam buku
    borrow_result = library.borrow_book("123456", "U001")
    print(borrow_result)
    
    # Periksa status buku
    print(f"Book available: {book.available}")
    print(f"Book borrower: {book.borrower.name}")
    print(f"User's borrowed books: {len(user.books_borrowed)}")
    print(f"First borrowed book title: {user.books_borrowed[0].title}")

elif test_case == "empty_library":
    library = Library("Empty Library")
    result = library.borrow_book("any_isbn", "any_user_id")
    print(result)

elif test_case == "borrower_reference":
    library = Library("Community Library")
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    library.add_book(book)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Pinjam buku
    library.borrow_book("123456", "U001")
    
    # Periksa referensi
    print(f"Book's borrower name: {book.borrower.name}")
    print(f"First book in user's borrowed list: {user.books_borrowed[0].title}")

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Python online