玩命加载中 . . .

使用java实现简单ATM功能


简单实现ATM【未使用集成开发环境】

以下代码我分别放于两个文件夹
注册:
bankCard.java
Register.java
ZhuCe.java
登录:
ATM.java
balanceEnquiry.java
changePasswords.java
cunKuan.java
Interface.java
NegativeException.java
quKuan.java
Read.java
zhuanZhang.java
我们都知道要使用ATM机,首先我们必须先注册账户和密码

1、bankCard.java

class bankCard
{
    String bankId;  //银行卡账号
    String idPasswords;  //银行卡账号的密码
    String userName;   //用户名
    String userId;   //用户身份证号
}

2、Register.java

import java.util.*;
public class Register extends bankCard
{
    final int N = 1 ;   //定义常量N来作为账号的最小长度
    final int M = 6;   //定义常量M来作为密码的长度
    String bankId01;
    String idPasswords01;
    Scanner reader = new Scanner(System.in);  //创建Scanner类的对象reader
    /*
        注册账号
    */
    void setBankId(){
          System.out.println("----------------------------------------------------");
          System.out.println("-----------------------注册账号---------------------\n");
          System.out.println("-------------请输入你的相关信息完成注册!------------\n");
          System.out.print("账    号:");
          bankId = reader.nextLine();
          if(bankId.length() >= N && bankId.length() <= 19){   //判断账号的长度是否在N-19之间
              for(int i=0;i<bankId.length();i++){    //遍历每一个字符
                 char ch = bankId.charAt(i);
                 if(ch >= '0' && ch <= '9'){
                   }
                 else{
                   System.out.println("账号中存在非数字,请重新输入!");
                   setBankId();
                   }
              }
          }
          else{
              System.out.println("账号非法!(账号位数不在"+N+"-19之间)");
              setBankId();
              }
          }
    /*
        将银行卡账号作为返回值返回
    */
    String getBankId(){
        return bankId;
        }
    /*
        设置密码
    */
    void setIdPasswords(){
         System.out.print("密    码:");
         idPasswords = reader.nextLine();
         if(idPasswords.length() == M){
              /*
                  判断密码是否是数字
              */
              for(int i=0;i<idPasswords.length();i++){    //遍历每一个字符
                 char ch = idPasswords.charAt(i);
                 if(ch >= '0' && ch <= '9'){
                   }
                 else{
                   System.out.println("\n密码中存在非数字,请重新输入!");
                   setIdPasswords();
                   }
              }
          }
          else{
              System.out.println("密码长度不符!(密码长度不为"+M+")");
              setIdPasswords();
              }
         }
    /*
        将银行卡账号的密码作为返回值返回
    */
    String getIdPasswords(){
         return idPasswords;
         }
    void ZhuCe(String bankAccount){
       Boolean zhuCe = true;   //定义布尔类型变量zhuCe作为while循环使用
       //System.out.println("--------请输入相关信息完成转账所须账号的注册!--------");

       while(zhuCe){
            setBankId();
            bankId01 = getBankId();
            if(bankId01.equals(bankAccount)){
               System.out.println("-------------此账号已被注册!请重新注册!-------------");
               continue;
               }
            else{
               setIdPasswords();
               idPasswords01 = getIdPasswords();
               zhuCe = false;
               }
            }
       }
    String getBankId2(){
        return bankId01;
        }
    String getIdPasswords2(){
         return idPasswords01;
         }
    /*
        登记银行卡用户的姓名
    */
    void setUserName(){
         System.out.print("姓    名:");
         userName = reader.nextLine();
         if(userName.length() <= 4){
            for(int i = 0; i < userName.length();i++){
                int ch = (int)userName.charAt(i);
                if(19968 <= ch && ch< 40869){  //判断ch是否是汉字
                    }
                else{
                    System.out.println("姓名存在非法字符!请重新输入!");
                    setUserName();
                    }
                }
            }
        else{
            System.out.println("姓名长度有误!请重新输入!");
            setUserName();
            }
         }
    /*
        登记银行卡用户的身份信息(身份证件号)
    */
    void setUserId(){
         System.out.print("身份证号:");
         userId = reader.nextLine();
         if(userId.length() == 18){
              for(int i=0;i<userId.length();i++){    //遍历每一个字符
                 char ch = userId.charAt(i);
                 if(i <userId.length()-1){
                     if(ch >= '0' && ch <= '9'){
                         }
                     else{
                        System.out.println("身份证号中存在非数字,请重新输入!");
                        setUserId();
                        }
                 }
                 else{
                       if(ch>='A' && ch<='Z'  ||  ch>='a' && ch<='z' || (ch>='0' && ch<='9')){ //判断最后一位数是否是字母或数字
                        }
                       else{
                          System.out.println("身份证号中存在非法字符,请重新输入!\n       (除最后一位可以为字母或数字,其余只能为数字)");
                          setUserId();
                          }
                      }
              }
          }
          else{
              System.out.println("身份证号长度非法!(身份证号长度不为18)");
              setUserId();
              }
         }


    /*
        将用户信息作为返回值返回
    */
    String getUserName(){
         return userName;
         }
    String getUserId(){
         return userId;
         }
}

3、ZhuCe.java

import java.io.*;
import java.util.*;
public class ZhuCe 
{
    public static void main(String[] args) throws IOException
    {
        //创建文件夹
        File f = new File("D:/用户信息");
        //判断文件夹是否存在,如果不存在就创建,反之不创建
        if(!f.exists()){
            f.mkdir();
            }
        //System.out.println(f.mkdir());
        String x = "D:/用户信息/user01.txt";
        String z = "D:/用户信息/user02.txt";
        //创建文件
        File file = new File(x);
        /*
            判断文件是否存在,存在则删除,不存在则创建
        */
        if(!file.exists()){
            file.createNewFile();
            }
        else{
            file.delete();
            }
        File file_ = new File(z);
        /*
            判断文件是否存在,存在则删除,不存在则创建
        */
        if(!file_.exists()){
            file_.createNewFile();
            }
        else{
            file_.delete();
            }
        /*
        System.out.println(file.createNewFile());
        System.out.println(file.exists());  //判断文件是否存在
        System.out.println(file.isFile());  //判断***.txt是否是文件类型
        */
        Register re = new Register();
        String y = "\r\n";
        String y1 = "姓    名:";
        String y2 = "身份证号:";
        String y3 = "登陆账号:";
        String y4 = "密    码:";
        String y5 = "转账账号:";
        String s1,s2,s3,s4,s5,s6,s7,s8;  //定义变量来接收数据
        System.out.println("-------请输入你的身份信息信息完成登陆账号注册!-------");
        System.out.println("\n注意;姓名为汉字且长度为4!\n     身份证号为18位");
        System.out.println("     账号长度在1-19之间!\n    密码长度为6且只能是数字!\n");
        /*
            调用Register类中的方法
        */
        re.setUserName();
        re.setUserId();
        re.setBankId();
        re.setIdPasswords();

        s1 = re.getUserName();
        s2 = re.getUserId();
        s3 = re.getBankId();
        s4 = re.getIdPasswords();

        FileWriterTest(x,y1,s1,y2,s2,y3,s3,y4,s4,y);
        System.out.println("\n-------请输入你的身份信息完成转账账号注册!-------");
        re.setUserName();
        re.setUserId();

        s5 = re.getUserName();
        s6 = re.getUserId();

        /*
            判断在身份证相同的情况下,姓名是否相同,若不同,则重新注册。反之,继续。
        */
        if(s6.equals(s2)){
            if(s5.equals(s1)){}
            else{
                System.out.println("\n非法信息!该身份证已被注册且其对应的姓名信息不符!");
                System.out.println("\n----------请重新完成注册!---------");
                main(args);  //调用主方法
                }
            }

        re.ZhuCe(s3);
        s7 = re.getBankId();
        s8 = re.getIdPasswords();

        FileWriterTest(z,y1,s5,y2,s6,y5,s7,y4,s8,y);
        System.out.println("----注册完成!你可以前往ATM登录完成相关业务-----");
        System.out.println("\n退出中,请等待......\n");
        }
    /*
        向所给文件中写入内容
    */
    public static void FileWriterTest(String x,String y1,String s1,String y2,String s2,String y3,String s3,String y4,String s4,String y){
        try{
            FileWriter writer = new FileWriter(x,true);
            writer.write(y1);
            writer.write(s1);
            writer.write(y);  //换行
            writer.write(y2);
            writer.write(s2);
            writer.write(y);  //换行
            writer.write(y3);
            writer.write(y);  //换行
            writer.write(s3);
            writer.write(y);  //换行
            writer.write(y4);
            writer.write(y);  //换行
            writer.write(s4);
            writer.write(y);  //换行
            writer.write(y);  //换行
            writer.flush();
            writer.close();
            }
        catch(IOException e){
            System.out.println("Error:"+e);
            }
        }
}

