Panduan dan Contoh Program Kasir Bahasa C

Membuat Program Kasir Sederhana dengan Bahasa C

Program kasir adalah salah satu aplikasi dasar yang sering dibuat sebagai latihan pemrograman, terutama bagi pemula yang ingin memahami struktur dasar bahasa C, seperti penggunaan struct, switch-case, dan operasi input/output.

Tujuan utama dari program kasir sederhana ini adalah untuk mencatat barang yang dibeli, menghitung total harga, dan menampilkan struk pembelian. Meskipun dalam aplikasi nyata diperlukan fitur yang jauh lebih kompleks (seperti koneksi database atau antarmuka grafis), fondasi logikanya tetap relevan.

Struktur Dasar Program Kasir C

Dalam implementasi ini, kita akan menggunakan struktur data untuk merepresentasikan setiap item produk. Struktur ini akan menyimpan nama produk, kode unik, dan harga per unit.

Berikut adalah kerangka dasar yang diperlukan:

Visualisasi Konsep Program Kasir

Input Barang Kalkulasi Total & Pajak Struk

Visualisasi Alur Kerja Program Kasir

Contoh Kode Program Kasir Bahasa C (Versi Terminal)

Kode berikut adalah contoh dasar yang dapat dijalankan di lingkungan terminal atau command line menggunakan kompiler C seperti GCC.

Kode C: program_kasir.c
#include <stdio.h>
#include <string.h>

// Definisi Struktur Produk
struct Produk {
    int kode;
    char nama[50];
    float harga;
};

// Daftar produk yang tersedia
struct Produk daftar_produk[] = {
    {101, "Buku Tulis", 5000.00},
    {102, "Pensil 2B", 1500.00},
    {103, "Penghapus", 1000.00},
    {104, "Penggaris", 3500.00}
};

const int JUMLAH_PRODUK = sizeof(daftar_produk) / sizeof(daftar_produk[0]);

void tampilkan_menu() {
    printf("\n===================================\n");
    printf("      MENU PRODUK TERSEDIA\n");
    printf("===================================\n");
    printf("Kode | Nama Produk   | Harga Satuan\n");
    printf("-----------------------------------\n");
    for (int i = 0; i < JUMLAH_PRODUK; i++) {
        printf("%-4d | %-13s | Rp %.2f\n", 
               daftar_produk[i].kode, 
               daftar_produk[i].nama, 
               daftar_produk[i].harga);
    }
    printf("-----------------------------------\n");
}

int main() {
    int kode_input, jumlah_beli, pilihan_kode;
    float total_belanja = 0.0;
    int iterasi = 1;

    printf("==== SISTEM KASIR SEDERHANA BAHASA C ====\n");
    
    tampilkan_menu();

    while (1) {
        printf("\nMasukkan Kode Produk (atau 0 untuk selesai): ");
        if (scanf("%d", &kode_input) != 1) {
            printf("Input tidak valid. Silakan coba lagi.\n");
            // Membersihkan buffer input
            while (getchar() != '\n');
            continue;
        }
        
        if (kode_input == 0) {
            break; // Keluar dari loop jika input 0
        }

        pilihan_kode = -1;
        // Mencari kode produk yang cocok
        for (int i = 0; i < JUMLAH_PRODUK; i++) {
            if (daftar_produk[i].kode == kode_input) {
                pilihan_kode = i;
                break;
            }
        }

        if (pilihan_kode == -1) {
            printf("Kode produk tidak ditemukan. Silakan cek daftar.\n");
            continue;
        }

        printf("Produk: %s. Harga Satuan: Rp %.2f\n", daftar_produk[pilihan_kode].nama, daftar_produk[pilihan_kode].harga);
        
        printf("Jumlah dibeli: ");
        if (scanf("%d", &jumlah_beli) != 1 || jumlah_beli <= 0) {
            printf("Jumlah tidak valid.\n");
            // Membersihkan buffer
            while (getchar() != '\n');
            continue;
        }

        float subtotal = daftar_produk[pilihan_kode].harga * jumlah_beli;
        total_belanja += subtotal;

        printf("=> Subtotal ditambahkan: Rp %.2f\n", subtotal);
        iterasi++;
    }

    // Menampilkan Struk Akhir
    printf("\n\n==========================================\n");
    printf("           STRUK PEMBELIAN\n");
    printf("==========================================\n");
    printf("Terima kasih telah berbelanja.\n");
    printf("------------------------------------------\n");
    printf("TOTAL BELANJA: Rp %.2f\n", total_belanja);
    printf("------------------------------------------\n");
    printf("Pembayaran tunai (Contoh): Rp %.2f\n", total_belanja + 5000.00); // Simulasi uang bayar
    printf("Kembalian (Contoh): Rp %.2f\n", 5000.00);
    printf("==========================================\n");
    
    return 0;
}
            

Penjelasan Struktur Kode

Kode di atas memanfaatkan beberapa fitur penting dalam C:

1. Penggunaan struct

struct Produk memungkinkan kita mengelompokkan data terkait (kode, nama, harga) menjadi satu unit logis. Ini sangat penting untuk mengelola daftar barang secara terstruktur.

2. Inisialisasi Data

Array daftar_produk langsung diinisialisasi saat deklarasi. Dalam sistem kasir yang lebih besar, data ini biasanya dimuat dari file eksternal atau database.

3. Loop Transaksi (while(1))

Program berjalan dalam loop tak terbatas (while(1)) yang hanya akan berhenti ketika pengguna secara eksplisit memasukkan kode '0'. Ini meniru perilaku kasir yang terus memproses barang sampai transaksi selesai.

4. Pencarian Produk

Ketika kode dimasukkan, program melakukan iterasi melalui array daftar_produk untuk menemukan kecocokan. Ini adalah bentuk pencarian linier sederhana.

5. Kalkulasi Subtotal

Setelah kuantitas dikonfirmasi, subtotal dihitung (Harga Satuan * Jumlah Beli), dan nilai ini ditambahkan ke total_belanja akumulatif.

6. Penanganan Input Dasar

Meskipun sangat dasar, kode ini menyertakan pengecekan sederhana menggunakan scanf untuk memastikan input berupa angka. Dalam pengembangan profesional, penanganan error input harus jauh lebih kuat.

Memahami contoh program kasir bahasa C ini memberikan dasar yang kuat sebelum melangkah ke implementasi yang melibatkan memori dinamis atau antarmuka pengguna yang lebih modern.