taomamba

这篇博客主要是描述了银行卡的卡片功能。

1、银联接口,用于描述银联统一制定的规则,该接口提供检测密码的方法,取钱方法以及查询余额方法。

package com.Pay.www;
/*接口:用于描述银联统一制定的规则*/
public interface UnionPay {
    /*查看余额*/
    public double getBalance();
    /*取钱*/
    public boolean drawMoney(double number);
    /*检查密码*/
    public boolean checkPwd(String input);
    
    
}

2、工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加在线支付功能。

package com.Pay.www;
public interface ICBC extends UnionPay {

   public void payOnline(double number);

}

3、农业银行接口,用于描述农业银行的卡片功能,在满足银联接口的规则基础上,增加电话支付电话费的功能,另外,农行卡的卡内余额,允许透支2000。

package com.Pay.www;

/*接口:用于描述中国农业银行发行的卡片功能,在
满足银联的规则基础上,添加自己特有的功能*/

public interface ABC extends UnionPay {
    
    /*增加支付电话费的功能*/
    public boolean payTellBill(String phoneNum,double sum);

}

4、定义工商银行接口的实现类。

package com.Pay.www;

public class ICBCImpl implements ICBC {
    
    private double money;
    private String pwd;

    public ICBCImpl(double money,String pwd) {
        this.money = money;
        this.pwd = pwd;
    }

    public double getBalance() {
        
        return money;
    }

    public boolean drawMoney(double number) {
        if (number <= money) {
            money -= number;
            return true;
        }
        return false;
    }
    public boolean checkPwd(String input) {
        if (pwd.equals(input)) {
            return true;
        }
        return false;
    }

    public void payOnline(double number) {
        if (number <= money) {
            money -= number;
        }

    }

}

5、定义农业银行接口的实现类

package com.Pay.www;

public  class ABCImpl implements ABC {
    
    private double balance;
    private String password;
    
    public ABCImpl(double balance,String password){
        
        this.balance = balance;
        this.password = password;
    }

    @Override
    public boolean drawMoney(double number) {
        if (balance - number >= -2000) {
            balance -= number;
            return true;
        }
        return false;
    }

    @Override
    public boolean checkPwd(String input) {
        if (password.equals(input)) {    /* String作为一个基本类型来使用,equals() 和 == 是一样的,当 string作为
                                                                             对象来使用时是不一样 的String s1 = new String("java");*/
        return true;   
        }
        return false;
    }

    public boolean payTellBill(String phoneNum, double sum) {
        if (phoneNum.length() == 11 && (balance - sum)>= -2000) {
            balance -= sum;
            return true;
        }
        return false;
    }

    public double getBalance() {
        
        return balance;
    }

}

6、编写测试类

package com.Pay.www;

import java.util.Scanner;

public class TestUnionPay {
    public static void main(String[] args) {
        UnionPay icbc = new ICBCImpl(2000, "123456");
        Scanner input = new Scanner(System.in);
        System.out.println("请输入银行卡密码");
        if (icbc.checkPwd(input.next())) {
            System.out.println("请输入要取金额");
            double sum = input.nextDouble();
    //double sum = Double.parseDouble(input.next());把字符串转换为Double
     /*next是只读取一个字符串,之后顺序的进行读取,nextLine是一行一行的读取,
     除此之外,nextInt是读取一个数值,nextDoubl是读取一个浮点类型的输入*/
            if (icbc.drawMoney(sum)) {
                System.out.println("取款成功,余额为"+icbc.getBalance());
            }else {
                System.out.println("取款失败");
            }
        }
        input.close();
    }
}

 

分类:

技术点:

相关文章: