作業要求:
模擬計算銀行存款和取款操作,計算存款利息和存款提成。
具體要求:
建立抽象類:Bank
成員變量:
沒有
抽象方法:
public double computerIncome( ) //計算存款利息
利息=年數*利率*存款
非抽象方法:
2個方法:查看當前利率(定期,活期)
建立接口 : Attachable
接口中只有1個抽象方法:
double computerAdditional() //計算存款提成
建立異常處理類:InsufficientFundsException
class InsufficientFundsException extends Exception
處理取錢不能超出餘額的異常。
建立2 個具體銀行子類,爲Bank類的子類(如中國銀行ChinaBank和煙臺銀行YantaiBank),具體計算存款利率,實現取錢利息計算和存款提成計算。
建立子類的構造函數(參數爲銀行的名字)
繼承父類實現其抽象方法,計算取款利息。
實現接口,計算存款提成。
具體實現算法請用註釋標明。(如,5萬元以下給予1%提成,5萬元以上給予2%提成,僅作參考)
賬戶類同前。
建立測試類,測試實驗結果。
代碼:
Bank.java
public abstract class Bank
{
public abstract double computerIncome();
public double getTRate(){
return 0;
}
public double getInRate(){
return 0;
}
}<span style="font-weight: bold;">
</span>
Attachable.java
public interface Attachable
{
double computerAdditional();
}
InsufficientFundsException.java
public class InsufficientFundsException extends Exception
{
String message;
public InsufficientFundsException(double m){
message = "賬戶餘額不足"+m+"請重新輸入";
}
public String toString(){
return message;
}
}
YantaiBank.javapublic class YantaiBank extends Bank implements Attachable
{
private String name;
private double savedYear;
private double savedMoney;
public YantaiBank(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setSavedYear(double year){
savedYear = year;
}
public void setSavedMoney(double money){
savedMoney = money;
}
public double getTRate(){
return 0.01;
}
public double getInRate(){
return 0.00003;
}
public double computerAdditional(){
if(savedMoney < 30000){
return savedMoney*0.01;
}
else if(savedMoney >= 30000 && savedMoney < 60000){
return savedMoney*0.02;
}
else {
return savedMoney*0.03;
}
}
public double computerIncome(){
double income;
income = (int)savedYear*getTRate()*savedMoney+(savedYear-(int)savedYear)*365*getInRate()*savedMoney;
return income;
}
}
Account.java
import java.util.*;
public class Account
{
private String name;
private double money;
private Bank cbank;
private double year;
public Account(String name){
this.name = name;
money = 0;
}
public double getYear(){
return year;
}
public double getMoney(){
return money;
}
public void setBank(Bank cbank){
this.cbank = cbank;
}
public void saveMoney() {
double temp = money;
System.out.println("歡迎"+name+"辦理存款業務!");
Scanner reader = new Scanner(System.in);
System.out.println("請輸入存款金額:");
money = reader.nextDouble();
System.out.println("請輸入存期:");
year = reader.nextDouble();
money = money + temp;
System.out.println(money+"元已存入!賬戶餘額:"+money);
}
public void takeMoney() throws InsufficientFundsException{
double take;
Scanner reader = new Scanner(System.in);
System.out.println("歡迎"+name+"辦理取款業務!您的餘額爲"+(money + cbank.computerIncome()));
System.out.println("請輸入取款金額:");
take = reader.nextDouble();
if(take > money+ cbank.computerIncome()){
throw new InsufficientFundsException(take);
}
else{
money = money + cbank.computerIncome() - take;
System.out.println("賬戶餘額:"+money);
}
}
}
Main.java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Account zhangsan = new Account("zhangsan");
YantaiBank YBank = new YantaiBank("YantaiBank");
zhangsan.saveMoney();
YBank.setSavedYear(zhangsan.getYear());
YBank.setSavedMoney(zhangsan.getMoney());
System.out.println(YBank.getName()+"提成:"+YBank.computerAdditional());
zhangsan.setBank(YBank);
while(true){
try{
zhangsan.takeMoney();
break;
}
catch(InsufficientFundsException e){
System.out.println(e.toString());
}
}
}
}
運行結果