Prompt-Kasir

Prompt:

Saya adalah seorang siswa smk program keahlian pemasaran. dalam gak ini berperan sebagai seorang kasir di supermarket. buatkan aplikasi/program dengan menggunakan bahasa python untuk membuat aplikasi kasir, yang inputannya berupa dropdown terdiri dari nama barang, jumlah, harga, satuan, Harga total keseluruhan dan total pembayarannya. lengkapi dengan penjelasan setiap barisnya agar mudah untuk dipahami. tampilan dibuat secara GUI dan tiga Dimensi yang Elegan tema ELEGAN Aesthetic



Karena belum lengkap jadi buatlagi dengan memasukkan hal yang kurang

total harga, jumlah bayar dan cetak struknya belum ada lengkapi ya 

Hasil Struk:


Prompt:
import tkinter as tk
from tkinter import ttk, messagebox
from datetime import datetime

# --- Data Barang (Nama : (Harga, Satuan)) ---
data_barang = {
    "Sabun Mandi": (5000, "buah"),
    "Shampo Botol": (15000, "botol"),
    "Beras 5kg": (65000, "karung"),
    "Minyak Goreng 1L": (18000, "liter"),
    "Gula Pasir 1kg": (16000, "kg"),
    "Teh Celup": (12000, "kotak")
}

# --- List transaksi ---
daftar_transaksi = []

# --- Fungsi Tambah Barang ke Transaksi ---
def tambah_barang():
    try:
        barang = combo_barang.get()
        jumlah = int(entry_jumlah.get())

        if barang not in data_barang:
            messagebox.showwarning("Peringatan", "Pilih barang yang valid!")
            return

        harga, satuan = data_barang[barang]
        total = jumlah * harga

        daftar_transaksi.append((barang, jumlah, harga, satuan, total))
        tampilkan_transaksi()

    except ValueError:
        messagebox.showerror("Error", "Jumlah harus berupa angka!")

# --- Fungsi Menampilkan Data Transaksi di Listbox ---
def tampilkan_transaksi():
    listbox_transaksi.delete(0, tk.END)
    total_belanja = 0
    for i, (barang, jumlah, harga, satuan, total) in enumerate(daftar_transaksi, start=1):
        listbox_transaksi.insert(tk.END, f"{i}. {barang} ({jumlah} {satuan}) - Rp {total:,}")
        total_belanja += total
    label_total_belanja.config(text=f"Rp {total_belanja:,}")

# --- Fungsi Hitung Kembalian ---
def hitung_kembalian():
    try:
        total_belanja = sum(t[4] for t in daftar_transaksi)
        bayar = int(entry_bayar.get())
        if bayar < total_belanja:
            messagebox.showwarning("Peringatan", "Uang tidak cukup untuk membayar!")
            return
        kembalian = bayar - total_belanja
        label_kembalian.config(text=f"Rp {kembalian:,}")
    except ValueError:
        messagebox.showerror("Error", "Masukkan jumlah bayar dalam angka!")

# --- Fungsi Cetak Struk ke File ---
def cetak_struk():
    if not daftar_transaksi:
        messagebox.showwarning("Peringatan", "Belum ada transaksi untuk dicetak!")
        return

    total_belanja = sum(t[4] for t in daftar_transaksi)
    bayar = entry_bayar.get()
    kembalian = label_kembalian.cget("text")

    waktu = datetime.now().strftime("%d-%m-%Y %H:%M:%S")

    # Membuat isi struk
    struk = []
    struk.append("========== STRUK PEMBAYARAN ==========\n")
    struk.append(f"SMK BP SUBULUL HUDA - KASIR SUPERMARKET\n")
    struk.append(f"Waktu: {waktu}\n")
    struk.append("---------------------------------------\n")
    for barang, jumlah, harga, satuan, total in daftar_transaksi:
        struk.append(f"{barang} ({jumlah} {satuan})  Rp {harga:,}  -> Rp {total:,}\n")
    struk.append("---------------------------------------\n")
    struk.append(f"Total Belanja : Rp {total_belanja:,}\n")
    struk.append(f"Jumlah Bayar  : Rp {bayar}\n")
    struk.append(f"Kembalian     : {kembalian}\n")
    struk.append("=======================================\n")
    struk.append("Terima Kasih Telah Berbelanja 🙏\n")

    # Simpan ke file
    with open("struk_kasir.txt", "w", encoding="utf-8") as f:
        f.writelines(struk)

    messagebox.showinfo("Struk Disimpan", "✅ Struk berhasil disimpan sebagai 'struk_kasir.txt'")

