Thursday, May 22, 2025

.::: Shell Script Kasir cashier with & Without MariaDB :::.

 


A. Simple Cashier without Database

1. Struktur File listbarang.txt

2. Script: kasir.sh

 
[root@teguhth program]# cat kasir.sh

#!/bin/bash

file_barang="listbarang.txt"

# Fungsi untuk menampilkan daftar barang
tampilkan_barang() {
    echo -e "\nDaftar Barang:"
    echo "---------------------------"
    while IFS="|" read -r id nama harga
    do
        echo "$id. $nama - Rp$harga"
    done < "$file_barang"
    echo "---------------------------"
}

# Fungsi untuk menambah barang
tambah_barang() {
    read -p "Masukkan nama barang: " nama
    read -p "Masukkan harga barang: " harga

    if [[ ! -s "$file_barang" ]]; then
        id=1
    else
        last_id=$(tail -n 1 "$file_barang" | cut -d'|' -f1)
        if [[ "$last_id" =~ ^[0-9]+$ ]]; then
            id=$((last_id + 1))
        else
            echo "Format file barang salah. Periksa $file_barang"
            return
        fi
    fi

    echo "$id|$nama|$harga" >> "$file_barang"
    echo "Barang berhasil ditambahkan!"
}

# Fungsi untuk menghapus barang
#delete_barang() {
#    tampilkan_barang
#    read -p "Masukkan ID barang yang akan dihapus: " delete_id

#    if grep -q "^$delete_id|" "$file_barang"; then
#        grep -v "^$delete_id|" "$file_barang" > temp.txt && mv temp.txt "$file_barang"
#        echo "Barang dengan ID $delete_id berhasil dihapus!"
#    else
#        echo "Barang tidak ditemukan!"
#    fi
#}

delete_barang() {
    tampilkan_barang
    read -p "Masukkan ID barang yang akan dihapus: " delete_id

    # Ambil baris data berdasarkan ID
    line=$(grep "^$delete_id|" "$file_barang")
    if [[ -n "$line" ]]; then
        nama=$(echo "$line" | cut -d'|' -f2)
        harga=$(echo "$line" | cut -d'|' -f3)
        echo "Barang yang akan dihapus:"
        echo "ID: $delete_id"
        echo "Nama: $nama"
        echo "Harga: Rp$harga"

        read -p "Apakah data sudah benar? Jika ya ketik 'yes': " konfirmasi
        if [[ "$konfirmasi" == "yes" ]]; then
            grep -v "^$delete_id|" "$file_barang" > temp.txt && mv temp.txt "$file_barang"
            echo "Barang dengan ID $delete_id berhasil dihapus!"
        else
            echo "Penghapusan dibatalkan."
        fi
    else
        echo "Barang tidak ditemukan!"
    fi
}

# Fungsi untuk memperbarui barang
update_barang() {
    tampilkan_barang
    read -p "Masukkan ID barang yang akan diupdate: " update_id

    line=$(grep "^$update_id|" "$file_barang")
    if [[ -n "$line" ]]; then
        read -p "Nama baru: " new_nama

        while true; do
            read -p "Harga baru: " new_harga
            if [[ "$new_harga" =~ ^[0-9]+$ ]]; then
                break
            else
                echo "Harga harus berupa angka. Silakan coba lagi."
            fi
        done

        grep -v "^$update_id|" "$file_barang" > temp.txt
        echo "$update_id|$new_nama|$new_harga" >> temp.txt
        sort -n -t'|' -k1 temp.txt > "$file_barang"
        rm -f temp.txt
        echo "Barang berhasil diperbarui!"
    else
        echo "Barang tidak ditemukan!"
    fi
}

# Fungsi transaksi
transaksi() {
    tampilkan_barang
    total=0
    echo -e "\nMulai transaksi (ketik 'selesai' untuk mengakhiri):"
    while true; do
        read -p "Masukkan ID barang: " id
        if [[ "$id" == "selesai" ]]; then
            break
        fi
        line=$(grep "^$id|" "$file_barang")
        if [[ -n "$line" ]]; then
            nama=$(echo "$line" | cut -d'|' -f2)
            harga=$(echo "$line" | cut -d'|' -f3)
            read -p "Jumlah: " jumlah
            subtotal=$((harga * jumlah))
            total=$((total + subtotal))
            echo "$nama x $jumlah = Rp$subtotal"
        else
            echo "Barang tidak ditemukan!"
        fi
    done
    echo "---------------------------"
    echo "Total belanja: Rp$total"
    read -p "Bayar: Rp" bayar
    kembali=$((bayar - total))
    echo "Kembalian: Rp$kembali"
}

# Menu utama
while true; do
    echo -e "\n=== MENU KASIR ==="
    echo "1. Tambah Barang"
    echo "2. Lihat Barang"
    echo "3. Transaksi"
    echo "4. Hapus Barang"
    echo "5. Update Barang"
    echo "6. Keluar"
    echo ""
    echo "Copyright by           : Teguh Triharto"
    echo "Website                : https://www.linkedin.com/in/teguhth"
    echo ""
    read -p "Pilih menu: " pilihan

    case $pilihan in
        1) tambah_barang ;;
        2) tampilkan_barang ;;
        3) transaksi ;;
        4) delete_barang ;;
        5) update_barang ;;
        6) echo "Terima kasih!"; break ;;
        *) echo "Pilihan tidak valid!" ;;
    esac
