Java编程自动取款机步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程自动取款机步骤相关的知识,希望对你有一定的参考价值。

Java编写的模拟ATM取款机程序/*** @version 1.0
* @author Devil_Angel
* 该程序的功能为实现模拟银行ATM自动取款机提款,查询等功能.
*
*/import java.io.*;/*该类为实现客户信息及部分功能*/
class Account
private String code =null; //信用卡号
private String name =null; //客户姓名
private String password=null; //客户密码
private double money =0.0; //卡里金额

/********************/
public Account(String code,String name,String password,double money)

this.code=code;
this.name=name;
this.password=password;
this.money=money;


protected String get_Code()
return code;


protected String get_Name()
return name;


protected String get_Password()
return password;


public double get_Money()
return money;


/*得到剩余的钱的数目*/
protected void set_Balance(double mon)
money -= mon;

/**********实现具体取款机功能*********/
class ATM
Account act;
// private String name;
// private String pwd;

public ATM()
act=new Account("000000","Devil","123456",50000);


/***********欢迎界面***********/
protected void Welcome()

String str="---------------------------------";
System.out.print(str+"\n"+
"欢迎使用Angel模拟自动取款机程序.\n"+str+"\n");
System.out.print(" 1.>取款."+"\n"+
" 2.>查询信息."+"\n"+
" 3.>密码设置."+"\n"+
" 4.>退出系统."+"\n");


/**********登陆系统**********/
protected void Load_Sys() throws Exception

String card,pwd;
int counter=0;

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do
System.out.println("请输入您的信用卡号:");
card=br.readLine();
System.out.println("请输入您的密码:");
pwd=br.readLine();

if(!isRight(card,pwd))

System.out.println("您的卡号或密码输入有误.");
counter++;

else
SysOpter();

while(counter<3);
Lock_Sys();


/**********系统操作**********/
protected void SysOpter() throws Exception

int num;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请选择您要操作的项目(1-4):");
num=br.read(); //num为ASICC码转换的整数
switch(num)
case 49: BetBalance(); break;
case 50: Inqu_Info(); break;
case 51: Set_Password(); break;
case 52: Exit_Sys(); break;

System.exit(1);


/**********信息查询**********/
protected void Inqu_Info()
System.out.print("---------------------\n"+
act.get_Code()+"\n"+
act.get_Name()+"\n"+
act.get_Money()+"\n"+
"-----------------------");


/**********取款**********/
public void BetBalance() throws Exception

String str=null,str1;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do
System.out.println("请输入您要取的数目:");
str=br.readLine();
str1=String.valueOf(act.get_Money());
if(str.compareTo(str1)>0)
System.out.println("超过已有的钱数,请重新输入您要取的数目:");

else
/*操作成功*/
// act.set_Balance(str);
System.out.println("取款成功,请收好您的钱.");
Welcome();
SysOpter();

while(true);



/**********判断卡内是否有钱**********/
protected boolean isBalance()
if(act.get_Money()<0)
// System.out.println("对不起,您的钱数不够或卡已透支.");
return false;

return true;


/********卡号密码是否正确******/
protected boolean isRight(String card,String pwd)

if(act.get_Code().equals(card) && act.get_Password().equals(pwd))
return true;
else
return false;


/**********密码修改**********/
protected void Set_Password() throws Exception

String pwd=null;
int counter=0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do
System.out.println("请输入旧密码:");
pwd=br.readLine();
if(act.get_Password().equals(pwd))

do
System.out.println("请输入新密码:");
String pwd1=br.readLine();
System.out.println("请再次输入新密码:");
String pwd2=br.readLine();
if(!pwd1.equals(pwd2))

System.out.println("两次输入不一致,请再次输入.");

else

System.out.println("密码修改成功,请使用新密码.");
Welcome();
SysOpter();

while(true);

while(counter>3);



/**********锁定机器**********/
protected void Lock_Sys()
System.out.println("对不起,您的操作有误,卡已被没收.");
System.exit(1);


