Super cashier app ini merupakan aplikasi perhitungan kasir sederhana berbasis bahasa pemrograman Python yang terhubung dengan MySQL. Super cashier app ini berisi fitur-fitur perhitungan kasir sehingga user dapat melakukan transaksi secara mandiri (self-service).
- User dapat memasukkan nama barang, jumlah item, dan harga per item
- Jika terdapat kesalahan dalam memasukkan nama item/jumlah item/harga per item, user dapat mengubahnya dengan rule sebagai berikut:
- Update nama item: input nama item lama dan masukkan nama item (update)
- Update jumlah item: input nama item lama dan masukkan jumlah item (update)
- Update harga per item: input nama item lama dan masukkan harga per item (update)
- Jika user batal membeli belanjaan, user dapat menghapus item tersebut dengan memasukkan nama item
- User dapat menghapus seluruh keranjang belanjaan dengan cara melakukan reset transaction
- Customer dapat melakukan pengecekan ulang terhadap item yang telah diinput
- Customer dapat melihat total harga dan mendapatkan potongan (diskon) jika barang belanjaan memenuhi minimal harga diskon.
- Pastikan Anda telah menginstall python versi terbaru, super cashier app ini menggunakan Python versi:
python --version
Python 3.8.10
- Install MySQL versi terbaru, super cashier ini menggunakan Mysql versi:
mysql --version
mysql Ver 8.0.30
- Install mysql connector python: docs mysql connector
pip install mysql-connector-python
- Buat database bernama
cashier
dan table bernamatransaction
- Module main.py berisi daftar menu pada aplikasi super cashier
- Module transaction.py berisi daftar fungsi yang didefinisikan sebagai fitur aplikasi
- Module user_db.py berisi informasi mengenai nama database, username dan password MySQL
- Function untuk menambahkan item barang belanja
def add_item(self):
#list variabel yang ingin ditambahkan
list_item = (item_name, item_qty, item_price)
#query untuk menambahkan nama, jumlah dan harga item ke dalam database
add_query = """INSERT INTO transaction(nama_item, jumlah_item, harga) VALUES(%s, %s, %s)"""
#eksekusi query dengan perintah execute
cursor.execute(add_query, list_item)
#send hasil eksekusi ke dalam database
mydb.commit()
- Function untuk menghapus salah satu item barang belanja
def delete_item(self):
#list input yang dibutuhkan untuk mengubah nama
list_item = (item_name,)
#query untuk menghapus sebuah item berdasarkan nama yang diinput
delete_query = """DELETE FROM transaction WHERE nama_item = %s"""
#eksekusi query delete item dengan perintah execute
cursor.execute(delete_query,list_item)
#send hasil eksekusi ke dalam database
mydb.commit()
- Function untuk menghapus seluruh item barang belanja
def reset_transaction(self):
#query untuk langsung menghapus seluruh row dari tabel transaction
delete_query = """ DELETE from transaction """
#eksekusi query delete all dengan perintah execute
cursor.execute(delete_query)
#send hasil eksekusi ke dalam database
mydb.commit()
print("\nData berhasil di hapus")
- Function untuk mengecek item barang belanja
def check_order(self):
#query untuk melakukan pengecekan barang
check_query = """ SELECT nama_item, jumlah_item, harga,
jumlah_item*harga AS total_harga FROM transaction """
#eksekusi query cek dengan perintah execute
cursor.execute(check_query)
#variabel untuk menyimpan seluruh data yang diambil dari query
rows=cursor.fetchall()
- Function untuk mengubah nama item barang belanja
def update_item_name(self):
#list variabel nama yang ingin dieksekusi
list_item = [item_name_new, item_name]
#query untuk mengubah nama sesuai dengan input user
update_query = """UPDATE transaction SET nama_item=%s WHERE nama_item=%s"""
#eksekusi query ubah nama dengan perintah execute
cursor.execute(update_query, list_item)
#send hasil eksekusi ke dalam database
mydb.commit()
- Function untuk mengubah jumlah item barang belanja
def update_item_qty(self):
#list variabel jumlah yang ingin dieksekusi
list_item = [item_qty_new, item_name]
#query untuk mengubah jumlah item berdasarkan nama yang diinput
update_query = """UPDATE transaction SET jumlah_item=%s WHERE nama_item=%s"""
#eksekusi query ubah jumlah item dengan perintah execute
cursor.execute(update_query, list_item)
#send hasil eksekusi ke dalam database
mydb.commit()
- Function untuk mengubah harga item barang belanja
def update_item_price(self):
#list variabel harga yang ingin dieksekusi
list_item = [item_price_new, item_name]
#eksekusi query ubah harga per item dengan perintah execute
update_query = """UPDATE transaction SET harga=%s WHERE nama_item=%s"""
#eksekusi query ubah harga item dengan perintah execute
cursor.execute(update_query, list_item)
#send hasil eksekusi ke dalam database
mydb.commit()
- Function untuk mengecek total bayar dan diskon barang belanja
def total_price(self):
try:
# query untuk melakukan penjumlahan jumlah item dikali dengan harga
price_query = """SELECT SUM(jumlah_item*harga) AS total_harga FROM transaction"""
#eksekusi query penjumlahan dengan perintah execute
cursor.execute(price_query)
#variabel untuk menyimpan seluruh data yang diambil dari query
result = cursor.fetchall()[0][0]
result = float(result)
#condition ini untuk mengecek apakah total belanja eligible untuk diberikan diskon atau tidak
if result >= 500000:
print ("\nAnda mendapatkan diskon 10%")
result_diskon = result*0.90
print(f"Total belanja Anda adalah: {result}")
print(f"Total belanja Anda setelah diskon adalah: {result_diskon}")
elif result > 300000:
print ("\nAnda mendapatkan diskon 8%")
result_diskon = result*0.92
print(f"Total belanja Anda adalah: {result}")
print(f"Total belanja Anda setelah diskon adalah: {result_diskon}")
elif result >= 200000:
print ("\nAnda mendapatkan diskon 5%")
result_diskon = result*0.95
print(f"Total belanja Anda adalah: {result}")
print(f"Total belanja Anda setelah diskon adalah: {result_diskon}")
else:
print(f"Total belanja Anda adalah: {result}")
print ("\nMaaf Anda belum mendapatkan diskon. Yuk belanja lagi!")
- Clone project ini ke dalam direktori lokal Anda.
- Definisikan variabel-variabel di module user_db.py dan simpan.
- Buka terminal dan sesuaikan lokasi direktori lokal.
- Jalankan module python main.py di terminal.
- Penambahan keranjang belanja
- Cek keranjang belanja
- Hapus salah satu item di keranjang belanja
- Hapus seluruh keranjang belanja
- Cek keranjang belanja (setelah reset)
- Cek total barang (input barang sesuai test case)
- Cek total diskon
-
Ubah salah satu item di keranjang belanja
- Ubah nama item
- Ubah jumlah item
- Ubah harga per item
-
Cek keranjang belanja (setelah ubah data)
- Super cashier ini telah sukses melewati test case, diharapkan kedepannya dapat diubah menjadi program yang berbasis class/objek
- Saran/perbaikan program sangat terbuka jika ditemukan
bug
atauerror
oleh user.
- Language = Python
- Database = MySQL