java如何实现用银行卡支付?用java实现用银行卡支付实例

Java语言具有功能强大和简单易用两个特征,是一门面向对象编程语言,是学会java开发,我们可以利用java开发很多应用程序,那java如何实现用银行卡支付?下面来我们就来给大家讲解一下。

步骤一:定义银联接口

首先,定义名为UnionPay的银联接口,用于描述银联统一制定的规则;然后,在该接口中定义getBalance方法表示获取余额功能、定义drawMoney表示取钱功能、定义checkPwd表示检查密码功能,代码如下所示:

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

步骤二:定义工商银行接口

定义名为ICBC的接口表示工商银行接口,用于描述中国工商银行发行的卡片功能,该接口需要满足银联接口的功能,因此,继承银联接口;该接口在具备银联接口的功能基础上,要求增加在线支付功能,所以,在该接口中定义payOnline方法,表示此功能,代码如下所示:

/**
*接口:用于描述工商银行发行的卡片功能,在满足
*银联的规则基础上,添加自己特有的功能
*/
public interface ICBC extends UnionPay
{
    /**增加的在线支付功能*/
    public void payOnline(double number);
}

步骤三:定义农业银行接口

定义名为ABC的接口表示农业银行接口,用于描述中国农业银行发行的卡片功能,该接口需要满足银联接口的功能,因此,需要继承银联接口;该接口在具备银联接口的功能基础上,要求增加在线支付功能,所以,在该接口中定义payTelBill方法,表示此功能,代码如下所示:

/**
*接口:用于描述中国农业银行发行的卡片功能,在满足银联的规则基础上,添加
*添加自己特有的功能
*/
public interface ABC extends UnionPay
{
    /**增加支付电话费的功能*/
    public void payTelBill(String phoneNum, double num);
}

步骤四:定义工商银行接口的实现类

首先,定义为名ICBCImpl的类,该类实现ICBC接口;另外,分析问题中的取钱功能,需要对余额信息进行存储,插入卡片以后需要输入密码后才能进行取钱,因此,在ICBCImpl类中定义double类型属性money表示账户余额以及String类型属性pwd表示卡片的密码,代码如下所示:

/**
*类:用于描述工商银行实际发行的卡片
*该卡片具有的功能来自于继承的已经符合银联规范的ICBC接口
*/
public class ICBCImpl implements ICBC
{
    private double money;
    private String pwd;
    public ICBCImpl(double money, String pwd)
    {
        this.money = money;
        this.pwd = pwd;
    }
}

步骤五:实现检查密码、获取余额、取款、在线支付功能

在ICBCImpl类实现checkPwd方法、getBalance方法、drawMoney方法以及payOnline方法,代码如下所示:

/**
*类:用于描述工商银行实际发行的卡片
*该卡片具有的功能来自于继承的已经符合银联规范的ICBC接口
*/
public class ICBCImpl implements ICBC
{
    private double money;
    private String pwd;
    public ICBCImpl(double money, String pwd)
    {
        this.money = money;
        this.pwd = pwd;
    }
    @Override
    public double getBalance()
    {
        return money;
    }
    @Override
    public boolean drawMoney(double number)
    {
        if (number <= money)
        {
            money -= number;
            return true;
        }
        return false;
    }
    @Override
    public void payOnline(double number)
    {
        if (number < money)
        {
            < p = "" >
                money -= number;
        }
    }
    @Override
    public boolean checkPwd(String input)
    {
        if (pwd.equals(input))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

以上四个方法的实现逻辑为:

取钱功能的实现为在当前余额的基础上减去要取的金额,如drawMoney方法的实现。

在线付款功能的实现为当前余额的基础上减去要支付的金额,如payOnline方法的实现。

检查密码功能的实现检查卡的密码与用户输入的密码是否相等,如果相等返回true,否则返回false,如checkPwd方法的实现。

获取余额功能的实现为类ICBCImpl,类中money属性即表示余额,将其返回即可,如getBalance方法的实现。

步骤六:定义农业银行接口的实现类

实现农业银行接口的过程与实现工行接口的过程类似,实现的过程中注意,农行卡的卡内余额可以透支2000,代码如下所示:

/**
*类:用于描述农业银行实际发行的卡片
*该卡片具有的功能来自于继承的已经符合银联规范的ABC接口
*/
public class ABCImpl implements ABC
{
    /**卡内余额,允许最多透支2000*/
    private double balance;
    /**账号密码*/
    private String password;
    public ABCImpl(double balance, String password)
    {
        this.balance = balance;
        this.password = password;
    }
    @Override
    public double getBalance()
    {
        return balance;
    }
    @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))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    @Override
    public boolean payTelBill(String phoneNum, double sum)
    {
        if (phoneNum.length() == 11 && (balance - sum) >= -2000)
        {
            balance -= sum;
            return true;
        }
        return false;
    }
}

步骤七:测试

新建TestUnionPay类,测试银联接口提供的方法,是否成功实现,代码如下所示:

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 = Double.parseDouble(input.next());
            if (icbc.drawMoney(num))
            {
                System.out.println("取钱成功,卡余额为:" + icbc.getBalance());
            }
            else
            {
                System.out.println("取钱失败");
            }
        }
        else
        {
            System.out.println("密码错误");
        }
        input.close();
    }
}

每一个java开发应用都需要有清晰的思维,因此大家在开发之前,一定要知道所需要实现的功能,将思维理清,代码写正确,一个项目就完成了。最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。

推荐阅读:

JAVA接口怎么接收集合参数?Java接口怎么标记?

java怎么在窗口中添加计时器?java实现计时器功能

qt怎么获取主窗口对象?qt主窗口如何使用?