/**********结束系统**********/
protected void Exit_Sys()
System.out.println("感谢您使用本系统,欢迎下次在来,再见!");
System.exit(1);


public class Text

public static void main(String[] args) throws Exception

ATM atm=new ATM();
atm.Welcome();
atm.Load_Sys();
// atm.Exit_Sys();

//模拟ATM取款机工作流程 import java.util.Scanner;public class Atm
public Atm()

public static void main(String[] args)
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int password = 0;
int count = 0;
int choice = 0;
int type = 0;
int input = 0;
int acount = 1000;
boolean exit = false;
int flag = 0;

do
System.out.println("请输入您的密码:");
password = sc.nextInt();
count++;
while(password != 12345 && count<3);
if(password == 12345)
//密码正确继续后面的操作。
do
System.out.println("请选择您的操作,1.查询 2.取款");
choice = sc.nextInt();
switch(choice)
case 1:
do
System.out.println("请选择帐户类型:1. 美元 2. 人民币");
type = sc.nextInt();
if(type == 1)
System.out.println("You have $"+acount+"!");
else if(type == 2)
System.out.println("您有"+acount+"圆!");
else
System.out.println("类型选择错误,请重新选择!");

System.out.println("1.继续 2.离开");
flag = sc.nextInt();
if(flag == 1)
exit = false;
else
exit = true;

while(type!=1 && type!=2);
break;
case 2: do
System.out.println("请选择帐户类型:1. 美元 2. 人民币");
if(type == 1)
System.out.println("Please input number of your money!");
input = sc.nextInt();
if(input > acount)
System.out.println("You have not enough money!");
else
System.out.println("You take care of your money!");

System.out.println("1.continue 2.exit");
flag = sc.nextInt();
if(flag == 1)
exit = false;
else
exit = true;

else if(type == 2)
System.out.println("请输入您要取的金额!");
input = sc.nextInt();
if(input > acount)
System.out.println("您的余额不足!");
else
System.out.println("请妥善保管您的钱!");
acount = acount - input;

System.out.println("1.继续 2.离开");
flag = sc.nextInt();
if(flag == 1)
exit = false;
else
exit = true;

else
System.out.println("类型选择错误,请重新选择!");


while(type!=1 && type!=2);
break;
default: System.out.println("类型选择错误,请重新选择!");

while(choice!=1 && choice!=2 || exit == false);
else
//密码错误,退出。
System.out.println("三次密码错误,吞卡!");


参考技术A import java.util.Scanner;

class Account
private int[] id = new int[10];
private static double balance = 100;

Account(double balance)
balance = 100;


public void getbalance()
System.out.println(balance);


public void withdraw(double withdraw)
System.out.println("your balance is " + (balance - withdraw));


public void deposit(double deposit)
System.out.println("your balance is " + (balance + deposit));


public void menu()
System.out.print("main menu\n" + "1: check balance\n" + ""
+ "2: withdraw\n" + "3: deposit\n" + "4: exit");


public void setId(int[] id)
this.id = id;


public int[] getId()
return id;



public class ATM_machine
public static void main(String[] args)
Scanner input = new Scanner(System.in);
do
System.out.println("input your ID !");
int id = input.nextInt();
double money = 0;
Account account = new Account(id);
System.out.println("choice !");
account.menu();
int choice = input.nextInt();
if (choice == 2 || choice == 3)
System.out.println("input the number of money !");
money = input.nextDouble();

switch (choice)
case 1:
account.getbalance();
break;
case 2:
account.withdraw(money);
break;
case 3:
account.deposit(money);
break;
case 4:
account.menu();
break;

while (true);

模拟银行自动终端系统

本系统模拟银行用户使用ATM机开户、查询、存款、取款功能,要求使用java语言编程实现。

二. 项目功能要求: 

项目开始运行显示主菜单为:  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

此时,用户可以通过键盘输入选择自己要实现的功能,如果输入不是0,1,2,3,4,则系统提示: 

你选择的菜单不存在!

请重新选择: 

