11-6 專題 研討 – 建立存款帳戶
『藝術銀行』期望製作一套『活期儲蓄存款系統』,程式設計師很難了解系統需求,因此依照可能狀態分段製作,每一階段完成並得到上級同意後,再往下一階段實現,吾人將各步驟分批實施如下。 (A) 系統功能:Ex11_2.java、account.java 系統需要建立客戶帳戶。每一存款帳戶包含:姓名(String name)、帳戶(String No)與存款餘額(int balance),各項資料限制如下: (1) 帳戶:由 12 個數字與 1 個檢查碼所構成(合計 13 碼),檢查碼計算方式是利用一個加權系列: 1 2 1 2 1 2...等 交替變換,帳號第一個數字乘以 1、第二位乘以 3、第三位乘以 1...等依此類推,再將所乘的結果相加(= total),再取 10 的餘數(value = total % 10),檢查碼即是 10 減該餘數(= 10 - value)。 (2) 存款餘額:如果取款後,餘額會少於 0,則會拒絕提款。 請製作一個帳戶類別(Account.class)是其具有上述功能,再至作主程式引用該類別,驗證是否正常。當建立帳戶時,只要輸入 12 個帳號,系統自動產生檢查碼;處理帳戶而輸入帳號,系統也會檢查檢查碼是否正確。期望驗證帳戶類別功能的結果如下:
(A) 帳戶類別(Account.class): 首先必須建立帳戶類別,但它必須與 Bank_db 資料庫內 Account 資料表相配合,Account 表格的結構如下圖: 各欄位功能如下: (1) 欄位 ID:帳號,資料型態是 CHAR(20),但程式內必須經過運算,Java 程式採用 int[13] 格式。 (2) 欄位 name:帳戶姓名,資料型態是 CHAR(20),Java 程式採用 String 格式。 (3) 欄位 balance:餘額,資料型態是 int,Java 程式採用 int 格式。 另外 ID 是 12 個整數再加入 1 個檢查碼,皆必須符合檢查碼計算方法。 餘額 balance 不可以小於 0,否則拒絕存取,因此須將 ID 與 balance 設定為私有變數,必須透過物件方法存取。Account 類別結構如下圖所示。
圖 11-2 Account.java 程式架構 Account 程式範例如下:
經編譯後,產生一只 Account.class,如下:
(C) 主類別(Ex11_2.class): 我們寫一個簡單程式來驗證 Account 類別是否能滿足所需,程式範例如下:
11-6-2 範例研討:步驟(2) 建立帳戶與異動管理 (A) 系統功能:Ex11_3.java、Transaction.java 無論建立新帳戶、帳戶存款或帳戶提款,都有可能變更到帳戶內的餘額(balance),除了需登錄於帳戶資料表內(Account),也必須將交易過程登錄於交易檔( transaction)內,因此,在 Bank_db 資料庫內有 Account 與 transaction 兩資料表,前者已介紹過,接下來介紹 transaction,其結構如下圖: 銀行內所有帳戶的交易狀況皆登錄於此資料表內,每一筆紀錄說明每一帳戶的交易過程,個欄位說明如下: (a) trans_no:交易編碼,每一筆交易都有一個唯一識別值,是此表格的主鍵。 (b) ID:帳戶編碼,此交易資料的帳戶。 (c) trans_type:交易型態,1 表存款;0 表提款。 (d) trade:交易金額。 (e) trans_date:交易時間日期。 依照上述規格,吾人將 transaction 類別宣告如下:(Transaction.java)
經編譯後,產生一只 Transaction.class,如下: 如下:
(B) 主類別(Ex11_3.class): 我們編寫一只程式可以建立一個新帳戶,並存入開戶金額,接著,再由 Account 表格內讀出該帳戶資料,並由 Transaction 表內讀取該帳戶的異動資料。其中將資料插入資料表語法如下:
查詢資料表語法如下:
期望操作結果如下:
程式範例如下:(Ex11_3.java)
|
翻轉工作室:粘添壽
Java 程式設計(二) 含物件導向
翻轉電子書系列:
|