Membuat Aplikasi ATM sederhana menggunakan Python (part 2)

Benny Banu Adjie
7 min readSep 6, 2021

--

Assalamualaikum guys, gimana kabar kalian hari ini ? semoga tetap dalam kedaan sehat ya.

Ok teman-teman seperti yang sudah dijelaskan pada bahasan sebelumnya, kita akan melanjutkan proses pembuatan ATM sederhana, yaitu membuat program mesin atm dengan nama file atm_program.py

atm_program.py

Inti dari program yang ada pada mesin ATM adalah looping dan control flow. Dan karena pendekatan pengembangan program kita berbasis class, maka kita juga akan coba menggunakan modul bawaan Python dan mengaplikasikan instance object untuk mengerjakan seluruh fitur yang tersisa.

Tahap awal untuk membuat progra yang ada pada mesin atm adalah melakukan import modul Python untuk modul random dan datetime. Import juga class Customer agar kita dapat menggunakan method dan properties yang dimilikinya. Kemudian buat instance object dari Customer dengan parameter id.

import random
import datetime
from customer import Customer
atm = Customer(id)

Program kita akan dimulai dengan sebuah loop yang bernilai benar. Kemudian program dimulai dengan meminta input dari user berupa nomor pin dan membuat variable yang akan membatasi percobaan dari user ketika nomor pin yang dimasukkan ini salah. Nomor pin yang benar ini akan menjadi identitas nasabah. Program akan lanjut berjalan jika inputpin benar, dan berhenti jika salah memasukkan pin 3 kali.

Maka dari itu buatlah loop menggunakan while yang bernilai benar. Kemudian buatlah inputan untuk user agar bisa memasukkan nomer pin. Rubah inputan nilai pin ini ke dalam integer dan jadikan variable bagi parameter id. Siapkan juga sebuah variable yang nantinya digunakan untuk membatasi percobaan user ketika memasukkan pin dan diperoleh hasilnya sebagai berikut

while True:    id = int(input("Masukan Pin Anda :"))
trial = 0

Langkah selanjutnya buatlah looping verifikasi menggunakan while, yang bernilai benar ketika kondisinya adalah, pin yang dimasukkan user tidak sama seperti pin nasabah dan ketika percobaan masih kurang dari tiga kali. Jika kondisi terpenuhi, maka user akan di minta untuk memasukkan pin lagi dan di catat sebagai satu kali percobaan

    while (id != int(atm.checkPin()) and trial < 3):
id = int(input("Pin anda salah. Silahkan Masukan Lagi : "))
trial += 1

Selanjutnya buatlah sebuah kondisi, di mana ketika user telah mencoba memasukkan pin salah sebanyak tiga kali, user akan mendapatkan pemberitahuan error dan program akan berhenti berjalan.

        if trial == 3:
print("Error. Silahkan ambil kartu dan coba lagi..")
exit()

Pada tahap ini, kita telah menyelesaikan looping pemeriksaan (yang pertama) dan looping verifikasi, di mana ini juga merupakan salah satu fitur program yang diminta, yaitu cek pin. Selanjutnya kita akan membuat looping lagi di dalam looping pemeriksaan. Ini akan kita sebut sebagai “looping utama”. Looping utama ini akan berisi pilihan menu-menu utama dan kondisi yang terjadi ketika user memilih sebuah menu dari menu-menu yang ada.

Checkpoint

Lalu Buatlah sebuah looping while bernilai true, dengan indentasi (spasi) yang sama seperti looping verifikasi. Jika nilainya benar, looping ini akan menampilkan pesan selamat datang dan pilihan menu utama tampilan mesin ATM berupa: cek saldo, debet, simpan, ganti pin, keluar.

    while True:        print("Selamat Datang di ATM UII..")
print("\n 1 - Cek Saldo \n 2 - Debet \n 3 - Simpan \n 4 - Ganti Pin \n 5 - Keluar ")

Di bawah function print() dari code di atas, buatlah inputan untuk user, yang kemudian diubah menjadi integer dan di simpan ke dalam sebuah variable

        selectmenu = int(input("\nSilahkan pilih menu: "))

Selanjutnya pada tahap ini, user akan memilih menu berdasarkan angka. Setiap angka yang di input oleh user akan menjadi acuan untuk fitur yang akan dijalankan. Sehingga kita perlu membuat control flow untuk merespon pilihan user terhadap menu pilihan pertama hingga ke lima. Jangan lupa untuk menutup control flow dengan pilihan lain seandainya user memasukkan inputan yang tidak tepat.

Pembuatan menu pilihan

  1. Jika user memilih menu pertama, tampilkan jumlah saldo nasabah saat ini dengan cara memanggil method checkBalance().
        if selectmenu == 1:
print("\nSaldo anda sekarang: Rp." + str(atm.checkBalance()) + "\n")

2. Jika user memilih menu kedua, buatlah input untuk menerima nominal saldo yang akan di debet. Nominal ini akan dibandingkan dengan saldo nasabah, jika nominal < saldo, maka method withdrawBalance() akan di panggil dan sisa saldo akan ditampilkan

        elif selectmenu == 2:
