Panduan Membuat Program Kasir Sederhana dengan Python

POS

Simulasi sistem Point of Sale (POS) sederhana.

Membuat program kasir sederhana adalah salah satu proyek dasar yang sangat baik untuk memahami konsep pemrograman, terutama dalam hal input/output, perulangan (looping), dan struktur data. Bahasa Python, dengan sintaksnya yang bersih dan mudah dibaca, adalah pilihan ideal untuk tugas ini. Program kasir ini akan memungkinkan pengguna memasukkan item yang dibeli, menghitung total harga, dan memberikan kembalian.

Apa yang Kita Butuhkan?

Untuk membuat sistem kasir minimalis, kita memerlukan beberapa komponen utama:

  1. Database Produk (Simulasi): Sebuah struktur data (biasanya dictionary di Python) untuk menyimpan nama barang dan harganya.
  2. Input Transaksi: Mekanisme agar kasir dapat memasukkan kode atau nama barang yang dibeli berulang kali.
  3. Perhitungan: Logika untuk menjumlahkan semua harga barang.
  4. Output Struk: Menampilkan rincian pembelian dan total akhir.

Struktur Kode Dasar Python

Mari kita mulai dengan mendefinisikan inventaris atau daftar produk yang tersedia. Kita akan menggunakan dictionary di Python karena memungkinkan kita memetakan nama barang ke harganya secara efisien.


# 1. Database Produk (Simulasi)
produk = {
    "A001": {"nama": "Kopi Hitam", "harga": 10000},
    "A002": {"nama": "Teh Manis", "harga": 8000},
    "B010": {"nama": "Nasi Goreng", "harga": 25000},
    "C050": {"nama": "Air Mineral", "harga": 5000}
}

total_belanja = 0
keranjang = []
        

Langkah selanjutnya adalah membuat perulangan (loop) agar kasir bisa terus memasukkan barang sampai transaksi selesai. Di sini kita menggunakan perulangan `while True` yang akan berhenti hanya ketika pengguna memasukkan perintah keluar (misalnya, 'SELESAI').

Proses Input dan Kalkulasi

Dalam perulangan, kita meminta kode produk. Jika kode ada di database, harga barang ditambahkan ke total belanja, dan item tersebut dicatat di variabel `keranjang`. Jika kode tidak ditemukan, sistem akan memberikan pesan kesalahan.


while True:
    kode = input("Masukkan kode produk (atau ketik SELESAI): ").upper()
    
    if kode == 'SELESAI':
        break
    
    if kode in produk:
        item = produk[kode]
        harga_item = item["harga"]
        total_belanja += harga_item
        keranjang.append((item["nama"], harga_item))
        print(f"Ditambahkan: {item['nama']} - Rp{harga_item}")
    else:
        print("Kode produk tidak ditemukan. Silakan coba lagi.")

        

Menghitung Kembalian dan Menampilkan Struk

Setelah perulangan berhenti, kita perlu menanyakan berapa uang yang dibayarkan oleh pelanggan dan menghitung kembalian. Bagian ini krusial untuk menyelesaikan transaksi. Kita perlu memastikan uang yang dibayarkan lebih besar atau sama dengan total belanja.


# 3. Menampilkan Rincian Struk
print("\n--- STRUK PEMBAYARAN ---")
if not keranjang:
    print("Tidak ada barang yang dibeli.")
else:
    for nama, harga in keranjang:
        print(f"{nama:<15} Rp{harga:>8,}") # Format rapi
    
    print("-" * 30)
    print(f"TOTAL BELANJA: Rp{total_belanja:,}")

    # 4. Input Pembayaran dan Kembalian
    while True:
        try:
            bayar = int(input("Uang Tunai yang Dibayar: "))
            if bayar < total_belanja:
                print("Uang tidak cukup. Mohon masukkan jumlah yang lebih besar.")
                continue
            
            kembalian = bayar - total_belanja
            print(f"Uang Kembalian: Rp{kembalian:,}")
            print("--- TERIMA KASIH ---")
            break
        except ValueError:
            print("Input pembayaran harus berupa angka.")
        

Keunggulan Program Kasir Sederhana

Meskipun program ini sederhana dan berjalan di konsol (bukan antarmuka grafis), ia mengajarkan dasar-dasar penting dalam pengembangan perangkat lunak ritel. Struktur data yang digunakan mudah diperluas; misalnya, Anda bisa menambahkan fitur diskon dengan menambahkan kolom persentase ke dictionary produk, atau mengelola stok dengan mengurangi kuantitas setelah pembelian. Penggunaan blok try-except pada input pembayaran menunjukkan penanganan error dasar yang penting agar program tidak berhenti mendadak saat pengguna memasukkan teks alih-alih angka. Untuk proyek selanjutnya, Anda dapat mengintegrasikan modul pihak ketiga untuk membuat antarmuka web atau desktop yang lebih interaktif.