Pengembangan perangkat lunak seringkali dimulai dari proyek-proyek dasar yang fundamental, dan salah satu contoh klasik yang sangat berguna untuk pemula dalam pemrograman C++ adalah pembuatan program kasir sederhana. Program kasir, meskipun tampak sepele, melibatkan konsep inti pemrograman seperti input/output, struktur data (array atau vector), perulangan (looping), dan logika kondisional (if/else).
Tujuan utama dari program ini adalah mensimulasikan proses transaksi di toko: menerima item yang dibeli, menghitung total harga, dan menampilkan kembalian jika diperlukan. Menguasai implementasi program kasir sederhana C++ memberikan fondasi kuat sebelum melangkah ke sistem basis data yang lebih kompleks.
Meskipun Python atau Java sering digunakan untuk aplikasi enterprise, C++ menawarkan kecepatan eksekusi yang superior karena sifatnya yang terkompilasi langsung ke kode mesin. Untuk aplikasi ritel yang sangat sensitif terhadap waktu respons—walaupun hanya simulasi—memahami bagaimana C++ mengelola memori dan eksekusi sangatlah berharga. Selain itu, banyak sistem POS (Point of Sale) tertanam yang memerlukan kinerja tinggi masih mengandalkan kode berbasis C atau C++.
Langkah pertama dalam membuat program kasir sederhana adalah mendefinisikan barang dagangan. Dalam C++, ini bisa dilakukan dengan menggunakan struktur (struct) untuk menyimpan informasi per item:
struct Item {
int id;
std::string nama;
double harga;
int stok;
};
Anda perlu menginisialisasi daftar barang ini di awal program. Untuk versi yang benar-benar sederhana, daftar ini bisa di hardcode. Dalam skenario yang lebih maju, data ini akan dimuat dari file teks atau basis data sederhana.
Inti dari program kasir adalah proses penambahan item ke keranjang belanja. Ini harus dilakukan dalam sebuah perulangan (loop) yang terus berjalan hingga pengguna memutuskan untuk mengakhiri transaksi (misalnya, dengan mengetikkan '0' atau 'SELESAI').
Di dalam loop ini, program akan meminta ID atau nama barang, memvalidasi ketersediaan stok, dan menambahkan harga barang tersebut ke total belanjaan sementara. Penggunaan fungsi sangat disarankan di sini untuk menjaga kode tetap bersih.
Sebuah alur kerja yang baik akan membantu Anda memvisualisasikan logika pemrograman. Berikut adalah representasi sederhana dari alur kerja:
Dalam diagram di atas, jika stok ada, total belanja akan diperbarui dan sistem akan kembali meminta input (looping). Jika stok tidak ada, program akan memberikan notifikasi dan kembali ke input.
Setelah semua item dimasukkan, program harus beralih ke fase pembayaran. Di sini, pengguna akan memasukkan jumlah uang yang dibayarkan oleh pelanggan. Validasi penting di sini adalah memastikan uang yang dibayar lebih besar atau sama dengan total belanja. Jika uang yang dibayar kurang, program harus meminta input ulang. Jika cukup, program akan menampilkan struk akhir, yang mencakup daftar barang yang dibeli, total harga, uang yang dibayar, dan jumlah kembalian yang harus dikembalikan.
Penggunaan tipe data double atau float sangat penting untuk menangani nilai mata uang, meskipun dalam aplikasi profesional, perhitungan moneter sering kali dihindari menggunakan float murni karena isu presisi, dan diganti dengan perhitungan berbasis integer (misalnya, menggunakan sen).
Berikut adalah kerangka dasar yang menunjukkan bagaimana struktur C++ dapat diterapkan:
#include <iostream>
#include <vector>
#include <string>
#include <iomanip> // Untuk formatting output
using namespace std;
// Definisikan struct Item di sini...
void tampilkanMenu(const vector<Item>& daftarBarang) {
// Fungsi untuk menampilkan barang yang tersedia
}
int main() {
// Inisialisasi daftar barang (contoh data)
vector<Item> inventaris = {
{101, "Buku Tulis", 5000.0, 50},
{102, "Pensil 2B", 2500.0, 100}
};
double totalBelanja = 0.0;
int idInput;
tampilkanMenu(inventaris);
// Loop utama transaksi
while (true) {
cout << "Masukkan ID Barang (0 untuk selesai): ";
cin >> idInput;
if (idInput == 0) break;
// Logika pencarian item dan penambahan ke total
// Pastikan stok diperbarui
}
// Bagian Pembayaran dan Kembalian
if (totalBelanja > 0) {
cout << fixed << setprecision(2);
cout << "\n--- STRUK PEMBAYARAN ---" << endl;
cout << "Total: Rp " << totalBelanja << endl;
double dibayar;
cout << "Bayar: Rp ";
cin >> dibayar;
if (dibayar >= totalBelanja) {
double kembalian = dibayar - totalBelanja;
cout << "Kembalian: Rp " << kembalian << endl;
} else {
cout << "Uang tidak mencukupi!" << endl;
}
}
return 0;
}
Dengan mengikuti langkah-langkah ini, Anda dapat membangun program kasir sederhana C++ yang tidak hanya berfungsi sebagai alat bantu belajar, tetapi juga sebagai simulasi nyata dari sistem transaksi dasar.