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