Skip to content

Instantly share code, notes, and snippets.

@ardzz
Created January 18, 2024 08:38
Show Gist options
  • Save ardzz/0a3bdf2938c859a5e72c6edf9d746d8c to your computer and use it in GitHub Desktop.
Save ardzz/0a3bdf2938c859a5e72c6edf9d746d8c to your computer and use it in GitHub Desktop.
helper : ardan.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/ardzz/0a3bdf2938c859a5e72c6edf9d746d8c/helper-ardan.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "UjwyO-wTsg-1",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "162787a5-5067-4aa3-bac0-d1ab4667ed80"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"=== Aplikasi Kasir Sederhana ===\n",
"1. Login\n",
"2. Register\n",
"3. Keluar\n",
"Pilih menu: 1\n",
"\n",
"=== Login ===\n",
"Username: admin1\n",
"Password: ··········\n",
"\n",
"=== MENU ADMIN ===\n",
"1. Tampilkan List Barang\n",
"2. Tambah Barang\n",
"3. Perbarui Stok dan Harga Barang\n",
"4. Hapus Barang\n",
"5. Cari Barang\n",
"6. Visualisasi Grafik Penjualan\n",
"7. Laporan Penjualan\n",
"8. Logout dan login ulang\n",
"9. Stop\n"
]
}
],
"source": [
"import json\n",
"import getpass\n",
"import matplotlib.pyplot as plt\n",
"import datetime\n",
"\n",
"# Data Dummy\n",
"barang_list = [{'id': 1, 'nama': 'susu kaleng', 'stok': 40, 'harga': 10000},\n",
" {'id': 2, 'nama': 'mie instan', 'stok': 50, 'harga': 3500},\n",
" {'id': 3, 'nama': 'sabun', 'stok': 20, 'harga': 15000},\n",
" {'id': 4, 'nama': 'shampo', 'stok': 60, 'harga': 15000},\n",
" {'id': 5, 'nama': 'beras', 'stok': 70, 'harga': 25000}]\n",
"\n",
"penjualan_list = []\n",
"\n",
"# Data Dummy\n",
"pengguna_list = [{'username': 'admin1', 'password': 'admin2', 'role': 'admin'},\n",
" {'username': 'user1', 'password': 'user2', 'role': 'user'}]\n",
"\n",
"# Fungsi Menu Admin\n",
"def menu_admin():\n",
" while True:\n",
" print(\"\\n=== MENU ADMIN ===\")\n",
" print(\"1. Tampilkan List Barang\")\n",
" print(\"2. Tambah Barang\")\n",
" print(\"3. Perbarui Stok dan Harga Barang\")\n",
" print(\"4. Hapus Barang\")\n",
" print(\"5. Cari Barang\")\n",
" print(\"6. Visualisasi Grafik Penjualan\")\n",
" print(\"7. Laporan Penjualan\")\n",
" print(\"8. Logout dan login ulang\")\n",
" print(\"9. Stop\")\n",
"\n",
" pilihan = int(input(\"Pilih menu (1-9): \"))\n",
"\n",
" if pilihan == 1:\n",
" tampilkan_list_barang()\n",
" elif pilihan == 2:\n",
" tambah_barang()\n",
" elif pilihan == 3:\n",
" perbarui_barang()\n",
" elif pilihan == 4:\n",
" hapus_barang()\n",
" elif pilihan == 5:\n",
" cari_barang()\n",
" elif pilihan == 6:\n",
" visualisasi_penjualan()\n",
" elif pilihan == 7:\n",
" laporan_penjualan()\n",
" elif pilihan == 8:\n",
" login()\n",
" elif pilihan == 9:\n",
" print(\"Program berhenti. Jika ingin masuk silakan login ulang\")\n",
" break\n",
" else:\n",
" print(\"Pilihan tidak valid. Silakan coba lagi.\")\n",
"\n",
"# Fungsi Login\n",
"def login():\n",
" print(\"\\n=== Login ===\")\n",
" username = input(\"Username: \")\n",
" password = getpass.getpass(\"Password: \")\n",
"\n",
" # Melakukan otentikasi berdasarkan informasi pengguna\n",
" user_info = next((user for user in pengguna_list if user['username'] == username and user['password'] == password), None)\n",
"\n",
" if user_info:\n",
" role = user_info['role']\n",
" if role == 'admin':\n",
" menu_admin()\n",
" elif role == 'user':\n",
" menu_user()\n",
" else:\n",
" print(\"Login Gagal. Silakan coba lagi.\")\n",
" login()\n",
"\n",
"# Fungsi Register\n",
"def register():\n",
" print(\"\\n=== Register ===\")\n",
" username = input(\"Masukkan username baru: \")\n",
" password = getpass.getpass(\"Masukkan password baru: \")\n",
" role = input(\"Masukkan role (admin/user): \").lower()\n",
"\n",
" if role not in ['admin', 'user']:\n",
" print(\"Role tidak valid.\")\n",
" return\n",
"\n",
" # Menambahkan informasi pengguna baru ke dalam pengguna_list\n",
" pengguna_list.append({'username': username, 'password': password, 'role': role})\n",
" print(\"Registrasi berhasil!\")\n",
"\n",
"# Main Program\n",
"while True:\n",
" print(\"\\n=== Aplikasi Kasir Sederhana ===\")\n",
" print(\"1. Login\")\n",
" print(\"2. Register\")\n",
" print(\"3. Keluar\")\n",
"\n",
" choice = input(\"Pilih menu: \")\n",
"\n",
" if choice == '1':\n",
" login()\n",
" elif choice == '2':\n",
" register()\n",
" elif choice == '3':\n",
" print(\"Terima kasih. Keluar dari aplikasi.\")\n",
" break\n",
" else:\n",
" print(\"Pilihan tidak valid. Silakan pilih lagi.\")\n",
"\n",
"\n",
"# Fungsi Menu User\n",
"def menu_user():\n",
" #Menampilkan list barang\n",
" tampilkan_list_barang()\n",
"\n",
" pesanan = input_pesanan()\n",
" total_pesanan = hitung_total_pesanan(pesanan)\n",
"\n",
" # Tampilkan pesanan\n",
" tampilkan_struk_pembelian(pesanan, total_pesanan)\n",
"\n",
" # Hitung diskon\n",
" diskon = hitung_diskon(total_pesanan)\n",
"\n",
" # Hitung total dengan diskon\n",
" total_setelah_diskon = total_pesanan - diskon\n",
"\n",
" # Input pembayaran\n",
" input_pembayaran(total_setelah_diskon)\n",
"\n",
" # Tampilkan struk pembelian setelah diskon\n",
" tampilkan_struk_pembelian(pesanan, total_setelah_diskon, diskon)\n",
"\n",
" # Rekam transaksi penjualan\n",
" rekam_transaksi(pesanan, total_setelah_diskon)\n",
"\n",
" # Pilihan menu keluar\n",
" pilihan_keluar = input(\"Apakah Anda ingin keluar? (y/n): \")\n",
" if pilihan_keluar.lower() == 'y':\n",
" login()\n",
" else:\n",
" menu_user() # Kembali ke menu user jika tidak keluar\n",
"\n",
"# Fungsi Login\n",
"def login():\n",
" username = input(\"Username: \")\n",
" password = getpass.getpass(\"Password: \")\n",
"\n",
" # Implementasi sederhana, sebaiknya menggunakan database atau penyimpanan yang lebih aman\n",
" if username == 'admin1' and password == 'admin2':\n",
" menu_admin()\n",
" elif username == 'user1' and password == 'user2':\n",
" menu_user()\n",
" else:\n",
" print(\"Login Gagal. Silakan coba lagi.\")\n",
" login()\n",
"\n",
"\n",
"\n",
"# Fungsi Rekam Transaksi Penjualan\n",
"def rekam_transaksi(pesanan, total_setelah_diskon):\n",
" if pesanan:\n",
" id_transaksi = len(penjualan_list) + 1\n",
" jumlah_pesanan = sum(item['jumlah'] for item in pesanan)\n",
"\n",
" # Membuat data transaksi\n",
" transaksi = {\n",
" 'id_transaksi': id_transaksi,\n",
" 'tanggal': datetime.datetime.now(), # Perubahan di sini\n",
" 'pesanan': pesanan,\n",
" 'jumlah_barang': jumlah_pesanan,\n",
" 'total_harga': total_setelah_diskon\n",
" }\n",
"\n",
" # Menambahkan transaksi ke penjualan_list\n",
" penjualan_list.append(transaksi)\n",
"\n",
" # Update stok barang\n",
" update_stok_barang(pesanan)\n",
"\n",
" print(f\"\\nTransaksi berhasil. ID Transaksi: {id_transaksi}\")\n",
" else:\n",
" print(\"\\nTransaksi gagal.\")\n",
"\n",
"# Fungsi Update Stok Barang\n",
"def update_stok_barang(pesanan):\n",
" for item in pesanan:\n",
" id_barang = item['id']\n",
" jumlah = item['jumlah']\n",
" barang = [barang for barang in barang_list if barang['id'] == id_barang][0]\n",
" barang['stok'] = max(0, barang['stok'] - jumlah)\n",
"\n",
"# Fungsi Tampilkan Struk Pembelian\n",
"def tampilkan_struk_pembelian(pesanan, total_pesanan, diskon=0):\n",
" print(\"\\n======= STRUK PEMBELIAN ========\")\n",
" for item in pesanan:\n",
" id_barang = item['id']\n",
" jumlah = item['jumlah']\n",
" barang = [barang for barang in barang_list if barang['id'] == id_barang][0]\n",
" subtotal = barang['harga'] * jumlah\n",
"\n",
" print(f\"{barang['nama']} ({jumlah} pcs) - Rp {subtotal}\")\n",
" print(f\"Total Harga: Rp {diskon}\")\n",
" print(f\"Diskon: Rp {diskon}\")\n",
" print(f\"Total Setelah Diskon: Rp {total_pesanan}\")\n",
" print(\"\\n================================\")\n",
" print()\n",
"\n",
"\n",
"# Fungsi Tampilkan List Barang\n",
"def tampilkan_list_barang():\n",
" print(\"\\n====== LIST BARANG ======\")\n",
" for barang in barang_list:\n",
" print(f\"ID: {barang['id']}, Nama: {barang['nama']}, Stok: {barang['stok']}, Harga: {barang['harga']}\")\n",
"\n",
"# Fungsi Tambah Barang\n",
"def tambah_barang():\n",
" id_barang = len(barang_list) + 1\n",
" nama_barang = input(\"Masukkan Nama Barang: \")\n",
" stok_barang = int(input(\"Masukkan Stok Barang: \"))\n",
" harga_barang = int(input(\"Masukkan Harga Barang: \"))\n",
"\n",
" barang_baru = {'id': id_barang, 'nama': nama_barang, 'stok': stok_barang, 'harga': harga_barang}\n",
" barang_list.append(barang_baru)\n",
"\n",
" print(f\"Barang {nama_barang} berhasil ditambahkan!\")\n",
"\n",
"# Fungsi Perbarui Stok dan Harga Barang\n",
"def perbarui_barang():\n",
" tampilkan_list_barang()\n",
" id_barang = int(input(\"Masukkan ID Barang yang ingin diperbarui: \"))\n",
"\n",
" for barang in barang_list:\n",
" if barang['id'] == id_barang:\n",
" stok_baru = int(input(\"Masukkan Stok Baru: \"))\n",
" harga_baru = int(input(\"Masukkan Harga Baru: \"))\n",
"\n",
" barang['stok'] = stok_baru\n",
" barang['harga'] = harga_baru\n",
"\n",
" print(f\"Stok dan harga barang berhasil diperbarui!\")\n",
" return\n",
"\n",
" print(\"ID Barang tidak ditemukan.\")\n",
"\n",
"# Fungsi Hapus Barang\n",
"def hapus_barang():\n",
" tampilkan_list_barang()\n",
" id_barang = int(input(\"Masukkan ID Barang yang ingin dihapus: \"))\n",
"\n",
" for barang in barang_list:\n",
" if barang['id'] == id_barang:\n",
" barang_list.remove(barang)\n",
" print(f\"Barang dengan ID {id_barang} berhasil dihapus!\")\n",
" return\n",
"\n",
" print(\"ID Barang tidak ditemukan.\")\n",
"\n",
"# Fungsi Cari Barang\n",
"def cari_barang():\n",
" keyword = input(\"Masukkan Nama Barang yang ingin dicari: \")\n",
" ditemukan = False\n",
"\n",
" for barang in barang_list:\n",
" if keyword.lower() in barang['nama'].lower():\n",
" print(f\"ID: {barang['id']}, Nama: {barang['nama']}, Stok: {barang['stok']}, Harga: {barang['harga']}\")\n",
" ditemukan = True\n",
"\n",
" if not ditemukan:\n",
" print(\"Barang tidak ditemukan.\")\n",
"\n",
"# Fungsi Visualisasi Penjualan\n",
"def visualisasi_penjualan():\n",
" labels = [barang['nama'] for barang in barang_list]\n",
" values = [sum(item['jumlah'] for penjualan in penjualan_list for item in penjualan['pesanan'] if item['id'] == barang['id']) for barang in barang_list]\n",
"\n",
" plt.bar(labels, values)\n",
" plt.xlabel('Barang')\n",
" plt.ylabel('Jumlah Terjual')\n",
" plt.title('Grafik Penjualan')\n",
" plt.show()\n",
"\n",
"# Fungsi Laporan Penjualan\n",
"def laporan_penjualan():\n",
" if not penjualan_list:\n",
" print(\"Belum ada transaksi penjualan.\")\n",
" return\n",
"\n",
" total_transaksi = len(penjualan_list)\n",
" total_pendapatan = sum([penjualan['total_harga'] for penjualan in penjualan_list])\n",
" # best_seller = max(penjualan_list, key=lambda x: x['jumlah_barang'])\n",
"\n",
" if total_transaksi > 0:\n",
" best_seller = max(penjualan_list, key=lambda x: x['jumlah_barang'])\n",
" print(f\"\\n=== LAPORAN PENJUALAN ===\")\n",
" print(f\"Total Transaksi: {total_transaksi}\")\n",
" print(f\"Total Pendapatan: {total_pendapatan}\")\n",
" print(f\"Best Seller: {best_seller}\")\n",
" else:\n",
" print(\"Belum ada transaksi penjualan.\")\n",
"\n",
"# Fungsi Input Pesanan\n",
"def input_pesanan():\n",
" pesanan = []\n",
" while True:\n",
" try:\n",
" id_barang = int(input(\"Masukkan ID Barang yang ingin dipesan (0 untuk selesai): \"))\n",
" if id_barang == 0:\n",
" break\n",
"\n",
" # Cek apakah ID Barang valid\n",
" if any(barang['id'] == id_barang for barang in barang_list):\n",
" jumlah_pesanan = int(input(\"Masukkan jumlah barang yang ingin dipesan: \"))\n",
" pesanan.append({'id': id_barang, 'jumlah': jumlah_pesanan})\n",
" else:\n",
" print(\"ID Barang tidak valid. Silakan coba lagi.\")\n",
" except ValueError:\n",
" print(\"Masukkan angka sebagai ID Barang.\")\n",
" return pesanan\n",
"\n",
"# Fungsi Hitung Total Pesanan\n",
"def hitung_total_pesanan(pesanan):\n",
" total = 0\n",
" for item in pesanan:\n",
" id_barang = item['id']\n",
" jumlah = item['jumlah']\n",
" barang = [barang for barang in barang_list if barang['id'] == id_barang][0]\n",
" total += barang['harga'] * jumlah\n",
"\n",
" return total\n",
"\n",
"# Fungsi Input Pembayaran\n",
"def input_pembayaran(total_pesanan):\n",
" while True:\n",
" pembayaran = int(input(f\"Total pesanan: {total_pesanan}\\nMasukkan jumlah pembayaran: \"))\n",
" if pembayaran >= total_pesanan:\n",
" kembalian = pembayaran - total_pesanan\n",
" print(f\"Kembalian: {kembalian}\")\n",
" break\n",
" else:\n",
" print(\"Pembayaran kurang. Silakan coba lagi.\")\n",
"\n",
"\n",
"# Fungsi Hitung Diskon\n",
"def hitung_diskon(total_pesanan):\n",
" # Logika untuk menghitung diskon\n",
" # Misalnya, diskon 10% jika total pesanan di atas 100000\n",
" if total_pesanan > 100000:\n",
" return 0.1 * total_pesanan\n",
" else:\n",
" return 0\n",
"\n",
"# Main Program\n",
"login()"
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment