Python 实现图书馆、图书、学生类,精准管理借阅归还逻辑!
```python class Library: def __init__(self): self.__total_amount = 0 self.__collection = {} def get_total_amount(self): return self.__total_amount def get_available(self): available_books = [book for book in self.__collection.values() if not book['borrowed']] available_books.sort(key=lambda x: x['name']) return [book['obj'] for book in available_books] def add(self, *books): for book in books: if book.name not in self.__collection: self.__collection[book.name] = {'obj': book, 'borrowed': False} self.__total_amount += 1 def lend_book(self, student, book_name): if book_name in self.__collection and not self.__collection[book_name]['borrowed']: self.__collection[book_name]['borrowed'] = True student.borrow(book_name) return True return False def return_book(self, book_name): if book_name in self.__collection and self.__collection[book_name]['borrowed']: self.__collection[book_name]['borrowed'] = False return True return False class Book: def __init__(self, name, author): self.__name = name self.__author = author def __str__(self): return f"书名: {self.__name}, 作者: {self.__author}" class Student: def __init__(self): self.__borrowed_books = [] def borrow(self, book_name): self.__borrowed_books.append(book_name) def return_book(self, book_name): if book_name in self.__borrowed_books: self.__borrowed_books.remove(book_name) ``` 需要注意的逻辑点 1. 图书唯一性:在`Library.add`方法中,确保每本书的名称是唯一的,避免重复添加相同的书。 2. 借阅状态管理:在`Library.lend_book`方法中,检查书籍是否已经被借出,只有未被借出的书籍才能被借阅。 3. 归还状态更新:在`Library.return_book`方法中,确保书籍的状态从“已借出”变为“未借出”,并且学生的借书记录也要相应更新。 ######[AI写代码神器 | 499点数解答 | 2024-12-07 18:52:01]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)459
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 工程师必备!10 种工程日常易用管理工具大揭秘(百度文心 | 346点数解答 | 2023-11-09 18:26:09)290
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)415
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)407
- 数字化制图综合平台:助力企业转型,推动烟草物流图纸智能化设计 (字节豆包 | 490点数解答 | 2024-10-30 20:30:29)143
- 数字化制图综合平台:引领烟草物流及多领域设计革新 在企业数字化转型的时代浪潮中,数字化制图技术创新应用成为产业升级与提升竞争力的关键。企业对高效、精准、智能化设计解决方案需求迫切,构建集二维到三维正逆向工程快捷化、干涉检测可视化、设备明细数据提取自动化以及设备模块模型库于一体的综合平台意义重大。 此平台集成先进数字化制图工具与智能算法,可实现二维设计到三维建模的无缝转换,大大缩短设计周期。正逆向工程能快速切换,满足不同场景设计需求。内置干涉检测功能可实时监测设计潜在冲突,保障设计方案可行与安全。设备明细数据自动提取提高设计准确性与效率。设备模块模型库为设计师提供丰富资源,支持设计标准化与模块化,加速项目推进。 整体来看,该综合平台的应用极大促进了烟草物流行业及更广泛领域的技术创新与效率提升。在烟草物流方案图纸智能化设计中,它提升了图纸设计效率与质量,使设计工作更加高效、精准。对于企业而言,这一平台带来显著竞争优势,能帮助企业在数字化转型中脱颖而出,在激烈的市场竞争中占据有利地位,推动整个行业向更高效、更智能的方向发展。 (阿里通义 | 216点数解答 | 2024-10-30 20:30:51)172
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)471
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)473
- R语言实战:用配对样本t检验评估课程强化集训对学生成绩的提升效果(GPT | 630点数解答 | 2024-11-26 22:00:01)321
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)312
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)390