当前位置: 首页 > news >正文

Java零基础笔记09(Java编程核心:面向对象编程高级练习:支付模块)

加油站支付小模块

● 某加油站为了吸引更多的车主,推出了如下活动,车主可以办理金卡和银卡。

● 卡片信息包括:车牌号码、车主姓名、电话号码、卡片余额。

● 金卡办理时入存金额必须>=5000元,银卡办理时预存金额必须>=2000元,金卡支付时享受8折优惠,银卡支付时享受9折优惠,金卡消费满200元可以提供打印免费洗车票的服务。 ● 需求:请使用面向对象编程,完成该加油站支付机的存款和消费程序。

 card类

// lombok技术可以实现为类自动添加getter setter方法
@Data // @Data注解可以自动生成getter setter方法
@NoArgsConstructor
@AllArgsConstructor
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;}
}

金卡类

public class GoldCard extends Card{public GoldCard(String card, String name, String phone, double money) {super(card, name, phone, money);}@Overridepublic void consume(double money) {System.out.println("您当前消费:" + money);System.out.println("优惠后的价格:" + money * 0.8);// 更新金卡的账户余额。setMoney(getMoney() - money * 0.8);if(getMoney() < money * 0.8){System.out.println("您余额是:" + getMoney() + ",当前余额不足!请存钱!");return; // 干掉方法!}// 判断消费如果大于200,调用一个独有的功能,打印洗车票。if(money * 0.8 >= 200){printTicket();}else {System.out.println("您当前消费不满200,不能免费洗车!");}}// 打印洗车票。public void printTicket() {System.out.println("您消费了,请打印洗车票。");}
}

银卡类

public class SilverCard extends Card{public GoldCard(String card, String name, String phone, double money) {super(card, name, phone, money);}@Overridepublic 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);}
}

主程序

// 主程序
public static void main(String[] args) {// 目标:加油站支付小程序。// 1、创建卡片类,以便创建金卡或者银卡对象,封装车主的数据。// 2、定义一个卡片父类:Card,定义金卡和银卡的共同属性和方法。// 3、定义一个金卡类,继承Card类:金卡必须重写消费方法(8折优惠),独有功能打印洗车票。// 4、定义一个银卡类,继承Card类:银卡必须重写消费方法(9折优惠)// 5、办一张金卡:创建金卡对象。交给一个独立的业务(支付机)来完成:存款,消费。GoldCard goldCard = new GoldCard( "鄂A860MM", "dLei", "18665616520", 5000);pay(goldCard);// 6、办一张银卡:创建银卡对象。交给一个独立的业务(支付机)来完成:存款,消费。SilverCard silverCard = new SilverCard( "粤A888888",  "dLei",  "18984724244", 2000);pay(silverCard);
}// 支付机,用一个方法来刷卡,可能接收金卡,也可能接收银卡。
public static void pay(Card c){System.out.println("请刷卡, 请您输入当前消费的金额:");Scanner sc = new Scanner(System.in);double money = sc.nextDouble();c.consume(money);
}
http://www.dtcms.com/a/270887.html

相关文章:

  • 自动化运维工程师实操面试题
  • Jenkins 流水线配置
  • SQLite密码修改故障排查:RSA加密随机性导致的数据库匹配问题
  • ABAP 调用 ZCL_EXCEL_READER_2007举例
  • 虚幻引擎5 GAS开发俯视角RPG游戏 #5-8:倾听属性变化
  • 【视频观看系统】- 需求分析
  • 在overleaf中使用bibtex格式引用文献
  • 算法核心知识复习:排序算法对比 + 递归与递推深度解析(根据GESP四级题目总结)
  • Java SE 实现简单的图书管理系统(完善菜单操作)
  • Linux入门篇学习——Linux 编写第一个自己的命令
  • 深度学习 必然用到的 微积分知识
  • 基于pytorch.nn模块实现softmax回归模型
  • 我是如何实现在线客服系统的极致稳定性与安全性的
  • NumPy-广播机制深入理解
  • HashMap的put、get方法详解(附源码)
  • 冷冻电镜重构的GPU加速破局:从Relion到CryoSPARC的并行重构算法
  • 【前端】异步任务风控验证与轮询机制技术方案(通用笔记版)
  • 在Centos系统上如何有效删除文件和目录的指令汇总
  • 【C++ 】第二章——类(Class)学习笔记
  • SpringGateway网关增加https证书验证
  • 基于YOLO的足球检测Web应用:从训练到部署的完整实战
  • 《心灵沟通小平台,创新发展大未来》
  • brainstorm MEG处理流程
  • 2024 睿抗编程技能赛——省赛真题解析(含C++源码)
  • 图像匹配方向最新论文--CoMatch: Covisibility-Aware Transformer for Subpixel Matching
  • 【QT】文件、多线程、网络相关内容
  • 【基础算法】贪心 (四) :区间问题
  • spring-data-jpa + Alibaba Druid多数据源案例
  • (5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
  • OpenCV图片操作100例:从入门到精通指南(4)