Datumsänderungen

Status
Nicht offen für weitere Antworten.
M

Milo

Gast
hallo leute.

ich versuche grad ein programm zu schreiben, das ähnlich einem bankautomaten funktioniert.
nun will ich aber das datum der erzeugung und der letzen änderung des kontos einfügen.
könnte man die windows uhr einfügen, und wenn nicht:
wie code ich den teil zur bestimmung des tages, monats,jahres inklusive schaltjahr und wahrheit des datums.
nicht, dass jemand dann den 30.02.2006 eingibt.
danke schon im vorraus
 
M

Milo

Gast
Das ist der code der klasse daumt
Code:
public class Datum
{
        int tag;
        int monat;
        int jahr;
        
      
        void setDatum(int tag, int monat, int jahr)
        {
            this.tag=tag;
            this.monat=monat;
            this.jahr=jahr;
        }
        
        public int getTag()
        {
            return tag;
        }
        
        public int getMonat()
        {
            return monat;
        }
        
        public int getJahr()
        {
            return jahr;
        }
        
        
        
}


Das ist der code der klasse konto

Code:
public class Konto
{       
    
private int kontoNr;
static int letzeKonotNr;
private int kontostand;
private String Inhaber;
private String startInhaber;
private Datum eroeffnungsDatum;
private Datum letzeAenderung;
static int letzeKontoNr;
private int startKontostand;
    

    
    public Konto(int startKontostand, String startinhaber, int tag, int monat, int jahr)
    {
        kontoNr=letzeKontoNr+1;
        letzeKontoNr=kontoNr;
        kontostand=startKontostand;
        Inhaber=startInhaber;
        eroeffnungsDatum=new Datum();
        eroeffnungsDatum.setDatum(tag, monat, jahr);
        letzeAenderung=new Datum();
        letzeAenderung.setDatum(tag, monat, jahr);
    }
           
      /**
      * Methode einzahlen erhöht den Kontostand und ändert das Datum der letzen Änderung
      * 
      * @param  betrag1  Einzuzahlender Betrag
      * @param  betrag2  Einzuzahlender Betrag
      */
    public void einzahlen(int betrag,)
    {
        
     kontostand+=betrag;
        
    }
        
     /**
      * Methode abheben hebt Geld von einem Kontostand ab
      * 
      * @param  abheben1    Abzuhebender Betrag
      * @param  abheben2    Abzuhebender Betrag
      */   
    public void abheben(int abheben)
    {
      kontostand-=abheben;
      if(abheben>kontostand){ kontostand=0;}
        
    }
        /**
      * Methode überweisen überweist Beträge von einem Konto auf ein zweites 
      * 
      * @param  empfänger   Empfänger des zu überweisenden Betrages
      * @param  betrag      Der zu überweisende Betrag
      */ 
   
   void überweisen(Konto empfänger, int betrag)
   {
       abheben(betrag);
       empfänger.einzahlen(betrag);
   }
   
   public void datum()
   {
       eroeffnungsDatum=new Datum();
    }
}

wollte ich nur hinzufügen für den fall,dass meine erkärung unklar war!
 

Leroy42

Top Contributor
Wenn du deine eigene Klasse Datum nehmen mußt, ist ein Test der Korrektheit
eines Datums auch nicht weiter schlimm:

- Monat muß im Bereich [1..12]
- Tag muß im Bereich {31, X, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}[Monat-1] sein, wobei
x = (jahr%4==0 && (jahr%100 != 0 || jahr%400==0) ? 29 : 28

Der Test, of das Jahr überhaupt nach der Einführung des gregorianischen Kalenders liegt,
kannst du die wohl schenken.

Was soll passieren, wenn ein falsches Datum eingegeben wurde?
Eine Exception bei setDatum? Ein Hinweis wo auch immer (Konsole, Dialog)?
 
M

Milo

Gast
Danke für die hilfe.
Habe aber eher,das problem den quellcode dazu zu schreiben.
und außerdem weiß ich nicht was ich noch beim quellcode bei der konto-klasse dazuschreiben muss.
 
M

Milo

Gast
So, teilweise geschafft.
Jetz hab ich aber noch ein problem.
Ich möchte die Tages-Differenz zwischen der Variable "letzeaenderung" und "eroeffnungsdatum" ausrechnen, und damit einen Zinssatz berrechnen.
Die Zinsen will ich dann zum Gesamtkapital dazurechen.



Klasse Datum:


Code:
public class Datum
{
        int tag;
        int monat;
        int jahr;
        
      
        void setDatum(int tag, int monat, int jahr)
        {
            this.tag=tag;
            this.monat=monat;
            this.jahr=jahr;
        }
        
        public int getTag()
        {
            return tag;
        }
        
        public int getMonat()
        {
            return monat;
        }
        
        public int getJahr()
        {
            return jahr;
        }
        

}

Klasse Konto:



Code:
public class Konto
{
private int kontoNr;            //Kontonummer des Inhabers
static int letzeKontoNr;        //Hilfvariable zur Sicherung der vorherigen Kontonummer
private int kontostand;         //Der Kontostand der Konten
private String Inhaber;         //Name des Kontobesitzers
private String startInhaber;    //Hilfsvariable
private Datum eroeffnungsDatum; //Datum der Kontoeröffnung
private Datum letzeAenderung;   //Datum der letzen Änderung am Konto
private int startKontostand;    //Anfangskontostand, sobald ein Konto eröffnet wird
boolean schaltjahr;             // true/false Variable für die erkennung eines Schaltjahres
int einzahlungsjahr;            //Variable für das Jahr der Kontoeröffnung
    

    
    public Konto(String startinhaber, int tag, int monat, int jahr)
    {
        if(richtigkeit(tag,monat,jahr)==true)//Überprüfung ob ein mögliches Datum eingegeben wurde
        {  
            eroeffnungsDatum=new Datum();
            eroeffnungsDatum.setDatum(tag, monat, jahr);
            letzeAenderung=new Datum();
            letzeAenderung.setDatum(tag,monat,jahr);
        }
        kontoNr=letzeKontoNr+1;
        letzeKontoNr=kontoNr;
        kontostand=startKontostand;
        Inhaber=startInhaber;
        einzahlungsjahr=jahr;
    }
           
      /**
      * Methode einzahlen erhöht den Kontostand und ändert das Datum der letzen Änderung
      * 
      * @param  betrag  Einzuzahlender Betrag
      * @param  day     Tag der Einzahlung
      * @param  month   Monat der Einzahlung
      * @param  year    Jahr der Einzahlung
      */
    public void einzahlen(int betrag,int day,int month,int year)
    {        
        kontostand+=betrag;        
    }
        
     /**
      * Methode abheben hebt Geld von einem Kontostand ab und änder das Datum der letzen Änderung
      * 
      * @param  abheben Abzuhebender Betrag
      * @param  day     Tag der Abhebung
      * @param  month   Monat der Abhebung
      * @param  year    Jahr der Abhebung
      */   
    public void abheben(int abheben,int day,int month, int year)
    {
           
      kontostand=-abheben;
      letzeAenderung.setDatum(day, month, year);

    }
        /**
      * Methode überweisen überweist Beträge von einem Konto auf ein zweites, und ändert das Datum der letzen Änderung
      * 
      * @param  empfänger   Empfänger des zu überweisenden Betrages
      * @param  betrag      Der zu überweisende Betrag
      * @param  day     Tag der Überweisung
      * @param  month   Monat der Überweisung
      * @param  year    Jahr der Überweisung
      */ 
   
   void überweisen(Konto empfänger, int betrag,int day,int month,int year)
   {
       abheben(betrag,day,month,year);
       empfänger.einzahlen(betrag,day,month,year);

   }
   
        /**
      * Methode richtigkeit überprüft das eingegebene Datum auf seine richtigkeit.
      * Für den Fall, dass das Datum falsch eingegeben wird kommt eine Warnung,
      * und die Variable letzeAenderung wird nicht gändert
      * 
      * @param  day     Tag der Überweisung
      * @param  month   Monat der Überweisung
      * @param  year    Jahr der Überweisung
      */ 
   
     public boolean richtigkeit(int day,int month, int year)
     {
         int e_tage;  //Hilfsvaraible zur bestimmung der Anzahl der Tage in einem bestimmten Monat[existierende_tage]
         schaltjahr = year%4==0 && year%100!=0 || year%400==0 ? true : false;   //Bedingungen für ein Schaltjahr : Es muss durch 4 teilbar sein, durch 100 nicht, durch 400 wiederrum teilbar. Alle Angaben sind ohne Rest.
               
            if(schaltjahr==true && month==2)    //Falls das Jahr ein Schaltjahr ist, soll der 2.Monat 29.Tage haben
                e_tage = 29;
                    else if(schaltjahr==false && month==2)  //Falls das Jahr kein Schaltjahr ist, hat der 2.Monat 28.Tage
                        e_tage = 28;
                            else{
                                if(month%2==0)  //Für alle anderen Monate die dur 2 teilbar sind, gibt es 30.Tage
                                    e_tage = 30;
                                        else{
                                            e_tage = 31;    //Für alle Monate die nicht durch 2 teilbar sind, gibt es 31.Tage
                                            }
                                }
                   
                                if(year<0 || month<0 || day<0 || month>12 || day > e_tage)  //Sollte eine negative Zahl, eine Monatzahl über 12,
                                {                                                           //oder ein Tag der nicht existiert, dann wird die Variable letzeAenderung
                                    System.out.println("Eingabe nicht erlaubt.\n");         // nicht geändert und eine Ausgabe erscheint im Fenster
                                    return false;
                                }
                                else{return true;}
     }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben