题目:
*设计一个简单的图书馆管理系统。*要求:
定义一个基类LibraryItem(图书馆物品),包含属性:标题(title)、作者(author)、是否可借(is_available)。
包含方法:
1.借出(borrow):如果可借,则将is_available设置为False,并打印借出成功;否则打印已借出。
2.归还(return_item):将is_available设置为True,并打印归还成功。
3.显示信息(display_info):打印标题、作者和借出状态。
4.定义两个子类Book和DVD,继承自LibraryItem。
5.Book类增加属性:出版社(publisher)和页数(pages)。
6.DVD类增加属性:导演(director)和时长(duration)。
7.分别重写display_info方法,在基类的基础上增加显示各自的特殊属性。
8.定义一个类Library,用于管理多个LibraryItem对象。
(1)包含属性:一个物品列表(容器)。
(2)包含方法:
a.添加物品(add_item):将物品添加到列表中。
b.借出物品(borrow_item):根据标题查找物品,如果找到且可借,则借出;否则提示不可借。
c.归还物品(return_item):根据标题查找物品,如果找到且已借出,则归还;否则提示错误。
d.显示所有物品(display_all_items):显示图书馆中所有物品的信息。
e.创建一个Library实例,添加若干本书和DVD。然后使用一个循环,模拟用户操作:可以借出物品、归还物品、查看所有物品。用户可以选择退出。
代码展示:
python
class LibraryItem(Exception):
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):
print(f"标题是:{self.title},作者是:{self.author},是否能借出{self.__is_available}")
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},页数是{self.author}")
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},时长是{self.duration}")
class Library:
def __init__(self):
self.item=[]
def add_item(self,item):
self.item.append(item)
print(f"对象{item.title}已经创建成功")
def borrow_item(self,title):
found=False
for i in self.item:
if i.title==title:
found=True
i.borrow()
if not found:
print(f"{title}不存在,本图书馆暂未进行收录")
def return_item(self,title):
found=False
for i in self.item:
if i.title==title:
found=True
i.return_item()
if not found:
print(f"{title}不存在,本图书馆暂未进行收录,无法进行还书操作")
def display_all_items(self):
if not self.item:
print(f"空的")
return False
print("图书馆列表")
for i in self.item:
i.display_info()
print("="*30)
return True
library1=Library()
xiyouji=Book("西游记","吴承恩","中国人民出版社","300")
library1.add_item(xiyouji)
hongloumeng=Book("红楼梦","曹雪芹","清华出版社","244")
library1.add_item(hongloumeng)
dvd1=DVD("dvd1","lisi","daoyan",120)
dvd2=DVD("dvd2","张三","王某人",200)
library1.add_item(dvd1)
library1.add_item(dvd2)
print(library1.item)
while True:
print("欢迎进入图书管理系统:")
print("1.借出\n2:归还\n3:查看所有\n4:退出")
choice=int(input("choice:"))
if choice==1:
title=input("请输入名称:").strip()
library1.borrow_item(title)
elif choice==2:
title=input("请输入title:")
library1.return_item(title)
elif choice ==3:
library1.display_all_items()
else:
print("退出")
break