Skip to content

【练习】图书管理系统

项目简介

  • 图书管理系统

知识模块

  • 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 方法:输出当前图书馆中所有图书的书名、作者和出版日期。

解题思路

  1. 创建一个 Book 类,用于表示图书的信息,包括书名、作者和出版日期等属性。
  2. 创建一个 Library 类,用于管理图书,包括添加图书、借出图书、归还图书和展示图书列表等方法。
  3. Library 类中,使用一个列表来存储图书列表,初始为空列表。
  4. Library 类的 add_book 方法中,将传入的图书对象添加到图书列表中。
  5. Library 类的 borrow_book 方法中,遍历图书列表,根据书名找到匹配的图书,并将其从图书列表中移除。如果找到了匹配的图书,则返回该图书对象;否则返回 None
  6. Library 类的 return_book 方法中,将传入的图书对象添加到图书列表中。
  7. Library 类的 show_books 方法中,遍历图书列表,逐个打印出图书的书名、作者和出版日期等信息。
  8. 测试阶段,创建一个图书馆实例,并添加一些图书到图书馆中。
  9. 调用图书馆的方法,如借出图书、归还图书和展示图书列表等,验证逻辑是否正确。

完整代码

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()

代码讲解

  1. 创建图书馆实例 library
  2. 创建图书对象,并添加到图书馆中。
  3. 调用 show_books 方法显示所有图书。
  4. 调用 borrow_book 方法借出一本图书,并打印出借出的书名。
  5. 再次调用 show_books 方法显示所有图书。
  6. 调用 return_book 方法归还之前借出的图书,并打印出归还的书名。
  7. 最后再次调用 show_books 方法显示所有图书。