Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

A simple software system for a library models a library as a collection of books and patrons, as per the following requirements: (1)A patron can

A simple software system for a library models a library as a collection of books and patrons, as per the following requirements: (1)A patron can have at most three books out on loan at any given time. (2)Each book has a title, an author, a patron to whom it has been checked out, and a list of patrons waiting for that book to be returned. (3)When a patron wants to borrow a book, that patron is automatically added to the books wait list if the book is already checked out. (4)When a patron returns a book, it is automatically loaned to the first patron on its wait list who can check out a book. (5)Each patron has a name and the number of books that patron has currently checked out.

Develop the classes Book and Patronto model these objects. Think first of the interface or set of methods to be used with each class, and then choose appropriate data structures for the state of the objects. Use the "Test" button to see the expected output from the provided main function.

class Patron(object): """This class represents a patron with a name and a number of books checked out."""

MAX_BOOKS_OUT = 3 def __init__(self, name): self._name = name self._numBooksOut = 0

def __str__(self): result = self._name + ', ' + str(self._numBooksOut) + \ " books out" return result

def getNumBooksOut(self): """Returns the number of books out."""

def inc(self): """Increments the number of books out."""

def dec(self): """Decrements the number of books out."""

class Book(object): """This class represents a book with a title, author, a patron to whom the book is check out, and a wait list of patrons for it."""

def __init__(self, title, author): """Creates a new book with the given title and author.""" self._title = title self._author = author self._patron = None self._waitList = []

def __str__(self): result = 'Title: ' + self._title + ' ' result += 'Author: ' + self._author + ' ' if self._patron: result += "Checked out to: " + str(self._patron) + ' ' else: result += "Not checked out " result += "Wait list: " for patron in self._waitList: result += str(patron) + ' ' return result

def borrowMe(self, patron): """Attempts to loan book to patron."""

def returnMe(self): """Current patron returns book, attempts to loan it to a qualified waiting patron."""

def main(): """Tests the Patron and Book classes.""" p1 = Patron("Ken") p2 = Patron("Martin") b1 = Book("Atonement", "McEwan") b2 = Book("The March", "Doctorow") b3 = Book("Beach Music", "Conroy") b4 = Book("Thirteen Moons", "Frazier") print(b1.borrowMe(p1)) print(b2.borrowMe(p1)) print(b3.borrowMe(p1)) print(b1.borrowMe(p2)) print(b4.borrowMe(p1)) print(p1) print(b1) print(b4) print(b1.returnMe()) print(b2.returnMe()) print(b1) print(b2)

main()

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Design For Mere Mortals

Authors: Michael J Hernandez

4th Edition

978-0136788041

More Books

Students also viewed these Databases questions

Question

7. Where Do We Begin?

Answered: 1 week ago