利用python来完成图书馆,书的类的构建

class Book():
    def __init__(self,title,author,isbn,copies):
        self.title = title  
        self.author = author  
        self.isbn = isbn  
        self.copies = copies 
    def display_info(self):#显示图书的基本信息,包括标题、作者、ISBN 和副本数量。
        print(f"Title: {self.title}")  
        print(f"Author: {self.author}")  
        print(f"ISBN: {self.isbn}")  
        print(f"Copies: {self.copies}") 
    def borrow(self):
        if self.copies>0:
            self.copies=self.copies-1
            print(f'当前{self.title}还剩下{self.copies}本书')
        else:
            print(f'当前{self.title}没有了')
    def return_book(self):
        self.copies=self.copies+1
        print(f'当前{self.title}还剩下{self.copies}本书')
class EBook(Book):
    def __init__(self,title,author,isbn,copies,file_size_mb):
        super().__init__(title,author,isbn,copies)  
        self.file_size_mb=file_size_mb
    def display_info(self):
        super().display_info() 
        print(f"File Size: {self.file_size_mb} MB") 
class PrintedBook(Book):
    def __init__(self,title,author,isbn,copies,pages):
        super().__init__(title,author,isbn,copies) 
        self.pages=pages
    def display_info(self):
        super().display_info() 
        print(f"这本书有{self.pages}页")
class User():
    def __init__(self,user_id,name):
        self.user_id=user_id
        self.name=name
        self.borrowed_books=[]
    def borrow_book(self,book: Book):
        if book not in self.borrowed_books: 
            self.borrowed_books.append(book)  
    def return_book(self,book: Book): 
        if book in self.borrowed_books:
            self.borrowed_books.remove(book)
    def display_borrowed_books(self):
        for book in self.borrowed_books:
            print(f"Title: {book.title},Author: {book.author},ISBN: {book.isbn},Copies: {book.copies}")
class Librarian(User):  
    def __init__(self, user_id, name, library):  
        super().__init__(user_id, name)  
        self.library = library  #Librarian管理的library
  
    def add_book(self, book: Book):  
        self.library.add_book(book)  #self.library是一个library类的实例,再调用library类的方法add_book
  
    def remove_book(self, book: Book):  
        self.library.remove_book(book)  
class Library():  
    def __init__(self):  
        self.books = []  
    def add_book(self, book: Book):  
        self.books.append(book)  
    def remove_book(self, book: Book):  
        self.books.remove(book)  
    def display_available_books(self):  
        for book in self.books:  
            book.display_info()  
    def find_book_by_title(self, title: str):  
        for book in self.books:  
            if book.title == title:  
                return book  
        return None  
    def find_book_by_author(self, author: str):  
        for book in self.books:  
            if book.author == author:  
                return book  
        return None  
    def total_books(self):  
        return len(self.books)  
    def total_ebooks(self):  
        return len([book for book in self.books if isinstance(book, EBook)])  
    def total_printed_books(self):  
        return len([book for book in self.books if isinstance(book, PrintedBook)]) 
######实际运用#######
book1 = Book("Effective Python", "Brett Slatkin", "978-1491946008", 10)  
book1.display_info()  
book1.borrow()  
book1.return_book()

book2=EBook("a11","adsa","49845156",10,1999)
book2.display_info()

book3=PrintedBook("b22","wqduyg","159840",10,199999)
book3.display_info()

book4=Book("高等数学",'同济大学数学系','vsaivbn',165)
book4.display_info()
xpp=User("50320225001","xpp")   
xpp.borrow_book(book1)
xpp.display_borrowed_books()

xxzyzx=Library()
xxzyzx.add_book(book1)
xxzyzx.add_book(book2)
xxzyzx.add_book(book3)
xxzyzx.remove_book(book2)
xxzyzx.display_available_books()
gjg=Librarian("50320225019","gjg",xxzyzx)
gjg.remove_book(book3)

xxzyzx.display_available_books()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值