3.图书馆提供读者借阅书籍,包括书籍及音像制品。如果超时需要缴纳罚金。对 于不同类型的书籍和音像制品罚款规则不同。 成人书籍:允许借阅的时间是21天,每超时1天,需要缴纳罚金2元。如果超 过3天以上,每1天需要缴纳罚金5元; 儿童书籍:允许借阅的时间是21天,每超时1天,需要缴纳罚金1元; 音像制品(CD或DVD):允许借阅的时间是14天,每超时一天,需要缴纳罚金 5元。如果超过3天以上,每1天需要缴纳罚金10元; 每位读者可一次借阅多本书籍和音像制品,通过多态实现计算罚金的功能。 (1)定义父类Book,属性包括名称name、借阅期限borrowingPeriod。定义方法 calFines(intborrowingDays)。 (2)定义子类AdultBook、KidBook及Disc。它们分别继承自Book类。根据图书 馆借阅超时缴纳罚金的规则,重写父类calFines()方法。 (3)假设某读者借阅2本成人书、2本儿童书以及一张DVD光盘。由于遗忘了, 借阅了30天后才归还,计算该读者总共需要缴纳的罚金。
时间: 2023-05-22 21:05:03 浏览: 194
以下是完整代码(注意:角色扮演中的 ChatGPT 可以不会编程):
class Book:
def __init__(self, name, borrowingPeriod):
self.name = name
self.borrowingPeriod = borrowingPeriod
def calFines(self, borrowingDays):
pass
class AdultBook(Book):
def calFines(self, borrowingDays):
if borrowingDays > self.borrowingPeriod:
if borrowingDays <= self.borrowingPeriod+3:
return (borrowingDays-self.borrowingPeriod)*2
else:
return 2*2 + (borrowingDays-self.borrowingPeriod-3)*5
else:
return 0
class KidBook(Book):
def calFines(self, borrowingDays):
if borrowingDays > self.borrowingPeriod:
return (borrowingDays-self.borrowingPeriod)*1
else:
return 0
class Disc(Book):
def calFines(self, borrowingDays):
if borrowingDays > self.borrowingPeriod:
if borrowingDays <= self.borrowingPeriod+3:
return (borrowingDays-self.borrowingPeriod)*5
else:
return 3*5 + (borrowingDays-self.borrowingPeriod-3)*10
else:
return 0
adultBook1 = AdultBook("成人书籍1", 21)
adultBook2 = AdultBook("成人书籍2", 21)
kidBook1 = KidBook("儿童书籍1", 21)
kidBook2 = KidBook("儿童书籍2", 21)
disc1 = Disc("DVD光盘1", 14)
borrowingDays = 30
totalFines = adultBook1.calFines(borrowingDays) \
+ adultBook2.calFines(borrowingDays) \
+ kidBook1.calFines(borrowingDays) \
+ kidBook2.calFines(borrowingDays) \
+ disc1.calFines(borrowingDays)
print("该读者总共需要缴纳的罚金为:", totalFines, "元。")
阅读全文