最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java詳解實(shí)現(xiàn)ATM機(jī)模擬系統(tǒng)

 更新時(shí)間:2022年06月29日 10:58:57   作者:程序員阿紅  
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)控制臺(tái)版本的ATM銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、概述

(1)選題分析

(2) 開(kāi)發(fā)環(huán)境

開(kāi)發(fā)環(huán)境,選擇IDEA這一Java開(kāi)發(fā)軟件,基于JDK1.8版本,在本機(jī)window上開(kāi)發(fā)本ATM模擬程序。

二、程序概要設(shè)計(jì)

(1) 功能模塊設(shè)計(jì)

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

系統(tǒng)的總功能模塊圖如下:

(2) 流程圖

系統(tǒng)的總流程為:用戶通過(guò)主界面選擇管理員登錄或者用戶模式登錄,然后輸入系統(tǒng)設(shè)定的賬號(hào)密碼進(jìn)行登錄。登錄成功后,進(jìn)入到相應(yīng)的主功能頁(yè)面進(jìn)行相關(guān)操作。

管理員登錄后臺(tái)時(shí),判斷密碼和賬號(hào)是否正確,正確則進(jìn)行登錄,否則提示失敗。登錄進(jìn)入后臺(tái),可以操作查看所有用戶功能,然后系統(tǒng)將查詢所有設(shè)定的用戶信息并進(jìn)行輸出到控制臺(tái)面板。點(diǎn)擊導(dǎo)出記錄功能,將把所有賬戶信息輸出到當(dāng)前jar程序同級(jí)目錄下的txt文件。

用戶登錄時(shí),判斷賬戶密碼是否正確,不正確,則賬戶錯(cuò)誤次數(shù)+1,當(dāng)次數(shù)達(dá)到3時(shí),該賬戶將被鎖定,不能登錄。輸入的賬密正確時(shí),判斷賬戶是否被鎖定,沒(méi)有鎖定則進(jìn)行登錄,跳轉(zhuǎn)用戶主界面,并進(jìn)行相關(guān)操作功能。

管理員模塊流程圖如下:

用戶模塊總流程圖如下:

(3) 文件結(jié)構(gòu)和類的設(shè)計(jì)

本ATM模擬程序使用idea編輯軟件開(kāi)發(fā)。項(xiàng)目分為admin(管理員)、customer(用戶)、data(ATM數(shù)據(jù))三個(gè)包。

其中admin包下編寫(xiě)了AdminManage類,負(fù)責(zé)初始化管理員界面,同時(shí)實(shí)現(xiàn)管理員的所有功能。Customer包下的customer類實(shí)現(xiàn)了用戶模塊的界面,定義了相關(guān)操作按鈕,以及實(shí)現(xiàn)了各自監(jiān)聽(tīng)的功能,為了減少界面的設(shè)計(jì),在用戶界面中間使用了輸出信息面板,如此功能結(jié)果在面板中打印出來(lái),模擬了atm機(jī)的界面信息。

Data包下分別有ATMData類、Card類和CustomerAccount類。Card類是用戶的銀行卡的代碼體現(xiàn),把銀行卡的相關(guān)信息封裝成一個(gè)基本Java對(duì)象,符合Java面向?qū)ο蟮奶匦?。其中customerAccount是card類的子類,在card的基礎(chǔ)上,添加了許多用戶行為,比如說(shuō)存款、取款、查詢余額等。ATMData類是本程序十分重要的類,它封裝了本程序的所有初始賬戶信息,還有轉(zhuǎn)賬、獲取所有賬戶、登錄等操作。這樣設(shè)計(jì),可以把數(shù)據(jù)處理和界面的設(shè)計(jì)分離來(lái),避免用戶界面的代碼過(guò)多過(guò)長(zhǎng)。

文件結(jié)構(gòu)如下圖,其中resource文件夾下存放了本程序需要的圖片信息:

三、程序詳細(xì)設(shè)計(jì)

本系統(tǒng)功能模塊不在此一一詳寫(xiě),列舉了幾個(gè)主要的功能進(jìn)行描述:

(1) 取款功能

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

核心代碼邏輯如下:

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 + "]元,當(dāng)前余額[" + result + "]元");

(2) 存款功能

該方法參數(shù)為存入的金額,首先判斷金額是否為100的倍數(shù),驗(yàn)證通過(guò)則重新計(jì)算當(dāng)前賬戶的余額,然后添加交易記錄在當(dāng)前的賬戶上。

核心代碼邏輯如下:

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

(3) 用戶登錄功能

用戶登錄方法的入?yún)橘~戶和密碼,首先判斷賬戶是否存在,將入?yún)⑴c系統(tǒng)設(shè)定好的所有賬戶進(jìn)行匹配,如果沒(méi)有,則失敗。如果有則判斷該賬戶是否被鎖定,被鎖定不能登錄,沒(méi)被鎖定則判斷密碼是否正確,不正確則使當(dāng)前的賬戶的錯(cuò)誤次數(shù)+1(如果賬戶錯(cuò)誤次數(shù)=3,則鎖定賬戶)。密碼正確則登錄成功跳轉(zhuǎn)主界面。

核心代碼如下:

//是否存在賬號(hào)

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

四、程序演示

功能居多,不一一在此記錄。這里只記錄針對(duì)幾個(gè)主要功能的測(cè)試。

(1) ATM取款

測(cè)試取款功能如下圖所示。初始金額為10000元。分別取款3000、6000、5000。其中后兩個(gè)為錯(cuò)誤數(shù)據(jù)。單次取款不能超5000元,后面當(dāng)余額3000時(shí)取款5000,測(cè)試取款不能透支功能。

