www.r-krell.de
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr

Willkommen/Übersicht  >  Informatik  >   Informatik mit Java, Teil c) > Java-AWT-Demo > Geldautomat


Automat mit Geldrückgabe

Links oben erscheint im Extra-Fenster der Geldautomat.
Evtl. wird das Appletfenster auch durch diese Seite verdeckt und muss erst
(durch Klick auf den Applet-Eintrag in der Task-Leiste) nach vorne geholt werden.

Bitte Beträge mit Punkt (statt Komma) eingeben und den 'Rückgabe'-Knopf anklicken!

Achtung: Java-Applets müssen zugelassen sein. Erscheint in Ihrem Internet-Browser
oben eine gelbe Leiste, bitte drauf klicken und geblockte Inhalte zulassen...!



Applet geht nicht oder wird blockiert? - Gründe, Abhilfe und alle Downloads (in neuem Tab) - nur Geldrueckgabe-Automat (r-krell.de).jar (5 kB) herunter laden


Nachfolgend der Quelltext, der auf drei Dateien verteilt, wobei für die mittlere Datei vier Alternativen genannt sind:


zum Seitenanfang / zum Seitenende

// Automat mit Geldrückgabe
// Hier: Oberfläche
// Java jdk 1.1.18 -- Krell, 28.1.01

import java.awt.*;
import java.awt.event.*;

public class Geldautomat_GUI extends Frame
{
  Label lbZuza = 
new Label ("zu zahlen :");
  Label lbGege = 
new Label ("gegeben :");
  TextField tfZuza = 
new TextField ("",10);
  TextField tfGege = 
new TextField ("",10);
  TextArea taAusgabe = 
new TextArea ("",10,25);
  Button btRückgabe = 
new Button ("Rückgabe");
  Label lbQuelle = 
new Label (" www.r-krell.de > Informatik > Java");

  
//Einbinden eines Rechenwerks (egal, welche Nummer)
  Geldautomat_Rechnung4 rechner = new Geldautomat_Rechnung4();
  
  
public void richteFensterEin()
  {
    
//Funktion des Schließknopfes ergänzen
    addWindowListener(
    
  new WindowAdapter()
      {
      
   public void windowClosing (WindowEvent e)
        {
          setVisible (
false);
          dispose ();
          System.exit (0);
        }
      }
    );
    setTitle(
"Geldautomat");
    setSize (210,310);
    setLayout (
new FlowLayout());
  } 

  
public void richteKnopfEin()
  {
    btRückgabe.addActionListener(
      
new ActionListener()
      { 
        
public void actionPerformed (ActionEvent e)
        {
          
//Nachfolgender Text kommt immer, wird aber bei
          //richtigen Zahlen überschrieben
          taAusgabe.setText("Falsche Eingabe(n)!");

          
//Umwandlung des Textes in (Komma-)Zahlen
          Double gegeObj = Double.valueOf(tfGege.getText());
          Double zuzaObj = Double.valueOf(tfZuza.getText());
          
double gege    = gegeObj.doubleValue();
          
double zuza    = zuzaObj.doubleValue();

          
//Ausgabe (ersetzt "Falsche Eingabe")
          if (gege < zuza)
          {
            tfGege.setText(
"");
            taAusgabe.setText(
""+gege+"\nzurück, da zu wenig."
             +"\nMindestens "+zuza+" geben!");
          }
          
else
          {   
            taAusgabe.setText(
"Sie erhalten zurück:\n"+
              rechner.gibZurück(gege-zuza)+
"======"); 
          }  
        }
      }          
    );
  }

  
public void führeAus()
  {
    richteFensterEin();
    richteKnopfEin();
    add (lbZuza);
    add (tfZuza);
    add (lbGege);
    add (tfGege);
    add (btRückgabe);
    add (taAusgabe);
    add (lbQuelle);
    setVisible(
true);
  }
}




zum Seitenanfang / zum Seitenende

public class Geldautomat_Rechnung1
// 1. Version: 5 While-Schleifen; noch kein Rundungsausgleich
{
  
public String gibZurück (double zurück)
  
//Hinweis: Bei manchen Beträgen -- z.B. zu zahlen 4.80,
  //gegeben 15.0, fehlt ein Groschen bei der Rückgabe wegen 
  //Ungenauigkeit bei der Dualdarstellung von dezimal 0.1
  //auch 24.80/25 oder 4/5.6
  {     
     String rückgabe = 
"";     
 
     
while(zurück>=5)
     {
       rückgabe = rückgabe + 
"5,-\n";
       zurück = zurück-5;
     }
   
     
while(zurück>=2)
     {
       rückgabe = rückgabe + 
"2,-\n";
       zurück = zurück-2;
     }
      
     
while(zurück>=1)
     {
       rückgabe = rückgabe + 
"1,-\n";
       zurück = zurück-1;
     }
      
     
while(zurück>=0.50)
     {
       rückgabe = rückgabe + 
"-,50\n";
       zurück = zurück-0.50;
     }
        
     
while(zurück>=0.10)
     {
        rückgabe = rückgabe + 
"-,10\n";
        zurück = zurück-0.10;
     }
     
return (rückgabe);
  }

}




