Skip to content

nurindahpratiwi/super-cashier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Super Cashier Project

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).

Features

  • 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.

Requirements

  • 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
pip install mysql-connector-python
  • Buat database bernama cashier dan table bernama transaction

Module Explanation

  • 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

Code Explanation

  • 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!")  

Flowchart

How to Start Program

  • 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.

Test Case

  • 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)

Conclusion

  • 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 atau error oleh user.

Tech Stack

  • Language = Python
  • Database = MySQL

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages