python面向对象————图书馆借阅系统(综合练习)

张开发
2026/4/17 5:54:53 15 分钟阅读

分享文章

python面向对象————图书馆借阅系统(综合练习)
练习题5图书馆借阅系统综合练习设计一个图书馆借阅系统综合运用三大特性**要求**- 基类 LibraryItem封装- 私有属性__item_id、__title、__is_borrowed- 方法- borrow()修改__is_borrowed为True- return_item()修改__is_borrowed为False- get_info()编号xx名称xx是否可借阅是/否- 派生类继承与多态- Book额外属性 author、pages重写 get_info()- DVD额外属性 director、duration重写 get_info()- Magazine额外属性 issue_number重写 get_info()- 类 Library组合- 属性物品列表- 方法add_item()、remove_item()、search_by_title()、display_available_items()- 实现多态display_item_info(item) 函数能正确显示任何类型物品的信息 Author: Time:2026/4/15 Desc:练习题5图书馆借阅系统综合练习 设计一个图书馆借阅系统综合运用三大特性 **要求** - 基类 LibraryItem封装 - 私有属性__item_id、__title、__is_borrowed - 方法 - borrow()修改__is_borrowed为True - return_item()修改__is_borrowed为False - get_info()编号xx名称xx是否可借阅是/否 - 派生类继承与多态 - Book额外属性 author、pages重写 get_info() - DVD额外属性 director、duration重写 get_info() - Magazine额外属性 issue_number重写 get_info() - 类 Library组合 - 属性物品列表 - 方法add_item()、remove_item()、search_by_title()、display_available_items() - 实现多态display_item_info(item) 函数能正确显示任何类型物品的信息 # - 基类 LibraryItem封装 # - 私有属性__item_id、__title、__is_borrowed # - 方法 # - borrow()修改__is_borrowed为True # - return_item()修改__is_borrowed为False # - get_info()编号xx名称xx是否可借阅是/否 class LibraryItem: def __init__(self,item_id,title,is_borrowedFalse): self.__item_iditem_id self.__titletitle self.__is_borrowed is_borrowed property def item_id(self): return self.__item_id property def title(self): return self.__title property def is_borrowed(self): return 否 if self.__is_borrowed else 是 item_id.setter def item_id(self,item_id): self.__item_id item_id title.setter def title(self,title): self.__title title is_borrowed.setter def is_borrowed(self,is_borrowed): print(f修改is_borrow为{is_borrowed}) self.__is_borrowedis_borrowed def borrow(self): self.is_borrowed True def return_item(self): self.is_borrowed False def get_info(self): print(f编号:{self.item_id}名称:{self.title}是否可借阅:{self.is_borrowed}) #编号xx名称xx是否可借阅是 / 否 # 派生类继承与多态 # - Book额外属性 author、pages重写 get_info() # - DVD额外属性 director、duration重写 get_info() # - Magazine额外属性 issue_number重写 get_info() class Book(LibraryItem): def __init__(self,item_id,title,author,pages): super().__init__(item_id, title) self.author author self.pages pages def get_info(self): print(f编号:{self.item_id}名称:{self.title}是否可借阅:{self.is_borrowed},作者{self.author},共{self.pages}页) class DVD(LibraryItem): def __init__(self,item_id,title,director,duration): super().__init__(item_id, title) self.director director self.duration duration def get_info(self): print(f编号:{self.item_id}名称:{self.title}是否可借阅:{self.is_borrowed},导演{self.director},时长{self.duration}) class Magazine(LibraryItem): def __init__(self,item_id,title,issue_number): super().__init__(item_id, title, ) self.issue_number issue_number def get_info(self): print(f编号:{self.item_id}名称:{self.title}是否可借阅:{self.is_borrowed},期数{self.issue_number}) # 类 Library组合 # - 属性物品列表 # - 方法add_item()、remove_item()、search_by_title()、display_available_items() # - 实现多态display_item_info(item) 函数能正确显示任何类型物品的信息 class Library: def __init__(self,library_name): self.library_name library_name self.items[] def add_item(self,LibraryItem): self.items.append(LibraryItem) print(f图书管物品{LibraryItem.title}已添加) def remove_item(self,item_id): for item in self.items: if item.item_iditem_id: self.items.remove(item) print(恭喜你物品移除成功) return print(图书馆没有该物品) def search_by_title(self,title): for item in self.items: if title in item.title: item.get_info() return print(不好意思该物品没有在图书馆) def display_available_items(self): print(\n 可借阅物品 ) for item in self.items: if item.is_borrowed 是: item.get_info() def display_item_info(self, item): 实现多态显示任何类型物品的信息 :param item: LibraryItem 或其子类的实例 if isinstance(item, LibraryItem): item.get_info() else: print(传入的对象不是有效的图书馆物品) if __name__ __main__: library Library(市立图书馆) book1 Book(B001, Python编程从入门到实践, Eric Matthes, 464) book2 Book(B002, 算法导论, Thomas H. Cormen, 1312) dvd1 DVD(D001, 流浪地球, 郭帆, 125) dvd2 DVD(D002, 星际穿越, Christopher Nolan, 169) mag1 Magazine(M001, 读者, 2026年第3期) mag2 Magazine(M002, 青年文摘, 2026年第5期) print( 添加物品 ) library.add_item(book1) library.add_item(book2) library.add_item(dvd1) library.add_item(dvd2) library.add_item(mag1) library.add_item(mag2) print(\n 查看所有可借阅物品 ) library.display_available_items() print(\n 测试借阅功能 ) book1.borrow() dvd1.borrow() print(\n 借阅后查看可借阅物品 ) library.display_available_items() print(\n 多态演示 ) print(不同物品的信息:) library.display_item_info(book2) library.display_item_info(dvd2) library.display_item_info(mag1) print(\n 搜索功能 ) library.search_by_title(Python) library.search_by_title(地球) print(\n 测试归还功能 ) book1.return_item() print(\n 归还后查看可借阅物品 ) library.display_available_items() print(\n 测试移除物品 ) library.remove_item(M002) library.display_available_items()

更多文章