实现一个 Python 类来模拟图书管理系统
快速解决
直接使用一个 Python 类模拟图书管理系统,能实现图书的添加、借阅、归还和查询功能。下面是一个简洁的实现示例:
class Book:
def __init__(self, title, author, is_borrowed=False):
self.title = title # 书名
self.author = author # 作者
self.is_borrowed = is_borrowed # 是否被借走,默认为否
def __str__(self):
status = "已借出" if self.is_borrowed else "在库"
return f"{self.title} 作者:{self.author} 状态:{status}"
class BookManager:
def __init__(self):
self.books = []
def add_book(self, title, author):
new_book = Book(title, author)
self.books.append(new_book)
print(f"已添加图书:{new_book}")
def borrow_book(self, title):
for book in self.books:
if book.title == title:
if not book.is_borrowed:
book.is_borrowed = True
print(f"成功借阅图书:{book}")
else:
print(f"图书《{title}》已被借出")
return
print(f"未找到图书《{title}》")
def return_book(self, title):
for book in self.books:
if book.title == title:
if book.is_borrowed:
book.is_borrowed = False
print(f"成功归还图书:{book}")
else:
print(f"图书《{title}》未被借出")
return
print(f"未找到图书《{title}》")
def list_books(self):
if not self.books:
print("当前没有图书")
else:
print("当前图书列表:")
for book in self.books:
print(book)
这个类可以用来管理图书的基本状态,适合小型图书管理场景。
常用方法
以下是 BookManager 类中常用方法的使用频率排序:
| 方法名 | 功能说明 | 使用频率 |
|---|---|---|
add_book() |
添加一本图书 | 高 |
borrow_book() |
借阅指定书名的图书 | 高 |
return_book() |
归还指定书名的图书 | 高 |
list_books() |
列出所有图书及其状态 | 高 |
search_book() |
搜索包含关键字的图书 | 中 |
is_book_borrowed() |
判断图书是否被借出 | 低 |
详细说明
添加图书
bm = BookManager()
bm.add_book("Python 编程从入门到实践", "Eric Matthes")
add_book 方法接收书名和作者作为参数,创建 Book 对象并添加到 books 列表中,同时输出提示信息。
借阅图书
bm.borrow_book("Python 编程从入门到实践")
borrow_book 方法遍历图书列表,找到匹配书名的图书,如果尚未借出,则修改其状态为已借出,并输出提示信息。
归还图书
bm.return_book("Python 编程从入门到实践")
return_book 方法与借阅逻辑相反,将已借出的图书标记为在库,并输出提示信息。
高级技巧
添加搜索功能
class BookManager:
def search_book(self, keyword):
found = [book for book in self.books if keyword in book.title or keyword in book.author]
if found:
print(f"找到以下图书:")
for book in found:
print(book)
else:
print(f"没有找到包含 '{keyword}' 的图书")
该方法通过标题或作者名搜索图书,提升系统的实用性,适合用于图书检索场景。
持久化支持
为了扩展功能,可以将图书信息保存到文件中:
def save_books(self, filename="books.txt"):
with open(filename, 'w', encoding='utf-8') as f:
for book in self.books:
f.write(f"{book.title},{book.author},{book.is_borrowed}\n")
def load_books(self, filename="books.txt"):
try:
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
title, author, is_borrowed = line.strip().split(',')
self.books.append(Book(title, author, is_borrowed == 'True'))
except FileNotFoundError:
print("未找到保存的图书文件")
这两个方法可在程序关闭后保存状态,重启后恢复,适用于需要长期保存数据的场景。
常见问题
Q1:如何判断图书是否在库?
A:可以通过 book.is_borrowed == False 判断图书是否在库。
Q2:如果有多本同名书,如何区分?
A:目前实现仅根据标题操作,若需区分,可增加唯一标识字段,如 ISBN。
Q3:如何扩展功能,比如添加用户信息?
A:可以创建 User 类,并在 Book 中添加 borrower 字段,用于记录借阅者信息。
Q4:如何保证数据安全,避免重复添加?
A:在 add_book 方法中可添加判断逻辑,例如检查是否已存在相同书名和作者的图书。
总结
本文介绍了如何通过 Python 类实现一个简单的图书管理系统,帮助开发者快速上手并扩展功能。