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;}
}
}