# --- GUI UTAMA ---
root = tk.Tk()
root.title("🛒 Aplikasi Kasir Elegan - SMK BP Subulul Huda")
root.geometry("650x550")
root.configure(bg="#f9f6f2")

# --- FRAME UTAMA (3D Aesthetic) ---
frame = tk.Frame(root, bg="#ffffff", relief="raised", bd=6)
frame.place(relx=0.5, rely=0.5, anchor="center", width=580, height=500)

judul = tk.Label(root, text="💳 Kasir Supermarket Elegan", font=("Poppins", 16, "bold"), bg="#f9f6f2", fg="#4e342e")
judul.pack(pady=10)

# --- Bagian Input Barang ---
tk.Label(frame, text="Nama Barang:", font=("Poppins", 11), bg="#ffffff").place(x=30, y=30)
combo_barang = ttk.Combobox(frame, values=list(data_barang.keys()), state="readonly", width=25)
combo_barang.place(x=160, y=30)
combo_barang.current(0)

tk.Label(frame, text="Jumlah:", font=("Poppins", 11), bg="#ffffff").place(x=30, y=70)
entry_jumlah = ttk.Entry(frame, width=10)
entry_jumlah.place(x=160, y=70)

btn_tambah = tk.Button(frame, text="Tambah Barang", command=tambah_barang, bg="#4e342e", fg="white", font=("Poppins", 10, "bold"), relief="raised", bd=4)
btn_tambah.place(x=160, y=105)

# --- Daftar Transaksi ---
tk.Label(frame, text="Daftar Transaksi:", font=("Poppins", 11, "bold"), bg="#ffffff", fg="#4e342e").place(x=30, y=150)
listbox_transaksi = tk.Listbox(frame, width=55, height=10, font=("Consolas", 10), bg="#f4f0ec", relief="sunken", bd=3)
listbox_transaksi.place(x=30, y=180)

# --- Total Belanja ---
tk.Label(frame, text="Total Belanja:", font=("Poppins", 11), bg="#ffffff").place(x=30, y=370)
label_total_belanja = tk.Label(frame, text="Rp 0", font=("Poppins", 11, "bold"), bg="#ffffff", fg="#00695c")
label_total_belanja.place(x=160, y=370)

# --- Input Jumlah Bayar ---
tk.Label(frame, text="Jumlah Bayar:", font=("Poppins", 11), bg="#ffffff").place(x=30, y=400)
entry_bayar = ttk.Entry(frame, width=15)
entry_bayar.place(x=160, y=400)

# --- Kembalian ---
tk.Label(frame, text="Kembalian:", font=("Poppins", 11), bg="#ffffff").place(x=30, y=430)
label_kembalian = tk.Label(frame, text="-", font=("Poppins", 11, "bold"), bg="#ffffff", fg="#c2185b")
label_kembalian.place(x=160, y=430)

# --- Tombol Aksi ---
btn_kembalian = tk.Button(frame, text="Hitung Kembalian", command=hitung_kembalian, bg="#00695c", fg="white", font=("Poppins", 10, "bold"), relief="raised", bd=4)
btn_kembalian.place(x=350, y=400)

btn_cetak = tk.Button(frame, text="🧾 Cetak Struk", command=cetak_struk, bg="#8e24aa", fg="white", font=("Poppins", 10, "bold"), relief="raised", bd=4)
btn_cetak.place(x=350, y=440)

# --- Footer ---
footer = tk.Label(root, text="SMK BP Subulul Huda | Program Keahlian Pemasaran", font=("Poppins", 9), bg="#f9f6f2", fg="#8d6e63")
footer.pack(side="bottom", pady=10)

root.mainloop()


Posting Komentar

Lebih baru Lebih lama

Formulir Kontak