Untitled
unknown
plain_text
9 months ago
2.9 kB
12
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.');
}
}
}
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. 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') {
print('Terima kasih telah menggunakan layanan kami. Sampai jumpa!');
break;
} else {
print('Pilihan tidak valid.');
}
}
}Editor is loading...
Leave a Comment