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:
- 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. 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.- Perulangan
while: Bertanggung jawab untuk menjaga proses transaksi tetap berjalan. Ini akan terus meminta input kode barang sampai pengguna secara eksplisit mengetik '0'. - 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*. - Manipulator Output (I/O Manipulators): Fungsi seperti
std::setw()(set width) danstd::fixed & std::setprecision(2)sangat penting. Ini digunakan dalam fungsitampilkanMenudan 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:
- Manajemen Kuantitas: Tambahkan fitur untuk mengizinkan pelanggan membeli lebih dari satu unit barang yang sama, bukan hanya menghitung harga per unit.
- Input Pembayaran dan Kembalian: Setelah transaksi selesai, program harus meminta jumlah uang yang dibayarkan pelanggan dan secara otomatis menghitung uang kembalian yang harus diberikan.
- Penyimpanan Data Persisten: Saat ini, data produk hilang saat program ditutup. Menggunakan file I/O (seperti membaca dan menulis ke file teks atau CSV) akan membuat data inventaris tetap tersimpan antar sesi eksekusi.
- Penggunaan Class (OOP): Mengubah struktur menjadi class akan memungkinkan enkapsulasi yang lebih baik, terutama jika Anda ingin menambahkan metode seperti menghitung diskon atau mengecek stok.
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.