Untitled
unknown
plain_text
a year ago
5.5 kB
11
Indexable
import java.util.*;
class ATMSystem {
static class User {
String username;
String pin;
double balance;
List<String> transactionHistory;
public User(String username, String pin, double balance) {
this.username = username;
this.pin = pin;
this.balance = balance;
this.transactionHistory = new ArrayList<>();
}
void deposit(double amount) {
balance += amount;
transactionHistory.add("Deposited: " + amount);
}
boolean withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
transactionHistory.add("Withdrew: " + amount);
return true;
} else {
return false;
}
}
void transfer(User recipient, double amount) {
if (balance >= amount) {
balance -= amount;
recipient.deposit(amount);
transactionHistory.add("Transferred: " + amount + " to " + recipient.username);
recipient.transactionHistory.add("Received: " + amount + " from " + this.username);
} else {
System.out.println("Insufficient funds to transfer.");
}
}
void showBalance() {
System.out.println("Current Balance: " + balance);
}
void showTransactionHistory() {
if (transactionHistory.isEmpty()) {
System.out.println("No transactions yet.");
} else {
System.out.println("Transaction History:");
for (String transaction : transactionHistory) {
System.out.println(transaction);
}
}
}
}
static Map<String, User> users = new HashMap<>();
static User currentUser = null;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Adding some demo users
users.put("user1", new User("user1", "1234", 1000));
users.put("user2", new User("user2", "5678", 1500));
System.out.println("Welcome to ATM Management System!");
// Main loop for the ATM system
while (true) {
if (currentUser == null) {
if (login(scanner)) {
showMenu(scanner);
}
}
}
}
// Login method to authenticate the user
public static boolean login(Scanner scanner) {
System.out.print("Enter username: ");
String username = scanner.nextLine();
System.out.print("Enter pin: ");
String pin = scanner.nextLine();
User user = users.get(username);
if (user != null && user.pin.equals(pin)) {
currentUser = user;
System.out.println("Login successful.");
return true;
} else {
System.out.println("Invalid username or PIN. Please try again.");
return false;
}
}
// Menu after a successful login
public static void showMenu(Scanner scanner) {
while (true) {
System.out.println("\nATM Menu:");
System.out.println("1. Check Balance");
System.out.println("2. Withdraw");
System.out.println("3. Transfer");
System.out.println("4. View Transaction History");
System.out.println("5. Logout");
System.out.print("Choose an option: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Clear the buffer
switch (choice) {
case 1:
currentUser.showBalance();
break;
case 2:
withdraw(scanner);
break;
case 3:
transfer(scanner);
break;
case 4:
currentUser.showTransactionHistory();
break;
case 5:
System.out.println("Logging out...");
currentUser = null;
return;
default:
System.out.println("Invalid option. Please try again.");
}
}
}
// Withdraw money from the ATM
public static void withdraw(Scanner scanner) {
System.out.print("Enter amount to withdraw: ");
double amount = scanner.nextDouble();
if (amount > 0 && currentUser.withdraw(amount)) {
System.out.println("Withdrawal successful.");
} else {
System.out.println("Insufficient funds or invalid amount.");
}
}
// Transfer money to another user
public static void transfer(Scanner scanner) {
System.out.print("Enter recipient username: ");
String recipientUsername = scanner.nextLine();
User recipient = users.get(recipientUsername);
if (recipient != null && recipient != currentUser) {
System.out.print("Enter amount to transfer: ");
double amount = scanner.nextDouble();
if (amount > 0) {
currentUser.transfer(recipient, amount);
System.out.println("Transfer successful.");
} else {
System.out.println("Invalid transfer amount.");
}
} else {
System.out.println("Recipient not found or invalid.");
}
}
}Editor is loading...
Leave a Comment