Untitled
unknown
plain_text
4 months ago
5.5 kB
9
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