測(cè)試結(jié)果:

由此可知,該功能正常,輸入合法以及不合法的數(shù)據(jù)測(cè)試的結(jié)果均與預(yù)期相符合。

(2) ATM轉(zhuǎn)賬

轉(zhuǎn)賬測(cè)試,目標(biāo)賬戶必須存在,同時(shí)余額要大于要轉(zhuǎn)賬的金額,不能透支。測(cè)試數(shù)據(jù)為輸入一個(gè)不存在的賬戶、以及大于當(dāng)前余額的轉(zhuǎn)賬金額。

輸入不存在賬戶測(cè)試結(jié)果如下:

輸入正常賬戶和金額測(cè)試結(jié)果如下,此時(shí)登錄目標(biāo)賬戶,查詢交易記錄可知轉(zhuǎn)賬已經(jīng)成功到達(dá)目標(biāo)賬戶。

輸入大于當(dāng)前余額的錯(cuò)誤數(shù)據(jù),測(cè)試結(jié)果如下,可知轉(zhuǎn)賬功能測(cè)試正常。

(3) 修改密碼

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

原始密碼都是123456,輸入錯(cuò)誤數(shù)據(jù)111111,測(cè)試如下:

輸入小于6位的數(shù)據(jù),以及正確輸入正常數(shù)據(jù)的測(cè)試結(jié)果分別如下:

到此這篇關(guān)于Java詳解實(shí)現(xiàn)ATM機(jī)模擬系統(tǒng)的文章就介紹到這了,更多相關(guān)Java ATM機(jī)模擬內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java有序二叉樹(shù)的刪除節(jié)點(diǎn)方式

    java有序二叉樹(shù)的刪除節(jié)點(diǎn)方式

    文章描述了在二叉樹(shù)中刪除節(jié)點(diǎn)的三種情況及其對(duì)應(yīng)的操作步驟,通過(guò)遞歸找到節(jié)點(diǎn)及其父節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)的子樹(shù)情況(無(wú)子樹(shù)、單子樹(shù)、雙子樹(shù))進(jìn)行相應(yīng)的刪除操作,文章還提供了一個(gè)測(cè)試類來(lái)驗(yàn)證刪除操作的正確性
    2024-12-12
  • SpringBoot中LogBack日志配置與多環(huán)境實(shí)戰(zhàn)

    SpringBoot中LogBack日志配置與多環(huán)境實(shí)戰(zhàn)

    在現(xiàn)代軟件開(kāi)發(fā)中,日志記錄是不可或缺的一部分,Spring Boot 提供了多種日志框架的支持,其中 Logback 是一個(gè)非常流行的選擇,因?yàn)樗?jiǎn)單、高效且功能強(qiáng)大,本文將介紹如何在 Spring Boot 項(xiàng)目中配置 Logback,并實(shí)現(xiàn)不同環(huán)境下的日志配置,需要的朋友可以參考下
    2025-01-01
  • Java練手小項(xiàng)目實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng)

    Java練手小項(xiàng)目實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng)

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)項(xiàng)目管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • 使用Servlet處理一個(gè)上傳的文件

    使用Servlet處理一個(gè)上傳的文件

    今天小編就為大家分享一篇關(guān)于使用Servlet處理一個(gè)上傳的文件,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java @PostMapping和@GetMapping方法使用詳解

    Java @PostMapping和@GetMapping方法使用詳解

    這篇文章主要介紹了Java @PostMapping和@GetMapping方法使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-03-03
  • mybatis的xml中使用@符號(hào)調(diào)用類方法示例

    mybatis的xml中使用@符號(hào)調(diào)用類方法示例

    這篇文章主要為大家介紹了mybatis的xml中使用@符號(hào)調(diào)用類方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Spring如何基于注解配置使用ehcache

    Spring如何基于注解配置使用ehcache

    這篇文章主要介紹了Spring如何基于注解配置使用ehcache,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java字符串轉(zhuǎn)駝峰格式的方法

    Java字符串轉(zhuǎn)駝峰格式的方法

    在開(kāi)發(fā)場(chǎng)景中,我們會(huì)遇到一些涉及字符串的轉(zhuǎn)化,本文主要介紹了Java字符串轉(zhuǎn)駝峰格式的方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 深入講解Java Maven配置

    深入講解Java Maven配置

    這篇文章主要介紹了Maven的安裝配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • Java web開(kāi)發(fā)中加載圖片路徑的兩種方式

    Java web開(kāi)發(fā)中加載圖片路徑的兩種方式

    下文給大家介紹基于編譯器idea以及tomcat服務(wù)器開(kāi)發(fā)的,對(duì)Java web開(kāi)發(fā)加載圖片路徑的兩種方式感興趣的朋友一起看看吧
    2017-07-07

最新評(píng)論

拉萨市| 浪卡子县| 长子县| 江北区| 玛沁县| 广丰县| 合作市| 武安市| 西青区| 古交市| 湟源县| 平武县| 安庆市| 金湖县| 静宁县| 忻城县| 亳州市| 承德市| 临朐县| 故城县| 拜泉县| 肃宁县| 大庆市| 新源县| 武乡县| 凌云县| 台湾省| 岳池县| 犍为县| 永福县| 安徽省| 安吉县| 汪清县| 商洛市| 理塘县| 枞阳县| 白山市| 克东县| 自贡市| 莆田市| 万山特区|