要求用户重新输入数据进行菜单选择!  

 

当用户输入0时,则进入查询功能:系统提示: 

**************************** 

你选择的为开户功能 

请输入你的姓名: 

此时用户需要输入姓名,输入完毕后系统提示:

请输入你的身份证号: 

此时用户需要输入18位身份证号,输入完毕如果验证未通过要求继续输入,直到验证通过后系统提示:

请输入你的密码: 

此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入,验证通过后系统提示:

开户成功,谢谢使用! 

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

 

当用户输入1时,则进入查询功能:系统提示: 

**************************** 

你选择的为查询功能 

请输入你要查询的卡号: 

此时用户需要输入查询的卡号,系统对卡号进行检测,如果卡号不存在,则提示: 你输入的卡号不存在,请重新输入: 

请输入你要查询的卡号:

要求重新输入卡号,当用户输入正确卡号后,则提示:

请输入你的密码: 

此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单:

你查询的账号信息为: 

****************************** 

姓名  身份证号    卡号   金额 

张三丰 420106198410112062 111111   12800.0  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

 

当用户输入2时,则进入存款功能:系统提示: 

**************************** 

你选择的为存款功能 

请输入你要存款的卡号: 

此时用户需要输入存款的卡号,系统对卡号进行检测,如果卡号不存在,则提示: 

你输入的卡号不存在,请重新输入: 

请输入你要存款的卡号: 

要求重新输入卡号,当用户输入正确卡号后,则提示:

请输入你的密码: 

此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单: 

你要存款的账号信息为: 

****************************** 

姓名  身份证号     卡号  金额 

张三丰 420106198410112062 111111  12800.0 

请输入你要存入的金额: 

此时要求用户输入存款金额,系统对金额进行判断,如果输入的数据小于等于0,则提示: 

你输入的数据无效,系统将自动退出!谢谢使用  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

如果用户输入数据合法,系统提示存款成功,并回到主菜单: 

存款成功,谢谢使用!  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款 

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

数据将存入用户账号,如果用户再次进行数据查询,则能看到已经改变后的账户金额。 (说明:本系统使用文件进行数据存储,因此如果用户重新启动程序,数据将从文件中读取重新初始化到内存!此功能选做,可参考对象的序列化和反序列化或JSON) 

 

当用户输入3时,则进入取款功能:系统提示: 

**************************** 

你选择的为取款功能 请输入你要取款的卡号: 

此时用户需要输入取款的卡号,系统对卡号进行检测,如果卡号不存在,则提示: 

你输入的卡号不存在,请重新输入: 

请输入你要取款的卡号: 

要求重新输入卡号,当用户输入正确卡号后,则提示:

请输入你的密码: 

此时用户需要输入6位纯数字密码,输入完毕如果验证未通过要求继续输入(最多3次),验证通过后系统将显示当前用户账号信息并进入主菜单: 

你要取款的账号信息为: 

****************************** 

姓名  身份证号     卡号  金额 

张三丰420106198410112062  111111  12800.0 

请输入你要取款的金额: 

此时要求用户输入取款金额,系统对金额进行判断,如果输入的数据小于0或大于账号总金额,则提示: 

你输入的数据无效,系统将自动退出!谢谢使用  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

如果用户输入数据合法,系统提示取款成功,并回到主菜单: 

取款成功,谢谢使用!  

 

银行自助终端系统 

****************************  

0.------开户

1.------查询  

2.------存款  

3.------取款  

4.------退出 

**************************** 

请选择你要执行的功能: 

数据将从用户账号扣出,如果用户再次进行数据查询,则能看到已经改变后的账户金额。

 

当用户输入4时,系统将退出。

 

三.设计要求

(一)包一:com.bank.unionpay 表示银联,在该包下添加:

1. 表示银行卡的接口,包含查询余额,存款,取款等抽象方法。

2. 表示ATM机的抽象类,使用银行卡类型的对象作为参数,实现查询余额,存款,取款等实例方法,添加开户为抽象方法。

