Untitled

 avatar
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