Advertisement

java 银行卡支付_Java学习:用接口简单实现银行卡系统

阅读量:
e7385a69c6cd84fc484d18f496a9d02d.png

用前面所知案例,简单实现一个银行卡系统。涉及的Java知识有:

interface(接口),abstract(抽象修饰符),extends(继承),implements(接口的实现),@Override(重写)

案例具体要求:

要求实现银行卡系统的银联接口

银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上,增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。实现工商银行接口和农业银行接口,并进行测试。

代码如下:

package cn.oopinterface.atm;/** * 银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。 * @author yflad-F */publicinterfaceUnion{//检测密码方法, 密码为boolean类型publicabstractboolean checkPassword(int password);//取钱方法publicabstractboolean takeMoney(double money);//查询余额方法publicabstractdouble balance();}

package cn.oopinterface.atm;/** * 2. 工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。 * @author yflad-F */publicinterface ICBC extendsUnion{//在线支付publicabstractboolean onlinPay(double money);}

package cn.oopinterface.atm;/** * 3. 农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上, * 增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。 * @author yflad-F */publicinterface ABC extendsUnion{//电话费publicabstractboolean phonePay(String tellno,double money);//信用额度publicabstractboolean credit(double money);}

接口的实现

package cn.oopinterface.atm;/** * 工商银行的实现类 * @author yflad-F */publicclassICBCImplimplements ICBC{double money=2000;//卡里的本金@Overridepublicboolean checkPassword(int password){//检测密码方法if(password==123456){returntrue;}returnfalse;}@Overridepublicboolean takeMoney(double money){//取钱方法//取出来的钱应该小于等于本金if(this.money>=money){this.money-=money;returntrue;}returnfalse;}@Overridepublicdouble balance(){//查询余额方法return money;}@Overridepublicboolean onlinPay(double money){//在线支付// 支付的金额应该小于等于剩余的钱if(this.money>=money){this.money-=money;returntrue;}returnfalse;}}

package cn.oopinterface.atm;/** * 农业银行的实现类 * @author yflad-F */publicclassABCImplimplements ABC{double money =2000;@Overridepublicboolean checkPassword(int password){//检测密码方法if(password==123456){returntrue;}returnfalse;}@Overridepublicboolean takeMoney(double money){//取钱方法//取出来的钱应该小于等于本金if(this.money+2000>=money){this.money-=money;returntrue;}returnfalse;}@Overridepublicdouble balance(){//查询余额方法return money;}@Overridepublicboolean phonePay(String tellno,double money){//电话费if(this.money+2000>=money){this.money-=money;returntrue;}else{System.out.println("电话号码错误!请重新输入:");}returnfalse;}@Overridepublicboolean credit(double money){//信用额度if(this.money+2000>=money){this.money-=money;returntrue;}returnfalse;}}

测试

package cn.oopinterface.atm;importjava.util.Scanner;/** * 工商银行测试 * @author yflad-F */publicclassICBCTest{publicstaticvoid main(String[] args){ ICBC icbc =newICBCImpl();Scanner sc =newScanner(System.in);for(int i =1; i <=3; i++){System.out.println("请输入银行卡密码:");int pwd = sc.nextInt();if(icbc.checkPassword(pwd)){while(true){System.out.println("1.查询余额 2.取出金额 3.在线支付 4.退出系统");int type = sc.nextInt();if(type ==1){System.out.println("余额:"+icbc.balance()+" 元");}if(type ==2){System.out.println("请输入你要取出的金额:");double m=sc.nextDouble();if(icbc.takeMoney(m)){System.out.println("提现成功!");System.out.println("余额为:"+icbc.balance());}else{System.out.println("余额不足!");}}if(type ==3){System.out.println("请输入你要付款的金额:");double m=sc.nextDouble();if(icbc.onlinPay(m)){System.out.println("付款成功!");System.out.println("余额为:"+icbc.balance()+" 元");}else{System.out.println("余额不足!");}}if(type ==4){System.out.println("退出系统成功!");break;}}break;}else{if(i ==3){System.out.println("密码错误次数超过三次,卡已锁定!");break;}System.out.println("密码错误,请重新输入!");}}}}

package cn.oopinterface.atm;importjava.util.Scanner;/** * 农业银行测试 * @author yflad-F */publicclassABCTest{publicstaticvoid main(String[] args){ ABC abc =newABCImpl();Scanner sc =newScanner(System.in);for(int i =1; i <=3; i++){System.out.println("请输入银行卡密码:");int pwd = sc.nextInt();if(abc.checkPassword(pwd)){while(true){System.out.println("1.查询余额 2.取出金额 3.缴电话费 4.退出系统");int type = sc.nextInt();if(type ==1){System.out.println("余额:"+ abc.balance()+" 元");}if(type ==2){System.out.println("请输入你要取出的金额:");double m = sc.nextDouble();if(abc.takeMoney(m)){System.out.println("提现成功!");System.out.println("余额为:"+ abc.balance());}else{System.out.println("余额不足!");}}if(type ==3){System.out.println("请输入你要充值的号码:");String phone = sc.next();// 判断电话号码长度是否为11位if(phone.length()==11){// 进入到这说明可以充值System.out.println("请输入充值金额:");double money = sc.nextDouble();if(abc.phonePay(phone, money)){System.out.println("支付成功!");System.out.println("余额为:"+ abc.balance());}else{System.out.println("余额不足!");}break;}else{}System.out.println("电话号码错误,请重新缴费!");}if(type ==4){System.out.println("退出系统成功!");break;}}break;}else{if(i ==3){System.out.println("密码错误次数超过三次,卡已锁定!");break;}System.out.println("密码错误,请重新输入!");}}}}

全部评论 (0)

还没有任何评论哟~