亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現ATM機模擬系統

發布時間:2022-06-29 14:16:45 來源:億速云 閱讀:146 作者:iii 欄目:開發技術

這篇“Java如何實現ATM機模擬系統”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java如何實現ATM機模擬系統”文章吧。

一、概述

(1)選題分析

(2) 開發環境

開發環境,選擇IDEA這一Java開發軟件,基于JDK1.8版本,在本機window上開發本ATM模擬程序。

二、程序概要設計

(1) 功能模塊設計

經過對題目的分析,把本ATM模擬程序分為管理員端和用戶模式兩大模塊。其中,管理員具有查詢所有賬戶、導出所有賬戶信息到文件、注銷功能。用戶模塊具有查詢余額、ATM轉賬、ATM存款、ATM取款、修改密碼、查詢交易記錄、導出記錄、退卡等功能。

系統的總功能模塊圖如下:

Java如何實現ATM機模擬系統

(2) 流程圖

系統的總流程為:用戶通過主界面選擇管理員登錄或者用戶模式登錄,然后輸入系統設定的賬號密碼進行登錄。登錄成功后,進入到相應的主功能頁面進行相關操作。

管理員登錄后臺時,判斷密碼和賬號是否正確,正確則進行登錄,否則提示失敗。登錄進入后臺,可以操作查看所有用戶功能,然后系統將查詢所有設定的用戶信息并進行輸出到控制臺面板。點擊導出記錄功能,將把所有賬戶信息輸出到當前jar程序同級目錄下的txt文件。

用戶登錄時,判斷賬戶密碼是否正確,不正確,則賬戶錯誤次數+1,當次數達到3時,該賬戶將被鎖定,不能登錄。輸入的賬密正確時,判斷賬戶是否被鎖定,沒有鎖定則進行登錄,跳轉用戶主界面,并進行相關操作功能。

管理員模塊流程圖如下:

Java如何實現ATM機模擬系統

用戶模塊總流程圖如下:

Java如何實現ATM機模擬系統

(3) 文件結構和類的設計

本ATM模擬程序使用idea編輯軟件開發。項目分為admin(管理員)、customer(用戶)、data(ATM數據)三個包。

其中admin包下編寫了AdminManage類,負責初始化管理員界面,同時實現管理員的所有功能。Customer包下的customer類實現了用戶模塊的界面,定義了相關操作按鈕,以及實現了各自監聽的功能,為了減少界面的設計,在用戶界面中間使用了輸出信息面板,如此功能結果在面板中打印出來,模擬了atm機的界面信息。

Data包下分別有ATMData類、Card類和CustomerAccount類。Card類是用戶的銀行卡的代碼體現,把銀行卡的相關信息封裝成一個基本Java對象,符合Java面向對象的特性。其中customerAccount是card類的子類,在card的基礎上,添加了許多用戶行為,比如說存款、取款、查詢余額等。ATMData類是本程序十分重要的類,它封裝了本程序的所有初始賬戶信息,還有轉賬、獲取所有賬戶、登錄等操作。這樣設計,可以把數據處理和界面的設計分離來,避免用戶界面的代碼過多過長。

文件結構如下圖,其中resource文件夾下存放了本程序需要的圖片信息:

Java如何實現ATM機模擬系統

三、程序詳細設計

本系統功能模塊不在此一一詳寫,列舉了幾個主要的功能進行描述:

(1) 取款功能

取款功能的代碼設計在customerAccount類中,傳入參數為取款的金額。先判斷金額是否為100的倍數,然后判斷是否大于5000(題目要求單次取款不得大于5000),再判斷當前賬戶的余額是否大于等于被取得金額。這些條件都滿足后,重新計算當前賬戶的金額,并添加取款記錄到當前賬戶的交易記錄里。

核心代碼邏輯如下:

if (money % 100 != 0) {
     return false;
}
if (money > 5000) {
  return false;
}
int currentMoney = getMoney();
if (currentMoney < money) {
  return false;
}
//取款
int result = currentMoney - money;
setMoney(result);
//添加交易記錄
List<String> operationRecod = getOperationRecod();
operationRecod.add("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 ATM 取款 [" + money + "]元,當前余額[" + result + "]元");

