Membuat Contoh Program Kasir Sederhana dengan Python

$ 99.99 OK Menu STRUK

Ilustrasi Konsep Sistem Kasir Sederhana

Membuat sistem kasir (Point of Sale/POS) adalah salah satu cara terbaik untuk memahami logika pemrograman dasar, terutama dalam mengelola data, perhitungan, dan input/output. Python, dengan sintaksnya yang bersih dan mudah dibaca, menjadikannya pilihan ideal untuk membuat contoh program kasir python, bahkan untuk pemula.

Mengapa Python untuk Program Kasir?

Program kasir membutuhkan manipulasi data (daftar barang, harga, stok), perhitungan matematis (total, diskon, kembalian), dan interaksi pengguna. Python unggul dalam hal ini karena:

Struktur Dasar Program Kasir Python

Sebuah program kasir minimal harus memiliki tiga komponen utama:

  1. Database Produk: Tempat menyimpan nama barang dan harganya. Dalam contoh sederhana, ini bisa berupa dictionary Python.
  2. Proses Transaksi: Loop untuk menerima input barang yang dibeli oleh pelanggan.
  3. Perhitungan dan Output: Menghitung subtotal, menerapkan pajak (opsional), dan menampilkan struk akhir.

Contoh Program Kasir Python (Versi Konsol Sederhana)

Berikut adalah contoh kode Python yang mengimplementasikan fungsi dasar kasir. Program ini akan meminta input nama barang, menghitung total, dan menampilkan struk.


# 1. Database Produk (Nama: Harga)
database_produk = {
    "AP001": {"nama": "Kopi Hitam", "harga": 10000},
    "AP002": {"nama": "Teh Dingin", "harga": 7500},
    "AP003": {"nama": "Roti Isi", "harga": 15000},
    "AP004": {"nama": "Air Mineral", "harga": 5000}
}

def tampilkan_menu():
    print("\n--- Daftar Barang Tersedia ---")
    for kode, data in database_produk.items():
        print(f"Kode: {kode} | Nama: {data['nama']:<15} | Harga: Rp {data['harga']:,}")
    print("------------------------------")

def proses_transaksi():
    keranjang = {}
    total_belanja = 0
    
    print("\n>>> Mulai Transaksi <<<")
    
    while True:
        kode = input("Masukkan kode barang (atau 'SELESAI' untuk hitung): ").upper()
        
        if kode == 'SELESAI':
            break
            
        if kode in database_produk:
            qty = int(input(f"Berapa kuantitas {database_produk[kode]['nama']}? "))
            harga_satuan = database_produk[kode]['harga']
            subtotal_item = harga_satuan * qty
            
            # Menambahkan ke keranjang atau update kuantitas
            if kode in keranjang:
                keranjang[kode]['qty'] += qty
            else:
                keranjang[kode] = {
                    'nama': database_produk[kode]['nama'],
                    'harga': harga_satuan,
                    'qty': qty
                }
            
            total_belanja += subtotal_item
            print(f"{database_produk[kode]['nama']} ({qty}x) ditambahkan. Subtotal sementara: Rp {total_belanja:,}")
            
        else:
            print("Kode barang tidak ditemukan. Silakan coba lagi.")
            
    return keranjang, total_belanja

def cetak_struk(keranjang, total):
    print("\n" + "="*30)
    print("       STRUK PEMBAYARAN")
    print("="*30)
    print(f"{'Barang':<15} {'Qty':<5} {'Total':>8}")
    print("-" * 30)
    
    for kode, item in keranjang.items():
        subtotal = item['qty'] * item['harga']
        print(f"{item['nama']:<15} {item['qty']:<5} Rp {subtotal:,:>7}")
        
    print("-" * 30)
    print(f"{'TOTAL':<20} Rp {total:,:>8}")
    
    # Proses Pembayaran
    while True:
        try:
            bayar = int(input("Uang Tunai Diterima: Rp "))
            if bayar >= total:
                kembali = bayar - total
                print(f"Kembalian: Rp {kembali:,}")
                break
            else:
                print("Uang tidak mencukupi.")
        except ValueError:
            print("Input pembayaran tidak valid.")
            
    print("="*30)
    print("   Terima Kasih Sudah Berbelanja!")
    print("="*30)

# --- Eksekusi Program Utama ---
if __name__ == "__main__":
    tampilkan_menu()
    
    item_dibeli, grand_total = proses_transaksi()
    
    if grand_total > 0:
        cetak_struk(item_dibeli, grand_total)
    else:
        print("\nTransaksi dibatalkan karena tidak ada barang yang dibeli.")


        

Penjelasan Komponen Kode

Kode di atas menggunakan beberapa konsep penting Python:

  1. Dictionary Bersarang: database_produk menyimpan data barang dengan kode unik sebagai kunci utama. Ini mensimulasikan tabel data.
  2. Fungsi Modular: Membagi tugas menjadi fungsi terpisah (tampilkan_menu, proses_transaksi, cetak_struk) membuat program lebih terstruktur.
  3. Looping (while True): Digunakan dalam proses_transaksi untuk terus meminta input barang hingga pengguna mengetik 'SELESAI'.
  4. Format String (f-strings): Digunakan untuk menampilkan output yang rapi, termasuk pemformatan angka dengan ribuan (misalnya, {total:,}).

Pengembangan Lebih Lanjut (Skalabilitas)

Meskipun contoh ini sangat fungsional untuk demonstrasi, program kasir sungguhan biasanya memerlukan lebih banyak fitur. Untuk membuat contoh program kasir python Anda lebih canggih, pertimbangkan hal berikut:

Dengan memahami fondasi ini, Anda dapat dengan mudah memperluas kode ini menjadi sistem kasir yang kompleks, membuktikan betapa serbagunanya Python dalam berbagai aplikasi bisnis.