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
相关推荐
Data_agent8 分钟前
Python 编程实战:函数与模块化编程及内置模块探索
开发语言·python
new_zhou8 分钟前
vs2019+qt工程中生成dump文件及调试
开发语言·qt·visual studio·dump调试
十铭忘11 分钟前
windows系统python开源项目环境配置1
人工智能·python
Generalzy28 分钟前
langchain deepagent框架
人工智能·python·langchain
栈与堆33 分钟前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦35 分钟前
03-01:MQ常见问题梳理
java·开发语言
txinyu的博客40 分钟前
结合游戏场景理解,互斥锁,读写锁,自旋锁,CAS / 原子变量,分段锁
开发语言·c++·游戏
阿里嘎多学长1 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yuanyikangkang1 小时前
STM32 lin控制盒
开发语言