Membangun Program Kasir Sederhana dengan Bahasa C

STRUK PEMBELIAN Buku Tulis...........Rp 5.000 Pensil 2B.............Rp 2.000 TOTAL: Rp 7.000 Terima Kasih

Ilustrasi sederhana output program kasir.

Program kasir, sering disebut juga Point of Sale (POS), adalah fondasi penting dalam mengelola transaksi di berbagai bisnis, mulai dari toko kelontong hingga kafe kecil. Meskipun kini banyak sistem POS berbasis cloud yang canggih, memahami cara membangun versi sederhana menggunakan bahasa pemrograman fundamental seperti C memberikan pemahaman mendalam tentang logika input/output, manajemen data sederhana, dan perhitungan dasar.

Mengapa Menggunakan Bahasa C untuk Program Kasir Sederhana?

Bahasa C terkenal karena kecepatannya, efisiensi memorinya, dan kedekatannya dengan arsitektur mesin. Untuk tugas perhitungan cepat seperti menghitung total belanja, C adalah pilihan yang solid. Dalam konteks pembelajaran, membuat program kasir di C melatih pemrogram untuk mengelola struktur data dasar (seperti array atau struct) dan mengimplementasikan logika kondisional (if/else) untuk menentukan diskon atau pajak.

Struktur Dasar Program Kasir di C

Program kasir sederhana biasanya melibatkan empat tahap utama:

  1. Input Data Barang: Memasukkan nama barang, harga satuan, dan kuantitas yang dibeli.
  2. Perhitungan Subtotal: Mengalikan harga satuan dengan kuantitas.
  3. Perhitungan Total Akhir: Menjumlahkan semua subtotal, seringkali ditambah PPN atau dikurangi diskon.
  4. Output Struk: Menampilkan rincian transaksi secara rapi.

Contoh Implementasi Kode

Berikut adalah cuplikan dasar bagaimana Anda dapat merepresentasikan struktur barang dan melakukan perhitungan awal dalam bahasa C. Kita akan menggunakan struktur (struct) untuk mengorganisasi data setiap item.

Struktur Data Barang
#include <stdio.h>
#include <string.h>

// Mendefinisikan struktur untuk satu item barang
struct Item {
    char nama[50];
    float harga;
    int kuantitas;
};

// Batas maksimal item yang bisa dibeli (untuk contoh sederhana)
#define MAX_ITEMS 10
            

Proses Input dan Pengulangan Transaksi

Karena program kasir harus bisa menangani banyak item, kita memerlukan perulangan (loop). Dalam C, `for` atau `while` sangat cocok untuk mengiterasi proses input hingga pengguna memutuskan untuk berhenti.

Logika Input dan Iterasi
void input_barang(struct Item *barang) {
    printf("Masukkan nama barang: ");
    scanf("%s", barang->nama);
    printf("Masukkan harga satuan (Rp): ");
    scanf("%f", &barang->harga);
    printf("Masukkan kuantitas: ");
    scanf("%d", &barang->kuantitas);
}

int main() {
    struct Item daftar_belanja[MAX_ITEMS];
    float total_keseluruhan = 0.0;
    int i = 0;
    char lanjut;

    do {
        if (i < MAX_ITEMS) {
            printf("\n--- Input Item ke-%d ---\n", i + 1);
            input_barang(&daftar_belanja[i]);
            
            // Menghitung subtotal
            float subtotal = daftar_belanja[i].harga * daftar_belanja[i].kuantitas;
            total_keseluruhan += subtotal;
            
            printf("Subtotal Item ini: Rp %.2f\n", subtotal);
            i++;
        } else {
            printf("Batas maksimum item tercapai.\n");
            break;
        }

        printf("\nTambahkan item lagi? (y/n): ");
        scanf(" %c", &lanjut); // Spasi sebelum %c penting untuk mengabaikan whitespace
    } while (lanjut == 'y' || lanjut == 'Y');
    
    // ... Lanjutkan ke tahap output struk ...
    return 0;
}
            

Menghasilkan Output Struk yang Rapi

Tahap akhir adalah menyajikan data transaksi. Menggunakan `printf` dengan format yang spesifik sangat krusial di sini agar output terlihat seperti struk nyata. Kita menggunakan format specifier seperti `%.2f` untuk menampilkan mata uang dengan dua desimal.

Output Struk (Lanjutan dari main)
    printf("\n========================================\n");
    printf("           STRUK PEMBAYARAN\n");
    printf("========================================\n");
    printf("%-20s %-5s %-10s\n", "NAMA", "QTY", "HARGA");
    printf("----------------------------------------\n");

    for (int j = 0; j < i; j++) {
        float subtotal_item = daftar_belanja[j].harga * daftar_belanja[j].kuantitas;
        printf("%-20s %-5d Rp %.2f\n", 
               daftar_belanja[j].nama, 
               daftar_belanja[j].kuantitas, 
               subtotal_item);
    }

    printf("----------------------------------------\n");
    printf("TOTAL BELANJA: Rp %.2f\n", total_keseluruhan);
    printf("========================================\n");
    printf("      TERIMA KASIH ATAS KUNJUNGAN ANDA\n");
            

Tantangan dan Pengembangan Lanjutan

Program di atas adalah dasar. Dalam pengembangan lebih lanjut, Anda bisa menambahkan fitur seperti: kalkulasi PPN otomatis, penerapan berbagai tingkat diskon berdasarkan total belanja (misalnya, diskon 10% jika total di atas 100.000), penanganan pembayaran tunai (menghitung kembalian), dan yang paling signifikan, menyimpan data transaksi secara persisten menggunakan file I/O (misalnya, menyimpan ke file .txt atau .csv). Menguasai dasar-dasar C ini membuka pintu untuk memahami kompleksitas sistem POS modern.