done

[root@teguhth program]#

 


B. Simple Cashier with Database

1. Struktur File Table listbarang
CREATE TABLE listbarang (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100),
    harga INT
);

2. shell script
[root@teguhth program]# cat kasirmaria.sh

#!/bin/bash

# Konfigurasi koneksi database
DB_USER="admin"
DB_PASS="admin"
DB_NAME="teguhth"
DB_HOST="10.10.10.8"
DB_PORT="3306"

mysql_exec() {
    mysql -u"$DB_USER" -p"$DB_PASS" -h"$DB_HOST" -P"$DB_PORT" -D"$DB_NAME" -N -s -e "$1"
}

# Tampilkan barang
tampilkan_barang() {
    echo -e "\nDaftar Barang:"
    echo "---------------------------"
    mysql_exec "SELECT id, nama, harga FROM listbarang ORDER BY id;" | while IFS=$'\t' read -r id nama harga; do
        echo "$id. $nama - Rp$harga"
    done
    echo "---------------------------"
}

# Tambah barang
tambah_barang() {
    read -p "Masukkan nama barang: " nama

    while true; do
        read -p "Masukkan harga barang: " harga
        if [[ "$harga" =~ ^[0-9]+$ ]]; then
            break
        else
            echo "Harga harus berupa angka."
        fi
    done

    mysql_exec "INSERT INTO listbarang (nama, harga) VALUES ('$nama', $harga);"
    echo "Barang berhasil ditambahkan!"
}

# Hapus barang
#delete_barang() {
#    tampilkan_barang
#    read -p "Masukkan ID barang yang akan dihapus: " id
#    mysql_exec "DELETE FROM listbarang WHERE id = $id;"
#    echo "Barang dengan ID $id berhasil dihapus!"
#}

delete_barang() {
    tampilkan_barang
    read -p "Masukkan ID barang yang akan dihapus: " id

    # Ambil data barang berdasarkan ID
    data=$(mysql_exec "SELECT nama, harga FROM listbarang WHERE id = $id;")

    if [[ -z "$data" ]]; then
        echo "Barang dengan ID $id tidak ditemukan!"
        return
    fi

    nama=$(echo "$data" | cut -f1)
    harga=$(echo "$data" | cut -f2)

    echo "Barang yang akan dihapus:"
    echo "ID: $id"
    echo "Nama: $nama"
    echo "Harga: Rp$harga"
    read -p "Apakah data sudah benar? Jika ya ketik 'yes': " konfirmasi

    if [[ "$konfirmasi" == "yes" ]]; then
        mysql_exec "DELETE FROM listbarang WHERE id = $id;"
        echo "Barang dengan ID $id berhasil dihapus!"
    else
        echo "Penghapusan dibatalkan."
    fi
}

# Update barang
update_barang() {
    tampilkan_barang
    read -p "Masukkan ID barang yang akan diupdate: " id

    row=$(mysql_exec "SELECT COUNT(*) FROM listbarang WHERE id = $id;")
    if [[ "$row" == "0" ]]; then
        echo "Barang tidak ditemukan!"
        return
    fi

    read -p "Nama baru: " nama

    while true; do
        read -p "Harga baru: " harga
        if [[ "$harga" =~ ^[0-9]+$ ]]; then
            break
        else
            echo "Harga harus berupa angka."
        fi
    done

    mysql_exec "UPDATE listbarang SET nama = '$nama', harga = $harga WHERE id = $id;"
    echo "Barang berhasil diperbarui!"
}

# Fungsi transaksi
transaksi() {
    tampilkan_barang
    total=0
    echo -e "\nMulai transaksi (ketik 'selesai' untuk mengakhiri):"
    while true; do
        read -p "Masukkan ID barang: " id
        if [[ "$id" == "selesai" ]]; then
            break
        fi

        data=$(mysql_exec "SELECT nama, harga FROM listbarang WHERE id = $id;")
        if [[ -z "$data" ]]; then
            echo "Barang tidak ditemukan!"
            continue
        fi

        nama=$(echo "$data" | cut -f1)
        harga=$(echo "$data" | cut -f2)

        read -p "Jumlah: " jumlah
        subtotal=$((harga * jumlah))
        total=$((total + subtotal))
        echo "$nama x $jumlah = Rp$subtotal"
    done

    echo "---------------------------"
    echo "Total belanja: Rp$total"
    read -p "Bayar: Rp" bayar
    kembali=$((bayar - total))
    echo "Kembalian: Rp$kembali"
}

# Menu utama
while true; do
    echo -e "\n=== MENU KASIR ==="
    echo "1. Tambah Barang"
    echo "2. Lihat Barang"
    echo "3. Transaksi"
    echo "4. Hapus Barang"
    echo "5. Update Barang"
    echo "6. Keluar"
    echo ""
    echo "Copyright by           : Teguh Triharto"
    echo "Website                : https://www.linkedin.com/in/teguhth"
    echo ""
    read -p "Pilih menu: " pilihan

    case $pilihan in
        1) tambah_barang ;;
        2) tampilkan_barang ;;
        3) transaksi ;;
        4) delete_barang ;;
        5) update_barang ;;
        6) echo "Terima kasih!"; break ;;
        *) echo "Pilihan tidak valid!" ;;
    esac
done
[root@teguhth program]#

 


No comments:

Post a Comment

Popular Posts