信用卡购物积分

BusCard

import java.math.BigDecimal;

public class BusCard {
    /**
     * 账户余额
     */
    BigDecimal money;

    /**
     * 账户名
     */
    String name;

    public BusCard() {
        this.money = new BigDecimal(10000);
        this.name = "商务卡";
    }

    public BigDecimal getMoney() {
        return money;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void withdraw(BigDecimal newMoney) {
        this.money = this.money.subtract(newMoney).setScale(2, BigDecimal.ROUND_DOWN);
    }

    @Override
    public String toString() {
        return "[卡牌类型]" + name + ";" + "[剩余额度]" + money;
    }
}

PublicCard

import java.math.BigDecimal;

public class PublicCard extends BusCard{

    /**
     * 积分
     */
    Integer score;

    /**
     * 倍率
     */
    Integer multiple;

    public PublicCard() {
        this.money = new BigDecimal(10000);
        this.name = "普金卡";
        this.score = 0;
        this.multiple = 1;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    @Override
    public void withdraw(BigDecimal newMoney) {
        super.withdraw(newMoney);
        this.score += newMoney.setScale(0, BigDecimal.ROUND_UP).intValue() * multiple;
    }

    @Override
    public String toString() {
        return "[卡牌类型]" + name + ";" + "[剩余额度]" + money +"[积分]" + score;
    }
}

BlackCard

import java.math.BigDecimal;

public class BlackCard extends PublicCard{

    static final Integer a = Integer.MAX_VALUE;
    String[] rights = {};

    public BlackCard() {
        this.money = new BigDecimal(a.toString());
        this.name = "黑金卡";
        this.score = 0;
        this.multiple = 100;
        this.rights = new String[]{"机场贵宾厅", "境内接送机"};
    }

    public String[] getRights() {
        return rights;
    }

    @Override
    public void withdraw(BigDecimal newMoney) {
        super.withdraw(newMoney);
    }

    public String showArray(String[] s) {
        String str = "";
        for (int i = 0; i < s.length; i++) {
            str += s[i];
            if(i != s.length -1) {
                str += ",";
            }
        }
        return str;
    }

    @Override
    public String toString() {
        return "[卡牌类型]" + name + ";" + "[剩余额度]" + Double.valueOf(money.toString()) +"[积分]" + score  +"[权益]" +
                showArray(rights);
    }
}

User

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class User {
    List<BusCard> list = new ArrayList<>();

    public void pay(BusCard busCard, BigDecimal money) {
        busCard.withdraw(money);
    }

    public void addCard(BusCard busCard) {
        list.add(busCard);
    }
}

Main

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BusCard busCard = new BusCard();
        PublicCard publicCard = new PublicCard();
        BlackCard blackCard = new BlackCard();
        User user = new User();
        user.addCard(busCard);
        user.addCard(publicCard);
        user.addCard(blackCard);

        System.out.println(Integer.MAX_VALUE);
        System.out.println(publicCard.toString());
        user.pay(publicCard, new BigDecimal(500.5));
        System.out.println(publicCard.toString());

        System.out.println(busCard.toString());
        user.pay(busCard, new BigDecimal(888.88));
        System.out.println(busCard.toString());

        System.out.println(blackCard.toString());
        user.pay(blackCard, new BigDecimal(101111));
        System.out.println(blackCard.toString());



    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值