- /*
- *程序的版权和版本声明部分:
- *程序的版权和版本声明部分:
- *Copyright(c)2013,烟台大学计算机学院学生
- *All rights reserved.
- *文件名称:
- *作者:尚振伟
- *完成日期:2014年11月11日
- *版本号:v0.1
- *对任务及求解方法的描述部分:
- *输入描述:无
- *问题描述:具体要求:
- 建立Bank类为抽象类。
- 方法:
- 抽象方法 computerIncome() //计算存款利息
- 非抽象方法 saveMoney() //存钱
- 非抽象方法 drawMoney() //取钱
- 建立接口 Commission
- 方法:
- 抽象方法 computerComm() //计算提成
- 建立异常类 InsufficientFundsException
- class InsufficientFundsException extends Exception
- 处理取钱不能超出余额的异常。
- 具体要求:
- 建立具体银行类,为Bank类的子类。
- 方法:
- 实现Bank类中的抽象方法,计算存款利息
- 实现接口中的抽象方法,计算存款提成
- 实现取钱操作时做异常处理。
- 建立测试类测试实验结果。
- *程序输入:
- *程序输出:
- *问题分析:
- *算法设计:
- *我的程序:
- */
- public abstract class Bank {
- protected int savedMoney;
- protected int year;
- protected double income;
- protected double inRate;
- public void income(int in,int out) throws InsufficientFundsException{
- if((in-out)<0){
- throw new InsufficientFundsException(in,out);
- }
- int netIncome=in-out;
- System.out.println("本次取款"+out+"成功,账户余额为:"+netIncome);
- }
- protected int getSavedMoney() {
- return savedMoney;
- }
- public void setSavedMoney(int savedMoney) {
- this.savedMoney = savedMoney;
- }
- public int getYear() {
- return year;
- }
- public void setYear(int year) {
- this.year = year;
- }
- public double getIncome() {
- return income;
- }
- public void setIncome(double income) {
- this.income = income;
- }
- public double getInRate() {
- return inRate;
- }
- public void setInDate(double inRate) {
- this.inRate = inRate;
- }
- public Bank(){
- }
- public Bank(int savedMoney,int year,double inRate){
- this.savedMoney=savedMoney;
- this.year=year;
- this.inRate=inRate;
- }
- public void setRate(double in){
- this.inRate=in;
- }
- public abstract double computerIncome();
- }
- public class Chinabank extends Bank {
- private double year;
- private double inRate1;
- public void setRate1(double in1){
- this.inRate1=in1;
- }
- public Chinabank(){
- }
- public Chinabank(int savedMoney,double year,double inRate,double inRate1){
- this.savedMoney=savedMoney;
- this.year=year;
- this.inRate=inRate;
- this.inRate1=inRate1;
- }
- public double computerIncome(){
- income=(int)this.year*this.getInRate()*this.getSavedMoney()+(year-(int)year)*inRate1*this.getSavedMoney();
- return income;
- }
- }
- public class Rmbank extends Bank implements Commision{
- private double year;
- private double inRate1;
- public Rmbank(){
- }
- public Rmbank(int savedMoney,double year,double inRate,double inRate1){
- this.savedMoney=savedMoney;
- this.year=year;
- this.inRate=inRate;
- this.inRate1=inRate1;
- }
- public int calculate(){
- int tc;
- if(this.getSavedMoney()<=1000){
- tc=0;
- }
- else if(this.getSavedMoney()>1000||this.getSavedMoney()<=1000){
- tc=100;
- }
- else{
- tc=500;
- }
- return tc;
- }
- @Override
- public double computerIncome() {
- // TODO Auto-generated method stub
- income=(int)this.year*this.getInRate()*this.getSavedMoney()+(year-(int)year)*inRate1*this.getSavedMoney()+this.calculate();
- return income;
- }
- }
- public interface Commision {
- public abstract int calculate();
- }
- public class InsufficientFundsException extends Exception {
- String message;
- public InsufficientFundsException(int money,int qum)
- {
- message="余额不足,取款失败";
- }
- public String warnMess(){
- return message;
- }
- }
- import java.util.Scanner;
- public class Test {
- public static void main(String[] args) {
- Bank aaa=new Chinabank(2000,2.5,0.02,0.01);
- System.out.println("在中国银行的存款利息为:"+aaa.computerIncome());
- Bank bbb=new Rmbank(2000,2.5,0.02,0.01);
- Commision ccc;
- ccc=new Rmbank();
- System.out.println("在人民银行的存款利息加提成为:"+bbb.computerIncome()+ccc.calculate());
- Scanner in=new Scanner(System.in);
- System.out.println("请输入要取得金额");
- int money=in.nextInt();
- try{
- aaa.income(aaa.savedMoney,money);
- }
- catch(InsufficientFundsException e){
- System.out.println(e.warnMess());
- }
- }
- }
结果展示:
心得体会:第一次使用异常类。