Bootstrap

java实现简单ATM功能

因为期末最后一次实验是关于ATM的,所以编写了下面的代码!
可能不太完善!欢迎大神指导!!!
以下代码我分别放于两个文件夹
注册:

放于注册文件夹下
登录:
放于登录文件夹下
我们都知道要使用ATM机,首先我们必须先注册账户和密码
bankCard.java

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

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;
		 }
}

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:/用户信息文件夹下,下面进行读取
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功能了
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......");
		}
	}
}

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");
		 }
}

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(){
	}
}

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;  //返回当前余额
		   }
}

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;
			 }
}

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;
		}
}

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;
		 }
}

这里我单独写了一个异常
NegativeException.java

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