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
相关推荐
第九序言T8 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路8 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003969 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_9 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
龙亘川10 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人10 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
quantdash_cc10 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl10 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Raas10010 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
云和数据.ChenGuang11 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain