Membuat Sistem Kasir Sederhana dengan Python

+ Ilustrasi Simbol Transaksi Kasir Sederhana Ilustrasi proses kalkulasi sederhana pada sistem kasir.

Sistem kasir adalah tulang punggung operasional bisnis ritel. Meskipun aplikasi kasir profesional mungkin kompleks, membuat versi sederhana menggunakan bahasa pemrograman Python adalah cara yang sangat baik untuk memahami logika dasar input data, perhitungan harga, dan output struk.

Python dipilih karena sintaksnya yang bersih dan kemudahannya dalam menangani struktur data seperti dictionary (untuk menyimpan daftar produk) dan list (untuk menyimpan transaksi). Proyek ini dapat dijalankan langsung di terminal atau command prompt tanpa memerlukan antarmuka grafis (GUI) yang rumit, menjadikannya sangat ringan dan mudah dipelajari bagi pemula.

Struktur Data Inti: Produk

Langkah pertama dalam membuat sistem kasir adalah mendefinisikan katalog produk. Dalam Python, dictionary sangat ideal untuk ini, di mana key adalah kode atau nama produk, dan value adalah harga jualnya.


produk = {
    "A001": {"nama": "Buku Tulis", "harga": 5000},
    "A002": {"nama": "Pulpen Gel", "harga": 3500},
    "B010": {"nama": "Pensil 2B", "harga": 1500},
    "C050": {"nama": "Penghapus Besar", "harga": 2000}
}

        

Logika Pemrograman Kasir

Sistem kasir sederhana harus mampu melakukan beberapa tugas utama:

  1. Menerima input kode barang dari pengguna.
  2. Mencari harga barang berdasarkan kode tersebut.
  3. Menghitung total belanjaan sementara.
  4. Mengulang proses hingga pengguna selesai berbelanja.
  5. Menghitung total akhir, termasuk diskon (opsional), dan menampilkan struk.

Contoh Implementasi Perhitungan Dasar

Kita akan menggunakan loop tak terbatas (while True) untuk terus meminta input barang sampai ada perintah keluar.


def sistem_kasir(daftar_produk):
    keranjang = []
    total_belanja = 0
    
    print("--- Selamat Datang di Kasir Sederhana ---")
    print("Ketik 'SELESAI' untuk mengakhiri transaksi.")

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

    return keranjang, total_belanja

# Simulasi menjalankan fungsi
# hasil_keranjang, total = sistem_kasir(produk)

        

Mencetak Struk dan Total Akhir

Setelah loop berhenti, bagian selanjutnya adalah menampilkan output yang jelas, menyerupai struk belanja. Pemformatan string (f-string) sangat membantu untuk memastikan angka (terutama harga) ditampilkan dengan pemisah ribuan agar mudah dibaca.


def cetak_struk(keranjang, total):
    print("\n" + "="*30)
    print("       STRUK PEMBAYARAN")
    print("="*30)
    
    if not keranjang:
        print("Tidak ada barang yang dibeli.")
        return

    for i, item in enumerate(keranjang):
        # Format nama rata kiri, harga rata kanan
        print(f"{i+1}. {item['nama']:<15} Rp{item['harga']:,}")

    print("-" * 30)
    
    # Terapkan diskon sederhana (misalnya 5% jika total di atas 20000)
    diskon = 0
    if total > 20000:
        diskon = total * 0.05
        
    total_akhir = total - diskon

    print(f"Subtotal:             Rp{total:,}")
    if diskon > 0:
        print(f"Diskon (5%):          -Rp{int(diskon):,}")
    
    print("--------------------------------")
    print(f"TOTAL BAYAR:          Rp{int(total_akhir):,}")
    print("="*30)
    print("    TERIMA KASIH SUDAH BERBELANJA")

# Contoh pemanggilan lengkap
# keranjang, total = sistem_kasir(produk)
# cetak_struk(keranjang, total)

        

Keuntungan Menggunakan Python untuk Kasir Sederhana

Pengembangan sistem kasir di Python menawarkan beberapa keunggulan signifikan:

Secara keseluruhan, pemrograman kasir sederhana Python ini adalah proyek batu loncatan yang sempurna. Ini mengajarkan bagaimana data direpresentasikan, bagaimana kondisi diterapkan (seperti pengecekan kode barang), dan bagaimana output diformat dengan baik untuk pengalaman pengguna akhir yang profesional, meskipun hanya berjalan di konsol.