2,227 views
15 votes
15 votes
The Yuba College Library would like a program to calculate patron fines for overdue books. Fines are determined as follows: Paperbacks Regular $.20 / day with a maximum fine of $8.00 Best-Sellers $.50 / day with a maximum fine of $15.00 Magazines $.25 / day with a maximum fine of $5.00 Hardcover Books $.30 / day with a maximum fine of $23.00 The program must prompt the user to enter the following information at the keyboard. Data entry MUST be validated as required. Fines must also be calculated using a function(s). A class object should contain the methods (functions) to determine library fine. Provide a UML and description of disign.Patron’s library card number (a 4-digit number) - ValidatePatron’s namePatron’s addressType of book - ValidateNumber of days over due - ValidateA sample interactive session is shown below:Enter the patron’s card number: 2089Enter the patron’s name: Erica RobinsonEnter the patron’s address: 2234 RoadWay Trl.Enter the book’s title: The Trail Less Traveled.1. Paperback - Regular2. Paperback - Bestseller3. Magazine4. Hardcover bookEnter number corresponding to type of book (1 – 4): 4Enter the number of days overdue: 11Do you wish to perform another transaction?

User Tarun Tyagi
by
2.5k points

1 Answer

17 votes
17 votes

Answer:

Step-by-step explanation:

The following Python code creates all of the necessary functions in order to request and validate all of the inputs from the user. Once everything is entered and validated it calculates the total fee and outputs it to the user. Also calls the entire class at the end using a test variable...

class Customer:

library_card = 0

patrons_name = ""

patrons_address = ""

type_of_book = ""

book_title = ""

days_overdue = 0

fee = 0.0

book_list = ['paperback regular', 'paperback best seller', 'magazine', 'hardcover']

def __init__(self):

self.library_card = self.get_library_card()

self.patrons_address = input("Patron's Address: ")

self.book_title = input("Book Title: ")

self.type_of_book = self.get_type_of_book()

self.days_overdue = float(self.get_days_overdue())

self.calculate_total()

print("Your total Fee is: " + str(self.fee))

def get_library_card(self):

library_card = int(input("Enter 4-digit library card number: "))

if (type(library_card) == type(0)) and (len(str(library_card)) == 4):

return library_card

else:

print("Invalid Card number:")

self.get_library_card()

def get_type_of_book(self):

type_of_book = input("Type of Book 1-4: ")

if (int(type_of_book) > 0) and (int(type_of_book) <= 4):

return int(type_of_book)

else:

print("Invalid Type")

self.get_type_of_book()

def get_days_overdue(self):

days_overdue = input("Number of Days Overdue: ")

if int(days_overdue) >= 0:

return days_overdue

else:

print("Invalid number of days")

self.get_days_overdue()

def calculate_total(self):

if self.type_of_book == 1:

self.fee = 0.20 * self.days_overdue

if self.fee > 8:

self.fee = 8

elif self.type_of_book == 2:

self.fee = 0.50 * self.days_overdue

if self.fee > 15:

self.fee = 15

elif self.type_of_book == 3:

self.fee = 0.25 * self.days_overdue

if self.fee > 5:

self.fee = 5

else:

self.fee = 0.30 * self.days_overdue

if self.fee > 23:

self.fee = 23

test = Customer()

The Yuba College Library would like a program to calculate patron fines for overdue-example-1
User Innospark
by
3.0k points