注册完后,账号密码记录在D:/用户信息文件夹下,下面进行读取

4、Read.java

import java.io.*;
public class Read
{
    static String bankAccount;
    static String userPasswords;
    public static void readLines(String fileName) throws Exception{
        File file = new File(fileName);
        BufferedReader read = new BufferedReader(new FileReader(file));
        String s = null;
        int count = 1;
        while((s = read.readLine()) != null){  //使用readLine方法,一次读一行
            if(count == 4){
                bankAccount = s;
                }
            else if(count == 6){
                    userPasswords = s;
                    }
            count++;
            }
        read.close();
        }
    String getId(){
            return bankAccount;
            }
    String getMiMa(){
            return userPasswords;
            }
}

接下来就是实现简单的ATM功能了

5、ATM.java

import java.util.*;
public class ATM 
{
    Date date = new Date();    //定义Date类的对象date来输出实时时间
    static String bankAccount01;   //定义bankAccount01作为转账时所用的账号
    static double money = 0.00;  //定义并初始化金额为0.00元
    static int count = 1;   //定义count计数器记录输入密码错误的次数
    static int count01 = 0;   //定义count01计数器记录修改密码时输入密码错误的次数
    static Boolean loop = true;   //定义布尔类型变量loop作为登录时的while循环使用
    static String zhangHao;   //读取登录时键盘输入的账号
    static String miMa;   //读取登录时键盘输入的密码
    static Boolean loop01 = true;   //定义布尔类型变量loop01作为登录后的while循环使用
    /*
        登录成功后进行操作
    */
    void Enter(String userPasswords,String bankAccount){
        while(loop01){
            Interface Interface = new Interface();   //调用Interface类中的构造方法
            System.out.print("请输入指令(按回车键结束):");
            Scanner reader = new Scanner(System.in);
            if(reader.hasNextInt()){     //判断用户输入的指令是否合法
                int ch = reader.nextInt();  //定义变量ch来读用户输入的指令
                /*
                    if(ch != 1 && ch != 2 && ch != 3 && ch != 4 && ch != 5 && ch != 6){
                    System.out.println("--------------指令错误,请重新输入!-------------");
                    System.out.println();
                    continue;
                    }
                */
                switch(ch){
                    /*
                         查询当前账号下的余额情况
                    */
                    case 1:
                        balanceEnquiry balanceEnquiry = new balanceEnquiry(money);   //创建并调用balanceEnquiry类的构造方法
                        continue;
                    /*
                        存放金额到目前登录的账号下
                    */
                    case 2:
                        cunKuan add = new cunKuan();   //创建cunKuan类的对象add
                        add.setAddMoney(money);    //调用cunKuan类中的setAddmoney方法
                        money = add.getAddMoney();  //调用cunKuan中的getAddMoney方法并把返回值赋给money
                        continue;
                    /*
                        根据余额的剩余情况来判断是否可以取出
                    */
                    case 3:
                        quKuan reduce = new quKuan();  //创建quKuan类的对象reduce
                        reduce.setReduce(money);    //调用quKuan类中的setReduce方法
                        money = reduce.getReduce();  //调用qnKuan中的getReduce方法并把返回值赋给money
                        continue; 
                    /*
                        输入密码判断是否正确,若正确,则可以修改密码
                    */
                    case 4:
                        /*
                            调用changePasswords类中的方法
                        */
                        changePasswords cP = new changePasswords();
                        userPasswords = cP.changePasswords(userPasswords,count);
                        count01 = cP.Count();
                        continue;
                    /*
                        转账汇款(本账号不能给本账号转账)
                    */
                    case 5:
                        zhuanZhang zZ = new zhuanZhang();    //创建zhuanZhang类的对象zZ
                        zZ.zhuanZhang(bankAccount01,bankAccount);   //调用zhuanZhang类中的zhuanZhang方法
                        zZ.setZhuanZhang(money);   //调用zhuanZhang类中的setZhuanZhang方法
                        money = zZ.getZhuanZhang();   //调用zhuanZhang类中的getZhuanZhang方法并把返回值赋给money
                        continue;
                    /*
                        退出ATM
                    */
                    case 6:
                        System.out.println("------------欢迎你的再次光临ATM!----------------");
                        System.exit(0);    //退出ATM
                    /*
                        其他情况处理
                    */
                    default:
                        System.out.println("\n--------------指令错误,请重新输入!-------------\n");
                        System.out.println();
                        continue;
                    }
               }
               else{
                    System.out.println("\n-----------输入的指令非法!---------------\n");
                    Enter(userPasswords,bankAccount);  //使用递归,调用Enter()方法
                    }
               }
    }
    /*
        主类
    */
    public static void main(String[] args) throws Exception 
    {
        try{
            Read read = new Read();
            String fileName = "D:/用户信息/user01.txt"; 
            read.readLines(fileName);
            String bankAccount = read.getId();  //调用Read类中的getId方法并把返回值赋值给bankAccount
            String userPasswords = read.getMiMa();   //调用Read类中的getMiMa方法并把返回值赋值给userPasswords
            String fileName01 = "D:/用户信息/user02.txt";
            read.readLines(fileName01);
            bankAccount01 = read.getId();
            String userPasswords01 = read.getMiMa();
            while(loop){
                System.out.println("\n----------------------登录ATM-----------------------\n");
                System.out.print("请输入账号(按回车键结束):");
                Scanner reader = new Scanner(System.in);
                zhangHao = reader.nextLine();
                if(zhangHao != null && zhangHao.equals(bankAccount)){    //判断输入的账号是否正确
                    for(;count <= 3; count++){    //for循环用来判断登录时输入密码的次数是否大于3次,若大于3次,则退出登录
                        System.out.println("----------------你有3次输入密码的机会!-------------");
                        System.out.println("-----------如输入3次错误密码,请重新登录!----------\n");
                        System.out.print("请输入密码(按回车键结束):");
                        miMa = reader.nextLine();
                        /*
                            因为栈内存、堆内存以及方法区的特殊性(存的是地址(引用)) 
                        */
                        if(miMa != null && miMa.equals(userPasswords)){   //判断输入的密码是否正确
                            System.out.println("\n--------------------登录成功!----------------------");
                            ATM atm = new ATM();  //创建ATM类的对象atm
                            atm.Enter(userPasswords,bankAccount);  //调用ATM类中的Enter方法
                            }
                        else{
                            System.out.println("\n-------------密码错误,请重新输入------------");
                            System.out.println("\n-------------你已输入错误密码"+count+"次!------------");
                            System.out.println("---------------------------------------------");
                            if(count >= 3){
                                System.out.println("------你已经输入3次密码错误,请重新登录!------");
                                loop = false;
                                }
                            }
                        }
                }
                else if(zhangHao.equals(bankAccount01)){
                    System.out.println("\n-----转账账号不能用于登录此ATM,请重新输入!-----");
                    }
                else
                    System.out.println("\n-----账号不存在或账号错误,请重新输入!-----");
            }
       }
     catch(java.io.FileNotFoundException e){
        System.out.println("\n-----你还未注册相关账号,请完成相关注册后再登录!-----");
        System.out.println("退出ATM......");
        }
    }
}

6、Interface.java

public class Interface
{
    /*
        ATM界面
    */
    Interface(){
        System.out.println("-------------------------------------------------------");
        System.out.println("------------------------- ATM -------------------------\n");
        System.out.println("                      1、查询余额                      ");
        System.out.println("                      2、  存款                        ");
        System.out.println("                      3、  取款                        ");
        System.out.println("                      4、修改密码                      ");
        System.out.println("                      5、转账汇款                      ");
        System.out.println("                      6、退出ATM                       ");
        System.out.println("\n------------输入相应指令,可完成相应任务------------\n");
         }
}

7、balanceEnquiry.java

import java.util.*;
public class balanceEnquiry
{
    Date date = new Date();    //定义Date类的对象date来输出实时时间
    /*
        查询余额
    */
    balanceEnquiry(double money){
        System.out.println("----------------------------------------------------");
        System.out.println("---------------------查询余额-----------------------\n");
        System.out.println("----------当前余额:"+money+"元----------");
        System.out.print("    ");
        System.out.println(date.toString());
        System.out.println("----------------------------------------------------");
        }
    balanceEnquiry(){
    }
}

8、cunKuan.java

import java.util.*;
public class cunKuan
{
    Date date = new Date();    //定义Date类的对象date来输出实时时间
    Scanner reader = new Scanner(System.in);   //定义Scanner类变量的对象reader
    static double money01;   //定义余额
    static double money02;   //定义存入金额
    /*
        存款
    */
    void setAddMoney(double money){
             System.out.println("----------------------------------------------------");
             System.out.println("-------------------------存款-----------------------");
             System.out.println();
             money01 = money;  //把主类中的所剩余额赋给cunKuan类中的余额
             System.out.print("请输入你要存放的金额(按回车键结束):");
             try{
                double money02 = reader.nextDouble();   //存入金额
                /*
                     判断存入的金额是否是100的倍数,若满足是100的倍数可存入,反之,不可以存款
                */
                if(money02 % 100 == 0 && money02 <= 100000 && money02 >= 0){
                     money01 = money01 + money02;   //把存入金额加上所剩余额赋给当前余额
                     System.out.println("----------存入金额:"+money01+"元----------");
                     System.out.println("----------当前余额:"+money01+"元----------");  //显示当前余额
                     System.out.print("    ");
                     System.out.println(date.toString());   //显示实时时间
                     System.out.println("----------------------------------------------------");
                     }
                else if(money02 > 100000){
                    System.out.println("\n---一次最多存款100000元,请分批存入!---\n");
                    }
                else if(money02 < 0){
                    throw new NegativeException();
                    }
                else{
                     System.out.println("\n金额不能存入(输入金额必须为100的倍数)!\n");
                     }
                 }
             catch(java.util.InputMismatchException e)    //输入不匹配异常
                 {
                     System.out.println("\n-----发生异常:输入指令非法!(输入不匹配)-----");
                     System.out.println("\n即将退出存款界面,跳转到ATM界面,请等待......");
                 }
             catch(NegativeException e){   //负数异常
                         System.out.println("\n-----"+e.warnMess()+"-----");
                        System.out.println("\n即将退出存款界面,跳转到ATM界面,请等待......");
                        }
    }
    double getAddMoney(){
           return money01;  //返回当前余额
           }
}

