class Book: def __init__(self, title, author, isbn): self.title = title self.author = author self.isbn = isbn self.is_borrowed = False self.borrower = None def __str__(self): status = "Dipinjam" if self.is_borrowed else "Tersedia" return f"{self.title} oleh {self.author} - {status}"class Member: def __init__(self, name, member_id): self.name = name self.member_id = member_id self.borrowed_books = [] def __str__(self): return f"Member: {self.name} (ID: {self.member_id})"class Library: def __init__(self, name): self.name = name self.books = [] self.members = [] def add_book(self, book): """Menambah buku ke perpustakaan""" self.books.append(book) return f"Buku '{book.title}' berhasil ditambahkan" def register_member(self, member): """Mendaftarkan anggota baru""" self.members.append(member) return f"Anggota {member.name} berhasil didaftarkan" def borrow_book(self, member_id, isbn): """Meminjam buku""" # Cari anggota member = None for m in self.members: if m.member_id == member_id: member = m break if not member: return "Anggota tidak ditemukan" # Cari buku book = None for b in self.books: if b.isbn == isbn and not b.is_borrowed: book = b break if not book: return "Buku tidak tersedia" # Proses peminjaman book.is_borrowed = True book.borrower = member member.borrowed_books.append(book) return f"{member.name} berhasil meminjam '{book.title}'" def return_book(self, member_id, isbn): """Mengembalikan buku""" member = None for m in self.members: if m.member_id == member_id: member = m break if not member: return "Anggota tidak ditemukan" book = None for b in member.borrowed_books: if b.isbn == isbn: book = b break if not book: return "Buku tidak ditemukan dalam daftar pinjaman" # Proses pengembalian book.is_borrowed = False book.borrower = None member.borrowed_books.remove(book) return f"{member.name} berhasil mengembalikan '{book.title}'" def get_available_books(self): """Mendapatkan daftar buku yang tersedia""" available = [book for book in self.books if not book.is_borrowed] return available def get_member_books(self, member_id): """Mendapatkan daftar buku yang dipinjam anggota""" for member in self.members: if member.member_id == member_id: return member.borrowed_books return []# Contoh penggunaan sistem perpustakaanlibrary = Library("Perpustakaan Central")# Menambah bukubook1 = Book("Python Programming", "John Smith", "978-1234567890")book2 = Book("Data Science Basics", "Jane Doe", "978-0987654321")book3 = Book("Machine Learning", "Bob Johnson", "978-1122334455")print(library.add_book(book1))print(library.add_book(book2))print(library.add_book(book3))# Mendaftarkan anggotamember1 = Member("Alice Cooper", "M001")member2 = Member("Bob Wilson", "M002")print(library.register_member(member1))print(library.register_member(member2))# Meminjam bukuprint(library.borrow_book("M001", "978-1234567890"))print(library.borrow_book("M002", "978-0987654321"))# Melihat status bukuprint("Daftar semua buku:")for book in library.books: print(book)print("Buku yang tersedia:")for book in library.get_available_books(): print(book)print(f"Buku yang dipinjam Alice: {len(library.get_member_books('M001'))} buku")# Mengembalikan bukuprint(library.return_book("M001", "978-1234567890"))