Saturday 18 April 2020

Tutorial Python Cara Membuat CRUD di Python Lengkap




Haloo apakah semua, kali ini saya akan memberikan tutorial mengenai CRUD di python dan kali ini saya akan menggunakan CSV sebagai penyimpanan datanya. Menurut wikipedia Comma Separated Values atau CSV adalah suatu format data dalam basis data di mana setiap record dipisahkan dengan tanda koma (,) atau titik koma (;). Selain sederhana, format ini dapat dibuka dengan berbagai text-editor seperti Notepad, Wordpad, ataupunMS Excel.

Okee baiklah langsung saja.
Cara membuat CRUD di python
Pertama kita import dulu modul yang akan kita gunakan di program ini.

import string
import random
import csv
import os


Lalu yang kedua kalian harus membuat varibel untuk sebagai tempat untuk memanggil file csv, oke sebelumnya kalian harus membuat dulu file csvnya, saya akan membuat dua file csv yang pertama itu stok.csv yaitu untuk menyimpan data stok barang dan users.csv yaitu untuk menyimpan data user, saya membuat file csvnya di data D

Oke langsung saja buat varibelnya :
data_csv = 'D:\stok.csv'
data_csv_users = 'D:\users.csv'


Nah selanjutnya yaitu membuat sebuah fungsi untuk halaman utama kita

def halaman_awal():
    print("-"*55)
    print("|                  CRUD DENGAN CSV                        |")
    print("-"*55)
    print("1. Login \n2. Daftar \n3. Keluar")
    pilih = int(input("Masukan Pilihan : "))

    if pilih == 1:
        login()
    elif pilih == 2:
        daftar()
    elif pilih == 3:
        print("\n")
        print("*"*36)
        print("* PROGRAM DIHENTIKAN, TERIMA KASIH *")
        print("*"*36)
        exit(0)
    else:
        opsi = input("Masukan yang anda masukan salah, klik enter untuk melanjutkan ")
        if opsi == "":
            halaman_awal()
Di menu utama kita akan mempunya tiga pilihan menu yaitu Login, Daftar, dan Keluar.


