Program kasir, sering disebut juga Point of Sale (POS), adalah fondasi penting dalam mengelola transaksi di berbagai bisnis, mulai dari toko kelontong hingga kafe kecil. Meskipun kini banyak sistem POS berbasis cloud yang canggih, memahami cara membangun versi sederhana menggunakan bahasa pemrograman fundamental seperti C memberikan pemahaman mendalam tentang logika input/output, manajemen data sederhana, dan perhitungan dasar.
Mengapa Menggunakan Bahasa C untuk Program Kasir Sederhana?
Bahasa C terkenal karena kecepatannya, efisiensi memorinya, dan kedekatannya dengan arsitektur mesin. Untuk tugas perhitungan cepat seperti menghitung total belanja, C adalah pilihan yang solid. Dalam konteks pembelajaran, membuat program kasir di C melatih pemrogram untuk mengelola struktur data dasar (seperti array atau struct) dan mengimplementasikan logika kondisional (if/else) untuk menentukan diskon atau pajak.
Struktur Dasar Program Kasir di C
Program kasir sederhana biasanya melibatkan empat tahap utama:
- Input Data Barang: Memasukkan nama barang, harga satuan, dan kuantitas yang dibeli.
- Perhitungan Subtotal: Mengalikan harga satuan dengan kuantitas.
- Perhitungan Total Akhir: Menjumlahkan semua subtotal, seringkali ditambah PPN atau dikurangi diskon.
- Output Struk: Menampilkan rincian transaksi secara rapi.
Contoh Implementasi Kode
Berikut adalah cuplikan dasar bagaimana Anda dapat merepresentasikan struktur barang dan melakukan perhitungan awal dalam bahasa C. Kita akan menggunakan struktur (struct) untuk mengorganisasi data setiap item.
#include <stdio.h>
#include <string.h>
// Mendefinisikan struktur untuk satu item barang
struct Item {
char nama[50];
float harga;
int kuantitas;
};
// Batas maksimal item yang bisa dibeli (untuk contoh sederhana)
#define MAX_ITEMS 10
Proses Input dan Pengulangan Transaksi
Karena program kasir harus bisa menangani banyak item, kita memerlukan perulangan (loop). Dalam C, `for` atau `while` sangat cocok untuk mengiterasi proses input hingga pengguna memutuskan untuk berhenti.
void input_barang(struct Item *barang) {
printf("Masukkan nama barang: ");
scanf("%s", barang->nama);
printf("Masukkan harga satuan (Rp): ");
scanf("%f", &barang->harga);
printf("Masukkan kuantitas: ");
scanf("%d", &barang->kuantitas);
}
int main() {
struct Item daftar_belanja[MAX_ITEMS];
float total_keseluruhan = 0.0;
int i = 0;
char lanjut;
do {
if (i < MAX_ITEMS) {
printf("\n--- Input Item ke-%d ---\n", i + 1);
input_barang(&daftar_belanja[i]);
// Menghitung subtotal
float subtotal = daftar_belanja[i].harga * daftar_belanja[i].kuantitas;
total_keseluruhan += subtotal;
printf("Subtotal Item ini: Rp %.2f\n", subtotal);
i++;
} else {
printf("Batas maksimum item tercapai.\n");
break;
}
printf("\nTambahkan item lagi? (y/n): ");
scanf(" %c", &lanjut); // Spasi sebelum %c penting untuk mengabaikan whitespace
} while (lanjut == 'y' || lanjut == 'Y');
// ... Lanjutkan ke tahap output struk ...
return 0;
}
Menghasilkan Output Struk yang Rapi
Tahap akhir adalah menyajikan data transaksi. Menggunakan `printf` dengan format yang spesifik sangat krusial di sini agar output terlihat seperti struk nyata. Kita menggunakan format specifier seperti `%.2f` untuk menampilkan mata uang dengan dua desimal.
printf("\n========================================\n");
printf(" STRUK PEMBAYARAN\n");
printf("========================================\n");
printf("%-20s %-5s %-10s\n", "NAMA", "QTY", "HARGA");
printf("----------------------------------------\n");
for (int j = 0; j < i; j++) {
float subtotal_item = daftar_belanja[j].harga * daftar_belanja[j].kuantitas;
printf("%-20s %-5d Rp %.2f\n",
daftar_belanja[j].nama,
daftar_belanja[j].kuantitas,
subtotal_item);
}
printf("----------------------------------------\n");
printf("TOTAL BELANJA: Rp %.2f\n", total_keseluruhan);
printf("========================================\n");
printf(" TERIMA KASIH ATAS KUNJUNGAN ANDA\n");
Tantangan dan Pengembangan Lanjutan
Program di atas adalah dasar. Dalam pengembangan lebih lanjut, Anda bisa menambahkan fitur seperti: kalkulasi PPN otomatis, penerapan berbagai tingkat diskon berdasarkan total belanja (misalnya, diskon 10% jika total di atas 100.000), penanganan pembayaran tunai (menghitung kembalian), dan yang paling signifikan, menyimpan data transaksi secara persisten menggunakan file I/O (misalnya, menyimpan ke file .txt atau .csv). Menguasai dasar-dasar C ini membuka pintu untuk memahami kompleksitas sistem POS modern.