nominal = float(input("Masukan nominal saldo: "))
verify_withdraw = input("Konfirmasi: Anda akan melakukan debet dengan nominal berikut" +" "+str(nominal) + "? y/n" +" ")
if verify_withdraw == "y":
print("Saldo awal anda adalah: Rp. " + str(atm.checkBalance()) + " ")
else:
break
if
nominal < atm.checkBalance():
atm.withdrawBalance(nominal)
print("Transaksi Debet Berhasil!")
print("Saldo sisa sekarang: Rp. " + str(atm.checkBalance()) + "")
else:
print("Maaf, Saldo anda tidak cukup untuk melakukan debet")
print("Silahkan lakukan penambahan nominal saldo")

Checkpoint

3. Jika user memilih menu ketiga, panggil method depositBalance() dan tampilkan saldo saat ini

        elif selectmenu == 3:
nominal = float(input("Masukan nominal saldo:"))
verify_deposit = input("Konfirmasi: Anda akan melakukan penyimpanan dengan nominal berikut"+" "+ str(nominal) + "? y/n" +" ")
if verify_deposit == "y":
atm.depositBalance(nominal)
print("Saldo anda sekarang adalah: Rp." + str(atm.checkBalance()) + "\n")
else:
break

4. Jika user memilih menu keempat, buatlah inputan untuk nomor pin baru dan lakukan verifikasi dengan membandingkannya dengan pin nasabah saat ini.

        elif selectmenu == 4:
verify_pin = int(input("Masukan pin anda: "))
while verify_pin != int(atm.checkPin()):
print("Pin anda salah, silahkan masukan pin:")
update_pin = int(input("silahkan masukan pin baru:"))
print("pin anda berhasil diganti")
verify_newpin = int(input("coba masukan pin baru: "))

if verify_newpin == update_pin:
print("pin baru anda sukses!")
else:
print("maaf, pin anda salah!")

5. Jika user memilih menu kelima, program akan berakhir. Namun program juga akan membuat resi dengan mencetak nomor record berdasarkan random integer antara 100000–1000000, tanggal saat ini dan sisa saldo terakhir

        elif selectmenu == 5:
print("========================================")
print("Resi tercetak otomatis saat anda keluar.\n")
print("Harap simpan tanda terima ini \n")
print("sebagai bukti transaksi anda.")
print("\nNo. Rekord:", random.randint(100000, 1000000))
print("Tanggal: ", datetime.datetime.now())
print("Saldo Akhir: ", atm.checkBalance())
print("\nTerima kasih telah menggunakan ATM UII")
print("========================================")
exit()

6. Jika user memilih menu lainnya, cetaklah informasi error yang dapat dibaca oleh user.

        else:
print("Error. Maaf menu anda tidak tersedia")

Checkpoint

Jika sudah berhasil tanpa error sampai sini, maka kita telah selesai membuat program dan berhasil dijalankan. Jalankan program atm_python.py pada terminal / command line

Ketika program dijalankan, kita diminta untuk memasukan pin yang sudah ditetapkan pada pembahasan sebelumnya, karena pada file customer.py kita menuliskan custPin =1234, maka dari itu kita menuliskan pin nya yaitu 1234, lalu akan menampilkan fitur-fitur yang telah kita buat seperti gambar dibawah ini

Jika kita memasukan pin selain 1234, maka akan menampilka pin anda salah, dan kita diberi kesempatan sebanyak 3x, jika lebih dari itu maka akan menampilkan tulisan error, silahkan ambil kartu dan coba lagi…

Jika kita memilih menu no 1 yaitu cek saldo maka hasil saldo awalnya yaitu 10000, hal tersebut karena pada file customer.py kita telah menetapkan custBalance = 10000

Dan jika kita memilih menu nomor 2, program akan menampilkan pengisian jumlah nominal saldo . Jika kita memasukan nominal saldo debet > dari saldo akhir, maka program akan eror dan sebaliknya jika saldo debet < saldo akhir maka program tersebut akan berjalan. Sebagai contoh kita coba masukan nominal saldo = 2000 dan diperoleh hasilnya sebagai berikut

Jika kita memilih menu nomor 3, program akan menampilkan pengisian jumlah nominal saldo yang akan di simpan. Sebagai contoh kita coba masukan nominal saldo yang akan disimpan sebanyak 10000 maka saldo akhir di atm kita yaitu 18000, hal tersebut karena sebelumnya kita melakukan debet sebesar 2000

Jika kita memilih menu nomor 4, program akan menampilkan pengisian pin. Dan jika pengisian pin sesuai dengan pin yang telah kita tetapkan pada penjelasan sebelumnya yaitut 1234, maka program akan menampilkan pengisian pin baru dan sebaliknya akan menampilkan error jika pin yang kita masukan tidak sesuai.

Misalkan kita ingin mengubah pin atm kita menjadi 2222 maka akan diperoleh hasilnya sebagai berikut

Lalu jika kita memilih menu nomor 5, program akan menampilkan no record, tanggal transaksi, dan saldo akhir seperti gambar di bawah ini

Selanjutnya jika kita memilih fitur yang tidak ada dalam menu, program akan menampilkan hasil seperti gambar di bawah ini

Demikian cara pembuatan aplikasi ATM sederhana menggunakan python. Untuk full code langkah di atas, dapat dilihat pula pada github saya.

Semoga artikel ini bermanfaat. Jika terdapat kekeliruan, mohon koreksinya ya. Terima kasih! :)

--

--