Menu
Coddy logo textTech

מערכת השאלת ספרים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 57 מתוך 64.

challenge icon

אתגר

בינוני

באתגר הזה תוסיף פונקציונליות להשאלת ספרים למערכת ניהול הספרייה.

ערוך את library.py וממש את המתודה borrow_book, בהתאם להערות TODO.

שאר הקבצים מסופקים לך ונעולים:

  • book.py: המחלקה Book שבנית באתגר הקודם
  • user.py: המחלקה User, שמכילה את user_id, name ו-books_borrowed
  • driver.py: מריץ את תרחישי הבדיקה מול המימוש שלך

המתודה borrow_book(book_isbn, user_id) חייבת להחזיר בדיוק אחד מהערכים הבאים: "Book not found", "User not found", "Book is not available" או "Book borrowed successfully".

נסו בעצמכם

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

# טיפול מקיף במקרי בדיקה
test_case = input()

# בדיקות של פונקציונליות בסיסית
if test_case == "borrow_success":
    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)
    
    # השאלת ספר
    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")
    
    # הוספת ספרים ומשתמשים
    book = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    book.available = False  # הספר כבר מושאל
    library.add_book(book)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # ניסיון לשאול ספר שאינו זמין
    result = library.borrow_book("123456", "U001")
    print(result)

# מקרי קצה ובדיקות נוספות
elif test_case == "multiple_books":
    library = Library("Community Library")
    user = User("U001", "Alice")
    library.add_user(user)
    
    # יצירת מספר ספרים
    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)
    
    # השאלת מספר ספרים
    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)
    
    # יצירת מספר משתמשים
    users = [
        User("U001", "Alice"),
        User("U002", "Bob"),
        User("U003", "Charlie")
    ]
    
    for user in users:
        library.add_user(user)
    
    # ניסיון לשאול את אותו הספר באמצעות משתמשים שונים
    result1 = library.borrow_book("999", "U001")
    result2 = library.borrow_book("999", "U002")  # אמור להיכשל
    
    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)
    
    # השאל את הספר
    borrow_result = library.borrow_book("123456", "U001")
    print(borrow_result)
    
    # בדוק את מצב הספר
    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)
    
    # השאל את הספר
    library.borrow_book("123456", "U001")
    
    # בדוק את ההפניות
    print(f"Book's borrower name: {book.borrower.name}")
    print(f"First book in user's borrowed list: {user.books_borrowed[0].title}")

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Python אונליין