Implementasi Program Kasir Diskon dengan C++

Pendahuluan Sistem Kasir

Sistem kasir (Point of Sale/POS) adalah tulang punggung bagi banyak bisnis ritel. Fungsi utamanya adalah mencatat transaksi penjualan, menghitung total biaya, dan seringkali mengelola diskon. Dalam konteks pemrograman, membuat program kasir sederhana menggunakan bahasa seperti C++ adalah cara yang bagus untuk memahami logika dasar aritmatika dan input/output data.

Contoh program kasir diskon ini akan mengintegrasikan fitur dasar: memasukkan harga barang, menghitung subtotal, menerapkan diskon berdasarkan kriteria tertentu (misalnya, diskon persentase jika total melebihi ambang batas), dan menampilkan struk akhir. Ini memberikan dasar yang kuat sebelum beralih ke antarmuka grafis atau koneksi database yang lebih kompleks.

Ikon Struk Transaksi

Kode Program C++ Kasir dengan Logika Diskon

Program di bawah ini mengimplementasikan logika diskon sederhana: jika total belanja melebihi Rp 100.000, pelanggan otomatis mendapatkan diskon 10%.


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

using namespace std;

// Fungsi untuk menghitung total dan menerapkan diskon
void hitung_transaksi(double total_belanja) {
    const double AMBANG_BATAS_DISKON = 100000.0;
    const double PERSENTASE_DISKON = 0.10; // 10%

    double diskon = 0.0;
    double total_setelah_diskon = total_belanja;

    cout << fixed << setprecision(2);

    if (total_belanja >= AMBANG_BATAS_DISKON) {
        diskon = total_belanja * PERSENTASE_DISKON;
        total_setelah_diskon = total_belanja - diskon;
        cout << "\n*** SELAMAT! Anda mendapatkan diskon 10% karena total belanja di atas Rp 100.000. ***" << endl;
    }

    cout << "\n--------------------------------------" << endl;
    cout << "Rincian Pembayaran:" << endl;
    cout << "--------------------------------------" << endl;
    cout << "Subtotal Belanja    : Rp " << total_belanja << endl;
    cout << "Diskon Diterapkan   : Rp " << diskon << endl;
    cout << "--------------------------------------" << endl;
    cout << "TOTAL AKHIR         : Rp " << total_setelah_diskon << endl;
    cout << "--------------------------------------" << endl;
}

int main() {
    cout << "========================================" << endl;
    cout << "       SISTEM KASIR SEDERHANA C++       " << endl;
    cout << "========================================" << endl;

    int jumlah_item;
    double harga_item, total_belanja = 0.0;
    string nama_item;

    cout << "Masukkan jumlah jenis barang yang dibeli: ";
    cin >> jumlah_item;

    for (int i = 1; i <= jumlah_item; ++i) {
        cout << "\n--- Item ke-" << i << " ---" << endl;
        
        // Membersihkan buffer input sebelum getline
        cin.ignore(); 
        
        cout << "Nama Barang: ";
        getline(cin, nama_item);
        
        cout << "Harga Satuan (Rp): ";
        cin >> harga_item;

        // Dalam contoh ini, kita asumsikan hanya 1 kuantitas per input untuk penyederhanaan
        total_belanja += harga_item; 
        
        cout << nama_item << " ditambahkan ke keranjang." << endl;
    }

    // Panggil fungsi perhitungan
    hitung_transaksi(total_belanja);

    return 0;
}
            

Penjelasan Komponen Kode

Header dan Setup:

Kita menggunakan <iostream> untuk input/output dasar, <iomanip> untuk memformat output mata uang agar memiliki dua digit desimal (menggunakan fixed dan setprecision(2)), dan <string> untuk menyimpan nama barang.

Struktur Perulangan (Loop):

Program meminta pengguna memasukkan jumlah jenis barang terlebih dahulu. Kemudian, sebuah for loop digunakan untuk mengiterasi setiap barang, meminta nama dan harganya. Setiap harga yang dimasukkan akan langsung ditambahkan ke variabel total_belanja.

Logika Diskon dalam Fungsi hitung_transaksi:

Fungsi ini adalah inti dari perhitungan diskon. Di dalamnya, didefinisikan ambang batas diskon (Rp 100.000) dan persentase diskon (10%).

Kondisi if (total_belanja >= AMBANG_BATAS_DISKON) memastikan diskon hanya diterapkan jika total kotor telah mencapai syarat. Jika syarat terpenuhi, variabel diskon dihitung, dan total_setelah_diskon diperbarui. Jika tidak, diskon tetap bernilai 0.

Output yang Rapi:

Penggunaan iomanip memastikan bahwa output terlihat profesional seperti struk nyata. Baris-baris pemisah (menggunakan - atau =) sangat penting untuk memisahkan bagian subtotal, diskon, dan total akhir, meningkatkan keterbacaan struk bagi pengguna atau kasir.

Pengembangan Lebih Lanjut

Contoh program kasir diskon ini bersifat dasar. Untuk aplikasi kasir yang lebih fungsional di dunia nyata, beberapa peningkatan dapat dilakukan:

Meskipun sederhana, implementasi logika diskon adalah langkah krusial dalam memahami bagaimana kalkulasi bisnis diterjemahkan ke dalam kode pemrograman. Struktur yang jelas dan penggunaan tipe data yang tepat (seperti double untuk mata uang) sangat ditekankan dalam contoh ini.