06.面向对象编程(4)实战_加油站支付小模块

考察知识点:面向对象编程中的继承、多态

需求:

  • 某加油站为了吸引更多的车主,推出了如下活动,车主可以办理金卡和银卡。
  • 卡片信息包括:车牌号码、车主姓名、电话号码、卡片余额。
  • 金卡办理时入存金额必须>=5000元,银卡办理时预存金额必须>=2000元,金卡支付时享受8折优惠,银卡支付时享受9折优惠,金卡消费满200元可以提供打印免费洗车票的服务。
  • 需求:请使用面向对象编程,完成该加油站支付机的存款和消费程序。
package nuyoah.demo;

import java.util.Scanner;

/**
 * @Project_Name: Payment
 * @Author: Natural Pride
 * @Date: 2025/3/16 21:59
 * @Description: TODO
 */

public class Test {
    public static void main(String[] args) {
        //目标:加油支付功能实战
        //1、创建卡片类,以便创建金卡或者银卡对象,封装车主的数据。

        //2、定义一个卡片父类:Card,定义金卡和银卡的共同属性和方法。
        //3、定义一个金卡类,继承CaPd类:金卡必须重写消费方法(8折优惠),独有功能打印系车票。
        //4、办一张金卡:创建金卡对象。交给一个独立的业务(支付机)存款,消费。
        GoldCard goldCard = new GoldCard("粤A12345", "张三", 123456789, 5000);
        pay(goldCard);
        //4、办一张银卡:创建银卡对象。交给一个独立的业务(支付机)存款,消费。
        SilverCard silverCard = new SilverCard("粤A12346", "李四", 123456789, 1000);
        pay(silverCard);
    }

    //支付机
    public static void pay(Card card){
        System.out.println("欢迎使用支付机,请刷卡:");
        System.out.println("请输入消费金额:");
        Scanner sc=new Scanner(System.in);
        double money=sc.nextDouble();
        card.consume(money);


    }
}
package nuyoah.demo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Scanner;

/**
 * @Project_Name: Card
 * @Author: Natural Pride
 * @Date: 2025/3/16 22:04
 * @Description: TODO 卡片父类
 * lombok技术可以实现为类自动添加getter setter方法无参数构造器,toString方法等
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Card {
    //车牌号
    private String cardId;
    //姓名
    private String name;
    //电话
    private int phone;
    //余额
    private double money;

    //预存金额
    public void saveMoney(double money){
        this.money+=money;
    }

    //消费方法
    public void consume(double money){
        this.money-=money;
    }

}
public class GoldCard extends Card {
    public GoldCard(String cardId, String name, int phone, double money) {
        super(cardId, name, phone, money);

    }

    @Override
    public void consume(double money) {
        System.out.println("使用金卡支付" + money + "元");
        System.out.println("优惠后价格为:" + money * 0.8);

        if (getMoney() < money * 0.8) {
            System.out.println("您当前余额为:" + getMoney() + "元,请充值");
            return;
        }
        //更新余额
        setMoney(getMoney() - money * 0.8);
        System.out.println("支付成功,当前余额为:" + getMoney() + "元");
        if (money * 0.8 > 200) {
            System.out.println("您本次消费" + money * 0.8 + "元,赠送您一张洗车券");
        } else {
            System.out.println("您本次消费" + money * 0.8 + "元,没有任何优惠券");
        }
    }

}
public class SilverCard extends Card{
    public SilverCard(String cardId, String name, int phone, double money) {
        super(cardId, name, phone, money);

    }

    @Override
    public void consume(double money) {
        System.out.println("使用银卡支付" + money + "元");
        System.out.println("优惠后价格为:" + money * 0.9);

        if (getMoney() < money * 0.9) {
            System.out.println("您当前余额为:" + getMoney() + "元,请充值");
            return;
        }
        //更新余额
        setMoney(getMoney() - money * 0.9);
        System.out.println("支付成功,当前余额为:" + getMoney() + "元");

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值