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
相关推荐
Wzx1980122 小时前
go基础语法练习
开发语言·后端·golang
忧郁的蛋~2 小时前
.NET异步编程中内存泄漏的终极解决方案
开发语言·前端·javascript·.net
2301_795167202 小时前
玩转Rust高级应用. ToOwned trait 提供的是一种更“泛化”的Clone 的功能,Clone一般是从&T类型变量创造一个新的T类型变量
开发语言·后端·rust
你才是向阳花3 小时前
如何用Python实现飞机大战小游戏
开发语言·python·pygame
合作小小程序员小小店3 小时前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商
草莓熊Lotso3 小时前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
星释3 小时前
Rust 练习册 :Phone Number与电话号码处理
开发语言·机器学习·rust
one year.3 小时前
Linux:线程同步与互斥
java·开发语言
一 乐3 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游