python习题
·
题目3:较难难度
设计一个简单的图书馆管理系统。要求:
定义一个基类LibraryItem(图书馆物品),包含属性:标题(title)、作者(author)、是否可借(is_available)。包含方法:
借出(borrow):如果可借,则将is_available设置为False,并打印借出成功;否则打印已借出。
归还(return_item):将is_available设置为True,并打印归还成功。
显示信息(display_info):打印标题、作者和借出状态。
定义两个子类Book和DVD,继承自LibraryItem。
Book类增加属性:出版社(publisher)和页数(pages)。
DVD类增加属性:导演(director)和时长(duration)。
分别重写display_info方法,在基类的基础上增加显示各自的特殊属性。
定义一个类Library,用于管理多个LibraryItem对象。包含属性:一个物品列表(容器)。包含方法:
添加物品(add_item):将物品添加到列表中。
借出物品(borrow_item):根据标题查找物品,如果找到且可借,则借出;否则提示不可借。
归还物品(return_item):根据标题查找物品,如果找到且已借出,则归还;否则提示错误。
显示所有物品(display_all_items):显示图书馆中所有物品的信息。
创建一个Library实例,添加若干本书和DVD。然后使用一个循环,模拟用户操作:可以借出物品、归还物品、查看所有物品。用户可以选择退出。
代码:
class LibraryItem:
def __init__(self,title,author):
self.title = title
self.author = author
self.is_available = True
def borrow(self):
if self.is_available:
self.is_available = False
print(f"《{self.title}》借出成功")
else:
print(f"《{self.title}》已被借出,无法重复借出。")
def return_item(self):
self.is_available = True
print(f"《{self.title}》归还成功!")
def display_info(self):
status = "可借" if self.is_available else "已借出"
print(f"标题:{self.title}")
print(f"作者:{self.author}")
print(f"状态:{status}")
class Book(LibraryItem):
def __init__(self,title,author,publisher,pages):
super().__init__(title,author)
self.publisher = publisher
self.pages = pages
def display_info(self):
super().display_info()
print(f"出版社:{self.publisher}")
print(f"页数:{self.pages}")
print("-" * 30)
class DVD(LibraryItem):
def __init__(self,title,author,director,duration):
super().__init__(title,author)
self.director = director
self.duration = duration
def display_info(self):
super().display_info()
print(f"导演:{self.director}")
print(f"时长:{self.duration}")
print("_" * 30)
class Library:
def __init__(self):
self.items = []
def add_item(self,item):
self.items.append(item)
print(f"已添加物品:《{item.title}》")
def borrow_item(self,title):
for item in self.items:
if item.title == title:
if item.is_available:
item.borrow()
else:
print(f"《{title}》当前不可借(已借出)")
return
def return_item(self,title):
for item in self.items:
if item.title == title:
if not item.is_available:
item.return_item()
else:
print(f"《{title}》未被借出,无需归还")
return
print(f"未找到标题为《{title}》的物品")
def display_all_items(self):
if not self.items:
print("图书馆暂无物品")
return
print("\n===== 图书馆物品列表 =====")
for item in self.items:
item.display_info()
def main():
lib = Library()
lib.add_item(Book("Python编程", "张三", "编程出版社", 350))
lib.add_item(Book("数据结构", "李四", "计算机出版社", 420))
lib.add_item(DVD("流浪地球", "王五", "王五出版社", 125))
lib.add_item(DVD("星际穿越", "赵六", "赵六出版社", 169))
while True:
print("\n===== 图书馆管理系统 =====")
print("1. 借出物品")
print("2. 归还物品")
print("3. 查看所有物品")
print("4. 退出系统")
choice = input("请选择操作(1-4):")
if choice == "1":
title = input("请输入要借出的物品名称:")
lib.borrow_item(title)
elif choice == "2":
title = input("请输入要归还的物品:")
lib.return_item(title)
elif choice == "3":
lib.display_all_items()
elif choice == "4":
print("感谢使用,再见!")
break
else:
print("无效选择,请重新输入(1-4)")
if __name__ == "__main__":
main()
测试:




更多推荐

所有评论(0)