Membangun Contoh Program Kasir Sederhana dengan C++

Input Data Proses Hitung Output Struk

Diagram Alir Sederhana Program Kasir

Pendahuluan: Mengapa C++ untuk Program Kasir?

Meskipun bahasa pemrograman seperti Java, Python, atau PHP sering digunakan untuk aplikasi berbasis web atau GUI modern, C++ tetap menjadi pilihan yang kuat untuk sistem yang memerlukan performa tinggi dan kontrol memori yang ketat, seperti sistem POS (Point of Sale) embedded atau aplikasi desktop yang cepat. Contoh program kasir sederhana yang dibuat menggunakan C++ di lingkungan konsol (terminal) ini bertujuan untuk memahami dasar-dasar logika perhitungan, manajemen array atau vektor untuk daftar barang, serta input/output data.

Program kasir dasar harus mampu melakukan tiga fungsi utama: mencatat item yang dibeli, menghitung total harga, dan menampilkan struk pembayaran akhir. Dalam konteks C++, kita akan memanfaatkan struktur data dasar dan perulangan (loop) untuk mencapai tujuan ini.

Struktur Dasar Program Kasir C++

Untuk membuat sistem kasir yang fungsional, kita perlu mendefinisikan struktur data yang akan menyimpan informasi barang (nama, harga satuan, dan kuantitas). Dalam contoh ini, kita menggunakan `std::vector` dan `struct` untuk mengorganisir data barang.

Berikut adalah contoh implementasi sederhana yang fokus pada fungsionalitas inti tanpa antarmuka grafis yang rumit.


#include <iostream>
#include <vector>
#include <iomanip>
#include <string>

using namespace std;

// Struktur untuk merepresentasikan barang
struct Barang {
    string nama;
    double hargaSatuan;
    int kuantitas;
    double subtotal;
};

void tampilkanHeaderStruk() {
    cout << "\n====================================\n";
    cout << "        TOKO SERBA ADA - STRUK\n";
    cout << "====================================\n";
    cout << left << setw(20) << "Nama Barang" 
         << right << setw(8) << "Harga" 
         << setw(8) << "Qty" 
         << setw(10) << "Subtotal" << endl;
    cout << "------------------------------------\n";
}

int main() {
    vector<Barang> keranjang;
    double totalKeseluruhan = 0.0;
    int pilihan = 1;

    cout << "--- SISTEM KASIR SEDERHANA C++ ---\n";

    while (pilihan != 0) {
        Barang itemBaru;
        cout << "\nMasukkan detail barang (Ketik 0 untuk selesai): ";
        
        // Meminta nama barang
        cout << "\nNama Barang: ";
        getline(cin, itemBaru.nama);

        if (itemBaru.nama == "0") {
            pilihan = 0;
            break;
        }

        // Meminta harga dan kuantitas
        cout << "Harga Satuan (Rp): ";
        cin >> itemBaru.hargaSatuan;
        cout << "Kuantitas: ";
        cin >> itemBaru.kuantitas;

        // Menghitung subtotal
        itemBaru.subtotal = itemBaru.hargaSatuan * itemBaru.kuantitas;
        totalKeseluruhan += itemBaru.subtotal;

        keranjang.push_back(itemBaru);
        
        // Membersihkan buffer input
        cin.ignore(); 
    }

    // Menampilkan Struk
    tampilkanHeaderStruk();

    for (const auto& item : keranjang) {
        cout << left << setw(20) << item.nama
             << right << setw(8) << fixed << setprecision(0) << item.hargaSatuan
             << setw(8) << item.kuantitas
             << setw(10) << fixed << setprecision(0) << item.subtotal << endl;
    }

    cout << "------------------------------------\n";
    cout << right << setw(30) << "TOTAL BELANJA: " << fixed << setprecision(0) << totalKeseluruhan << endl;
    cout << "====================================\n";
    cout << "Terima Kasih Telah Berbelanja!\n";

    return 0;
}

Penjelasan Kode Kunci:

Pengembangan Lebih Lanjut

Contoh program kasir C++ di atas adalah fondasi. Dalam aplikasi nyata, Anda akan memerlukan beberapa fitur tambahan yang sangat penting, yang biasanya melibatkan penggunaan file I/O atau database:

  1. Manajemen Stok (Inventory): Kemampuan untuk mengurangi stok barang setelah transaksi selesai. Ini memerlukan penyimpanan data inventaris yang persisten (misalnya, menggunakan file teks atau CSV) yang harus dibaca saat program dimulai.
  2. Pencarian Barang: Daripada memasukkan nama secara manual, sistem kasir modern biasanya memiliki kode SKU (Stock Keeping Unit) atau fungsi pencarian cepat.
  3. Pembayaran dan Kembalian: Logika untuk menerima uang tunai dari pelanggan dan menghitung uang kembalian yang harus diberikan.
  4. Pelaporan: Menyimpan riwayat transaksi harian atau bulanan.

Penggunaan C++ memungkinkan implementasi fitur-fitur tersebut dengan kecepatan eksekusi yang sangat baik, yang krusial di lingkungan ritel yang sibuk.