9、quKuan.java

import java.util.*;
public class quKuan
{
    Date date = new Date();    //定义Date类的对象date来输出实时时间
    Scanner reader = new Scanner(System.in);   //定义Scanner类变量的对象reader
    static double money01;   //定义余额变量
    static double money02;   //定义取款金额变量
    /*
        取款
    */
    void setReduce(double money){
        money01 = money;   //把主类中的所剩余额赋给qnKuan类中的余额
        Boolean loop02 = true;   //定义布尔类型变量loop02作为while循环使用
        while(loop02){
            System.out.println("--------------------------------------------------");
            System.out.println("------------------------取款----------------------");
            System.out.println();
            System.out.println("                      1、100元                      ");
            System.out.println("                      2、500元                      ");
            System.out.println("                      3、1000元                     ");
            System.out.println("                      4、2000元                     ");
            System.out.println("                      5、3000元                     ");
            System.out.println("                      6、其它金额                   ");
            System.out.println("                      7、退出取款                   ");
            System.out.println("\n-----------输入相应指令,可完成相应任务-----------");
            System.out.println("--------注:其它金额不能同以上金额相等!----------\n");
            System.out.print("请输入指令(按回车键结束):");
            int zh;
            try{
                zh = reader.nextInt();  //定义变量zh来读用户输入的指令
                /*
                    if(zh != 1 && zh != 2 && zh != 3 && zh != 4 && zh != 5 && zh != 6 && zh != 7){
                    System.out.println("\n-----------指令错误,请重新输入!----------");
                    continue;
                    }
                */
                switch(zh){
                    case 1:
                        if(money01 >= 100){
                            money01 = money01 - 100;
                            System.out.println("------------取出100元-----------");
                            System.out.println("------当前余额:"+money01+"元------");
                            System.out.print("    ");
                            System.out.println(date.toString());
                            System.out.println("----------------------------------------------------");
                            break;
                            }
                        else{
                            System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                            continue;
                            }
                    case 2:
                        if(money01 >= 500){
                            money01 = money01 - 500;
                            System.out.println("------------取出500元-----------");
                            System.out.println("--------当前余额:"+money01+"元-------");
                            System.out.print("    ");
                            System.out.println(date.toString());
                            System.out.println("---------------------------------------------------");
                            break;
                            }
                        else{
                            System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                            continue;
                            }
                    case 3:
                        if(money01 >= 1000){
                            money01 = money01 - 1000;
                            System.out.println("--------------取出1000元-----------");
                            System.out.println("--------当前余额:"+money01+"元-------");
                            System.out.print("    ");
                            System.out.println(date.toString());
                            System.out.println("----------------------------------------------------");
                            break;
                            }
                        else{
                            System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                            continue;
                            }
                    case 4:
                        if(money01 >= 2000){
                            money01 = money01 - 2000;
                            System.out.println("-------------取出2000元----------");
                            System.out.println("----------当前余额:"+money01+"元---------");
                            System.out.print("    ");
                            System.out.println(date.toString());
                            System.out.println("----------------------------------------------------");
                            break;
                            }
                        else{
                            System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                            continue;
                            }
                    case 5:
                        if(money01 >= 3000){
                            money01 = money01 - 3000;
                            System.out.println("------------取出3000元-----------");
                            System.out.println("---------当前余额:"+money01+"元--------");
                            System.out.print("    ");
                            System.out.println(date.toString());
                            System.out.println("----------------------------------------------------");
                            break;
                            }
                        else{
                            System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                            continue;
                            }
                    case 6:
                        try{
                            System.out.print("\n请输入你要取出的金额(按回车键结束):");
                            money02 = reader.nextDouble();    //定义变量money02来读用户输入的其他金额
                            if(money02 % 100 == 0){
                                /*
                                    判断是否与100,500,1000,2000,3000重复
                                */
                                if(money02 != 100 && money02 != 500 && money02 != 1000 && money02 != 2000 && money02 != 3000 && money02 <=5000 && money02 >= 0){
                                    if(money01 >= money02){
                                        money01 = money01 - money02;
                                        System.out.println("------------取出"+money02+"元-----------");
                                        System.out.println("---------当前余额:"+money01+"元---------");
                                        System.out.print("    ");
                                        System.out.println(date.toString());
                                        System.out.println("----------------------------------------------------");
                                        }
                                   else{
                                        System.out.println("\n-------余额不足,请重新输入你要取出的金额!-------");
                                        continue;
                                        }
                                   }
                                else if(money02 < 0){
                                   throw new NegativeException();
                                   }
                                else if(money > 5000){
                                   System.out.println("---一次最多取出5000元,请分批取出!---");
                                   break;
                                   }
                                else{
                                    System.out.println("---金额非法!(输入的金额同100、200、500、1000、2000、3000)---");
                                    break;
                                    }
                              }
                             else{
                                System.out.println("无法取出金额(输入金额必须为100的倍数)!");
                                }
                             }
                         catch(java.util.InputMismatchException e){    //输入不匹配异常
                             System.out.println("\n-----发生异常:输入金额非法!(输入不匹配)-----");
                             break;
                             }
                    case 7:
                        loop02 = false;
                        System.out.println("\n退出取款中,请等待......");
                        break;
                    default:
                        System.out.println("\n-----------指令错误,请重新输入!----------");
                        continue;
                                      }
                               }
                    catch(java.util.InputMismatchException e){    //输入不匹配异常
                             System.out.println("\n------发生异常:输入非法!(输入不匹配)-----");
                             System.out.println("\n即将退出取款界面,跳转到ATM界面,请等待......");
                             break;   //返回到ATM界面
                             }
                    catch(NegativeException e){   //负数异常
                         System.out.println("\n-----"+e.warnMess()+"-----");
                        System.out.println("\n即将退出取款界面,跳转到ATM界面,请等待......");
                        break;   //返回到ATM界面
                        }
                  }
        }
        double getReduce(){
             return money01;
             }
}