zum Seitenanfang / zum Seitenende

public class Geldautomat_Rechnung2
// 2. Version: 5 While-Schleifen; mit Rundungsausgleich
{
  
public String gibZurück (double zurück)
  
//Ohne Rundungsausgleich fehlt bei manchen Beträgen -- 
  //z.B. zu zahlen 4.80, gegeben 15.0, 
  //ein Groschen bei der Rückgabe wegen 
  //Ungenauigkeit bei der Dualdarstellung von dezimal 0.1
  //zum Ausgleich werden hier 0.0001 DM addiert.
  {     
     String rückgabe = 
"";     
 
     zurück = zurück + 0.0001; 
// Rundungsausgleich 
     while(zurück>=5)
     {
       rückgabe = rückgabe + 
"5,-\n";
       zurück = zurück-5;
     }
   
     
while(zurück>=2)
     {
       rückgabe = rückgabe + 
"2,-\n";
       zurück = zurück-2;
     }
      
     
while(zurück>=1)
     {
       rückgabe = rückgabe + 
"1,-\n";
       zurück = zurück-1;
     }
      
     
while(zurück>=0.50)
     {
       rückgabe = rückgabe + 
"-,50\n";
       zurück = zurück-0.50;
     }
        
     
while(zurück>=0.10)
     {
        rückgabe = rückgabe + 
"-,10\n";
        zurück = zurück-0.10;
     }
     
return (rückgabe);
  }

}




zum Seitenanfang / zum Seitenende

public class Geldautomat_Rechnung3
// 3. Version: 1 While-Schleife, 5x individuell aufgerufen;
// mit Rundungsausgleich
{
  
double nochZurück; 
  String bisherAusgezahlt;

  
void gibMünzsorte (double wert)
  
// gibt Münzen einer Sorte zurück
 {
   
while(nochZurück>=wert)
   {
     bisherAusgezahlt = bisherAusgezahlt + wert+
"0\n";
     nochZurück = nochZurück - wert;
   }
 }

  
public String gibZurück (double zurück)
  {     
    nochZurück = zurück + 0.0001; 
// Rundungsausgleich 
    bisherAusgezahlt = "";
    gibMünzsorte (5.0);
    gibMünzsorte (2.0);
    gibMünzsorte (1.0);
    gibMünzsorte (0.5);
    gibMünzsorte (0.1);
    
return (bisherAusgezahlt);
  }

}




zum Seitenanfang / zum Seitenende

public class Geldautomat_Rechnung4
// 4. Version: 1 While-Schleife, durch For-Schleife aufgerufen;
// Reihung nötig, da Münzwerte unterschiedliche Abstände haben
// und so mit dem Index statt mit dem Wert gearbeitet werden kann.

// Mit Rundungsausgleich
{
  
double nochZurück; 
  String bisherAusgezahlt;
  
double[] münze = { 5.0, 2.0, 1.0, 0.5, 0.1 };

  
void gibMünzsorte (double wert)
  
// gibt Münzen einer Sorte zurück
 {
   
while(nochZurück>=wert)
   {
     bisherAusgezahlt = bisherAusgezahlt + wert+
"0\n";
     nochZurück = nochZurück - wert;
   }
 }

  
public String gibZurück (double zurück)
  {     
    nochZurück = zurück + 0.0001; 
// Rundungsausgleich 
    bisherAusgezahlt = "";
    
for (int sorte=0; sorte < münze.length; sorte++)
    {
      gibMünzsorte (münze[sorte]);
    }
    
return (bisherAusgezahlt);
  }

}




zum Seitenanfang / zum Seitenende

public class Geldautomat_Start extends java.applet.Applet 
{
  
//Start als selbständige Application
  public static void main (String[] s) 
  {
    Geldautomat_GUI a;
    a = 
new Geldautomat_GUI();
    a.führeAus();
  }
  
  
//Start als Applet aus dem Web-Browser
  public void init()
  {
    Geldautomat_GUI a;
    a = 
new Geldautomat_GUI();
    a.führeAus();
  }
}    
    



zurück zur Seite „Informatik mit Java, Teil c)"


zum Anfang dieser Seite
Willkommen/Übersicht   -   Was ist neu?   -   Software   -   Mathematik   -   Physik   -   Informatik   -   Schule: Lessing-Gymnasium und -Berufskolleg   -   Fotovoltaik   -   & mehr   -   Kontakt: e-Mail,  News-Abo, Gästebuch, Impressum   -   Grußkarten, site map, Download und Suche

Diese Seite ist Teil des Webangebots http://www.r-krell.de. Sie können diese Seite per e-Mail weiter empfehlen (tell a friend).