java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)
本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#ATM系統(tǒng)
##功能
模擬銀行ATM機(jī)系統(tǒng),具有注冊(cè)、登錄功能
用戶登錄后可實(shí)現(xiàn)以下功能:
1)存款 2)取款 3)轉(zhuǎn)賬 4)查詢 5)退出
##設(shè)計(jì)思路
首先,要進(jìn)行ATM機(jī)操作應(yīng)該具有銀行卡和ATM,所以我們要設(shè)計(jì)一個(gè)ATM類和Bankcard類,ATM具有存取款等操作,Bankcard用來(lái)記錄用戶存取款等操作后的越,其次因?yàn)锳TM同時(shí)為多個(gè)用戶服務(wù),所以我們應(yīng)該識(shí)別每張卡,這里增加一個(gè)Bank類來(lái)記錄銀行卡個(gè)數(shù)以及各個(gè)用戶持有哪些銀行卡。
##具體代碼
###Bank類
import java.util.Arrays; /** ?* @author:zl ?* @Date 22:30 2020/10/9 ?*/ ? public class Bank { ? ? private BankCard[] cards; ? ? private int size;// 有效用戶個(gè)數(shù) ? ? private static final int INITSIZE ?=10; ? ? public Bank(){ ? ? ? ? this(INITSIZE); ? ? } ? ? public Bank(int num){ ? ? ? ? cards = new BankCard[num]; ? ? } ? ? public boolean add(BankCard card){//如果注冊(cè)過(guò),增加失敗 ? ? ? ? if(contains(card.getID(),card.getPasswd())!=null){ ? ? ? ? ? ? return false; ? ? ? ? } ? ? ? ? if(size==cards.length){ ? ? ? ? ? ? cards= Arrays.copyOf(cards,cards.length>>1);//長(zhǎng)度不夠時(shí)進(jìn)行擴(kuò)容 ? ? ? ? } ? ? ? ? cards[size++] = card;// ? ? ? ? return true; ? ? } ? ? public boolean search(int id,int passwd){//查詢是否存在這張卡 ? ? ? ? boolean k=true; ? ? ? ? for(int i=0;i<size;i++){ ? ? ? ? ? ? if((cards[i].getID()==id)&&(cards[i].getPasswd()==passwd)){ ? ? ? ? ? ? ? ? k=true; ? ? ? ? ? ? } ? ? ? ? ? ? else k=false; ? ? ? ? } ? ? ? ? return k; ? ? } ? ? public BankCard contains(int id,int passwd){//查詢并返回這張卡 ? ? ? ? BankCard card=null; ? ? ? ? for(int i=0;i<size;i++){ ? ? ? ? ? ? if((cards[i].getID()==id)&&(cards[i].getPasswd()==passwd)){ ? ? ? ? ? ? ? ? card=cards[i]; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return card; ? ? } }
###Bankcard類
import java.util.Scanner; public class BankCard { ? ? private int id; ? ? private int passwd; ? ? public int money=0; ? ? public ?BankCard(int id,int passwd){ ? ? ? ? this.id=id; ? ? ? ? this.passwd=passwd; ? ? } ? ? public int getID(){ ? ? ? ? return this.id; ? ? } ? ? public int getPasswd(){ ? ? ? ? return this.passwd; ? ? } ? ? /** ? ? ?* 存款 ? ? ?*/ ? ? public void saveMoney(int money){ ? ? ? ?this.money+=money; ? ? } ? ? /** ? ? ?* 取款 ? ? ?*/ ? ? public boolean withDraw(int money){ ? ? ? ? boolean flag=false; ? ? ? ?if(this.money>=money){ ? ? ? ? ? ?this.money-=money; ? ? ? ? ? ?flag=true; ? ? ? ?} ? ? ? ? ? ? return flag; ? ? } ? ? /** ? ? ?* 返回余額 ? ? ?* @return ? ? ?*/ ? ? public int ?getMoney(){ ? ? ? ? return this.money; ? ? } }
###ATM類
import java.util.Scanner; import src3.BankCard; public class ATM { ? ? private Bank bank; ? ? private static Scanner scanner; ? ? public ATM(){ ? ? ? ? bank = new Bank(); ? ? ? ? scanner = new Scanner(System.in); ? ? } ? ? public void start(){ ? ? ? ? while (true) { ? ? ? ? ? ? System.out.println("1. 登陸 2.注冊(cè) 3.關(guān)機(jī)"); ? ? ? ? ? ? int chioce = scanner.nextInt(); ? ? ? ? ? ? if (chioce == 3) { ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? System.out.println("請(qǐng)輸入賬號(hào)密碼"); ? ? ? ? ? ? int id = scanner.nextInt(); ? ? ? ? ? ? int passwd = scanner.nextInt(); ? ? ? ? ? ? BankCard successCard = null; ? ? ? ? ? ? switch (chioce){ ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? successCard = login(id,passwd); ? ? ? ? ? ? ? ? ? ? if(successCard != null){ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("登陸成功"); ? ? ? ? ? ? ? ? ? ? ? ? loginSuccess(successCard); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("登陸失敗"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? if(regiter(id,passwd)){ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("注冊(cè)成功"); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("注冊(cè)失敗"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? private void loginSuccess(BankCard successCard){ ? ? ? ? while (true) { ? ? ? ? ? ? System.out.println("1. 存款 2.取款 3.轉(zhuǎn)賬 4.余額 5.退卡"); ? ? ? ? ? ? int chioce = scanner.nextInt(); ? ? ? ? ? ? if (chioce == 5) { ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? switch (chioce) { ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入存款金額"); ? ? ? ? ? ? ? ? ? ? int money = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? successCard.saveMoney(money); ? ? ? ? ? ? ? ? ? ? System.out.println("存款成功"); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入取款金額"); ? ? ? ? ? ? ? ? ? ? money = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? if (successCard.withDraw(money)) { ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("取款成功"); ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("取款失敗"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入轉(zhuǎn)賬金額"); ? ? ? ? ? ? ? ? ? ? money = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入轉(zhuǎn)賬用戶賬號(hào),密碼"); ? ? ? ? ? ? ? ? ? ? int id = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? int passwd = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? BankCard userCard = bank.contains(id, passwd); ? ? ? ? ? ? ? ? ? ? if (userCard != null) { ? ? ? ? ? ? ? ? ? ? ? ? if (successCard.withDraw(money)) {// 當(dāng)前卡取款成功 ? ? ? ? ? ? ? ? ? ? ? ? ? ? userCard.saveMoney(money); ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("轉(zhuǎn)賬成功"); ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("余額不足"); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("沒(méi)有此用戶"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? System.out.println("余額:" + successCard.getMoney()); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? private boolean regiter(int id,int passwd){ ? ? ? ? BankCard card = new BankCard(id,passwd); ? ? ? ? return bank.add(card); ? ? } ? ? private BankCard login(int id,int passwd){ ? ? ? ? return bank.contains(id,passwd); ? ? } }
###測(cè)試類
public class TestDemo { ? ? public static void main(String[] args) { ? ? ? ? ATM atm = new ATM(); ? ? ? ? atm.start(); ? ? } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)版ATM系統(tǒng)
- Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)
- Java基于控制臺(tái)界面實(shí)現(xiàn)ATM系統(tǒng)
- Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)
- Java實(shí)現(xiàn)ATM系統(tǒng)超全面步驟解讀建議收藏
- Java實(shí)現(xiàn)銀行ATM系統(tǒng)
- java模擬實(shí)現(xiàn)銀行ATM機(jī)操作
- 用Java實(shí)現(xiàn)簡(jiǎn)單ATM機(jī)功能
- java方法實(shí)現(xiàn)簡(jiǎn)易ATM功能
- 基于Java開發(fā)實(shí)現(xiàn)ATM系統(tǒng)
相關(guān)文章
springmvc處理模型數(shù)據(jù)Map過(guò)程解析
這篇文章主要介紹了springmvc處理模型數(shù)據(jù)Map過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Java中Future和FutureTask的示例詳解及使用
Java中的Future和FutureTask通常和線程池搭配使用,用來(lái)獲取線程池返回執(zhí)行后的返回值,下面這篇文章主要給大家介紹了關(guān)于Java中Future和FutureTask使用的相關(guān)資料,需要的朋友可以參考下2021-11-11Java必須學(xué)會(huì)的類的繼承與多態(tài)
這篇文章主要介紹了Java類的繼承與多態(tài)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-08-08Java中靜態(tài)代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)和普通代碼塊的區(qū)別
在Java中,靜態(tài)代碼塊、構(gòu)造代碼塊、構(gòu)造函數(shù)、普通代碼塊的執(zhí)行順序是一個(gè)筆試的考點(diǎn),通過(guò)這篇文章希望大家能徹底了解它們之間的執(zhí)行順序,需要的朋友可以參考下2023-05-05SpringBoot定時(shí)任務(wù)不執(zhí)行的幾個(gè)可能原因及解決方法
這篇文章主要介紹了SpringBoot定時(shí)任務(wù)不執(zhí)行的幾個(gè)可能原因及解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12SpringMVC中使用bean來(lái)接收f(shuō)orm表單提交的參數(shù)時(shí)的注意點(diǎn)
本篇文章主要介紹了SpringMVC中使用bean來(lái)接收f(shuō)orm表單提交的參數(shù)時(shí)的注意點(diǎn),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05Spring很常用的@Conditional注解的使用場(chǎng)景和源碼解析
今天要分享的是Spring的注解@Conditional,@Conditional是一個(gè)條件注解,它的作用是判斷Bean是否滿足條件,本文詳細(xì)介紹了@Conditional注解的使用場(chǎng)景和源碼,需要的朋友可以參考一下2023-04-04JAVA實(shí)現(xiàn)較完善的布隆過(guò)濾器的示例代碼
這篇文章主要介紹了JAVA實(shí)現(xiàn)較完善的布隆過(guò)濾器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10