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());
				}
			}
			
			
	}
}

运行结果




  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值