10、changePasswords.java

import java.util.*;
public class changePasswords
{
    static Boolean loop = true;   //定义布尔类型变量loop作为while循环使用
    static String Passwords;   //定义密码变量Passwords
    int count01;  //定义count01计数器记录修改密码时输入密码错误的次数
    /*
        修改密码
    */
    String changePasswords(String userPasswords,int count){
        count01 = count;
        Passwords = userPasswords;
        System.out.println("----------------------------------------------------");
        System.out.println("\n-----------------------修改密码---------------------\n");
        while(loop){
            if(count01 >= 3){
                System.out.println("你已经输入3次错误密码,本次登录不能继续修改密码!");
                System.out.print("\n退出修改密码,跳转到ATM界面中,请等待......\n");
                break;
                }
            else{
                 Scanner reading = new Scanner(System.in);
                 System.out.print("你有3次输入原密码的机会,若3次都错误,则退出ATM.\n");
                 if(count01 < 3){
                     System.out.print("请输入原密码(按回车键结束):");
                     String sc = reading.nextLine();
                     if(sc != null && sc.equals(Passwords)){
                          Passwords = setPasswords(Passwords);
                          break;
                          }
                     else{
                          System.out.println("---------------密码错误!-------------");
                          count01++;
                          if(count01 < 3){
                              System.out.println("-----你已经输入错误密码"+count01+"次"+",是否继续修改密码?-----");
                              System.out.println("-----若继续,请输入 y 或 Y ;反之输入其它,退出修改密码!-----\n");
                              System.out.print("输入指令:");
                              Scanner read = new Scanner(System.in);
                              String cmd = read.nextLine();   //定义变量cmd来接收键盘输入的命令
                                 if(cmd.equals("y") || cmd.equals("Y")){
                                     continue;
                                        }
                                 else{
                                     System.out.print("\n退出修改密码,返回ATM界面中,请等待......\n");
                                     break;
                                      }
                             }
                          else
                               System.out.println("\n------------欢迎你的再次光临ATM!----------------");
                         }
                   }
              }
         }
         return Passwords;
    }