Selanjutnya kita akan membuat fungsi untuk menampilkan form pendaftaran bagi user yang belum mempunyai akun.
def daftar():
    clear_screen()
    users = []
    with open(data_csv_users, mode="r+"newline=''as csv_file:
        field = ['KODE','NAMA','USERNAME','PASSWORD','LEVEL']
        tambah = csv.DictWriter(csv_file, fieldnames=field)
        a = csv.DictReader(csv_file)
        for row in a:
            users.append(row)

        print("\n=============DAFTAR================")
        nama = input("Masukan Nama \t\t: ")
        username = input("Masukan Username \t: ")
       
        if not any(username in i['USERNAME'for i in users):
            password = input("Masukan Password \t: ")
            level = "Admin"
            kode = kode_acak()
            tambah.writerow({'KODE' : kode, 'NAMA' : nama, 'USERNAME' : username, 'PASSWORD' : password, 'LEVEL' : level})
        else:
            opsi = input("  \u274c  \u274c  Username sudah dipakai, silah enter untuk coba yang lain ")
            if opsi == "":
                daftar()
    
    pilih = input("\n\u2713 pendaftaran berhasil, silahkan enter untuk lanjut login ")
    if pilih == "":
        login()


Setelah pendaftaran berhasil maka user akan langsung diarahkan ke menu login.
berikut fungsi dari menu login
def login():
    clear_screen()
    users = []

    with open(data_csv_users, mode="r"as csv_file:
        baca_csv = csv.DictReader(csv_file)
        for row in baca_csv:
            users.append(row)

    print("-"*55)
    print("|                      LOGIN                          |")
    print("-"*55)
    username = input("Username \t: ")
    password = input("Password \t: ")

    if not any(username in data['USERNAME'for data in users):
        opsi = input("| \u274c  \u274c  Username Salah, Silahkan enter untuk ulangi \u274c  \u274c  |\n")
        if opsi == "":
            login()
    else:
        for i in users:
            if (i['USERNAME'] == username and i['PASSWORD'] == password and i['LEVEL'] == 'Admin'):
                admin()


lalu setelah itu user akan diarahkan ke menu utama admin yang akan berfungsi sebagai main menu untuk halaman admin
def admin():
    # clear_screen()
    print("-"*55)
    print("|                  MENU UTAMA                        |")
    print("-"*55)
    print("1. Lihat Stok Barang \n2. Tambah Barang \n3. Update Barang \n4. Hapus Barang \n5. Cari Barang \n6. Logout")
    pilih = input("Masukan Pilihan : ")
    if pilih == "1":
        lihat_stok()
    elif pilih == "2":
        tambah_barang()
    elif pilih == "3":
        Update_barang()
    elif pilih == "4":
        hapus_barang()
    elif pilih == "5":
        cari_barang()
    elif pilih == "6":
        halaman_awal()
    else
        a = input("  \u274c  \u274c  Masukan yang anda masukan tidak sesui, klik enter untuk kembali  \u274c  \u274c  ")
        if a == "":
            admin()


sekarang kita akan membuat fungsi untuk Melihat Stok, Tambah Barang, Update Barang, Hapus Barang, Cari Barang, dan pilihan untuk Log Out.
def lihat_stok():
    clear_screen()
    barang = []
    with open(data_csv) as file_csv:
        baca_csv = csv.reader(file_csv, delimiter=",")
        for i in baca_csv:
            barang.append(i)

    if (len(barang) > 0):
        label = barang.pop(0)
        print("-"*55)
        print("|                  STOK BARANG                          |")
        print("-"*55)
        print(f"{label[0]} \t {label[1]} \t\t  {label[2]} \t {label[3]}")
        print("-"*55)
        for data in barang:
            print(f"{data[0]} \t {data[1]}   \t\t {data[2]} \t\t {data[3]}")
        pilih = input("Tekan enter untuk kembali ke menu utama ")
        if pilih == "":
            admin()
    else:
        pilih = (\u2718  Saat ini sedang tidak ada stok tersedia, tekan enter untuk kembali ")
        if pilih == "":
            admin()

def tambah_barang():
    clear_screen()
    barang = []
    with open(data_csv, mode="r+"newline=''as csv_file:
        field = ['KODE','NAMA_BARANG','BANYAK','HARGA']
        tambah = csv.DictWriter(csv_file, fieldnames=field)
        a = csv.DictReader(csv_file)
        for row in a:
            barang.append(row)

        print("-"*55)
        print("|                  TAMBAH BARANG                        |")
        print("-"*55)
        nama = input("Masukan Nama Barang \t: ").upper()
        if not any(nama in i['NAMA_BARANG'for i in barang):
            banyak = input("Masukan Banyak Barang \t: ")
            harga = input("Masukan Harga Satuan \t: ")
            kode = kode_acak()

            tambah.writerow({'KODE' : kode, 'NAMA_BARANG' : nama, 'BANYAK' : banyak, 'HARGA' : harga})
            print("\n\u2713 Tambah barang berhasil. ")
    pilih = input("klik enter untuk melanjutkan ")
    if pilih == "":
        # print("  \u274c  \u274c  Gagal menambahkan, barang sudah ada di dalam stok!")
        admin()


def Update_barang():
    clear_screen()
    barang = []

    with open(data_csv, mode="r"as csv_file:
        baca_csv = csv.DictReader(csv_file)
        for i in baca_csv:
            barang.append(i)

    print("KODE \t NAMA BARANG \t\t BANYAK \t HARGA")
    print("-" * 55)
    for data in barang:
        print(f"{data['KODE']} \t {data['NAMA_BARANG']}   \t\t 
{data['BANYAK']} \t\t {data['HARGA']}")

    data_ketemu = []
    indeks = 0

    print("-"*55)
    nama = input("Pilih barang yang akan diupdate : ").upper()

    for data in barang:
        if (data['NAMA_BARANG'] == nama):
            data_ketemu = barang[indeks]            
        indeks = indeks + 1

    if len(data_ketemu) > 0:
        banyak = input("Banyak jumlah barang : ")
        harga = input("Harga satuan terbaru : ")

        indek = 0
        for data in barang:
            if (data['NAMA_BARANG'] == nama):
                barang[indek]['BANYAK'] = banyak
                barang[indek]['HARGA'] = harga
            indek = indek + 1

        with open(data_csv, mode="w"newline=''as csv_file:
            field = ['KODE''NAMA_BARANG''BANYAK','HARGA']
            writer = csv.DictWriter(csv_file, fieldnames=field)
            writer.writeheader()
            for data_baru in barang:
                writer.writerow({'KODE': data_baru['KODE'],
'NAMA_BARANG': data_baru['NAMA_BARANG'],
'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']}) 

        pilih = input(\u2713 Data berhasil diupdate, 
tekan enter untuk kembali ke menu utama ")
        if pilih == "":
            admin()
    else:
        pilih = input("  \u274c  \u274c   Barang tidak ditemukan, 
tekan enter untuk kembali ke menu utama ")
        if pilih == "":
            admin()

def hapus_barang():
    clear_screen()
    barang = []

    with open(data_csv, mode="r"as csv_file:
        baca_csv = csv.DictReader(csv_file)
        for i in baca_csv:
            barang.append(i)

    print("-"*55)
    print("|                  MENU UTAMA                        |")
    print("-"*55)
    print("KODE \t NAMA BARANG \t\t BANYAK \t HARGA")
    print("-" * 55)
    for data in barang:
        print(f"{data['KODE']} \t {data['NAMA_BARANG']}   \t\t
 {data['BANYAK']} \t\t {data['HARGA']}")

    print("-----------------------")

    nama = input("Hapus barang berdasarkan nama : ").upper()

    index = 0
    for data in barang:
        if (data['NAMA_BARANG'] == nama):
            barang.remove(barang[index])
        index = index + 1

    if nama == data['NAMA_BARANG']:
        with open(data_csv, mode="w"newline=''as csv_file:
            field = ['KODE','NAMA_BARANG','BANYAK','HARGA']
            a = csv.DictWriter(csv_file, fieldnames=field)
            a.writeheader()
            for data_baru in barang:
                a.writerow({'KODE': data_baru['KODE'],
 'NAMA_BARANG': data_baru['NAMA_BARANG'],
 'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']}) 
        print("\u2713 Data sudah terhapus")
        pilih = input("Tekan enter untuk kembali ke menu utama ")
        if pilih == "":
            admin()

    opsi = input("  \u274c  \u274c  Nama barang tersebut tidak ditemukan, 
tekan enter untuk mengulangi ")
    if opsi == "":
        hapus_barang()

def cari_barang():
    clear_screen()
    barang = []

    with open(data_csv, mode="r"as csv_file:
        baca_csv = csv.DictReader(csv_file)
        for row in baca_csv:
            barang.append(row)

    print("-"*55)
    print("|                   CARI BARANG                         |")
    print("-"*55)
    nama = input("Cari berdasarkan nama barang :  ").upper()

    data_ketemu = []

    indeks = 0
    for data in barang:
        if (data['NAMA_BARANG'] == nama):
            data_ketemu = barang[indeks]
            
        indeks = indeks + 1

    if len(data_ketemu) > 0:
        print("DATA DITEMUKAN : ")
        print("-"*30)
        print(f"Kode \t\t{data_ketemu['KODE']}")
        print(f"Nama Barang \t{data_ketemu['NAMA_BARANG']}")
        print(f"Banyak \t\t{data_ketemu['BANYAK']}")
        print(f"Harga \t\t{data_ketemu['HARGA']}")
        pilih = input("Klik enter untuk kembali ke menu utama ")
        if pilih == "":
            admin()
    else:
        pilih = input("   \u274c  \u274c  Tidak ada data ditemukan, 
klik enter untuk kembali ke menu utama  \u274c  \u274c  ")
        if pilih == "":
            admin()


dan yang terakhir tambahkan kode berikut
if __name__=="__main__":
    halaman_awal()
kode ini akan berfungsi sebagai blok yang akan dieksekusi pertama kali oleh sistem sehingga kita harus memanggil fungsi halaman_awal agar langsung diarahkan ke Halaman Utama.


Itu adalah program python CRUD dengan file CSV sebagai tempat penyimpanan data, program ini tentunya bisa kalian improvisasi lagi sesuai dengan ide ide kalian. Selamat mencoba..


Previous Post
Next Post

0 comments: