練習題:銀行卡練習儲蓄卡與信用卡(可透支和設定額度)
題目要求
(1)宣告一個銀行儲蓄卡類,
- 包含屬性:賬戶id,餘額balance
- 包含取款 public void withdraw(double money)
- 存款 pubic void save(double money)
- 獲取賬戶資訊: public String getInfo() 可以返回賬戶和餘額
(2) 宣告一個銀行信用卡類,繼承儲蓄卡類
- 增加屬性:可透支額度,最多可透支金額
- 重寫存款 public void withdraw(double money),可透支
- 存款 pubic void save(double money),需要恢復可透支額度
- 可修改額度
(1)宣告一個銀行儲蓄卡類
package practice.practice01bank;
/**
* @author lin's
* @program Java_SE
* @description 宣告一個銀行儲蓄卡類,
* 包含屬性:賬戶id,餘額balance
* 包含取款 public void withdraw(double money)
* 存款 pubic void save(double money)
* 獲取賬戶資訊: public String getInfo() 可以返回賬戶和餘額
*/
public class SavingsAccount {
private int id;
private double balance = 0;
public SavingsAccount() {
}
public SavingsAccount(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
/**
* @param money 取款的錢
*/
public void withdraw(double money) {
if (money <= balance)
balance -= money;
else
System.out.println("餘額不足");
}
/**
* @param money 存款的錢
*/
public void save(double money) {
balance += money;
}
/**
* @return 賬戶資訊
*/
public String getInfo() {
if (getId() == 0) {
return "沒有使用者資訊";
}
return "賬戶ID:" + id +
", 餘額:" + balance;
}
}
//測試類
/*
class test {
}*/
(2) 宣告一個銀行信用卡類,繼承儲蓄卡類
package practice.practice01bank;
/**
* @author lin's
* @program Java_SE
* @description (2)宣告一個銀行信用卡類,繼承儲蓄卡類
* 增加屬性:可透支額度,最多可透支金額
* 重寫存款 public void withdraw(double money),可透支
* 存款 pubic void save(double money),需要恢復可透支額度
* 可修改額度
*/
public class CreditCard extends SavingsAccount {
//額度
private double creditLine;
//最大透支金額
private double maxOverdraft = creditLine;
public CreditCard() {
}
public CreditCard(double creditLine) {
this.creditLine = creditLine;
this.maxOverdraft = creditLine;
}
public CreditCard(int id, double creditLine) {
super(id);
this.creditLine = creditLine;
this.maxOverdraft = creditLine;
}
public double getCreditLine() {
return creditLine;
}
//設定 額度 和 最大透支金額
public void setCreditLine(double creditLine) {
//計算形參額度和當前額度的差值
double flag = creditLine - this.creditLine;
//更改當前額度
this.creditLine = creditLine;
//更改當前最大透支額度
this.maxOverdraft += flag;
}
public double getMaxOverdraft() {
return maxOverdraft;
}
/**
* @return 信用卡客戶的資訊
*/
@Override
public String getInfo() {
if (getId() == 0)
return "沒有使用者資訊";
return "賬戶ID:" + getId() +
", 餘額:" + getBalance() +
", 最大透支金額" + maxOverdraft +
", 信用卡額度:" + creditLine;
}
//其他業務
/**
* 取款(可透支)
*
* @param money 取款的錢
*/
@Override
public void withdraw(double money) {
//取款小於餘額
if (money <= getBalance()) {
//設定餘額,最大透支額度不變
setBalance(getBalance() - money);
// System.out.println("當前餘額" + getBalance() + "最大透支額度" + maxOverdraft);
}
//取款大於餘額,小於餘額與最大透支金額之和
if (money > getBalance() && money < maxOverdraft + getBalance()) {
//重置最大透支額度
maxOverdraft -= money - getBalance();
//重置餘額為0
setBalance(0);
}
}
/**
* @param money 存款的錢
*/
@Override
public void save(double money) {
//存的錢大於透支的金額
if (money > creditLine - maxOverdraft) {
//設定餘額 = 當前餘額 + 存款 - 欠的錢
setBalance(getBalance() + money - (creditLine - maxOverdraft));
maxOverdraft = creditLine;
}
//存入的錢小於透支的金額
else
maxOverdraft += money;
}
}
相關文章
- 遊戲關卡設計如何入門和練習?遊戲
- iOS開發之OCR光學識別儲蓄卡以及信用卡iOS
- 【練習】銀行排號程式
- 新手練習:Python練習題目Python
- (前++) 和 (後++)的練習題
- mysql練習題MySql
- TypeScript 練習題TypeScript
- java練習題Java
- SQL 練習題SQL
- SQL練習題SQL
- 程式設計假期練習題--1程式設計
- 程式設計假期練習題--2程式設計
- 程式設計假期練習題--3程式設計
- 銀聯卡線上餘額查詢
- Python 練習題Python
- mysql面試練習題MySql面試
- 程式練習題(2)
- oracle sql練習題OracleSQL
- 陣列練習題陣列
- 富國銀行資料中心冒出濃煙 信用卡、ATM與網銀停止工作
- U7-11課綜合練習+12課階段測評練習——複習練習題目
- 高效獲取銀行卡髮卡行所在地資訊——利用銀行卡歸屬地查詢介面
- 程式設計練習程式設計
- 賣銀行卡網站網站
- 檢視、儲存過程以及許可權控制練習儲存過程
- 中國銀行信用卡兌換網站網站
- 新浪財經& 51信用卡:2018年信用卡行業報告(附下載)行業
- JAVA 基礎練習題Java
- java異常練習題Java
- Java Web概述-練習題JavaWeb
- python練習題解析Python
- linux練習題(二)Linux
- 3 月水題練習
- mysql函式練習題MySql函式
- 軟體工程練習題軟體工程
- 深度學習煉丹-超引數設定和網路訓練深度學習
- SparkSql與Redis綜合練習SparkSQLRedis
- MYSQL練習1: DQL查詢練習MySql