Program kasir adalah salah satu aplikasi dasar yang sering dibuat sebagai latihan pemrograman, terutama bagi pemula yang ingin memahami struktur dasar bahasa C, seperti penggunaan struct, switch-case, dan operasi input/output.
Tujuan utama dari program kasir sederhana ini adalah untuk mencatat barang yang dibeli, menghitung total harga, dan menampilkan struk pembelian. Meskipun dalam aplikasi nyata diperlukan fitur yang jauh lebih kompleks (seperti koneksi database atau antarmuka grafis), fondasi logikanya tetap relevan.
Dalam implementasi ini, kita akan menggunakan struktur data untuk merepresentasikan setiap item produk. Struktur ini akan menyimpan nama produk, kode unik, dan harga per unit.
Berikut adalah kerangka dasar yang diperlukan:
struct untuk produk.Visualisasi Alur Kerja Program Kasir
Kode berikut adalah contoh dasar yang dapat dijalankan di lingkungan terminal atau command line menggunakan kompiler C seperti GCC.
#include <stdio.h>
#include <string.h>
// Definisi Struktur Produk
struct Produk {
int kode;
char nama[50];
float harga;
};
// Daftar produk yang tersedia
struct Produk daftar_produk[] = {
{101, "Buku Tulis", 5000.00},
{102, "Pensil 2B", 1500.00},
{103, "Penghapus", 1000.00},
{104, "Penggaris", 3500.00}
};
const int JUMLAH_PRODUK = sizeof(daftar_produk) / sizeof(daftar_produk[0]);
void tampilkan_menu() {
printf("\n===================================\n");
printf(" MENU PRODUK TERSEDIA\n");
printf("===================================\n");
printf("Kode | Nama Produk | Harga Satuan\n");
printf("-----------------------------------\n");
for (int i = 0; i < JUMLAH_PRODUK; i++) {
printf("%-4d | %-13s | Rp %.2f\n",
daftar_produk[i].kode,
daftar_produk[i].nama,
daftar_produk[i].harga);
}
printf("-----------------------------------\n");
}
int main() {
int kode_input, jumlah_beli, pilihan_kode;
float total_belanja = 0.0;
int iterasi = 1;
printf("==== SISTEM KASIR SEDERHANA BAHASA C ====\n");
tampilkan_menu();
while (1) {
printf("\nMasukkan Kode Produk (atau 0 untuk selesai): ");
if (scanf("%d", &kode_input) != 1) {
printf("Input tidak valid. Silakan coba lagi.\n");
// Membersihkan buffer input
while (getchar() != '\n');
continue;
}
if (kode_input == 0) {
break; // Keluar dari loop jika input 0
}
pilihan_kode = -1;
// Mencari kode produk yang cocok
for (int i = 0; i < JUMLAH_PRODUK; i++) {
if (daftar_produk[i].kode == kode_input) {
pilihan_kode = i;
break;
}
}
if (pilihan_kode == -1) {
printf("Kode produk tidak ditemukan. Silakan cek daftar.\n");
continue;
}
printf("Produk: %s. Harga Satuan: Rp %.2f\n", daftar_produk[pilihan_kode].nama, daftar_produk[pilihan_kode].harga);
printf("Jumlah dibeli: ");
if (scanf("%d", &jumlah_beli) != 1 || jumlah_beli <= 0) {
printf("Jumlah tidak valid.\n");
// Membersihkan buffer
while (getchar() != '\n');
continue;
}
float subtotal = daftar_produk[pilihan_kode].harga * jumlah_beli;
total_belanja += subtotal;
printf("=> Subtotal ditambahkan: Rp %.2f\n", subtotal);
iterasi++;
}
// Menampilkan Struk Akhir
printf("\n\n==========================================\n");
printf(" STRUK PEMBELIAN\n");
printf("==========================================\n");
printf("Terima kasih telah berbelanja.\n");
printf("------------------------------------------\n");
printf("TOTAL BELANJA: Rp %.2f\n", total_belanja);
printf("------------------------------------------\n");
printf("Pembayaran tunai (Contoh): Rp %.2f\n", total_belanja + 5000.00); // Simulasi uang bayar
printf("Kembalian (Contoh): Rp %.2f\n", 5000.00);
printf("==========================================\n");
return 0;
}
Kode di atas memanfaatkan beberapa fitur penting dalam C:
structstruct Produk memungkinkan kita mengelompokkan data terkait (kode, nama, harga) menjadi satu unit logis. Ini sangat penting untuk mengelola daftar barang secara terstruktur.
Array daftar_produk langsung diinisialisasi saat deklarasi. Dalam sistem kasir yang lebih besar, data ini biasanya dimuat dari file eksternal atau database.
while(1))Program berjalan dalam loop tak terbatas (while(1)) yang hanya akan berhenti ketika pengguna secara eksplisit memasukkan kode '0'. Ini meniru perilaku kasir yang terus memproses barang sampai transaksi selesai.
Ketika kode dimasukkan, program melakukan iterasi melalui array daftar_produk untuk menemukan kecocokan. Ini adalah bentuk pencarian linier sederhana.
Setelah kuantitas dikonfirmasi, subtotal dihitung (Harga Satuan * Jumlah Beli), dan nilai ini ditambahkan ke total_belanja akumulatif.
Meskipun sangat dasar, kode ini menyertakan pengecekan sederhana menggunakan scanf untuk memastikan input berupa angka. Dalam pengembangan profesional, penanganan error input harus jauh lebih kuat.
Memahami contoh program kasir bahasa C ini memberikan dasar yang kuat sebelum melangkah ke implementasi yang melibatkan memori dinamis atau antarmuka pengguna yang lebih modern.