Guten Tag Leute,
und zwar habe ich folgendes Problem.
Ich soll einen Kalender programmieren, bei dem man in einem TerminArray jeweils für einen Termin ein Datum,Name,Beschreibung etc eingeben kann. Das hab ich alles locker hinbekommen.
Aber nun sollen wir das Array bzw die Termine persistens abspeichern und wenn man Eclipse schließt und neustartet, sollen diese Termine auch wieder da sein und mein Array mit diesen Terminen gefüllt sein.
Wie mache ich das ???? hier mein Code.
Vielen Dank schon mal vorab =)=)
und zwar habe ich folgendes Problem.
Ich soll einen Kalender programmieren, bei dem man in einem TerminArray jeweils für einen Termin ein Datum,Name,Beschreibung etc eingeben kann. Das hab ich alles locker hinbekommen.
Aber nun sollen wir das Array bzw die Termine persistens abspeichern und wenn man Eclipse schließt und neustartet, sollen diese Termine auch wieder da sein und mein Array mit diesen Terminen gefüllt sein.
Wie mache ich das ???? hier mein Code.
Java:
package Testat;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.io.FileNotFoundException; //Testat Lukas Oppelt
import java.io.Serializable;
import java.util.Scanner;
public class TerminKalender implements Serializable {
public static void main(String[] args) throws IOException {
// FileWriter fw = new FileWriter("data.txt");
// BufferedWriter ausgabe = new BufferedWriter(fw);
// new EinLesen();
int anzahlTermine = 3;
Termin arraylist[] = new Termin[anzahlTermine]; // Initialisierung von
boolean ProgrammLaeuft = true;
String s = null;
Scanner sc1 = new Scanner(System.in); // Array, Schleifen,
// Scanner
while (ProgrammLaeuft) {
new TextMenue(); // textmenü methode wird aufgerufen
s = sc1.next();
if (s.equals("n"))
{
new NeuenTerminErstellen(arraylist, s, sc1, ausgabe);
}
else if (s.equals("l"))
{
for (int j = 0; j < anzahlTermine; j++)
{
System.out.print("\nTermin " + j + ":\n "); // Liste aller Termine wird angezeigt
System.out.println(arraylist[j]);
}
}
else if (s.equals("b"))
{
new TerminBearbeiten(arraylist, sc1, ausgabe);
}
else if (s.equals("a"))
{
ProgrammLaeuft = false; // Der vorgang wird beendet bzw die
// Schleife abgebrochen // wenn A gedrückt wird
System.out.println("-----------------------------------------------------------");
System.out.println("\nDer Vorgang wurde beendet.");
System.out.println("Starten Sie das Programm neu, um weiter arbeiten zu können.");
ausgabe.flush();
ausgabe.close();
}
else if (s.equals("d"))
{
new KWundWochentag(); // Hier lässt sich nochmals separat der
// Wochentag und die KalenderWoche abfragen
}
}
}
}
Java:
package Testat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.Serializable;
public class NeuenTerminErstellen implements Serializable {
public NeuenTerminErstellen (Termin [] arraylist, String s, Scanner sc1, BufferedWriter ausgabe) throws IOException
{
FileWriter fw = new FileWriter("data.txt");
boolean TerminKette = true ;
int i = 0;
//neuer Termin wird erstellt
while(TerminKette) //wenn N gedrückt wird
{
System.out.println("Geben Sie eine Nummer für Ihren Termin ein. (0-3)");
i = sc1.nextInt();
arraylist[i]= new Termin();
System.out.print("\nTermin "+ i + ":\n ");
ausgabe.write("\nTermin "+ i + ":\n ");
ausgabe.write(System.getProperty("line.separator"));
ausgabe.write(arraylist[i].toString2());
System.out.println(arraylist[i].toString()); //Ausgabe von der toString1 Methode
System.out.println("+--------------------------------------------------------------+");
System.out.println("Ihr Termin wurde in der Datei: " + " abgespeichert.");
System.out.println("+--------------------------------------------------------------+");
i++;
System.out.println("\n\nWas möchten Sie nun tun?\n");
System.out.println("Wenn Sie erneut einen Termin eingeben wollen, dann drücken Sie die Taste 'n'.");
System.out.println("Wenn Sie den Vorgang abbrechen wollen, dann drücken Sie die Taste 'a'.\n");
s = sc1.next();
if(s.equals("n"))
{
TerminKette = true; //Abfrage nachdem man Termin erstellt hat
}
else if (s.equals("a"))
{
TerminKette = false;
}
}
}
}
Java:
package Testat;
import java.io.Serializable;
import java.util.Scanner;
public class Termin implements Serializable {
String n, b, weekday;
int anzahlTermine = 5 ;
Termin arraylist[] = new Termin [anzahlTermine];
int tag,monat,jahr;
//Datum des Termines
int stunde = 0;
int minute = 0; //Uhrzeit des Termins
int wochentag;
int kw ;
public Termin() {
boolean Pruefen = true; // Neuen Termin erstellen
while (Pruefen) {
Scanner sc = new Scanner(System.in); // TagesEingabe
System.out.println("\nBitte geben Sie den Tag Ihres Termines ein.");
tag = sc.nextInt();
if (tag > 31 || tag < 1)
{
new Fehlereingabe(Pruefen, b, sc, null);
}
else if (tag <= 31 && tag > 0)
{
Pruefen = false;
}
Scanner sc1 = new Scanner(System.in); // MonatsEingabe
System.out.println("Bitte geben Sie den Monat Ihres Termines ein.");
monat = sc1.nextInt();
if (monat > 12 || monat < 1)
{
new Fehlereingabe(Pruefen, b, sc1, null);
}
else if (monat <= 12 && monat > 0)
{
Pruefen = false;
}
Scanner sc2 = new Scanner(System.in); // JahresEingabe
System.out.println("Bitte geben Sie das Jahr Ihres Termines ein.");
jahr = sc2.nextInt();
if (jahr > 3000 || jahr < 1000)
{
new Fehlereingabe(Pruefen, b, sc2, null);
}
else if (jahr <= 3000 && jahr >= 1000)
{
Pruefen = false;
}
Scanner sc3 = new Scanner(System.in); // StundenEingabe
System.out.println("Bitte geben Sie die Stunde Ihres Termines ein. (00 - 23 Uhr)");
stunde = sc3.nextInt();
if (stunde > 23 || stunde < 0)
{
new Fehlereingabe(Pruefen, b, sc3, null);
}
else if (stunde <= 23 && stunde >= 0)
{
Pruefen = false;
}
Scanner sc4 = new Scanner(System.in); // MinutenEingabe
System.out.println("Bitte geben Sie die Minute Ihres Termines ein. (00 - 59) ");
minute = sc4.nextInt();
if (minute > 59 || minute < 0)
{
new Fehlereingabe(Pruefen, b, sc4, null);
}
else if (minute <= 59 && minute >= 0)
{
Pruefen = false;
}
// } // Ende der while-Schleife /////////////////////////////////////////////
Scanner scr = new Scanner (System.in);
System.out.println("\nBitte geben Sie einen Namen für Ihren Termin ein.");
n = scr.nextLine(); //Eingabe von Name und
//Beschreibung des Termines
Scanner scb = new Scanner (System.in);
System.out.println("Bitte geben Sie eine Beschreibung für Ihren Termin ein.");
b = scb.nextLine();
/////////////////////////////////testat 1////////////////////////////////////////////////
if ((tag>31) || (monat>12) || (jahr>=3000 || jahr<1000))
{
System.out.println("Fehler bei Ihrer Eingabe."); //Ausgabe bei falsches Datumseingabe
System.out.println("Bitte neues Datum eingeben!");
}
else if ((tag<32) && (monat<13) && (jahr<=3000 && jahr>1000)) //Überprüfung ob gültiges Datum eingegeben wurde!
{ //Tag < 32 und Monat < 13 und Jahr
//zwischen 1600 und 3000
if((jahr % 400 == 0) && (jahr % 100 == 0) || (jahr % 4 == 0)) //Überprüfung ob
{ //Schaltjahr oder nicht
int monatsziffer = 0; // Hier ist es ein Schaltjahr
switch(monat)
{
case 1:
monatsziffer = 0; break; //Januar
case 2:
monatsziffer = 3;break; //Februar
case 3:
monatsziffer = 3;break; //Maerz
case 4:
monatsziffer = 6;break; //April //Switch zwischen den 12 Monaten
case 5:
monatsziffer = 1;break; //Mai
case 6:
monatsziffer = 4;break; //Juni
case 7:
monatsziffer = 6; break; //Juli
case 8:
monatsziffer = 2;break; //August
case 9:
monatsziffer = 5;break; //September
case 10:
monatsziffer = 0;break; //Oktober
case 11:
monatsziffer = 3;break; //November
case 12:
monatsziffer = 5;break; //Dezember
}
int aMonatsziffer=monatsziffer; //Berechnung Monatsziffer
//System.out.println("AM "+aMonatsziffer);
int sjahr= 0; //keine SchaltjahrKorrektur
//System.out.println("SJ "+sjahr);
int tagesziffer = tag%7; //Berechnung Tagesziffer
//System.out.println("tagesziffer "+tagesziffer);
int jahreszahl = jahr%100;
//System.out.println("JZ "+jahreszahl);
int jahresziffer = (jahreszahl+(jahreszahl/4))%7; //Berechnung Jahresziffer (z.B.xx91)
//System.out.println("JZIF "+jahresziffer);
int jahrhdt= (int)jahr/100;
//System.out.println("JH "+jahrhdt); //Berechnung Jahrhundertziffer (z.B.19xx)
int jahrhundertziffer = (3-(jahrhdt%4))*2;
//System.out.println("JHZIF "+jahrhundertziffer);
int wochentag;
wochentag = (tagesziffer+aMonatsziffer+jahresziffer+jahrhundertziffer+sjahr) % 7;
//Alle Werte zusammenrechnen und mit
//Modulo 7 den Wochentag bestimmen
int tage = 0;
switch(monat)
{
case 12:
tage += 30;
case 11:
tage += 31;
case 10:
tage += 30;
case 9:
tage += 31;
case 8:
tage += 31;
case 7: //Switch zwischen den 12 Monaten
tage += 30;
case 6:
tage += 31;
case 5:
tage += 30;
case 4:
tage += 31;
case 3:
tage += 29;
case 2:
tage += 31;
case 1:
tage += tag;
}
kw = 0 ;
if (tage % 7 < 3)
{ //Berechnungen zur Kalenderwoche
kw = tage/7 ;
}
else if(tage%7>3)
{
kw = (tage-1)/7+1 ;
}
switch (wochentag)
{
case 0:
weekday ="Sonntag";
break;
case 1:
weekday ="Montag";
break;
case 2:
weekday ="Dienstag";
break;
case 3:
weekday ="Mittwoch";
break;
case 4:
weekday ="Donnerstag";
break;
case 5:
weekday ="Freitag";
break;
case 6:
weekday ="Samstag";
break;
}
}
else //else-Funktion wenn kein Schaltjahr
{
if ((tag>28) && (monat==2))
{
System.out.println("\nEs ist ein Fehler aufgetreten!");
System.out.println("Im Jahr "+jahr+" gibt es keinen 29ten Februar, weil es kein Schaltjahr ist.\n");
System.out.println("Bitte neues Datum eingeben.");
}
else
{
int monatsziffer = 0;
switch(monat)
{
case 1:
monatsziffer = 0; break; //Januar
case 2:
monatsziffer = 3;break; //Februar
case 3:
monatsziffer = 3;break; //Maerz
case 4:
monatsziffer = 6;break; //April //Switch zwischen den 12 Monaten
case 5:
monatsziffer = 1;break; //Mai
case 6:
monatsziffer = 4;break; //Juni
case 7:
monatsziffer = 6; break; //Juli
case 8:
monatsziffer = 2;break; //August
case 9:
monatsziffer = 5;break; //September
case 10:
monatsziffer = 0;break; //Oktober
case 11:
monatsziffer = 3;break; //November
case 12:
monatsziffer = 5;break; //Dezember
}
int aMonatsziffer=monatsziffer; //Berechnung Monatsziffer
//System.out.println("AM "+aMonatsziffer);
int sjahr= 0; //keine SchaltjahrKorrektur
//System.out.println("SJ "+sjahr);
int tagesziffer = tag%7; //Berechnung Tagesziffer
//System.out.println("tagesziffer "+tagesziffer);
int jahreszahl = jahr%100;
//System.out.println("JZ "+jahreszahl);
int jahresziffer = (jahreszahl+(jahreszahl/4))%7; //Berechnung Jahresziffer (z.B.xx91)
//System.out.println("JZIF "+jahresziffer);
int jahrhdt= (int)jahr/100;
//System.out.println("JH "+jahrhdt); //Berechnung Jahrhundertziffer (z.B.19xx)
int jahrhundertziffer = (3-(jahrhdt%4))*2;
//System.out.println("JHZIF "+jahrhundertziffer);
int wochentag;
wochentag = (tagesziffer+aMonatsziffer+jahresziffer+jahrhundertziffer+sjahr) % 7;
//Alle Werte zusammenrechnen und mit
int tage = 0;
switch(monat)
{
case 12:
tage += 30;
case 11:
tage += 31;
case 10:
tage += 30;
case 9:
tage += 31;
case 8:
tage += 31;
case 7: //Switch zwischen den 12 Monaten
tage += 30;
case 6:
tage += 31;
case 5:
tage += 30;
case 4:
tage += 31;
case 3:
tage += 28;
case 2:
tage += 31;
case 1:
tage += tag;
}
kw = 0;
if (tage % 7 < 3)
{
kw = tage/7 ; //Berechnungen zur Kalenderwoche
}
else if(tage%7>3)
{
kw = (tage-1)/7+1 ;
} //Modulo 7 den Wochentag bestimmen
switch (wochentag)
{
case 0:
weekday ="Sonntag";
break;
case 1:
weekday ="Montag";
break;
case 2:
weekday ="Dienstag";
break;
case 3:
weekday ="Mittwoch";
break;
case 4:
weekday ="Donnerstag";
break;
case 5:
weekday ="Freitag";
break;
case 6:
weekday ="Samstag";
break;
}
}
}
}
}
}
////////////////////////////////////////////////////////
public void TerminBearbeitung() {
String x;
Scanner src = new Scanner ( System.in);
System.out.println("\n+---------------------------------------------------------------+");
System.out.println("Was genau möchten Sie bearbeiten?");
System.out.println("Um den Namen Ihres Termines zu bearbeiten, drücken Sie 'n'");
System.out.println("Um das Datum Ihres Termines zu bearbeiten, drücken Sie 'd'");
System.out.println("Um die Uhrzeit Ihres Termines zu bearbeiten, drücken Sie 'u'");
System.out.println("Um die Beschreibung Ihres Termines zu bearbeiten, drücken Sie 'b'");
System.out.println("\n+---------------------------------------------------------------+");
x = src.next();
if (x.equals("n"))
{
System.out.println("\nGeben Sie einen neuen Namen für Ihren Termin ein.");
this.n = src.next();
}
else if (x.equals("d"))
{
System.out.println("\nGeben Sie ein neues Datum für Ihren Termin ein.");
System.out.println("\nGeben Sie zunächst einen neuen Tag ein.");
this.tag = src.nextInt();
System.out.println("\nGeben Sie nun ein neues Monat ein.");
this.monat = src.nextInt();
System.out.println("\nGeben Sie nun noch ein neues Jahr ein.");
this.jahr = src.nextInt();
}
else if (x.equals("u"))
{
System.out.println("\nGeben Sie eine neue Uhrzeit für Ihren Termin ein.");
System.out.println("\nGeben Sie zunächst eine neue Stunde ein.");
this.stunde = src.nextInt();
System.out.println("\nGeben Sie nun einen neuen Wert für die Minuten ein.");
this.minute = src.nextInt();
}
else if (x.equals("b"))
{
System.out.println("\nGeben Sie eine neue Beschreibung für Ihren Termin ein.");
this.b = src.next();
}
}
/////////////////////////////////////////////////////////
public String toString()
{ //Array toString Methode
return "\nName Ihres Termines: " + n +
"\nDatum Ihres Termines: " + String.format("%02d.%02d" ,this.tag ,this.monat) +"." + this.jahr +
"\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute) + " Uhr" +
"\nBeschreibung Ihres Termines: " + b +
"\nKalenderwoche Ihres Termines: " + String.format("%02d" ,this.kw) +
"\nWochentag Ihres Termines: " + this.weekday +"\n";
}
public String toString1()
{ //Array toString Methode
return "\nName Ihres Termines: " + n +
"\nDatum Ihres Termines: " + String.format("%02d.%02d" ,this.tag ,this.monat) +"." + this.jahr +
"\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute) + " Uhr" +
"\nBeschreibung Ihres Termines: " + b +"\n" ;
}
public String toString2()
{
return "\nName Ihres Termines: " + n +
System.getProperty("line.separator") +
"\nDatum Ihres Termines: " + String.format("%02d.%02d" ,tag ,monat) +"." + this.jahr +
System.getProperty("line.separator") +
"\nUhrzeit Ihres Termines: " + String.format("%02d:%02d" , stunde , minute) + " Uhr" +
System.getProperty("line.separator") +
"\nBeschreibung Ihres Termines: " + b +
System.getProperty("line.separator") ;
}
}
Vielen Dank schon mal vorab =)=)
Zuletzt bearbeitet: