Untitled
user_8125782
dart
2 months ago
3.5 kB
4
Indexable
import 'dart:io'; class BankAccount { String _pin; // Properti private double _saldo; // Properti private // Constructor BankAccount(this._pin, this._saldo); // Getter untuk membaca saldo double get saldo => _saldo; // Metode untuk autentikasi PIN bool authenticate(String inputPin) { return inputPin == _pin; } // Metode untuk menyetor uang void deposit(double jumlah) { if (jumlah > 0) { _saldo += jumlah; print('Deposit berhasil: $jumlah'); } else { print('Jumlah harus positif'); } } // Metode untuk menarik uang void withdraw(double jumlah) { if (jumlah > 0 && jumlah <= _saldo) { _saldo -= jumlah; print('Penarikan berhasil: $jumlah'); } else { print('Penarikan gagal. Saldo tidak mencukupi.'); } } // Metode untuk mengganti PIN void changePin(String oldPin, String newPin) { if (oldPin == _pin) { _pin = newPin; print('PIN berhasil diubah!'); } else { print('PIN lama tidak valid.'); } } } void main() { // Membuat akun bank var account = BankAccount('123456', 500.0); print('Selamat datang di sistem Bank!'); int percobaan = 0; bool isAuthenticated = false; // Loop autentikasi dengan batasan 3 kali percobaan while (percobaan < 3 && !isAuthenticated) { stdout.write('Masukkan PIN Anda: '); String? inputPin = stdin.readLineSync(); if (inputPin != null && account.authenticate(inputPin)) { isAuthenticated = true; print('Autentikasi berhasil! Selamat datang.'); } else { percobaan++; print('PIN salah! Percobaan tersisa: ${3 - percobaan}'); } } // Jika gagal autentikasi setelah 3 percobaan, keluar if (!isAuthenticated) { print('Anda telah gagal memasukkan PIN 3 kali. Akses ditolak.'); return; } // Jika autentikasi berhasil, tampilkan menu while (true) { print('\nPilih aksi:'); print('1. Cek Saldo'); print('2. Deposit'); print('3. Withdraw'); print('4. Ganti PIN'); print('5. Keluar'); stdout.write('Masukkan pilihan Anda: '); String? pilih = stdin.readLineSync(); if (pilih == '1') { print('Saldo Anda saat ini: ${account.saldo}'); } else if (pilih == '2') { stdout.write('Masukkan jumlah deposit: '); String? jumlahInput = stdin.readLineSync(); double? jumlah = double.tryParse(jumlahInput ?? ''); if (jumlah != null) { account.deposit(jumlah); } else { print('Input tidak valid.'); } } else if (pilih == '3') { stdout.write('Masukkan jumlah penarikan: '); String? jumlahInput = stdin.readLineSync(); double? jumlah = double.tryParse(jumlahInput ?? ''); if (jumlah != null) { account.withdraw(jumlah); } else { print('Input tidak valid.'); } } else if (pilih == '4') { stdout.write('Masukkan PIN lama: '); String? oldPin = stdin.readLineSync(); stdout.write('Masukkan PIN baru: '); String? newPin = stdin.readLineSync(); if (oldPin != null && newPin != null && newPin.length >= 4) { account.changePin(oldPin, newPin); } else { print('PIN baru harus terdiri dari minimal 4 angka.'); } } else if (pilih == '5') { print('Terima kasih telah menggunakan layanan kami. Sampai jumpa!'); break; } else { print('Pilihan tidak valid.'); } } }
Editor is loading...
Leave a Comment