用Java程序模拟银行ATM机,实现包括存款、取款、查询、转账功能的简单应用

(1)想象现实世界中的相关操作沙及哪些实体呢?一个是储户,一个是ATM机。因
此根据面向对象中的抽象原则,可将其抽象为两个类:代表储户的账户信息类,代表银行
ATM机的ATM类。外加一个主类(负责实例化其他类的对象)。
(2)Account类记录储户的卡号,姓名、密码和账户余额等信息,并提供get方法获取每
个属性的值,对账户余额属性提供sub_Balance()方法和add_Balance()方法以模拟余额增
加、减少的功能。
注意:为加强对属性数据的控制访问,考虑将其定义为private。
(3)ATM类模拟ATM机的主要功能,根据对银行ATM机的了解,考虑设计以下主
要方法。
① Welcome()方法:欢迎显示功能。
② Load_Sys()方法:登录功能。
③ SysOpter()方法:根据用户输入进行任务调度。
④ Inqu_Info()方法:查询用户账户。
5 BetBalance()方法:取款。
AddBalance():存款。
⑦ isBalance()方法:判断余额是否足够。
⑧ isRight()方法:判断卡号、密码是否正确。

Account.java

/*Account类封装储户信息及部分功能*/
import java.io.*;
public class Account {
    
    
	private String number=null;			//卡号
	private String name=null;			//客户姓名
	private String password=null;		//客户密码
	private double money=0.0;			//余额
	/*构造方法,以生成多个储户信息*/
	public Account(String number,String name,String password,double money) {
    
    
		this.number=number;
		this.name=name;
		this.password=password;
		this.money=money;
	}
	protected String get_number() {
    
    
		return number;
	}
	protected String get_Name() {
    
    
		return name;
	}
	protected String get_Password() {
    
    
		return password;
	}
	public double get_Money() {
    
    
		return money;
	}
	protected void sub_Balance(double mon) {
    
    
		money-=mon;
	}										//余额减少
	protected void add_Balance(double mon) {
    
    
		money+=mon;
	}										//余额增加
}

ATM.java

import java.io.*;
class ATM {
    
    
	Account act;
	Account act2;
	public ATM() {
    
    
		act=new Account("000","text","111",5000);
		act2=new Account("222","text","333",5000); 
	}
	/*********欢迎界面*********/
	protected void Welcome() {
    
    
		String str="---------------------";
		System.out.print(str+"\n");
		System.out.print("1.取款."+"\n"+"2.查询."+"\n"+"3.存款."+"\n"+"4.退出系统"+"\n"+"5.转账");
		System.out.print(str+"\n");
	}
	/*********登录系统
	 * @throws Exception *********/
	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);
		System.exit(1);									//应用退出
	}
	protected void SysOpter()throws Exception{
    
    
		int num;
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("请选择您要操作的项目(1-5):");
		num=br.read();								//num为ascll码转换的整数
		switch(num) {
    
    
		case 49:
			BetBalance();
			break;
		case 50:
			Inqu_Info();
			break;
		case 51:
			AddBalance();
		case 53:
			ZhuanZhang();
		case 52:
			Exit_Sys();
			break;
		}
		System.exit(1);
	}
	/**********信息查询**********/
	protected void Inqu_Info()throws Exception{
    
    
		System.out.print("------------------------\n"+"账号:"+act.get_number()+"姓名;"+act.get_Name()+"余额:"+act.get_Money()+"\n"+"------------------------\n");
		SysOpter();
	}
	/**********取款**************/
	public void BetBalance() throws Exception{
    
    
		String str=null,str1;
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		do {
    
    
			System.out.println("请输入取款项目:");
			str=br.readLine();
			double qu=Double.valueOf(str).doubleValue();				//将字符串转换为double类型
			if(qu>act.get_Money()) {
    
    
				System.out.println("余额不足,请重新输入你要取的数目:");
			}else {
    
    
				act.sub_Balance(qu);
				System.out.println("取款成功,您账户的余额为:"+act.get_Money());
				Welcome();
				SysOpter();
			}
		}while(true);
	}
	public void AddBalance() throws Exception{
    
    
		String str=null,str1;
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		do {
    
    
			System.out.println("请输入存款项目:");
			str=br.readLine();
			double qu=Double.valueOf(str).doubleValue();
			act.add_Balance(qu);
			System.out.println("存款成功,您账户的余额为:"+act.get_Money());
			Welcome();
			SysOpter();	
		}while(true);
	}
	public boolean isBalance() {
    
    
		if (act.get_Money()<0) {
    
    
			return false;
		}
	return true;
	}

	protected boolean isRight(String card,String pwd) {
    
    
		if (act.get_number().equals(card)&&act.get_Password().equals(pwd))
			return true;
		else
			return false;
	}
	protected boolean isRight2(String card,String pwd) {
    
    
		if (act2.get_number().equals(card)&&act.get_Password().equals(pwd))
			return true;
		else
			return false;
	}

	protected void Exit_Sys() {
    
    
		System.out.println("感谢您使用本系统,再见!");
		System.exit(1);
	}
	/*转账功能*/
	protected void ZhuanZhang() 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(!isRight2(card,pwd)) {
    
    
				System.out.println("您的转账卡号和密码有误:");
				counter++;
			}else
				do {
    
    
					System.out.println("请输入转账的金额:");
					String str = br.readLine();
					double qu=Double.valueOf(str).doubleValue();
					if(qu>act.get_Money()) {
    
    
						System.out.println("余额不足,请重新输入你要转账的数目:");
					}else {
    
    
						act.sub_Balance(qu);
						double qu1=Double.valueOf(str).doubleValue();
						act2.add_Balance(qu1);
						System.out.println("转账成功,您账户的余额为:"+act.get_Money());
						System.out.println("存款成功,账户2的余额为:"+act2.get_Money());
						Welcome();
						SysOpter();
					}
				}while(true);
		}while(counter<3);
		System.exit(1);
		
	}
}

ATMTest.java

public class ATMTest {
    
    
		public static void main(String[] args) throws Exception{
    
    
			ATM atm=new ATM();
			atm.Welcome();
			atm.Load_Sys();
		}
	}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/The_Handsome_Sir/article/details/108904044