    String setPasswords( String Passwords){
        Scanner reading = new Scanner(System.in);
        System.out.print("请输入新密码(按回车键结束):");
        Passwords = reading.nextLine();
        for(int i=0;i<Passwords.length();i++){    //遍历每一个字符
                 char ch = Passwords.charAt(i);
                 if(ch >= '0' && ch <= '9'){
                   }
                 else{
                   System.out.println("输入的密码中存在非数字,请重新输入!");
                   setPasswords(Passwords);
                   }
              }
        System.out.println("你的新密码:"+Passwords);
        return Passwords;
        }

    int Count(){  //将输入错误密码的次数作为返回值返回
        return count01;
        }
}

11、zhuanZhang.java

import java.util.*;
public class zhuanZhang
{
    Date date = new Date();    //定义Date类的对象date来输出实时时间
    static double money;
    double money01;
    double money02 = 0;
    int cmd;
    /*
        转账
    */
    void zhuanZhang(String bankAccount01,String bankAccount){
         String id;
         System.out.println("----------------------------------------------------");
         System.out.println("-----------------------转账汇款---------------------\n");
         System.out.println("----------请输入你所转账的用户账号!----------");
         System.out.print("转账账号:");
         Scanner reading = new Scanner(System.in);
         Boolean loop = true;
         while(loop){
            id = reading.nextLine();
            if(id.equals(bankAccount01)){
                cmd = 1;
                }
            else
                cmd = 2;
            switch(cmd){
               case 1:
                   loop = false;
                   break;
               case 2:
                   if(id.equals(bankAccount)){
                      System.out.print("\n不允许给现在所登陆的账号转账!请重新输入:");
                      continue;
                      }
                   else{
                      System.out.println("\n账号错误或账号不存在,请重新输入:");
                      continue;
                      }
                }
             }
         }
    void setZhuanZhang(double money){
          this.money = money;
          Boolean loop01 = true;
          while(loop01){
               try{
                   System.out.print("请输入你需要转账的金额(按回车键结束):");
                   Scanner reader = new Scanner(System.in);
                   money01 = reader.nextDouble();
                   /*
                           保证余额充足的条件下,限制一次转账的最大额度为10000
                   */
                   if(money >= money01 && money01<= 10000 && money01 >= 0){
                        money = money - money01;
                        money02 = money02 + money01;
                        System.out.println("----------转出余额:"+money01+"元----------");
                        System.out.println("----------当前余额:"+money+"元----------");
                        System.out.print("    ");
                        System.out.println(date.toString());   //显示实时时间
                        loop01 = false;
                        }
                  else if(money01 > 10000){
                          System.out.println("\n----一次最多转账10000元,请分批转出!----\n");
                        continue;
                        }
                  else if(money01 < 0){
                        throw new NegativeException();
                        }
                  else{
                         System.out.println("\n----------余额不足,请重新输入金额!----------\n");
                         System.out.println("----------如需退出转账,请输入E/e,反之输入其它!----------");
                         System.out.print("输入指令:");
                         Scanner read = new Scanner(System.in);
                         String cmd = read.nextLine();   //定义变量cmd来接收键盘输入的命令
                         if(cmd.equals("e") || cmd.equals("E")){
                                 System.out.print("退出转账,返回ATM界面中,请等待......");
                                break;   //返回到ATM界面
                                }
                         else{
                            continue;
                            }
                   }
               }
               catch(java.util.InputMismatchException e){    //输入不匹配异常
                             System.out.println("\n------发生异常:输入金额非法!(输入不匹配)-----");
                             System.out.println("\n即将退出转账界面,跳转到ATM界面,请等待......");
                             break;   //返回到ATM界面
                    }
               catch(NegativeException e){   //负数异常
                         System.out.println("\n-----"+e.warnMess()+"-----");
                        System.out.println("\n即将退出转账界面,跳转到ATM界面,请等待......");
                        break;   //返回到ATM界面
                        }
             }
         }

    double getZhuanZhang(){
         return money;
         }
}

这里我单独写了一个异常

12、NegativeException.java

public class NegativeException extends Exception
{
    final String message = "金额非法!(金额不能存在负数)";
    public String warnMess(){
        return message;
        }
}

  目录