用Java實現(xiàn)簡單ATM機功能
本文實例為大家分享了Java實現(xiàn)簡單ATM機功能的具體代碼,供大家參考,具體內(nèi)容如下
項目介紹
基于大家使用銀行卡在ATM機取款操作,進(jìn)行相對應(yīng)ATM機操作流程的實現(xiàn)。
項目功能
1、注冊功能:
根據(jù)用戶輸入的賬號密碼申請一張銀行卡,存儲在銀行卡類型的數(shù)組中(一張銀行卡對應(yīng)一個有效用戶)。
2、登錄功能:
登陸失?。褐匦碌顷?或 注冊
登陸成功:對登陸的這張銀行卡可以進(jìn)行一下操作:存款、取款、查余額、轉(zhuǎn)賬、退卡功能。
項目知識點
3、java基本語法的使用
4、一維數(shù)組
5、函數(shù)調(diào)用,封裝
6、Java類和對象
項目實現(xiàn)思路
7、設(shè)計并實現(xiàn)系統(tǒng)的相關(guān)打印界面:注冊、登陸、登陸后操作
8、登錄系統(tǒng)必須輸入正確的卡號和密碼,輸入錯誤時提示用戶重新登陸。
9、實現(xiàn)取款、存款、查余額等功能。
難點
對面向?qū)ο缶幊痰睦斫猓约办o態(tài)變量和實例變量的理解。
二者區(qū)別:
實例變量:跟對象有關(guān),一個對象一份實例變量
靜態(tài)變量:跟對象無關(guān),一個類一份靜態(tài)變量
源代碼
1.ATM類
public class ATM { ? ? private static boolean flag = true; ? ? private int id; ? ? private int passwd; ? ? private BankCard bankCard; ? ? private static Bank bank; ? ? /* 不寫跳1空異常*/ ? ? public ATM(){ ? ? ? ? bank = new Bank(); ? ? } ? ? Scanner ?scanner = new Scanner(System.in); ? ? public void start(){ ? ? ? ? int chioce; ? ? ? ? while (flag == true){ ? ? ? ? ? ? System.out.println("請選擇: 1.注冊 2.登錄 3.退出"); ? ? ? ? ? ? chioce = scanner.nextInt(); ? ? ? ? ? ? switch(chioce){ ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入賬號和密碼:"); ? ? ? ? ? ? ? ? ? ? id = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? passwd = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? register(id,passwd); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入賬號和密碼:"); ? ? ? ? ? ? ? ? ? ? id = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? passwd = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? login(id,passwd); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? flag = false; ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? //注冊 ? ? private void register(int id, int passwd) { ? ? ? ? //檢查此卡號是否存在 ? ? ? ? if(bank.contains(id)){ ? ? ? ? ? ? System.out.println("此卡號已存在,注冊失??!"); ? ? ? ? } ? ? ? ? else{ ? ? ? ? ? ? bankCard = new BankCard(id,passwd); ? ? ? ? ? ? bank.add(bankCard); ? ? ? ? ? ? System.out.println("注冊成功!"); ? ? ? ? } ? ? } ? ? //登錄 ? ? private void login(int id, int passwd) { ? ? ? ? //檢查此卡號是否存在 ? ? ? ? if(bank.login(id,passwd)){ ? ? ? ? ? ? System.out.println("登陸成功!"); ? ? ? ? ? ? //登陸成功 返回卡的信息 ? ? ? ? ? ? bankCard = bank.getcard(id,passwd); ? ? ? ? ? ? //調(diào)用 ATM功能函數(shù) ? ? ? ? ? ? function(bankCard); ? ? ? ? }else{ ? ? ? ? ? ? System.out.println("登陸失?。?請重新登錄"); ? ? ? ? } ? ? } ? ? //ATM功能函數(shù) ? ? private void function(BankCard bankCard) { ? ? ? ? double money; ? ? ? ? int count = 0; ? ? ? ? int chioce; ? ? ? ? while (flag == true){ ? ? ? ? ? ? System.out.println("請選擇: 1.存款 2.取款 3.查余額 4.轉(zhuǎn)賬 ?5.退卡"); ? ? ? ? ? ? chioce = scanner.nextInt(); ? ? ? ? ? ? switch(chioce){ ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入存款金額:"); ? ? ? ? ? ? ? ? ? ? money = scanner.nextDouble(); ? ? ? ? ? ? ? ? ? ? bank.setMoney(bankCard,money); ? ? ? ? ? ? ? ? ? ? System.out.println("存款成功!"); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入取款金額:"); ? ? ? ? ? ? ? ? ? ? money = scanner.nextDouble(); ? ? ? ? ? ? ? ? ? ? if(bank.getMoney(bankCard,money)){ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("取款成功!"); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("余額不足取款失敗!"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? System.out.println("余額為:"+bank.getBalance(bankCard)); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入轉(zhuǎn)賬的賬號:"); ? ? ? ? ? ? ? ? ? ? while(flag){ ? ? ? ? ? ? ? ? ? ? ? ? count = scanner.nextInt(); ? ? ? ? ? ? ? ? ? ? ? ? //檢查此卡號是否存在 ? ? ? ? ? ? ? ? ? ? ? ? if(!bank.contains(count)){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("此卡號不存在,請重新輸入:"); ? ? ? ? ? ? ? ? ? ? ? ? } else{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? flag =false; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? System.out.println("請輸入轉(zhuǎn)賬的金額:"); ? ? ? ? ? ? ? ? ? ? money = scanner.nextDouble(); ? ? ? ? ? ? ? ? ? ? if(bank.transfer(bankCard,bank.getcard1(count),money)){ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("轉(zhuǎn)賬成功!"); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("余額不足,轉(zhuǎn)賬失??!"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? //莫名結(jié)束?? ? ? ? ? ? ? ? ? case 5: ? ? ? ? ? ? ? ? ? ? flag = false; ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } }
2.Bank類
public class Bank { ? ? private BankCard[] cards; ? ? private static int cardsnum = 0; // ?private static double cardsmoney = 0.0; ? ? private static final int INITSIZE = 10; ? ? public Bank(){ ? ? ? ? cards = new BankCard[INITSIZE]; ? ? } ? ? //查詢卡是否存在 ? ? public boolean contains(int id) { ? ? ? ? for(int i=0;i<cardsnum;i++){ ? ? ? ? ? ? if (cards[i].getId() == id){ ? ? ? ? ? ? ? ? return true; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return false; ? ? } ? ? //登錄 ? ? public boolean login(int id,int passwd) { ? ? ? ? for(int i=0;i<cardsnum;i++){ ? ? ? ? ? ? if (cards[i].getId() == id && cards[i].getPasswd() == passwd){ ? ? ? ? ? ? ? ? return true; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return false; ? ? } ? ? //添加一張銀行卡 ? ? public void add(BankCard card) { ? ? ? ? //判斷存卡的數(shù)組是否已滿 ? ? ? ? if(cards.length == cardsnum){ ? ? ? ? ? ? //數(shù)組已滿執(zhí)行擴容操作 ? ? ? ? ? ? cards = Arrays.copyOf(cards,cards.length+(cards.length>>1)); ? ? ? ? } ? ? ? ? //銀行卡存入銀行卡類型數(shù)組 ? ? ? ? cards[cardsnum] = card; ? ? ? ? //銀行卡數(shù)+1 ? ? ? ? cardsnum++; ? ? } ? ? //輸入卡號,密碼返回銀行卡 ? ? public BankCard getcard(int id, int passwd){ ? ? ? ? for(int i=0;i<cardsnum;i++){ ? ? ? ? ? ? if (cards[i].getId() == id && cards[i].getPasswd() == passwd){ ? ? ? ? ? ? ? ? return cards[i]; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return null; ? ? } ? ? //存款 ? ? public boolean setMoney(BankCard card,double money){ ? ? ? ? return card.setMoney(money); ? ? } ? ? //取款 ? ? public boolean getMoney(BankCard card,double money){ ? ? ? ? return card.getMoney(money); ? ? } ? ? //查余額 ? ? public double getBalance(BankCard card){ ? ? ? ? return card.getBalance(); ? ? } ? ? //轉(zhuǎn)賬 ? ? public boolean transfer(BankCard card, BankCard tempcard, double money){ ? ? ? ? if( card.getMoney(money)){ ? ? ? ? ? ? tempcard.setMoney(money); ? ? ? ? ? ? return true; ? ? ? ? } ? ? ? ? return false; ? ? } ? ? //輸入卡號,密碼返回銀行卡 ? ? public BankCard getcard1(int id){ ? ? ? ? for(int i=0;i<cardsnum;i++){ ? ? ? ? ? ? if (cards[i].getId() == id){ ? ? ? ? ? ? ? ? return cards[i]; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return null; ? ? } }
3.BankCard類
public class BankCard { ? ? private int id; ? ? private int passwd; ? ? private double money; ? ? public BankCard(int id, int passwd) { ? ? ? ? this.id = id; ? ? ? ? this.passwd = passwd; ? ? } ? ? public int getId() { ? ? ? ? return id; ? ? } ? ? public void setId(int id) { ? ? ? ? this.id = id; ? ? } ? ? public int getPasswd() { ? ? ? ? return passwd; ? ? } ? ? public void setPasswd(int passwd) { ? ? ? ? this.passwd = passwd; ? ? } ? ? public boolean getMoney(double money) { ? ? ? ? if(this.money>=money){ ? ? ? ? ? ? this.money -= money; ? ? ? ? ? ? return true; ? ? ? ? }else{ ? ? ? ? ? ? return false; ? ? ? ? } ? ? } ? ? public boolean setMoney(double deposit) { ? ? ? ? this.money += deposit; ? ? ? ? return true; ? ? } ? ? public double getBalance(){ ? ? ? ? return this.money; ? ? } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java實現(xiàn)截取PDF指定頁并進(jìn)行圖片格式轉(zhuǎn)換功能
這篇文章主要介紹了java實現(xiàn)截取PDF指定頁并進(jìn)行圖片格式轉(zhuǎn)換功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09java中對象轉(zhuǎn)json字符串的幾種常用方式舉例
這篇文章主要給大家介紹了關(guān)于java中對象轉(zhuǎn)json字符串的幾種常用方式,在Java中可以使用許多庫將對象轉(zhuǎn)換為JSON字符串,其中最常用的是Jackson和Gson,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10Java中IO流 RandomAccessFile類實例詳解
這篇文章主要介紹了Java中IO流 RandomAccessFile類實例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05Spring Cloud Zuul集成Swagger實現(xiàn)過程解析
這篇文章主要介紹了Spring Cloud Zuul集成Swagger實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11java操作mongodb時,對象bean和DBObject相互轉(zhuǎn)換的方法(推薦)
下面小編就為大家?guī)硪黄猨ava操作mongodb時,對象bean和DBObject相互轉(zhuǎn)換的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11Spring\SpringBoot配置連接數(shù)據(jù)庫的方法
最近在學(xué)習(xí)SpringBoot,第一步就是要配置數(shù)據(jù)庫,本文詳細(xì)的介紹了Spring\SpringBoot配置連接數(shù)據(jù)庫的方法,有需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06