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

Java ATM 系統設計:面向對象與圖形界面實戰指南

     編輯:程式設計綜合問答

設計一個基於 Java 的 ATM 系統是經典的面向對象編程練習。本文提供完整的設計思路、核心類結構、界面實現方案及關鍵技術點,幫助初學者快速構建功能完整的銀行自動取款機模擬系統。

需求分析

  • 核心功能:查詢餘額、存款、取款、轉賬
  • 技術要求:封裝、繼承、多態、接口;Swing/JavaFX 圖形界面;後台非圖形邏輯分離
  • 數據持久化:文件或數據庫存儲賬戶信息與交易記錄

核心類設計

1. 領域模型


// 賬戶接口
interface Account {
    double getBalance();
    boolean deposit(double amount);
    boolean withdraw(double amount);
    boolean transfer(Account target, double amount);
}

// 基礎賬戶實現
class BankAccount implements Account {
    private String accountId;
    private String password;
    private double balance;
    private List transactions;
    // 封裝屬性,提供業務方法
}

// 異常處理
class InsufficientFundsException extends Exception { ... }
class InvalidAccountException extends Exception { ... }

2. 服務層


interface BankService {
    Account login(String id, String password);
    void logout(Account account);
    List getHistory(Account account);
}

class BankServiceImpl implements BankService {
    private Map accounts = new HashMap<>();
    // 實現業務邏輯,處理事務、持久化
}

3. 界面層

  • LoginFrame:登錄界面,驗證賬號密碼
  • MainFrame:主菜單,四大功能按鈕
  • DepositDialog、WithdrawDialog、TransferDialog、BalanceDialog:各功能對話框
  • 使用 CardLayout 或 JTabbedPane 管理界面切換

關鍵技術點

事務處理

轉賬操作必須保證原子性:


public boolean transfer(Account from, Account to, double amount) {
    synchronized(from) {
        synchronized(to) {
            if (from.withdraw(amount)) {
                if (to.deposit(amount)) {
                    // 記錄雙方交易流水
                    return true;
                } else {
                    from.deposit(amount); // 回滾
                }
            }
            return false;
        }
    }
}

數據持久化

  • 簡易版:序列化 Account 對象到文件
  • 進階版:使用 SQLite/JDBC 連接 MySQL,表結構:accounts(id, password, balance), transactions(id, from_id, to_id, amount, time, type)

界面與邏輯分離

遵循 MVC 模式:

  • Model:Account, Transaction
  • View:Swing 組件
  • Controller:事件監聽器調用 BankService

學習資源推薦

如最佳回答所述,尚硅谷免費視頻中的 bank 項目是極佳參考,涵蓋 JDBC、事務、Swing 界面等完整技術棧。

擴展方向

  • 管理員後台:用戶管理、利率設置、系統日誌
  • 多語言支持:國際化(i18n)資源文件
  • 安全增強:密碼加密存儲、登錄失敗鎖定、操作日誌審計
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved