/*
 * Credit.java
 *
 */

import java.applet.*;       // Für die Klasse Applet
import java.awt.*;          // Für Graphics
import java.lang.*;
import java.io.*;
import java.math.*;
import java.awt.event.*;


public class Creditl extends Applet implements ActionListener
{
    TextField f_Darl,f_Zinssatz, f_LaufzJ, f_LaufzM, f_Annuitr, f_Rest, f_Rueckz;
    Button b_Darl, b_Laufz, b_Annuitr, b_Rest;
    Label l_Darl, l_Zinssatz, l_LaufzJ, l_LaufzM, l_Annuitr, l_Rest, l_Rueckz;
    
public void init() 
{
    setLayout(null);
    
    f_Darl = new TextField("0",10);
    f_Zinssatz = new TextField("0",10);
    f_LaufzJ = new TextField("0",5);
    f_LaufzM = new TextField("0",5);
    f_Annuitr = new TextField("0",10);
    f_Rest = new TextField("0",10);
    f_Rueckz = new TextField("0",10);

    l_Darl = new Label("Darlehenshoehe in Euro");
    l_Zinssatz = new Label("Zinssatz in %");
    l_LaufzJ = new Label("Laufzeit in Jahren");
    l_LaufzM = new Label("und Monaten");
    l_Annuitr = new Label("Annuitaetsrate in Euro");
    l_Rest = new Label("Restschuld in Euro");
    l_Rueckz = new Label("Rueckzahlungsbetrag in Euro");

    b_Darl = new Button("Darlehenshoehe"); 
    b_Laufz = new Button("Laufzeit"); 
    b_Annuitr = new Button("Annuitaetsrate");
    b_Rest = new Button("Restschuld");

    l_Darl.setBounds(10,10,250,30);
    f_Darl.setBounds(270,10,100,30);

    l_Zinssatz.setBounds(10,50,250,30);
    f_Zinssatz.setBounds(270,50,100,30);

    l_LaufzJ.setBounds(10,90,250,30);
    f_LaufzJ.setBounds(270,90,100,30);

    l_LaufzM.setBounds(10,125,250,30);
    f_LaufzM.setBounds(270,125,100,30);

    l_Annuitr.setBounds(10,165,250,30);
    f_Annuitr.setBounds(270,165,100,30);

    l_Rest.setBounds(10,210,250,30);
    f_Rest.setBounds(270,210,100,30);

    l_Rueckz.setBounds(10,250,250,30);
    f_Rueckz.setBounds(270,250,100,30);

    b_Darl.setBounds(25,290,150,30);
    b_Laufz.setBounds(210,290,150,30);
    b_Annuitr.setBounds(25,330,150,30);
    b_Rest.setBounds(210,330,150,30);

    add(l_Darl);
    add(f_Darl);
    add(l_Zinssatz);
    add(f_Zinssatz);
    add(l_LaufzJ);
    add(f_LaufzJ);
    add(l_LaufzM);
    add(f_LaufzM);
    add(l_Annuitr);
    add(f_Annuitr);
    add(l_Rest);
    add(f_Rest);
    add(l_Rueckz);
    add(f_Rueckz);

    add(b_Darl);
    add(b_Laufz);
    add(b_Annuitr);
    add(b_Rest);

    b_Darl.addActionListener(this); 
    b_Laufz.addActionListener(this); 
    b_Annuitr.addActionListener(this); 
    b_Rest.addActionListener(this); 
}

public void actionPerformed(ActionEvent evt)  
{ 
   // Here we will ask what component called this method 
   if (evt.getSource() == b_Darl)
   {
      Darlehenshoehe();
   } // Actions of the wrongButton 
   else if (evt.getSource() == b_Laufz)
   {
      Laufzeit();
   }
   else if (evt.getSource() == b_Annuitr)
   {
      Annuitaetsrate();          
   }
   else if (evt.getSource() == b_Rest)
   {
      Restschuld();                
   }
}


private void Darlehenshoehe()
{
   float k0; // Darlehenshöhe
   float q; //Zinssatz
   float q2, q1;
   float nJ; // Laufzeit Jahr
   float nM; //Laufzeit in Monate
   float n;
   float A; //Annuitätsrate
   float Rz;
               
   q1 = Float.valueOf(f_Zinssatz.getText()).floatValue();
   nJ= Float.valueOf(f_LaufzJ.getText()).floatValue();
   nM= Float.valueOf(f_LaufzM.getText()).floatValue();
   A = Float.valueOf(f_Annuitr.getText()).floatValue();
   n=nJ+(nM/12);
   q=1+q1/100;

   q2=(float)Math.pow (q,n);
                
   k0=A/(q2*((q-1)/(q2-1)));
   Rz=n*A;
   String Darl = String.valueOf(k0);
   f_Darl.setText(Darl);
   String Ruekz = String.valueOf(Rz);
   f_Rueckz.setText(Ruekz);
}

private void Restschuld()
{
   float k0; // Darlehenshöhe
   float q; //Zinssatz
   float q2,q1;
   float nJ; // Laufzeit Jahr
   float nM; //Laufzeit in Monate
   float n;
   float A; //Annuitätsrate
   float kn;
               
   q1 = Float.valueOf(f_Zinssatz.getText()).floatValue();
   k0 = Float.valueOf(f_Darl.getText()).floatValue();
   nJ= Float.valueOf(f_LaufzJ.getText()).floatValue();
   nM= Float.valueOf(f_LaufzM.getText()).floatValue();
   A = Float.valueOf(f_Annuitr.getText()).floatValue();
   n=nJ+(nM/12);
   q=1+q1/100;

   q2=(float)Math.pow (q,n);
                
   kn=(k0*q2)-A*((q2-1)/(q-1));
   String Rests = String.valueOf(kn);
   f_Rest.setText(Rests);
}

private void Laufzeit()
{
   float k0; // Darlehenshöhe
   float q,q1; //Zinssatz
   float n1, n2, n;
   float A; //Annuitätsrate
   float Rz;
               
   q1 = Float.valueOf(f_Zinssatz.getText()).floatValue();
   k0 = Float.valueOf(f_Darl.getText()).floatValue();
   A = Float.valueOf(f_Annuitr.getText()).floatValue();

   q=1+q1/100;
   n1 = (float)Math.log(A/(A-k0*(q-1)));
   n2 = (float)Math.log(q);
   n = n1 / n2;
   Rz=n*A;
                
   String Laufz = String.valueOf(n);
   f_LaufzJ.setText(Laufz);
   f_LaufzM.setText("0");
   String Ruekz = String.valueOf(Rz);
   f_Rueckz.setText(Ruekz);
}

private void Annuitaetsrate()
{
   float k0; // Darlehenshöhe
   float q, q2, q1; //Zinssatz
   float nJ, nM, n;
   float A; //Annuitätsrate
   float Rz;
               
   q1 = Float.valueOf(f_Zinssatz.getText()).floatValue();
   k0 = Float.valueOf(f_Darl.getText()).floatValue();
   nJ= Float.valueOf(f_LaufzJ.getText()).floatValue();
   nM= Float.valueOf(f_LaufzM.getText()).floatValue();
   n=nJ+(nM/12);
   q=1+q1/100;

   q2=(float)Math.pow (q,n);
   A=k0*q2*((q-1)/(q2-1));
   Rz=n*A;
               
   String Annu = String.valueOf(A);
   f_Annuitr.setText(Annu);
   String Ruekz = String.valueOf(Rz);
   f_Rueckz.setText(Ruekz);
}

}

