首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 模擬 ATM 機程序:交互菜單完整實現指南

     編輯:程式設計疑難解答

專案需求

編寫一個基於控制台的 Java ATM 模擬程序,包含賬戶查詢、存款、取款、修改密碼、退出等功能,採用交互式菜單循環操作。

核心設計

  • Account 類:封裝卡號、密碼、餘額等屬性及業務邏輯。
  • ATM 類:管理賬戶集合,提供登錄驗證、菜單顯示、業務分發。
  • Main 類:程序入口,初始化測試數據並啟動主循環。

關鍵代碼片段

賬戶實體

public class Account {
    private String cardNo;
    private String password;
    private double balance;

    // 構造器、getter/setter 略

    public boolean verifyPassword(String pwd) {
        return this.password.equals(pwd);
    }

    public void deposit(double amount) {
        if (amount > 0) balance += amount;
    }

    public boolean withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
            return true;
        }
        return false;
    }
}

主循環邏輯

public class ATM {
    private Map accounts = new HashMap<>();
    private Scanner scanner = new Scanner(System.in);

    public void start() {
        // 初始化測試賬戶
        accounts.put("622588", new Account("622588", "123456", 10000));

        while (true) {
            System.out.println("=== 歡迎使用 ATM ===");
            System.out.print("請輸入卡號: ");
            String cardNo = scanner.nextLine();
            System.out.print("請輸入密碼: ");
            String pwd = scanner.nextLine();

            Account acc = accounts.get(cardNo);
            if (acc != null && acc.verifyPassword(pwd)) {
                showMenu(acc);
            } else {
                System.out.println("卡號或密碼錯誤!");
            }
        }
    }

    private void showMenu(Account acc) {
        while (true) {
            System.out.println("\n1.查詢餘額  2.存款  3.取款  4.修改密碼  5.退出");
            System.out.print("請選擇: ");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗換行符

            switch (choice) {
                case 1: System.out.println("餘額: " + acc.getBalance()); break;
                case 2: 
                    System.out.print("存款金額: ");
                    acc.deposit(scanner.nextDouble());
                    System.out.println("存款成功");
                    break;
                case 3:
                    System.out.print("取款金額: ");
                    if (acc.withdraw(scanner.nextDouble())) {
                        System.out.println("取款成功");
                    } else {
                        System.out.println("餘額不足或金額無效");
                    }
                    break;
                case 4:
                    System.out.print("新密碼: ");
                    acc.setPassword(scanner.nextLine());
                    System.out.println("修改成功");
                    break;
                case 5: return; // 返回登錄界面
                default: System.out.println("無效選項");
            }
        }
    }
}

運行與擴展

  • 將代碼保存為 ATM.java,用 javac ATM.java && java ATM 編譯運行。
  • 可擴展:持久化到文件/數據庫、增加轉賬功能、圖形化界面等。

參考資源

百度文庫完整源碼:Java ATM 模擬系統源碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved