Pengelolaan perpustakaan adalah salah satu contoh klasik dalam pemrograman untuk memahami konsep struktur data, manajemen objek, dan operasi dasar seperti tambah, hapus, dan cari. Python, dengan sintaksnya yang bersih dan mudah dibaca, sangat cocok untuk mengembangkan prototipe sistem perpustakaan sederhana.
Dalam implementasi kali ini, kita akan menggunakan struktur data dasar Python seperti list dan dictionary untuk menyimpan data buku. Setiap buku akan direpresentasikan sebagai sebuah dictionary yang berisi atribut seperti judul, penulis, dan ISBN (International Standard Book Number). Program ini akan beroperasi melalui antarmuka baris perintah (CLI) sederhana.
Kita mendefinisikan buku sebagai objek sederhana. Dalam contoh yang lebih kompleks, kita akan menggunakan Class, namun untuk kesederhanaan, kita fokus pada representasi data menggunakan dictionary.
Berikut adalah kode Python lengkap yang mengimplementasikan fungsi dasar: menambahkan buku, menampilkan semua buku, mencari buku berdasarkan judul, dan menghapus buku.
# library_manager.py
perpustakaan = []
def tambah_buku(judul, penulis, isbn):
"""Menambahkan buku baru ke dalam daftar perpustakaan."""
buku_baru = {
'judul': judul,
'penulis': penulis,
'isbn': isbn
}
perpustakaan.append(buku_baru)
print(f"\n[INFO] Buku '{judul}' berhasil ditambahkan.")
def tampilkan_semua_buku():
"""Menampilkan semua buku yang terdaftar."""
if not perpustakaan:
print("\n[INFO] Perpustakaan kosong. Tidak ada buku untuk ditampilkan.")
return
print("\n--- DAFTAR BUKU PERPUSTAKAAN ---")
for i, buku in enumerate(perpustakaan, 1):
print(f"{i}. Judul: {buku['judul']} | Penulis: {buku['penulis']} | ISBN: {buku['isbn']}")
print("----------------------------------")
def cari_buku(judul):
"""Mencari buku berdasarkan judul (pencocokan parsial)."""
ditemukan = False
print(f"\n--- HASIL PENCARIAN UNTUK '{judul}' ---")
for buku in perpustakaan:
if judul.lower() in buku['judul'].lower():
print(f" -> Judul: {buku['judul']}, Penulis: {buku['penulis']}, ISBN: {buku['isbn']}")
ditemukan = True
if not ditemukan:
print("Tidak ada buku yang cocok dengan judul tersebut.")
print("--------------------------------------")
def hapus_buku(isbn):
"""Menghapus buku berdasarkan nomor ISBN."""
global perpustakaan
buku_sebelum_hapus = len(perpustakaan)
# Membuat list baru yang tidak mengandung buku dengan ISBN yang sama
perpustakaan = [buku for buku in perpustakaan if buku['isbn'] != isbn]
if len(perpustakaan) < buku_sebelum_hapus:
print(f"\n[INFO] Buku dengan ISBN {isbn} berhasil dihapus.")
else:
print(f"\n[ERROR] Buku dengan ISBN {isbn} tidak ditemukan.")
def menu_utama():
"""Menampilkan menu utama dan menjalankan loop program."""
while True:
print("\n===== SISTEM MANAJEMEN PERPUSTAKAAN =====")
print("1. Tambah Buku")
print("2. Tampilkan Semua Buku")
print("3. Cari Buku (berdasarkan Judul)")
print("4. Hapus Buku (berdasarkan ISBN)")
print("5. Keluar")
pilihan = input("Masukkan pilihan Anda (1-5): ")
if pilihan == '1':
judul = input("Masukkan Judul Buku: ")
penulis = input("Masukkan Penulis: ")
isbn = input("Masukkan ISBN: ")
tambah_buku(judul, penulis, isbn)
elif pilihan == '2':
tampilkan_semua_buku()
elif pilihan == '3':
cari = input("Masukkan sebagian atau seluruh judul buku yang dicari: ")
cari_buku(cari)
elif pilihan == '4':
isbn_hapus = input("Masukkan ISBN buku yang akan dihapus: ")
hapus_buku(isbn_hapus)
elif pilihan == '5':
print("\nTerima kasih telah menggunakan Sistem Perpustakaan. Sampai jumpa!")
break
else:
print("\nPilihan tidak valid. Silakan masukkan angka antara 1 sampai 5.")
# Menjalankan aplikasi
if __name__ == "__main__":
# Data awal untuk pengujian
tambah_buku("Belajar Python Dasar", "Budi Santoso", "978-602-1234-01-9")
tambah_buku("Struktur Data Lanjut", "Ani Wijaya", "978-602-1234-02-6")
menu_utama()
Kode di atas mengandalkan konsep pemrograman prosedural di mana fungsi-fungsi bertugas menangani logika bisnis spesifik.
Variabel global perpustakaan berfungsi sebagai basis data sementara kita.
Fungsi tambah_buku menerima tiga parameter dan membuat sebuah dictionary baru. Dictionary ini
kemudian ditambahkan ke akhir list perpustakaan menggunakan metode .append().
tampilkan_semua_buku menggunakan perulangan for dengan fungsi enumerate untuk
mendapatkan nomor urut buku. Sementara itu, cari_buku menggunakan metode string .lower()
dan operator in untuk melakukan pencarian yang tidak peka huruf besar/kecil (case-insensitive) dan parsial
(hanya perlu sebagian judul).
Operasi penghapusan dilakukan secara efisien menggunakan list comprehension. Kode ini membuat list baru yang hanya memuat elemen-elemen yang ISBN-nya tidak sama dengan ISBN yang ingin dihapus. Ini adalah cara yang umum digunakan di Python untuk memfilter elemen dari sebuah list tanpa menyebabkan masalah indeks saat iterasi.
Contoh program ini adalah titik awal. Untuk sistem perpustakaan yang lebih robust, langkah selanjutnya meliputi:
Buku yang sesungguhnya.Dengan memahami kerangka dasar ini, Anda dapat mulai bereksperimen dan mengintegrasikan fitur-fitur yang lebih kompleks ke dalam sistem perpustakaan berbasis Python Anda.