3. 表示四大银行的枚举类型:包含ABC,ICBC,CCB,BOC;分别代表农行,工行,建行,中行。

 

(二)包二:com.bank.abc 表示农行,在该包下添加:

1. 以单例模式定义银行类,包含属性:银行类型(枚举类型,常量=ABC),银行名称(String),银行卡列表(集合)等。

2. 定义银行卡的实现类-储蓄卡,包含属性:银行类型(枚举类型=ABC),姓名,身份证号,卡号,密码,余额;实现查询余额,存款,取款等方法。

3. 定义ATM机的子类,包含属性:银行类型(枚举类型,常量=ABC),实现开户方法,其中:只能开办储蓄卡,卡号为6位随机数字,自动产生。新开户的银行卡添加到银行的银行卡列表中。

4. 定义储蓄卡的子类-信用卡,增加属性:透支额度,重写取款方法,控制最大取款金额不能大于余额+透支额度的和。

 

(三)包三:com.bank.test 表示测试,在该包下添加带main方法的测试类,实现项目要求的模拟ATM机的功能。

 

以下功能选做:

以单态模式实现工商银行,在测试类中默认添加多张银行卡,在农行的ATM机上实现跨行查询和存取款功能。

package com.bank.unionpay;

public abstract class Atm {
    
    //成员变量
    private Card card;
    
    //成员方法
    public abstract String kaihu();

}




package com.bank.unionpay;

//定义接口类型的card
public interface Card {
        
    
    //抽象方法
    void cunkuan(double cun);
    
    void qukuan(double qu);
    
    void chaxunyue();

}




package com.bank.unionpay;

public enum Fourbank {
    
    ABC("中国农业银行"),ICBC("中国工商银行"),CCB("中国建设银行"),COB("中国银行");
    
    private final String name;
    
    
    public String getName() {
        return name;
    }


     //构造方法不能加修饰符
     Fourbank(String name)
    {
        this.name = name;
    }


}
package com.bank.abc;

import java.util.Random;

import com.bank.unionpay.Atm;
import com.bank.unionpay.Fourbank;

public class AbcAtm extends Atm {
    
    //定义农行属性的ATM机
    private final static Fourbank bank1 = Fourbank.ABC;
    
    //定义开户方法,随机生成六位数账户
    @Override
    public String kaihu() {
        // 随机生成六位数的账户
        String zh = "";
        Random ran = new Random();
        for (int i = 0; i < 6; i++) {
            zh += ran.nextInt(10);
        }
        return zh;

    }

}



package com.bank.abc;
//单例模式定义银行类
import java.util.ArrayList;
import java.util.List;

import com.bank.unionpay.Fourbank;

public class Bank {

    // 定义银行类型以及银行卡的list集合
    private Fourbank type;

    private String abcname;

    private List<Chuxuka> card;

    // 构造方法
    private Bank() {

        abcname = "中国农业银行";
        type = Fourbank.ABC;
        card = new ArrayList<>();
        card.add(new Chuxuka("张潇", "370321199411301111", "111111", "666666", 2000));
        card.add(new Xinyongka("张三", "370321199999999999", "222222", "666666", 2000));

    }

    // 构造唯一的Bank实例
    private static Bank abc = new Bank();

    // 构造获取唯一Bank实例的方法
    public static Bank getBack() {
        return abc;
    }

    // getter和setter方法
    public Fourbank getType() {
        return type;
    }

    public void setType(Fourbank type) {
        this.type = type;
    }

    public String getAbcname() {
        return abcname;
    }

    public void setAbcname(String abcname) {
        this.abcname = abcname;
    }

    public List<Chuxuka> getCard() {
        return card;
    }

    public void setCard(List<Chuxuka> card) {
        this.card = card;
    }

}



package com.bank.abc;

import java.io.Serializable;

import com.bank.unionpay.Card;
import com.bank.unionpay.Fourbank;

public class Chuxuka implements Card, Serializable {

