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
相关推荐
郑州光合科技余经理5 小时前
代驾系统架构拆解:订单链路、权限组织与私有化源码交付
开发语言·后端·算法·架构·系统架构·uni-app·php
天才测试猿7 小时前
2026软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
码哥DFS8 小时前
二叉树的直径
开发语言·javascript·算法
paopaokaka_luck8 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
张小凡vip9 小时前
python--爬虫--成熟的爬虫框架Scrapy
爬虫·python·scrapy
Pluchon9 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea
梦雨生生9 小时前
java开发工具(学习第一天)
java·开发语言·学习
不瘦80斤不改名9 小时前
01-vibe-coding-起源与本质
人工智能·python
夜雪一千10 小时前
如何对新闻数据进行模糊去重
python
啊啊啊啊啊!!!!11 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++