使用继承计算定期存款和循环存款利息的 Java 程序


继承 是一种允许我们访问一个类属性和行为到另一个类的概念。其方法和成员变量被继承的类称为超类或父类,继承这些方法和成员变量的类称为子类或派生类。在 Java 中,我们使用 extends 关键字来继承一个类。

问题陈述

创建一个 Java 程序,使用继承计算定期存款 (FD) 和循环存款 (RD) 的利息。该程序应提示用户在 FD 和 RD 之间进行选择,输入金额和期限,并根据账户持有人的年龄计算利息。

在本文中,我们将讨论一个使用继承计算 FD 和 RD 利息的 Java 程序。首先,在您本地机器的 IDE 中创建以下四个 Java 文件:

  • Acnt.java - 此文件将包含一个抽象类“Acnt”来存储账户详细信息,如利率和金额。它还将包含一个抽象方法“calcIntrst”,该方法带有一个参数“amnt”来计算利率。

  • FDacnt.java - 它将计算定期存款 (FD) 的利率。“FDacnt”类将继承“Acnt”类并覆盖“calcIntrst”方法。

  • RDacnt.java - 它将计算循环存款 (RD) 的利率。“RDacnt”类将继承“Acnt”类并覆盖“calcIntrst”方法。

  • Intrst.java - 此文件将包含 main 方法。

使用继承计算定期存款和循环存款利息的 Java 程序

考虑以下用于实现继承以计算 FD 和 RD 利息的不同 Java 文件和类。

Acnt.java

public abstract class Acnt{
    double intrstRate;
    double amnt; 
    abstract double calcIntrst(double amnt);
}

FDacnt.java

import java.util.*;
public class FDacnt extends Acnt {
   double FDintrstRate;
   double FDAmnt;
   int period;
   int age;
   double Gen, SenCitizen;
   Scanner input = new Scanner(System.in);
   @Override
   double calcIntrst(double amnt){
      this.FDAmnt = amnt;
      System.out.println("Enter your FD days");
      period = input.nextInt();
      System.out.println("Enter the age of account holder ");
      age = input.nextInt();
      if (amnt < 10000000) {
         if (period >= 7 && period <= 14) {
            Gen = 0.0450;
            SenCitizen = 0.0500;
         } else if (period >= 15 && period <= 29) {
            Gen = 0.0470;
            SenCitizen = 0.0525;
         } else if (period >= 30 && period <= 45) {
            Gen = 0.0550;
            SenCitizen = 0.0600;
         } else if (period >= 45 && period <= 60) {
            Gen = 0.0700;
            SenCitizen = 0.0750;
         } else if (period >= 61 && period <= 184) {
            Gen = 0.0750;
            SenCitizen = 0.0800;
         } else if (period >= 185 && period <= 365) {
            Gen = 0.0800;
            SenCitizen = 0.0850;
         }
         FDintrstRate = (age < 50) ? Gen : SenCitizen;
      } else {
         if (period >= 7 && period <= 14) {
            intrstRate = 0.065;
         } else if (period >= 15 && period <= 29) {
            intrstRate = 0.0675;
         } else if (period >= 30 && period <= 45) {
            intrstRate = 0.00675;
         } else if (period >= 45 && period <= 60) {
            intrstRate = 0.080;
         } else if (period >= 61 && period <= 184) {
            intrstRate = 0.0850;
         } else if (period >= 185 && period <= 365) {
            intrstRate = 0.10;
         }
      }
      return FDAmnt * FDintrstRate;
   }
}

RDacnt.java

import java.util.*;
public class RDacnt extends Acnt{
   double RDIntrstRate;
   double RDamnt;
   int periods;
   double monthlyAmnt;
   double Gen, SenCitizen;
   Scanner input = new Scanner(System.in);
   @Override
   double calcIntrst(double amnt){
      this.RDamnt = amnt;
      System.out.println("Enter your RD months");
      periods =input.nextInt();
      System.out.println("Enter the age of account holder");
      int age =input.nextInt();
      if (periods >= 0 && periods <= 6) {
         Gen = .0750;
         SenCitizen = 0.080;
      } else if (periods >= 7 && periods <= 9) {
         Gen = .0775;
         SenCitizen = 0.0825;
      } else if (periods >= 10 && periods <= 12) {
         Gen = .0800;
         SenCitizen = 0.0850;
      } else if (periods >= 13 && periods <= 15) {
         Gen = .0825;
         SenCitizen = 0.0875;
      } else if (periods >= 16 && periods <= 18) {
         Gen = .0850;
         SenCitizen = 0.0900;
      } else if (periods >= 22) {
         Gen = .0875;
         SenCitizen = 0.0925;
      }
      RDIntrstRate = (age < 50) ? Gen : SenCitizen;
      return RDamnt * RDIntrstRate;
   }
}

Intrst.java

import java.util.*;
public class Intrst{
   public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      System.out.println("Choose from the Options: " + "\n1." + " FD Interest" + " \n2." + " RD Interest"
      + "\n3." + " Exit");
      int choice = sc.nextInt();
      switch (choice){
         case 1:
         FDacnt fds = new FDacnt();
         System.out.println("Enter your FD Amount");
         double fAmnt = sc.nextDouble();
         System.out.println("Interest gained on your FD Amount is: $ " + fds.calcIntrst(fAmnt));
         break;
         case 2:
         RDacnt rds = new RDacnt();
         System.out.println("Enter your RD amount");
         double RAmnt = sc.nextDouble();
         System.out.println("Interest gained on your RD Amount is: $ " + rds.calcIntrst(RAmnt));
         break;
         default:
         System.out.println("Choose correct choice");
      }
   }
}

要编译此代码,请键入命令:javac Intrst.java 现在要运行:Java Intrst

输出

Choose from the Options: 
1. FD Interest
2. RD Interest
3. Exit
1
Enter your FD Amount
56000
Enter your FD days
325
Enter the age of account holder 
32
Interest gained on your FD Amount is: $ 4480.0

以上程序是一个菜单驱动的程序。当我们执行此程序时,屏幕上将显示三个选项。选择 1 计算 FD 的利率,选择 2 计算 RD 的利率。

代码解释

该程序使用继承创建类层次结构。父类 Acnt 有两个子类 FDacntRDacnt。每个子类分别计算 FD 和 RD 的利息。以下是其工作原理:用户在 FD 和 RD 之间进行选择。如果选择 FD,则程序会询问金额和期限,并根据账户持有人的年龄计算利息。如果选择 RD,则程序会询问金额和期限,并根据账户持有人的年龄计算利息。利息的计算使用普通公民和老年公民的不同利率。该程序使用 switch 语句在不同选项之间导航。

结论

我们使用了层次继承的概念来计算 FD 和 RD 的利息。Acnt 类被其两个子类 FDacntRDacnt 继承。

更新于: 2024-07-23

677 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.