Java简单支付模块实例

加油站简单支付程序操作,创建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元,完成消费,并返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值