用面向对象思想编写方法写出atm机取款流程

在java学习中,面向对象思想是学习这门语言的核心,通过定义各种类和方法并调用

他们来写出一个项目,这样在修改项目时可以通过修改里面的方法而不是直接修改整

个代码,达到了方便简单的目的,下面就用一个atm机提款流程来简单练习方法的使

用,代码如下:


package com.jredu.object;

import java.time.Year;
import java.util.Scanner;

public class Atm {

	//在这里为图方便直接在atm类中定义了密码类,建议正常书写时单独定义
	public class Password {
		private int password;

		public Password(int password) {
			super();
			this.password = password;
		}

	}

	// 类的属性声明
	public int inputpassword;
	Password psd = new Password(111111);
	Scanner scanner = new Scanner(System.in);
	int money = 0;// 用户选择的提款金额
	int total = 20000;// 总金额

	// 输入并验证密码部分
	public void ipsd() {
		for (int i = 3; i >= 1; i--) {
			System.out.print("请输入密码:");
			int input1 = scanner.nextInt();//获取输入的密码
			//验证密码,共三次机会
			if (input1 != psd.password) {
				System.out.println("密码错误,请重新输入,还有" + (i - 1) + "次机会");
				if (i == 1) {
					System.out.println("密码错误,请取卡");
					return;
				}
				continue;
			} else {
				amount();
				return;
			}
		}
	}

	// 输入金额部分
	public void amount() {
		System.out.println("0.手动输入金额\t1.100元\t2.300元\t3.500元\t4.1000元\t5.3000元\t6.5000元");
		int num = scanner.nextInt();//获取输入的数字
		//用switch语句进行金额选择
		switch (num) {
		case 0:
			System.out.print("请手动输入金额(必须要100元的倍数,最低100元,最高不超过1000元)");
			money = scanner.nextInt();
			if (!(money % 100 == 0 && money > 0 && money < 1001)) {
				System.out.println("金额有误,是否继续(y/n)");
				money = 0;
			}
			break;
		case 1:
			money = 100;
			break;
		case 2:
			money = 300;
			break;
		case 3:
			money = 500;
			break;
		case 4:
			money = 1000;
			break;
		case 5:
			money = 3000;
			break;
		case 6:
			money = 5000;
			break;
		default:
			System.out.println("输入有误,是否继续(y/n)");
			money = 0;
			break;
		}
		//在选择结束后进入到判断方法中
		decide();
	}

	public void decide() {
		// 根据金额扣除余额
		if (money > 0) {
			// 判断是否余额大于等于要扣除的金额
			if (total > money) {
				// 可以正确取钱
				total -= money;
				System.out.println("提款成功,余额:" + total + ",是否继续(y/n)");
			} else if (total == money) {
				// 可以取钱,结束程序
				total = 0;
				System.out.println("谢谢使用,请取卡");
				return;
			} else {
				// 不可以取钱
				System.out.println("余额不足,余额剩余" + total + ",是否继续(y/n)");
			}

		} 
		//获取是否继续选项
		String next = scanner.next();
		//对获取的字符串进行判断,如果继续y就返回amount方法,否则输入语句后退出此方法
		if (next.equals("y")) {
			amount();
		} else {
			System.out.println("交易取消,请取卡");
			return;
		}
	}
//测试类
	public static void main(String[] args) {
		Atm ac = new Atm();
		ac.ipsd();

	}
}


你可能感兴趣的:(程序开发)