加油站简单支付程序操作,创建test类(程序入口)、父类card、金卡类、银卡类。
一、实现原理
1.创建卡片类,创建金卡用户和银卡用户,封装车主数据
2.定义卡片父类,定义金卡和银卡的共有属性和方法
3.定义金卡类,继承Card类,封装金卡的特有属性,金卡8折优惠,金卡充值满200送洗车票
4.定义银卡类,继承Card类,封装银卡的特有属性,银卡9折优惠
5.办一张金卡或者银卡,创建金卡或者银卡对象,交给独立业务(支付机)完成处理,存款,消费
二、代码
1.test类
package com.venturego;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//加油站简单支付程序
//1.创建卡片类,创建金卡用户和银卡用户,封装车主数据
//2.定义卡片父类,定义金卡和银卡的共有属性和方法
//3.定义金卡类,继承Card类,封装金卡的特有属性,金卡8折优惠,金卡充值满200送洗车票
//4.定义银卡类,继承Card类,封装银卡的特有属性,银卡9折优惠
//5.办一张金卡或者银卡,创建金卡或者银卡对象,交给独立业务(支付机)完成处理,存款,消费
pay(getCard());
}
//支付机,用一个方法来刷卡
public static void pay(Card c) {
System.out.println("欢迎您,请刷卡,并输入当前消费的金额:");
Scanner sc = new Scanner(System.in);
Double money = sc.nextDouble();
c.consume(money);
}
//根据用户输入1或者2,判断是金卡还是银卡用户
public static Card getCard() {
System.out.println("请输入1代表金卡用户,2代表银卡用户");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
if (i == 1) {
return new GoldCard("川Y66t86", "赵涛", "18398914173", 5000.0);
} else {
return new SliverCard("渝A66666", "张三", "19317324168", 2000.0);
}
}
}
2.父类Card
package com.venturego;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Card {
private String cardId;//车牌号码
private String name;
private String phone;
private Double money;
//预存金额
public void deposit(Double money){
this.money+=money;
}
//消费金额
public void consume(Double money){
this.money-=money;
}
}
3.金卡类GoldCard
package com.venturego;
//金卡重写消费金额方法,打8折
public class GoldCard extends Card{
public GoldCard(String card, String name, String phone, Double money) {
super(card, name, phone, money);
}
@Override
public void consume(Double money) {
System.out.println("您当前金卡消费金额:" + money+",优惠后为"+money * 0.8);
if (getMoney() < money*0.8){
System.out.println("很抱歉,您当前余额为"+getMoney()+",您的卡余额不足。");
return;
}
setMoney(getMoney() - money * 0.8);
System.out.println("您当前金卡余额"+getMoney());
//消费满200,打印洗车票
if (money >= 200){
printTicket();
}else {
System.out.println("您当前消费不满200,不能免费洗车。");
}
}
//打印洗车票
public void printTicket(){
System.out.println("您消费已满200,请领取并打印洗车票。");
}
}
4.银卡类SliverCard
package com.venturego;
public class SliverCard extends Card{
public SliverCard(String card, String name, String phone, Double money) {
super(card, name, phone, money);
}
@Override
public void consume(Double money) {
System.out.println("您当前银卡消费金额:" + money+",优惠后为"+money * 0.9);
if (getMoney() < money*0.9){
System.out.println("很抱歉,您当前余额为"+getMoney()+",您的卡余额不足。");
return;
}
setMoney(getMoney() - money * 0.9);
System.out.println("您当前银卡余额"+getMoney());
}
}
三、运行
选择金卡用户,输入1
调用消费方法,输入200元,完成消费,并返回结果