    // 定义储蓄卡类的成员变量
    private Fourbank type1 = Fourbank.ABC;// 定义储蓄卡的类型为农行
    private String name; // 定义持卡者姓名
    private String personid; // 定义持卡者身份证号码
    private String cardid; // 定义储蓄卡卡号
    private String mima; // 定义储蓄卡的密码
    private double yue; // 定义储蓄卡的余额
    private double touzhi = 0; // 定义储蓄卡无法透支(透支额度为0)

    // 重写存款和取款的方法
    @Override
    public void cunkuan(double cun) {
        yue += cun;

    }

    @Override
    public void qukuan(double qu) {
        if (qu <= yue) {
            yue -= qu;
            System.out.println("取款成功,谢谢使用!");
        } else
            System.out.println("您输入的取款金额有误,无法完成本次取款,系统将自动退出,谢谢使用!");

    }

    // 构造方法
    public Chuxuka(String name, String personid, String cardid, String mima, double yue) {
        super();
        this.name = name;
        this.personid = personid;
        this.cardid = cardid;
        this.mima = mima;
        this.yue = yue;
    }

    // 以下是getter和setter方法区
    public double getTouzhi() {
        return touzhi;
    }

    public void setTouzhi(double touzhi) {
        this.touzhi = touzhi;
    }

    @Override
    public void chaxunyue() {
        System.out.println(yue);

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPersonid() {
        return personid;
    }

    public void setPersonid(String personid) {
        this.personid = personid;
    }

    public String getCardid() {
        return cardid;
    }

    public void setCardid(String cardid) {
        this.cardid = cardid;
    }

    public String getMima() {
        return mima;
    }

    public void setMima(String mima) {
        this.mima = mima;
    }

    public double getYue() {
        return yue;
    }

    public void setYue(double yue) {
        this.yue = yue;
    }

    @Override
    public String toString() {
        return name + "," + personid + "," + cardid + "," + mima + "," + yue;

    }

}



package com.bank.abc;

public class Xinyongka extends Chuxuka {
    
    //定义信用卡继承储蓄卡

    //重写成员变量,定义信用卡的透支额度为10000元
    private double touzhi = 10000;
    
    //重写取款方法
    
    public void qukuan(double qu) {
        if(qu<=getYue()+touzhi)
        {
            setYue(getYue() - qu);
            System.out.println("取款成功,谢谢使用!");
        }
        else
            System.out.println("您输入的取款金额有误,无法完成本次取款,系统将自动退出,谢谢使用!");

    }

    public double getTouzhi() {
        return touzhi;
    }

    public void setTouzhi(double touzhi) {
        this.touzhi = touzhi;
    }
    

    //构造方法
    public Xinyongka(String name, String personid, String cardid, String mima, double yue) {
        
        super(name,  personid,cardid, mima,  yue);
    }

}
package com.bank.text;
/**
 * @author 张伟
 * 2016.10.07
 * 模拟银行自动终端系统
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;
import java.util.Scanner;

import com.bank.abc.AbcAtm;
import com.bank.abc.Bank;
import com.bank.abc.Chuxuka;

public class BankText {

    public static void main(String[] args) throws Exception {

        // 实例化abcATM
        AbcAtm abcatm = new AbcAtm();

        // 获取Bank实例并初始化银行卡的LIST集合
        Bank bank = Bank.getBack();
        
        List<Chuxuka> cards = bank.getCard();
        
        //应用对象的序列化获取存储的cards
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("e:/Bank/bank.obj"));

            List<Chuxuka> card = (List<Chuxuka>) in.readObject();
            cards = card;
            in.close();

        } catch (Exception e1) {

            e1.printStackTrace();
        }
        
        

        for (int s = 1; s > 0; s++) {
            
            
            // 菜单提示

            System.out.println("银行自助终端系统\\n**********************");
            System.out.println("0------开户\\n1------查询\\n2------存款\\n3------取款\\n4------退出");
            System.out.print("**********************\\n请选择您要执行的功能:");
            Scanner sc = new Scanner(System.in);

            while (true) {
                // 等待选择
                int resoult = sc.nextInt();

                // 选择判断

                if (resoult == 0) {
                    System.out.println("\\n**********************\\n您选择的为开户功能");

                    System.out.print("请输入您的姓名:");
                    Scanner sc1 = new Scanner(System.in);

                    while (true) {
                        // 等待输入
                        String name = sc1.nextLine();
                        // 定义汉字的正则表达式
                        String regex = "[\\\\u4E00-\\\\u9FA5]+";

                        // 判断输入的name是否合法
                        if (name.matches(regex) && name.length() >= 2 && name.length() <= 4) {
                            System.out.print("请输入您的身份证号:");

                            Scanner sc2 = new Scanner(System.in);

                            while (true) {
                                String shenfenzheng = sc2.nextLine();

                                // 定义身份证的正则表达式

                                String regex1 = "\\\\d{17}[0-9a-zA-Z]";

                                // 判断身份证是否合法

                                if (shenfenzheng.matches(regex1)) {

                                    System.out.print("请输入六位数字密码:");

                                    Scanner sc3 = new Scanner(System.in);

                                    while (true) {
                                        String regex2 = "[0-9]{6}";
                                        String mima = sc3.nextLine();
                                        if (mima.matches(regex2)) {
                                            String sss = abcatm.kaihu();
                                            cards.add(new Chuxuka(name, shenfenzheng, sss, mima, 0));
                                            System.out.println("您的账户为:" + sss);
                                            System.out.println("开户成功,谢谢使用!");
                                            // System.out.println(bank.getCard());
                                            break;
                                        } else {
                                            System.out.print("密码输入不合法,请重新输入:");
                                        }
                                    }
                                    break;
                                } else {
                                    System.out.print("您输入的身份证号不合法,请重新输入:");
                                }

                            }

                            break;
                        } else {
                            System.out.print("您输入的姓名不合法,请重新输入:");
                        }
                    }

                    break;
                }

                else if (resoult == 1) {
                    System.out.println("\\n**********************\\n您选择的为查询功能");
                    System.out.print("请输入您要查询的卡号:");
                    Scanner sc1 = new Scanner(System.in);

                    for (int i = 1; i > 0; i++)// 如果输入的卡号存在,则使i<0,执行完全部操作后退出循环完成当前查询,否则,无限循环,直至卡号输入正确为止
                    {
                        // 等待输入需要查询的卡号
                        String cardID = sc1.nextLine();
                        for (int ii = 0; ii < cards.size(); ii++) {
                            if (cards.get(ii).getCardid().equals(cardID)) {

                                System.out.print("请输入您的密码:");

                                Scanner sc2 = new Scanner(System.in);

                                for (int j = 0; j < 3; j++)// 设置输入密码的最高次数
                                {
                                    String mima = sc2.nextLine();

                                    if (mima.equals(cards.get(ii).getMima())) {
                                        // 密码输入正确后显示所有银行卡信息并终止当前查询
                                        System.out.println("您要查询的账号信息为:\\n**********************");
                                        System.out.println("姓名:" + cards.get(ii).getName());
                                        System.out.println("身份证号:" + cards.get(ii).getPersonid());
                                        System.out.println("卡号:" + cards.get(ii).getCardid());
                                        System.out.println("余额:" + cards.get(ii).getYue() + "\\n");
                                        i = -1;
                                        break;
                                    } else {
                                        if (j < 2)
                                            System.out.print("密码输入错误,请重新输入:");
                                        else {
                                            // 密码连续输入错误,终止当前查询
                                            System.out.println("对不起,您已经没有了输入机会");
                                            i = -1;
                                            break;
                                        }

                                    }
                                }

                            } else if (ii < cards.size()) {

                            }

                            else {
                                System.out.print("您输入的卡号不存在,请重新输入:");
                            }
                        }
                    }

                    break;
                }

                else if (resoult == 2) {
                    System.out.print("\\n**********************\\n您选择的为存款功能\\n请输入您要存款的卡号:");
                    Scanner sc1 = new Scanner(System.in);

                    for (int i = 1; i > 0; i++)// 如果输入的卡号存在,则使i<0,执行完全部操作后退出循环完成当前存款,否则,无限循环,直至卡号输入正确为止
                    {
                        // 等待输入需要存款的卡号
                        String cardID = sc1.nextLine();
                        for (int ii = 0; ii < cards.size(); ii++) {
                            if (cards.get(ii).getCardid().equals(cardID)) {
                                i = -1;
                                System.out.print("请输入您的密码:");

                                Scanner sc2 = new Scanner(System.in);

                                for (int j = 0; j < 3; j++)// 设置输入密码的最高次数
                                {
                                    String mima = sc2.nextLine();

                                    if (mima.equals(cards.get(ii).getMima())) {
                                        // 密码输入正确后显示银行卡的当前信息
                                        System.out.println("您要存款的账号信息为:\\n**********************");
                                        System.out.println("姓名:" + cards.get(ii).getName());
                                        System.out.println("身份证号:" + cards.get(ii).getPersonid());
                                        System.out.println("卡号:" + cards.get(ii).getCardid());
                                        System.out.println("余额:" + cards.get(ii).getYue() + "\\n");

                                        // 提醒输入存款金额完成存款功能
                                        System.out.print("请输入您的存款金额:");
                                        Scanner sc3 = new Scanner(System.in);

                                        double cun = sc3.nextDouble();
ii=cards.size()+1;
if (cun > 0) { cards.get(ii).setYue(cards.get(ii).getYue() + cun); System.out.println("存款成功,谢谢使用!");
}
else System.out.println("您输入的金额无效,无法完成本次存款,系统将自动退出,谢谢使用");
break; } else { if (j < 2) System.out.print("密码输入错误,请重新输入:"); else // 密码连续输入错误,终止当前功能 System.out.println("对不起,您已经没有了输入机会"); } } } else if (ii < cards.size()) { } else { System.out.print("您输入的卡号不存在,请重新输入:"); } } } break; } else if (resoult == 3) { System.out.print("\\n**********************\\n您选择的为取款功能\\n请输入您要取款的银行卡号:"); Scanner sc1 = new Scanner(System.in); for (int i = 1; i > 0; i++)// 如果输入的卡号存在,则使i<0,执行完全部操作后退出循环完成当前取款,否则,无限循环,直至卡号输入正确为止 { // 等待输入需要取款的卡号 String cardID = sc1.nextLine(); for (int ii = 0; ii < cards.size(); ii++) { if (cards.get(ii).getCardid().equals(cardID)) { i = -1; System.out.print("请输入您的密码:"); Scanner sc2 = new Scanner(System.in); for (int j = 0; j < 3; j++)// 设置输入密码的最高次数 { String mima = sc2.nextLine(); if (mima.equals(cards.get(ii).getMima())) { // 密码输入正确后显示银行卡的当前信息 System.out.println("您要取款的账号信息为:\\n**********************"); System.out.println("姓名:" + cards.get(ii).getName()); System.out.println("身份证号:" + cards.get(ii).getPersonid()); System.out.println("卡号:" + cards.get(ii).getCardid()); System.out.println("余额:" + cards.get(ii).getYue()); System.out.println("透支额度:" + cards.get(ii).getTouzhi()); // 提醒输入取款金额完成取款功能 System.out.print("请输入您的取金额:"); Scanner sc3 = new Scanner(System.in); double qu = sc3.nextDouble(); cards.get(ii).qukuan(qu);
ii=cards.size()+1;
break; } else { if (j < 2) System.out.print("密码输入错误,请重新输入:"); else //以上是关于Java编程自动取款机步骤的主要内容,如果未能解决你的问题,请参考以下文章

用java软件里的eclipse编ATM取款机(课程设计)

java编程基础 正则表达式

使用Java实现数据库编程—06 项目:银行ATM取款机系统

java并发编程——通过ReentrantLock,Condition实现银行存取款

用java做一个简易的ATM机具体流程在下面

java 编程