Java.作業5 銀行綜合

作業要求:

模擬計算銀行存款和取款操作,計算存款利息和存款提成。
具體要求:
建立抽象類: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.java
public 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());
				}
			}
			
			
	}
}

運行結果




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章