Membuat Program Kasir Sederhana dengan C++

Program kasir adalah salah satu aplikasi dasar yang sangat berguna dalam dunia pemrograman. Bagi pemula yang sedang belajar C++, membuat program kasir sederhana adalah proyek yang sangat baik untuk memahami konsep dasar seperti input/output, percabangan (if/else), perulangan (loop), dan penggunaan struktur data sederhana seperti array atau vector. Program ini akan mensimulasikan proses penjualan barang, menghitung total harga, dan menampilkan struk sederhana.

Ikon Program Kasir Representasi visual sederhana dari mesin kasir dengan simbol uang dan kode batang. Total: Rp 0.00

Langkah Dasar Pembuatan Program Kasir C++

Untuk membuat program kasir sederhana, kita perlu mendefinisikan beberapa elemen utama. Pertama, kita harus memiliki daftar barang beserta harganya. Kedua, program harus mampu menerima input barang yang dibeli pelanggan. Ketiga, program harus menghitung total belanja dan mencetak struk.

1. Struktur Data Barang

Kita bisa menggunakan struct di C++ untuk merepresentasikan setiap barang, yang berisi nama barang dan harganya. Untuk menyimpan daftar barang yang tersedia, kita bisa menggunakan std::vector.

2. Input dan Perulangan

Proses transaksi biasanya melibatkan perulangan (loop) yang terus berjalan selama pelanggan masih ingin menambahkan barang. Di dalam loop ini, program akan meminta kode atau nama barang, mencari harganya, dan menambahkannya ke total belanja.

3. Kalkulasi dan Output

Setelah pelanggan selesai berbelanja (misalnya dengan memasukkan kode 'SELESAI' atau '0'), program akan keluar dari loop, menghitung total akhir, dan menampilkan struk yang rapi. Ini biasanya melibatkan penggunaan fungsi seperti std::cout dengan format yang jelas.

Contoh Kode Program Kasir Sederhana

Berikut adalah contoh implementasi dasar menggunakan C++ standar. Kode ini mengilustrasikan cara menyimpan data barang dan memproses transaksi.


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

using namespace std;

// Struktur untuk menyimpan detail barang
struct Barang {
    string nama;
    double harga;
};

void tampilkanStruk(const map<string, int>& cart, const map<string, Barang>& daftarBarang) {
    double totalBelanja = 0.0;
    
    cout << "\n=======================================\n";
    cout << "         STRUK PEMBELIAN\n";
    cout << "=======================================\n";
    cout << left << setw(20) << "Nama Barang" << right << setw(8) << "Harga" << setw(8) << "Qty" << endl;
    cout << "---------------------------------------\n";

    for (const auto& pair : cart) {
        const string& kode = pair.first;
        int qty = pair.second;
        
        if (daftarBarang.count(kode)) {
            const Barang& item = daftarBarang.at(kode);
            double subtotal = item.harga * qty;
            totalBelanja += subtotal;
            
            cout << left << setw(20) << item.nama
                 << right << setw(8) << fixed << setprecision(0) << item.harga
                 << setw(8) << qty << endl;
        }
    }
    
    cout << "---------------------------------------\n";
    cout << left << setw(30) << "TOTAL" 
         << right << setw(10) << fixed << setprecision(2) << totalBelanja << endl;
    cout << "=======================================\n";
}

int main() {
    // Daftar barang tersedia (menggunakan map untuk pencarian cepat berdasarkan kode)
    map<string, Barang> daftarBarang = {
        {"A01", {"Buku Tulis", 5000.0}},
        {"A02", {"Pensil 2B", 1500.0}},
        {"B01", {"Kopi Sachet", 2500.0}},
        {"B02", {"Air Mineral 600ml", 3000.0}}
    };

    map<string, int> keranjang;
    string kodeInput;
    
    cout << "--- APLIKASI KASIR SEDERHANA C++ ---\n";
    cout << "Ketik 'SELESAI' untuk mengakhiri transaksi.\n";
    
    // Menampilkan daftar barang
    cout << "\nDAFTAR BARANG:\n";
    for(const auto& pair : daftarBarang) {
        cout << "[" << pair.first << "] " << pair.second.nama 
             << " - Rp" << fixed << setprecision(0) << pair.second.harga << endl;
    }

    while (true) {
        cout << "\nMasukkan Kode Barang (atau 'SELESAI'): ";
        cin >> kodeInput;

        if (kodeInput == "SELESAI" || kodeInput == "selesai") {
            break;
        }

        // Memeriksa apakah kode ada di daftar
        if (daftarBarang.count(kodeInput)) {
            keranjang[kodeInput]++;
            cout << daftarBarang.at(kodeInput).nama << " ditambahkan.\n";
        } else {
            cout << "Kode barang tidak ditemukan. Silakan coba lagi.\n";
        }
    }

    if (!keranjang.empty()) {
        tampilkanStruk(keranjang, daftarBarang);
    } else {
        cout << "\nTransaksi dibatalkan atau tidak ada barang yang dibeli.\n";
    }

    return 0;
}

                

Penyempurnaan Lebih Lanjut

Program kasir sederhana di atas adalah fondasi yang kuat. Untuk membuatnya lebih fungsional, Anda bisa menambahkan beberapa fitur:

  • Pengelolaan Kuantitas: Saat ini, setiap input kode barang akan menambah kuantitas sebesar 1. Anda bisa memodifikasi input agar pengguna bisa memasukkan jumlah barang yang dibeli sekaligus.
  • Diskon: Tambahkan logika untuk menghitung diskon berdasarkan total belanja atau jenis barang tertentu.
  • Input Uang dan Kembalian: Setelah struk ditampilkan, tambahkan bagian di mana program meminta uang tunai dari pelanggan dan menghitung kembalian yang harus diberikan.
  • Input Barang Dinamis: Daripada menentukan daftar barang di awal (hardcode), Anda bisa membuat fungsi untuk menambah atau menghapus barang dari daftar saat program berjalan.

Menguasai program kasir sederhana di C++ akan membekali Anda dengan pemahaman praktis tentang bagaimana data dikelola dan diproses dalam aplikasi nyata. Selamat mencoba coding!