Contoh Program Python untuk Sistem Perpustakaan Sederhana

Ilustrasi Rak Buku Perpustakaan PERPUSTAKAAN

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.

Struktur Dasar Data Buku

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.

Contoh Program Python: Sistem Manajemen Buku

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

Penjelasan Mengenai Kode

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.

1. Menambahkan Buku

Fungsi tambah_buku menerima tiga parameter dan membuat sebuah dictionary baru. Dictionary ini kemudian ditambahkan ke akhir list perpustakaan menggunakan metode .append().

2. Menampilkan dan Mencari

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

3. Menghapus Buku

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.

Pengembangan Lebih Lanjut

Contoh program ini adalah titik awal. Untuk sistem perpustakaan yang lebih robust, langkah selanjutnya meliputi:

  1. Penggunaan Class: Mengubah struktur data menjadi objek Buku yang sesungguhnya.
  2. Persistensi Data: Menyimpan data ke file (seperti JSON, CSV, atau database SQLite) agar data tidak hilang ketika program ditutup.
  3. Validasi Input: Memastikan ISBN memiliki format yang benar atau mencegah penambahan duplikat ISBN.
  4. Manajemen Peminjaman: Menambahkan status ketersediaan buku (dipinjam/tersedia).

Dengan memahami kerangka dasar ini, Anda dapat mulai bereksperimen dan mengintegrasikan fitur-fitur yang lebih kompleks ke dalam sistem perpustakaan berbasis Python Anda.