PYTHON
Tugas ini dibuat untuk memenuhi Nilai Tugas Project Mata Kuliah Dasar
Pemrograman
Disusun oleh :
1.Mico (17225041)
2.Alisya (17225066)
3.Hayqal (17225025)
4.Nogie (17225040)
5.Febrian (17225137)
6.Muzacky (17225002)
Puji dan syukur kami panjatkan kepada tuhan yang maha esa karena atas kasih
dan anugerahnya yang begitu besar,sehingga kelompok kami dapat
menyelesaikan tugas dalam laporan ini.
Laporan yang kami buat ini menjelaskan tentang program sederhana yang
bertujuan untuk mempermudah dalam melakukan proses transaksi di dalam
sebuah cafetarian antara kasir dengan pelanggan,program yang kami buat ini
menggunakan aplikasi vcode sesuai dengan yang di anjurkan.
Sebagai penyusun,kami menyadari bahwa program yang kami buat sangat lah
sederhana dan masih banyak kurang nya,baik dari penyusunan codingan
kasir,flowchart data dan laporan yang telah kami buat,oleh karena itu kami
rendah hati menerima saran dan kritik dari dosen maupun rekan satu kelas.
Hormat kami,
Penulis
ii
DAFTAR ISI
KATA PENGANTAR................................................................................................................ii
DAFTAR ISI.............................................................................................................................iii
DAFTAR SIMBOL...................................................................................................................iv
BAB I PENDAHULUAN...........................................................................................................1
1.1 Latar Belakang Masalah..................................................................................................1
1.2 Maksud dan Tujuan.........................................................................................................1
1.3 Ruang Lingkup................................................................................................................1
BAB II LANDASAN TEORI.....................................................................................................2
2.1 Pengertian Bahasa Pemrograman Python.......................................................................2
2.2 Kelebihan dan Kekurangan Bahasa Python....................................................................2
2.3 Pengertian Flowchart......................................................................................................3
BAB III PERANCANGAN DAN IMPLEMENTASI................................................................4
3.1 Rancangan Flowchart Aplikasi.......................................................................................4
3.2 Tampilan Aplikasi...........................................................................................................5
3.3 Source Code....................................................................................................................7
iii
DAFTAR SIMBOL
iv
BAB I PENDAHULUAN
1
BAB II LANDASAN TEORI
2
2.3 Pengertian Flowchart
3
BAB III PERANCANGAN DAN IMPLEMENTASI
3.1 Rancangan Flowchart Aplikasi
4
3.2 Tampilan Aplikasi
5
6
7
8
Alur Program
Berikut adalah alur program pada program Python yang diberikan:
Program dimulai dengan fungsi login_kasir() yang akan meminta pengguna untuk
memasukkan username dan password. Jika login berhasil, program akan memanggil fungsi
tampilkan_menu(), jika tidak, program akan meminta pengguna untuk login kembali.
Fungsi tampilkan_menu() akan menampilkan daftar menu yang tersedia. Setelah itu,
program akan memanggil fungsi kasir().
Fungsi kasir() akan meminta input nama kasir dan nama pelanggan. Kemudian, program
akan meminta pengguna untuk memasukkan pesanan dengan memasukkan kode menu dan
jumlah pesanan. Program akan meminta pengguna apakah ada pesanan lain atau tidak. Jika
tidak ada pesanan lain, program akan melanjutkan ke langkah berikutnya.
Setelah daftar pesanan selesai, program akan menampilkan daftar pesanan yang telah
dimasukkan oleh pengguna.
Program memberikan beberapa opsi kepada pengguna:
Menghapus pesanan: Pengguna diminta untuk memasukkan kode menu yang akan dihapus,
dan pesanan akan dihapus dari daftar pesanan.
Mengganti pesanan: Pengguna diminta untuk memasukkan kode menu yang ingin diganti
dan kode menu baru. Pesanan akan diganti dengan kode menu baru.
Mengubah jumlah pesanan: Pengguna diminta untuk memasukkan kode menu yang ingin
diubah jumlahnya dan jumlah baru. Jumlah pesanan akan diubah.
Selesai: Jika pengguna memilih opsi ini, program akan melanjutkan ke langkah berikutnya.
Setelah pengguna selesai dengan perubahan pesanan, program akan menghitung total harga
pesanan berdasarkan daftar pesanan yang telah diubah.
Program akan meminta pengguna untuk memilih metode pembayaran, antara tunai atau non-
tunai (Qris). Pengguna diminta untuk memasukkan jumlah pembayaran.
Setelah pembayaran selesai, program akan mencetak struk kasir yang berisi detail pesanan,
total harga, metode pembayaran, dan kembalian.
Program selesai dan keluar.
9
3.3 Source Code
from random import random #mencetak angka secara random
import datetime #mencetak waktu terkini)
import getpass #menyamarkan alfabet
def login():
print('\t\tKOPI KITA')
print()
username = input('username: ')
password = getpass.getpass('password: ')
print()
login_data = {
'MICO': '17225041',
'NOGIE': '17225040',
'HAYQAL': '17225025',
'ALISYA': '17225065',
'MUZACKY': '17225002',
'FEBRIAN': '17225137'
}
10
"4": {"nama": "Mocha", "harga": 25000},
"5": {"nama": "Matcha Latte", "harga": 23000},
"6": {"nama": "Chocolate", "harga": 22000},
"7": {"nama": "Milo Machiato", "harga": 26000},
"8": {"nama": "Hazelnut Latte", "harga": 24000},
"9": {"nama": "Caramel Latte", "harga": 24000},
"10": {"nama": "Vanilla Latte", "harga": 24000},
"11": {"nama": "Pandan Latte", "harga": 26000},
"12": {"nama": "Strawberry Creamy", "harga": 25000},
"13": {"nama": "Coffee Milk", "harga": 20000},
"14": {"nama": "Mineral Water", "harga": 5000},
"15": {"nama": "Cookies and Cream", "harga": 12000},
"16": {"nama": "Hot Chocolate", "harga": 23000},
"17": {"nama": "Hot Americano", "harga": 17000},
"18": {"nama": "Hot Coffee Milk", "harga": 20000},
"19": {"nama": "Hot Latte", "harga": 21000},
"20": {"nama": "Hot Cappuccino", "harga": 20000},
"21": {"nama": "Sausage", "harga": 15000},
"22": {"nama": "French Fries", "harga": 18000},
"23": {"nama": "Croissant", "harga": 20000},
"24": {"nama": "Dimsum", "harga": 15000},
"25": {"nama": "Tiramisu Cake", "harga": 30000},
"26": {"nama": "Chocolate Cake", "harga": 30000},
"27": {"nama": "Strawberry Cake", "harga": 30000},
}
def tampilkan_menu(): #menampilkan seluruh daftar menu
print('\t\tKOPI KITA')
print("Our Menu:")
print("===========================================")
print("Kode Nama Harga")
print("-------------------------------------------")
for kode, data in menu.items():
nama = data['nama']
harga = data['harga']
11
print(f"{kode:<5} {nama:<20} Rp{harga:>7,}")
print("-------------------------------------------")
kasir() #program akan menuju ke kasir
def buat_laporan_penjualan(data_penjualan):
laporan = "Laporan Penjualan\n"
laporan += "-----------------\n"
12
def kasir() :
daftar_pesanan = {}
print('\tKOPI KITA')
Cashier = input('Masukan nama Cashier: ')
Customer_Name = input('masukan nama customer: ')
def tanya():
while True:
jawab = input("Apakah ada pesanan lain? (ya/tidak): ")
if jawab.lower() == "ya" or jawab.lower() == "tidak":
return jawab.lower()
else:
print("Input tidak valid. Silakan input 'ya' atau 'tidak'.")
while True:
kode_menu = input("Masukkan kode menu: ")
if kode_menu in menu:
while True:
jumlah = input("Masukkan jumlah: ")
if jumlah.isdigit():
jumlah = int(jumlah)
break
else:
print("Jumlah harus berupa angka. Silakan coba lagi.")
if kode_menu in daftar_pesanan:
daftar_pesanan[kode_menu] += jumlah
else:
daftar_pesanan[kode_menu] = jumlah
if tanya() == "tidak":
break
else:
13
print("Kode menu tidak valid. Silakan coba lagi.")
print("Daftar Pesanan:")
for kode, jumlah in daftar_pesanan.items():
print(f"Kode menu: {kode:<2}, Menu: {menu[kode]['nama']}, Jumlah : {jumlah},
Harga: {menu[kode]['harga']}")
def tampilkan_daftar_pesanan():
print("\nDaftar Pesanan:")
for kode, jumlah in daftar_pesanan.items():
print(f"Kode menu: {kode:<2}, Menu: {menu[kode]['nama']}, Jumlah : {jumlah},
Harga: {menu[kode]['harga']}")
14
else:
print("Kode menu tidak valid. Silakan coba lagi.")
ganti_pesanan()
while True:
print("\nPilihan:")
print("1. Hapus pesanan")
print("2. Ganti pesanan")
print("3. Ubah jumlah pesanan")
print("4. Selesai")
pilihan = input("Masukkan pilihan menu: ")
if pilihan == "1":
hapus_pesanan()
elif pilihan == "2":
ganti_pesanan()
elif pilihan == "3":
ubah_jumlah_pesanan()
elif pilihan == "4":
break
else:
15
print("Pilihan tidak valid. Silakan coba lagi.")
# Input pembayaran
print("\nMetode Pembayaran:")
print("1. Tunai (Cash)")
print("2. Qris (Shopee-pay)")
print("3. Debit BCA")
valid_input = False
while not valid_input:
metode_pembayaran = input("Pilih metode pembayaran (1/2/3): ")
if metode_pembayaran.isdigit(): #isdigit berfungsi untuk memastikan bahwa
penginputan hanya berupa angka, selain itu false
metode_pembayaran = int(metode_pembayaran)
if metode_pembayaran == 1:
# Pembayaran tunai
pembayaran = input("Total harga: Rp{:,}\nMasukkan jumlah pembayaran tunai:
Rp".format(total_harga))
if pembayaran.isdigit():
pembayaran = int(pembayaran)
if pembayaran >= total_harga :
print("Pembayaran tunai selesai.")
kembalian = pembayaran - total_harga
print("Kembalian: Rp{:,}".format(kembalian))
valid_input = True
else:
print("Jumlah pembayaran tidak valid. Silakan masukkan jumlah yang
cukup.")
16
else:
print("Input tidak valid. Masukkan angka sebagai jumlah pembayaran tunai.")
elif metode_pembayaran == 2:
# Pembayaran non-tunai menggunakan Qris
pembayaran = input("Total harga: Rp{:,}\nMasukkan jumlah pembayaran non-
tunai: Rp".format(total_harga))
if pembayaran.isdigit():
pembayaran = int(pembayaran)
if pembayaran == total_harga :
print("Pembayaran selesai.")
print("Metode pembayaran non-tunai yang digunakan: Qris Shopee-pay")
kembalian = pembayaran - total_harga
print("Kembalian: Rp{:,}".format(kembalian))
valid_input = True
else:
print("Jumlah pembayaran tidak valid. Silakan masukkan jumlah yang
cukup.")
else:
print("Input tidak valid. Masukkan angka sebagai jumlah pembayaran non-
tunai.")
elif metode_pembayaran == 3:
# Pembayaran non-tunai menggunakan Debit
pembayaran = input("Total harga: Rp{:,}\nMasukkan jumlah pembayaran non-
tunai: Rp".format(total_harga))
if pembayaran.isdigit():
pembayaran = int(pembayaran)
if pembayaran == total_harga :
print("Pembayaran selesai.")
print("Metode pembayaran non-tunai yang digunakan: Debit")
kembalian = pembayaran - total_harga
print("Kembalian: Rp{:,}".format(kembalian))
valid_input = True
else:
print("Jumlah pembayaran kurang dari total harga. Silakan masukkan jumlah
yang cukup.")
17
else:
print("Input tidak valid. Masukkan angka sebagai jumlah pembayaran non-
tunai.")
else:
print("Input tidak valid. Silakan pilih metode pembayaran yang tersedia.")
else:
print("Input tidak valid. Silakan pilih metode pembayaran yang tersedia.")
#mencetak struk kasir
print("\nReceipt of payment")
print("=================================================")
print(" KOPI KITA ")
print(" Jl. Kramat Raya No. 98 ")
print(" JAKARTA PUSAT ")
print(" 081234567890 ")
print("=================================================")
bill = random()
print('bill no:', bill) #mencetak bill secara random
now = datetime.datetime.now()
print('date:', now.strftime("%d-%m-%y %H:%M:%S")) #mencetak waktu terkini
print('Name:',Customer_Name)
print("=================================================")
for kode, jumlah in daftar_pesanan.items():
nama = menu[kode]['nama']
harga = menu[kode]['harga']
total_per_item = hitung_total(harga, jumlah)
print(f"{nama:<20}x{jumlah:<11}:Rp{total_per_item:>8,}")
print("=================================================")
print(f"Subtotal\t\t\t:Rp{ total_harga:>8,}")
if metode_pembayaran == 1 :
print("Cash\t\t\t\t:Rp{:>8,}".format ( pembayaran))
print("Changes\t\t\t\t:Rp{:>8,}".format( kembalian))
elif metode_pembayaran == 2:
print("Shopee-pay\t\t\t:Rp{:>8,}".format( pembayaran))
print("Changes\t\t\t\t:Rp{:>8,}".format( kembalian))
18
elif metode_pembayaran == 3:
print("BCA\t\t\t\t:Rp{:>8,}".format(pembayaran))
print("Changes\t\t\t\t:Rp{:>8,}".format(kembalian))
print()
print("Hidup ini indah, terima kasih telah memilih kami")
print()
print("=================================================")
print('Wifi : kopi kita')
print('Password : kopikita1')
print('Cashier :',Cashier)
print("=================================================")
transaksi = {
"nomor_transaksi":random(),
"tanggal": now.strftime("%d-%m-%y %H:%M:%S"),
"customer_name": Customer_Name,
"daftar_pesanan": [
{"nama": menu[kode]['nama'], "harga": menu[kode]['harga'], "jumlah": jumlah} for
kode, jumlah in daftar_pesanan.items()
],
"total_harga": total_harga,
"metode_pembayaran": metode_pembayaran,
}
# Membuat laporan penjualan
laporan_penjualan = buat_laporan_penjualan([transaksi])
# Menyimpan laporan penjualan ke file
with open("laporan_penjualan.txt", "a") as file:
file.write(laporan_penjualan) #fungsi write yaitu menulis laporan penjualan yg ada
dalam variable laporan penjualan ke dalam file
# Mengkonfirmasi penyimpanan laporan
print("Laporan penjualan telah disimpan dalam file 'laporan_penjualan.txt'.")
#memulai program dari login kasir
if _name=='main_' :
login()
19
BAB IV PENUTUP
4.1 Kesimpulan
Berdasarkan uraian dan penjelasan yang di lakukan oleh kami pada bab-bab
sebelumnya,maka kesimpulan sebagai berikut:
1.Dengan adanya program kasir sederhana ini,maka data mengenai transaksi penjualan dan
data penambahan barang dapat tersimpan baik dan aman karena data-data tersebut sudah
aman tersimpan di dalam database
2.selain itu data transaksi penjualan dan data penambahan barang sudah terintegrasi makan
bagian kasir tidak perlu merekap ulang data transaksi data penjualan lagi mengenai laporan
barang yang di pesan dan terjual.
3.program ini di buat agar memudahkan kinerja kasir dalam proses perhitungan pada saat
melakukan transaksi penjualan.
4.2 Saran
Berdasarkan perancangan sistem yang telah di buat kami mempunyai beberapa saran untuk
para pemrograman yang akan mengembangkan sistem ini antara lain:
Pada proses transaksi penjualan,penambahan data barang yang akan di beli konsumen belum
di lakukan secara otomatis sehingga operator harus memasukan data barang yang akan di beli
satu-persatu .
sistem ini dapat dikembangkan lebih luas lagi yaitu dengan menambahkan sistem pembelian
barang kepada supplier.
20