Guten Abend zusammen. Ich habe mich zu folgenden Thema das ein oder andere mal gemeldet. Nun habe ich mein Programm restrukturiert und habe ein hoffentlich winziges Problem. 
Bekannte Ausgangssituation:
Ich muss eine Terminverwaltung programmieren. Dazu habe ich einige Vorgaben bekommen. Unter anderem, die Main so klein wie möglich zu halten. Also habe ich viele neue Klassen und Methoden geschrieben und rufe diese nur noch aus der Main ab. Das funktioniert auch alles wunderbar, abgesehen von zwei Punkten.
Problem
Wir sollten einen Programmpunkt "Speichern" implementierten. Da wir dies aber in der FH noch nicht behandelt hatten, sollen wir im Programmpunkt "Speichern" lediglich eine Konsolenausgabe implementieren. Leider funktioniert dieser Punkt nicht wirklich. Das Programm kompiliert und ich kann es auch ausführen. Aber wenn ich mir die Termine des Arrays anzeigen lassen will(Konsolenausgabe in Klasse Sicherung), passiert nix. Das selbe bei der Klasse "TerminVerschieben". Ich kann diesen Teil des Programms starten und mit den Abfragen beginnen, aber er hat keine Termine zum verschieben.
Wenn ich alles in die Main schreibe, geht es komischerweise. Ich bin mit meinen Latein langsam am Ende.
Hier die Quellcode's. Es wäre schön wenn mir jmd von euch helfen könnte, damit ich endlich weiter komme.
Vg
Marco
Bekannte Ausgangssituation:
Ich muss eine Terminverwaltung programmieren. Dazu habe ich einige Vorgaben bekommen. Unter anderem, die Main so klein wie möglich zu halten. Also habe ich viele neue Klassen und Methoden geschrieben und rufe diese nur noch aus der Main ab. Das funktioniert auch alles wunderbar, abgesehen von zwei Punkten.
Problem
Wir sollten einen Programmpunkt "Speichern" implementierten. Da wir dies aber in der FH noch nicht behandelt hatten, sollen wir im Programmpunkt "Speichern" lediglich eine Konsolenausgabe implementieren. Leider funktioniert dieser Punkt nicht wirklich. Das Programm kompiliert und ich kann es auch ausführen. Aber wenn ich mir die Termine des Arrays anzeigen lassen will(Konsolenausgabe in Klasse Sicherung), passiert nix. Das selbe bei der Klasse "TerminVerschieben". Ich kann diesen Teil des Programms starten und mit den Abfragen beginnen, aber er hat keine Termine zum verschieben.
Wenn ich alles in die Main schreibe, geht es komischerweise. Ich bin mit meinen Latein langsam am Ende.
Hier die Quellcode's. Es wäre schön wenn mir jmd von euch helfen könnte, damit ich endlich weiter komme.
Vg
Marco
Java:
[/FONT]
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main (String[]args) {
PasswortAbfrage p = new PasswortAbfrage();
p.abfrage();
while (true){
Hauptmenue h = new Hauptmenue();
int a = h.auswahl();
switch (a) {
case 0: System.exit(0);
break;
case 1: TermineErzeugen te = new TermineErzeugen();
te.termineAnlegen();
break;
case 2: Sicherung s = new Sicherung();
s.speichern();
break;
case 3: EingetrageneTermine et = new EingetrageneTermine();
et.eingetrageneTermine();
break;
case 4: TerminVerschieben tv = new TerminVerschieben();
tv.verschiebeTermin();
break;
}
}
}
}
[FONT=Arial]
Java:
[/FONT]
import java.util.Scanner;
public class TermineErzeugen {
Kalender kalender = new Kalender();
public void termineAnlegen() {
System.out.println("Geben sie den Tag ein: ");
Scanner sc_Tag = new Scanner(System.in);
int tag = sc_Tag.nextInt();
System.out.println("Geben sie den Monat ein: ");
Scanner sc_Monat = new Scanner(System.in);
int monat = sc_Monat.nextInt();
System.out.println("Geben sie das Jahr ein: ");
Scanner sc_Jahr = new Scanner(System.in);
int jahr = sc_Jahr.nextInt();
Datum datum = new Datum(tag,monat,jahr);
System.out.println("Geben sie die volle Stunde ein: ");
Scanner sc_Stunde = new Scanner(System.in);
int stunde = sc_Stunde.nextInt();
System.out.println("Geben sie die Minuten ein: ");
Scanner sc_Minute = new Scanner(System.in);
int minute = sc_Minute.nextInt();
Zeit zeit = new Zeit(stunde,minute);
System.out.println("Geben sie den Ort ein: ");
Scanner sc_Ort = new Scanner(System.in);
String ort = sc_Ort.nextLine();
System.out.println("\n**********************");
System.out.println("Wird dieser Termin ein:\n1 Privattermin\n2 Buerotermin");
System.out.println("**********************\n");
Scanner sc_abfrage = new Scanner(System.in);
int abfrage = sc_abfrage.nextInt();
if (abfrage == 1) {
privat(datum,zeit,ort);
} else if (abfrage ==2) {
buero(datum,zeit,ort);
} else {
System.out.println("Fehleingabe");
}
}
public void privat(Datum datum,Zeit zeit,String ort) {
System.out.println("Grund für den Termin: ");
Scanner sc_Beschreibung = new Scanner(System.in);
String beschreibung = sc_Beschreibung.nextLine();
PrivatTermin pt = new PrivatTermin(datum,zeit,ort,beschreibung);
kalender.addTermin(pt);
}
public void buero(Datum datum,Zeit zeit,String ort) {
System.out.println("Geben Sie den Teilnehmer an: ");
Scanner sc_Teilnehmer = new Scanner(System.in);
String teilnehmer = sc_Teilnehmer.nextLine();
BueroTermin bt = new BueroTermin(datum,zeit,ort,teilnehmer);
//Auflisten der Termine
Termin[] termine = kalender.getTermine();
int index = 1;
for(int i = 0; i < termine.length; i++) {
if(termine[i] != null) {
System.out.printf("%d: %s", index++, termine[i]);
}
}
//Teilnehmer hinzufügen
boolean naechstenTeilnehmer = true;
do {
System.out.println("****************************");
System.out.println("1 Neuer Teilnehmer\n2 2 zurueck zum Hauptmenue");
System.out.println("****************************");
Scanner sc_auswahl = new Scanner(System.in);
int auswahl = sc_auswahl.nextInt();
if (auswahl == 1) {
System.out.println("****************************");
System.out.println("Geben Sie den Namen des Teilnehmers ein.");
System.out.println("****************************");
Scanner sc_name = new Scanner(System.in);
String name = sc_name.nextLine();
bt.addTeilnehmer(new Teilnehmer(name));
} else if (auswahl == 2) {
naechstenTeilnehmer = false;
} else {
System.out.println("Fehleingabe");
}
} while(naechstenTeilnehmer);
kalender.addTermin(bt);
}
}
[FONT=Arial]
Java:
[/FONT]
public class Sicherung {
Kalender kalender = new Kalender();
public void speichern() {
Termin[] termine = kalender.getTermine();//Ruft Termine ab
int index = 1; //Für eine bessere Übersicht wird hier ein Index angelegt
for(int i = 0; i < termine.length; i++){
if(termine[i] != null){//Falls ein leeres Feld entstehen sollte wird es bei der Angabe nicht angezeigt.
System.out.printf("%d: %s", index++, termine[i]);
System.out.println();
}
}
}
}
[FONT=Arial]
Java:
[/FONT]
public class Kalender {
private int Arraygroeße = 1;
private int index = 0;
private Termin[] termine = new Termin[Arraygroeße]; //Instanziiert einen neuen Termin
public void addTermin(Termin a) {
if(index < Arraygroeße) {
termine[index++] = a;
} else {
//Automatische Array-Vergrößerung.
Arraygroeße += 1;
Termin[] termineCache = new Termin[Arraygroeße]; //Legt neue Instanz an
for(int i = 0; i < termine.length; i++) { //von termine in termineCache
termineCache[i] = termine[i];
}
termine = termineCache; // von termineCache in termine
termine[index++] = a;
}
}
public Termin[] getTermine() {
return termine;
}
}
[FONT=Arial]
Java:
[/FONT]
public class Termin{
protected Datum datum;
protected Zeit zeit;
protected String ort;
public Termin(Datum datum, Zeit zeit, String ort) {
setDatum(datum);
setZeit(zeit);
setOrt(ort);
}
public void setZeit(Zeit zeit) {
this.zeit = zeit;
}
public void setDatum(Datum datum) {
this.datum = datum;
}
public void setOrt(String ort) {
this.ort = ort;
}
public Zeit getZeit(){
return zeit;
}
public Datum getDatum(){
return datum;
}
public String getOrt(){
return ort;
}
}
[FONT=Arial]
Java:
[/FONT]
public class PrivatTermin extends Termin {
private String beschreibung;
public PrivatTermin(Datum datum, Zeit zeit, String ort,String beschreibung) {
super(datum,zeit,ort);
setBeschreibung(beschreibung);
}
public String getBeschreibung(){
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public String toString() {
return String.format("Datum: %s, Uhrzeit: %s, Ort: %s, Grund: %s", datum, zeit, ort, beschreibung);
}
}
[FONT=Arial]
Java:
[/FONT]
public class BueroTermin extends Termin {
private Teilnehmer [] teilnehmer = new Teilnehmer[10];
private int teilnehmerNummer = 1;
public BueroTermin(Datum datum, Zeit zeit, String ort,String teilnehmer) {
super(datum,zeit,ort);
this.teilnehmer[0] = new Teilnehmer(teilnehmer);
}
public String getTeilnehmer() {
String strTeilnehmer = teilnehmer[0].toString();
for(int i = 1; i < teilnehmer.length; ++i) {
if(teilnehmer[i] != null) {
strTeilnehmer = strTeilnehmer.concat(", " + teilnehmer[i].toString());
}
}
return strTeilnehmer;
}
public void addTeilnehmer(Teilnehmer t) {
this.teilnehmer[teilnehmerNummer++] = t;
}
public String toString() {
return String.format("Datum: %s, Uhrzeit: %s, Ort: %s, Teilnehmer: %s", datum, zeit, ort, getTeilnehmer());
}
}
[FONT=Arial]
Java:
public class Teilnehmer{
private String teilnehmer;
public Teilnehmer(String teilnehmer){
this.teilnehmer = teilnehmer;
}
public String toString(){
return this.teilnehmer;
}
}
Java:
public class Datum {
protected int tag, monat,jahr;
public Datum(int tag, int monat, int jahr){
setTag(tag);
setMonat(monat);
setJahr(jahr);
}
public void setTag(int tag) {
this.tag = tag;
}
public void setMonat(int monat) {
this.monat = monat;
}
public void setJahr(int jahr) {
this.jahr = jahr;
}
public int getTag() {
return tag;
}
public int getMonat() {
return monat;
}
public int getJahr() {
return jahr;
}
public void verschiebeTage(int tage) {
setTag(tag + tage);
}
public void verschiebeMonate(int monate) {
setMonat(monat + monate);
}
public void verschiebeJahre(int jahre) {
setJahr(jahr + jahre);
}
public String toString() {
return String.format("%02d.%02d.%4d", tag, monat, jahr);
}
}
Java:
public class Zeit {
private int stunden,minuten;
public Zeit(int stunden, int minuten) {
setStunden(stunden);
setMinuten(minuten);
}
public int getStunden() {
return stunden;
}
public void setStunden(int stunden) {
this.stunden = stunden;
}
public int getMinuten() {
return minuten;
}
public void setMinuten(int minuten) {
this.minuten = minuten;
}
public void verschiebeStunde(int std) {
setStunden(stunden + std);
}
public void verschiebeMinute(int min) {
setMinuten(minuten + min);
}
public String toString() {
return stunden+":"+minuten;
}
}
[/code[/FONT]