【练习】图书管理系统
项目简介
- 图书管理系统
知识模块
- Python 编程语言
知识点
- 类和对象
- 对象的属性和方法
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
编写一个Python程序:
- 创建一个图书管理系统,实现以下功能:
1. 图书类 Book
:属性包括书名(title
)、作者(author
)和出版日期(publish_date
),方法包括获取书名、获取作者和获取出版日期的方法。
2. 图书馆类 Library
:属性包括图书列表(books
),方法包括添加图书、借出图书、归还图书和显示所有图书的方法。
3. add_book
方法:接受一个 Book
类型的参数,将其添加到图书列表中。
4. borrow_book
方法:接受一个字符串类型的参数(书名),找到对应书名的图书,并将其从图书列表中移除。
5. return_book
方法:接受一个 Book
类型的参数,将其添加到图书列表中。
6. show_books
方法:输出当前图书馆中所有图书的书名、作者和出版日期。
解题思路
- 创建一个
Book
类,用于表示图书的信息,包括书名、作者和出版日期等属性。 - 创建一个
Library
类,用于管理图书,包括添加图书、借出图书、归还图书和展示图书列表等方法。 - 在
Library
类中,使用一个列表来存储图书列表,初始为空列表。 - 在
Library
类的add_book
方法中,将传入的图书对象添加到图书列表中。 - 在
Library
类的borrow_book
方法中,遍历图书列表,根据书名找到匹配的图书,并将其从图书列表中移除。如果找到了匹配的图书,则返回该图书对象;否则返回None
。 - 在
Library
类的return_book
方法中,将传入的图书对象添加到图书列表中。 - 在
Library
类的show_books
方法中,遍历图书列表,逐个打印出图书的书名、作者和出版日期等信息。 - 测试阶段,创建一个图书馆实例,并添加一些图书到图书馆中。
- 调用图书馆的方法,如借出图书、归还图书和展示图书列表等,验证逻辑是否正确。
完整代码
class Book:
def __init__(self, title, author, publish_date):
self.title = title
self.author = author
self.publish_date = publish_date
def get_title(self):
return self.title
def get_author(self):
return self.author
def get_publish_date(self):
return self.publish_date
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
"""
添加图书到图书馆的图书列表中
"""
self.books.append(book)
def borrow_book(self, title):
"""
根据书名借出图书,如果找到对应书名的图书,则从图书列表中移除,并返回该图书对象
"""
for book in self.books:
if book.get_title() == title:
self.books.remove(book)
return book
def return_book(self, book):
"""
将归还的图书对象添加到图书列表中
"""
self.books.append(book)
def show_books(self):
"""
显示当前图书馆中所有图书的书名、作者和出版日期
"""
for book in self.books:
print("书名:", book.get_title())
print("作者:", book.get_author())
print("出版日期:", book.get_publish_date())
# 测试
# 创建一个图书馆实例
library = Library()
# 创建几本图书并添加到图书馆中
book1 = Book("Python编程入门", "张三", "2021-01-01")
book2 = Book("Java编程基础", "李四", "2021-02-01")
book3 = Book("C++高级编程", "王五", "2021-03-01")
library.add_book(book1)
library.add_book(book2)
library.add_book(book3)
# 显示所有图书
library.show_books()
# 借出一本图书并打印出借出的书名
borrowed_book = library.borrow_book("Java编程基础")
if borrowed_book:
print("借出的书:", borrowed_book.get_title())
# 再次显示所有图书
library.show_books()
# 归还图书并打印出归还的书名
library.return_book(borrowed_book)
print("归还书籍:", borrowed_book.get_title())
# 最后再次显示所有图书
library.show_books()
代码讲解
- 创建图书馆实例
library
。 - 创建图书对象,并添加到图书馆中。
- 调用
show_books
方法显示所有图书。 - 调用
borrow_book
方法借出一本图书,并打印出借出的书名。 - 再次调用
show_books
方法显示所有图书。 - 调用
return_book
方法归还之前借出的图书,并打印出归还的书名。 - 最后再次调用
show_books
方法显示所有图书。