Implementasi Program Kasir Sederhana dengan Dev C++

Pengantar Pemrograman Kasir di Dev C++

Membuat program kasir merupakan salah satu proyek fundamental yang sering dijadikan latihan bagi pemula yang menggunakan bahasa pemrograman C++. Dev C++ adalah lingkungan pengembangan terintegrasi (IDE) yang populer untuk C dan C++, menawarkan kemudahan dalam kompilasi dan eksekusi kode. Program kasir sederhana biasanya melibatkan input data barang, perhitungan total harga, diskon (opsional), dan menampilkan struk pembayaran.

Tujuan utama dari contoh program ini adalah untuk mendemonstrasikan bagaimana struktur dasar C++ seperti variabel, perulangan (loop), dan percabangan (if/else) dapat diaplikasikan untuk menyelesaikan masalah transaksi bisnis sehari-hari. Karena sifatnya yang sederhana, contoh ini akan menggunakan struktur data array atau struktur dasar untuk menyimpan daftar produk.

Representasi visual sederhana dari transaksi data.

Contoh Kode Program Kasir Sederhana

Kode di bawah ini mengimplementasikan fungsi dasar kasir menggunakan struktur data sederhana untuk menyimpan nama produk dan harganya. Program akan meminta pengguna memasukkan kode produk yang dibeli berulang kali hingga pengguna memilih untuk selesai.


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

using namespace std;

// Struktur untuk menyimpan data produk
struct Produk {
    int kode;
    string nama;
    double harga;
};

void tampilkanMenu(const vector<Produk>& daftar) {
    cout << "======================================" << endl;
    cout << "       DAFTAR BARANG TERSEDIA" << endl;
    cout << "======================================" << endl;
    cout << left << setw(10) << "Kode" << setw(20) << "Nama Barang" << "Harga" << endl;
    cout << "--------------------------------------" << endl;
    for (const auto& item : daftar) {
        cout << left << setw(10) << item.kode
             << setw(20) << item.nama
             << fixed << setprecision(2) << item.harga << endl;
    }
    cout << "======================================" << endl;
}

int main() {
    // Inisialisasi data produk
    vector<Produk> daftarProduk = {
        {101, "Kopi Instan", 3500.00},
        {102, "Buku Catatan", 15000.00},
        {103, "Pensil HB", 2500.00},
        {104, "Air Mineral 600ml", 5000.00}
    };

    int kodeInput;
    double totalBelanja = 0.0;
    bool transaksiBerjalan = true;

    cout << "Selamat Datang di Sistem Kasir Sederhana!" << endl;

    while (transaksiBerjalan) {
        tampilkanMenu(daftarProduk);
        cout << "Masukkan Kode Barang (atau 0 untuk selesai): ";
        
        if (!(cin >> kodeInput)) {
            cout << "Input tidak valid. Harap masukkan angka." << endl;
            cin.clear();
            cin.ignore(10000, '\n');
            continue;
        }

        if (kodeInput == 0) {
            transaksiBerjalan = false;
            break;
        }

        bool ditemukan = false;
        for (const auto& item : daftarProduk) {
            if (item.kode == kodeInput) {
                totalBelanja += item.harga;
                cout << "--> Barang '" << item.nama << "' ditambahkan. Harga: Rp" 
                     << fixed << setprecision(2) << item.harga << endl;
                ditemukan = true;
                break;
            }
        }

        if (!ditemukan) {
            cout << "Error: Kode barang tidak ditemukan. Coba lagi." << endl;
        }
        cout << "--------------------------------------" << endl;
    }

    // Output Struk Akhir
    cout << "\n\n";
    cout << "======================================" << endl;
    cout << "              STRUK PEMBAYARAN" << endl;
    cout << "======================================" << endl;
    
    double pajak = totalBelanja * 0.11; // Contoh PPN 11%
    double totalAkhir = totalBelanja + pajak;

    cout << left << setw(20) << "Subtotal:" << "Rp" << << fixed << setprecision(2) << totalBelanja << endl;
    cout << left << setw(20) << "PPN (11%):" << "Rp" << << fixed << setprecision(2) << pajak << endl;
    cout << "--------------------------------------" << endl;
    cout << left << setw(20) << "TOTAL BAYAR:" << "Rp" << << fixed << setprecision(2) << totalAkhir << endl;
    cout << "======================================" << endl;
    cout << "Terima kasih atas kunjungan Anda!" << endl;

    return 0;
}
            

Penjelasan Struktur Kode

Dalam program kasir Dev C++ ini, beberapa elemen penting telah digunakan untuk memastikan fungsionalitas berjalan lancar:

  1. Struktur Produk: Ini adalah cara C++ untuk mengelompokkan data terkait (kode, nama, harga) menjadi satu unit logis. Hal ini membuat pengelolaan inventaris lebih terorganisir daripada menggunakan variabel terpisah.
  2. std::vector: Digunakan untuk menyimpan koleksi produk. Keuntungan utama vector adalah sifatnya yang dinamis; ukuran daftar produk dapat bertambah atau berkurang tanpa perlu mendeklarasikan ukuran maksimum di awal, berbeda dengan array statis.
  3. Perulangan while: Bertanggung jawab untuk menjaga proses transaksi tetap berjalan. Ini akan terus meminta input kode barang sampai pengguna secara eksplisit mengetik '0'.
  4. Input Validasi Sederhana: Terdapat pengecekan dasar menggunakan if (!(cin >> kodeInput)) untuk memastikan pengguna memasukkan data numerik. Jika pengguna memasukkan teks, program akan membersihkan *buffer* input dan melanjutkan tanpa *crash*.
  5. Manipulator Output (I/O Manipulators): Fungsi seperti std::setw() (set width) dan std::fixed & std::setprecision(2) sangat penting. Ini digunakan dalam fungsi tampilkanMenu dan output struk untuk memastikan kolom-kolom laporan rapi dan harga selalu ditampilkan dalam format mata uang dengan dua desimal.

Optimalisasi dan Pengembangan Lanjut

Meskipun kode di atas berfungsi sebagai dasar, program kasir yang sesungguhnya memerlukan fitur yang lebih kompleks. Untuk proyek selanjutnya, Anda bisa mempertimbangkan pengembangan berikut:

Dev C++ sangat cocok untuk bereksperimen dengan konsep-konsep ini. Dengan menguasai fondasi yang ditunjukkan dalam contoh program kasir sederhana ini, Anda akan memiliki landasan kuat untuk membangun aplikasi C++ yang lebih canggih di masa depan.