题目3:较难难度
设计一个简单的图书馆管理系统。要求:

定义一个基类LibraryItem(图书馆物品),包含属性:标题(title)、作者(author)、是否可借(is_available)。包含方法:

借出(borrow):如果可借,则将is_available设置为False,并打印借出成功;否则打印已借出。

归还(return_item):将is_available设置为True,并打印归还成功。

显示信息(display_info):打印标题、作者和借出状态。

定义两个子类Book和DVD,继承自LibraryItem。

Book类增加属性:出版社(publisher)和页数(pages)。

DVD类增加属性:导演(director)和时长(duration)。

分别重写display_info方法,在基类的基础上增加显示各自的特殊属性。

定义一个类Library,用于管理多个LibraryItem对象。包含属性:一个物品列表(容器)。包含方法:

添加物品(add_item):将物品添加到列表中。

借出物品(borrow_item):根据标题查找物品,如果找到且可借,则借出;否则提示不可借。

归还物品(return_item):根据标题查找物品,如果找到且已借出,则归还;否则提示错误。

显示所有物品(display_all_items):显示图书馆中所有物品的信息。

创建一个Library实例,添加若干本书和DVD。然后使用一个循环,模拟用户操作:可以借出物品、归还物品、查看所有物品。用户可以选择退出。

代码:

class LibraryItem:
    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):
        status = "可借" if self.is_available else "已借出"
        print(f"标题:{self.title}")
        print(f"作者:{self.author}")
        print(f"状态:{status}")


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}")
        print(f"页数:{self.pages}")
        print("-" * 30)


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}")
        print(f"时长:{self.duration}")
        print("_" * 30)


class Library:
    def __init__(self):
        self.items = []

    def add_item(self,item):
        self.items.append(item)
        print(f"已添加物品:《{item.title}》")

    def borrow_item(self,title):
        for item in self.items:
            if item.title == title:
                if item.is_available:
                    item.borrow()
                else:
                    print(f"《{title}》当前不可借(已借出)")
                    return

    def return_item(self,title):
        for item in self.items:
            if item.title == title:
                if not item.is_available:
                    item.return_item()
                else:
                    print(f"《{title}》未被借出,无需归还")
                    return
        print(f"未找到标题为《{title}》的物品")

    def display_all_items(self):
        if not self.items:
            print("图书馆暂无物品")
            return
        print("\n===== 图书馆物品列表 =====")
        for item in self.items:
            item.display_info()


def main():
    lib = Library()

    lib.add_item(Book("Python编程", "张三", "编程出版社", 350))
    lib.add_item(Book("数据结构", "李四", "计算机出版社", 420))
    lib.add_item(DVD("流浪地球", "王五", "王五出版社", 125))
    lib.add_item(DVD("星际穿越", "赵六", "赵六出版社", 169))

    while True:
        print("\n===== 图书馆管理系统 =====")
        print("1. 借出物品")
        print("2. 归还物品")
        print("3. 查看所有物品")
        print("4. 退出系统")

        choice = input("请选择操作(1-4):")

        if choice == "1":
            title = input("请输入要借出的物品名称:")
            lib.borrow_item(title)
        elif choice == "2":
            title = input("请输入要归还的物品:")
            lib.return_item(title)
        elif choice == "3":
            lib.display_all_items()
        elif choice == "4":
            print("感谢使用,再见!")
            break
        else:
            print("无效选择,请重新输入(1-4)")

if __name__ == "__main__":
    main()

测试:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