(2) 存款功能

該方法參數為存入的金額,首先判斷金額是否為100的倍數,驗證通過則重新計算當前賬戶的余額,然后添加交易記錄在當前的賬戶上。

核心代碼邏輯如下:

 if (money % 100 != 0) {
 	return false;
}
//余額
int countMoney = getMoney() + money;
setMoney(countMoney);
//記錄交易記錄
List<String> operationRecod = getOperationRecod();
operationRecod.add("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 ATM 存款 [" + money + "]元,當前余額[" + countMoney + "]元");
return true;

(3) 用戶登錄功能

用戶登錄方法的入參為賬戶和密碼,首先判斷賬戶是否存在,將入參與系統設定好的所有賬戶進行匹配,如果沒有,則失敗。如果有則判斷該賬戶是否被鎖定,被鎖定不能登錄,沒被鎖定則判斷密碼是否正確,不正確則使當前的賬戶的錯誤次數+1(如果賬戶錯誤次數=3,則鎖定賬戶)。密碼正確則登錄成功跳轉主界面。

核心代碼如下:

//是否存在賬號

if (allAccount.containsKey(number)) {
  CustomerAccount account = allAccount.get(number);
  //判斷賬號是否被鎖定
  if (account.getErrorCount() >= 3) {
    JOptionPane.showMessageDialog(null, "登錄失敗!該賬號疑似已被鎖定", "提示消息", JOptionPane.WARNING_MESSAGE);
    return null;
    //密碼是否一致
  } else if (account.getPassword().equals(pwd)) {
    //重置錯誤次數
    account.setErrorCount(0);
    return account;
  }
  account.setErrorCount(account.getErrorCount() + 1);
  if (account.getErrorCount() >= 3) {
   //鎖定賬戶
    account.setStatus(1);
  }
} else {
   //提示錯誤消息
  JOptionPane.showMessageDialog(null, "登錄失敗!卡號或密碼錯誤", "提示消息", JOptionPane.WARNING_MESSAGE);
}

四、程序演示

功能居多,不一一在此記錄。這里只記錄針對幾個主要功能的測試。

(1) ATM取款

測試取款功能如下圖所示。初始金額為10000元。分別取款3000、6000、5000。其中后兩個為錯誤數據。單次取款不能超5000元,后面當余額3000時取款5000,測試取款不能透支功能。

測試結果:

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

由此可知,該功能正常,輸入合法以及不合法的數據測試的結果均與預期相符合。

(2) ATM轉賬

轉賬測試,目標賬戶必須存在,同時余額要大于要轉賬的金額,不能透支。測試數據為輸入一個不存在的賬戶、以及大于當前余額的轉賬金額。

輸入不存在賬戶測試結果如下:

Java如何實現ATM機模擬系統

輸入正常賬戶和金額測試結果如下,此時登錄目標賬戶,查詢交易記錄可知轉賬已經成功到達目標賬戶。

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

輸入大于當前余額的錯誤數據,測試結果如下,可知轉賬功能測試正常。

Java如何實現ATM機模擬系統

(3) 修改密碼

修改密碼必須輸入原始密碼,相同才能修改。新密碼必須大于6位,同時6位不能完全相同。第三次輸入的密碼為確認新密碼,需和第二次輸入的密碼相同。

原始密碼都是123456,輸入錯誤數據111111,測試如下:

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

輸入小于6位的數據,以及正確輸入正常數據的測試結果分別如下:

Java如何實現ATM機模擬系統

Java如何實現ATM機模擬系統

以上就是關于“Java如何實現ATM機模擬系統”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海盐县| 永泰县| 石渠县| 溆浦县| 民县| 山东省| 启东市| 齐齐哈尔市| 曲靖市| 安仁县| 沛县| 五指山市| 贵阳市| 井冈山市| 康乐县| 霍山县| 安康市| 灵璧县| 汉源县| 霸州市| 介休市| 金华市| 靖江市| 白城市| 永川市| 方城县| 长汀县| 林西县| 屏东县| 砚山县| 兴国县| 柏乡县| 布拖县| 浦江县| 富源县| 辽源市| 灵丘县| 皋兰县| 苍山县| 宜宾市| 九龙城区|