python练习题3

题目:

*设计一个简单的图书馆管理系统。*要求:

定义一个基类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
相关推荐
json{shen:"jing"}4 分钟前
js收官总概述
开发语言·python
froginwe117 分钟前
Java 文档注释
开发语言
Zsy_0510037 分钟前
【C++】stack、queue、容器适配器
开发语言·c++
一起努力啊~9 分钟前
算法刷题--栈和队列
开发语言·算法
双层吉士憨包9 分钟前
Airbnb(爱彼迎)爬虫全流程解析:用 Python 抓取房源数据实战指南
python·ai·网络爬虫
万行10 分钟前
SQL进阶&索引篇
开发语言·数据库·人工智能·sql
打工的小王11 分钟前
java并发编程(六)CountDownLatch和回环屏障CyclicBarrier
java·开发语言
星火开发设计14 分钟前
命名空间 namespace:解决命名冲突的利器
c语言·开发语言·c++·学习·算法·知识
小北方城市网15 分钟前
RabbitMQ 生产级实战:可靠性投递、高并发优化与问题排查
开发语言·分布式·python·缓存·性能优化·rabbitmq·ruby