Programm Kaffeetassen (zehnte Version)
import java.util.*;
import java.io.*;
class Kaffeetassen {
/* Programm Kaffeetassen von Heiko Schmuck, im April 2011
* Das Programm beschreibt Kaffetassen und gibt die Beschreibung
* auf dem Bildschirm aus.
* In der zehnten Version werden die Daten aus einer Datei gelesen.
* Es können neue Tassen eingegeben werden.
* Zum Zwischenspeichern der Tassen werden Listen benutzt
* Die Tassen können in einer Datei gespeichert werden.
*/
/* Methode um Kaffeetassen aus einer Datei zu lesen
* dp ist der Dateipfad als String
* tl ist die Liste der Tassen.
*/
void DateiLesen(LinkedList tl, String dp) throws IOException {
// In diese Variablen kommen die Eigenschaften der Tasse.
String f, he, a;
int h, d;
Tasse t;
System.out.println("Datei lesen");
System.out.println("--------------------------------");
//Das Datei-Objekt erzeugen
FileReader Datei = new FileReader(dp);
//Die Datei öffnen und einen Input Stream für die Datei erzeugen
BufferedReader din = new BufferedReader(Datei);
//Die Zeilen in einer FOR-Schleife einlesen
for(String zeile = din.readLine(); zeile != null; zeile = din.readLine()){
StringTokenizer data = new StringTokenizer(zeile, ",");
//Die Eigenschaften in Variablen ablegen
f = data.nextToken();
h = new Integer(data.nextToken());
d = new Integer(data.nextToken());
he = data.nextToken();
a = data.nextToken();
//Das Objekt Tasse erzeugen und ausgeben.
t = new Tasse(f, h, d, he, a);
t.hinzufuegen(tl);
}
//Datei schließen
din.close();
System.out.println("--------------------------------");
}
void NeueTasse(LinkedList tl) throws IOException {
// In diese Variablen kommen die Eigenschaften der Tasse.
String f, he, a;
int h, d;
Tasse t;
// Variable für die Antwort
String e;
// Hier wird die Tastatureingabe eingebunden
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// Abfragen ob eine neue Tasse eingegeben werden soll
System.out.println("Möchten Sie eine neue Tasse eingeben? J oder N eingeben.");
e = in.readLine(); // Wartet auf eine Eingabe, die Eingabe wird mit Enter abgeschlossen.
// Nach der Eingabe prüfen ob ein "J" eingegeben wurde, ansonsten diesen Teil überspringen.
if(e.equals("J")) {
// Die Eigenschaften der neuen Tassen eingeben
System.out.println("Farbe?");
f = in.readLine();
System.out.println("Höhe?");
h = new Integer(in.readLine()).intValue();
System.out.println("Durchmesser?");
d = new Integer(in.readLine()).intValue();
System.out.println("Henkel?");
he = in.readLine();
System.out.println("Aufdruck?");
a = in.readLine();
// Neue Tasse anlegen
t = new Tasse(f, h, d, he, a);
// Die neue Tasse ausgeben
System.out.println("--------------------------------");
t.hinzufuegen(tl);
System.out.println("--------------------------------");
System.out.println();
}
}
void TassenAusgeben(LinkedList tl) {
// Erst einmal eine Überschrift
System.out.println("Meine Kaffeetassen:");
System.out.println("--------------------------------");
Tasse t;
for (ListIterator l = tl.listIterator();l.hasNext();) {
t = (Tasse) l.next();
t.ausgeben();
}
}
void TassenSpeichern(LinkedList tl, String dp) throws IOException {
//Das Dateiobjekt erzeugen
FileWriter Datei = new FileWriter(dp);
//Die Datei öffnen und einen Output Stream für die Datei erzeugen
BufferedWriter dout = new BufferedWriter(Datei);
Tasse t;
String zeile;
String neueZeile = System.getProperty("line.separator");
for (ListIterator l = tl.listIterator();l.hasNext();) {
t = (Tasse) l.next();
zeile = t.farbe + "," + String.valueOf(t.hoehe) + "," + String.valueOf(t.durchmesser) + "," + t.henkel + "," + t.aufdruck + neueZeile;
dout.write(zeile);
System.out.println("--------------------------------");
System.out.println("Tasse gespeichert");
System.out.println("--------------------------------");
}
dout.close();
}
public static void main (String [] args) throws IOException {
// Der Pfad zur Datei
String P = "C:\\justfun\\Tassen.txt";
// Das Objekt Kaffeetassen erzeugen
Kaffeetassen K = new Kaffeetassen();
// Ein Listenobjekt für die Tassen erzeugen.
LinkedList T = new LinkedList();
K.DateiLesen(T,P);
K.NeueTasse(T);
K.TassenAusgeben(T);
K.TassenSpeichern(T, P);
}
// Die Klasse Kaffeetassen wieder schließen.
}
class Tasse {
// Erst einmal wieder Platzhalter für die Werte
String farbe, henkel, aufdruck;
int hoehe, durchmesser;
/* Ich beschreibe meine Tasse:
* f ist die Farbe und vom Typ String
* h ist die Höhe und vom Typ int
* d ist der Durchmesser und auch vom Typ int
* he ist die Aussage ob die Tasse einen Henkel hat oder nicht und vom Typ String
* a ist der Aufdruck und ebenfalls vom Typ String
*/
public Tasse (String f, int h, int d, String he, String a) {
farbe = f;
hoehe = h;
durchmesser = d;
henkel = he;
aufdruck = a;
}
// Die Methode ausgeben
void ausgeben () {
System.out.println("Farbe: " + farbe);
System.out.println("Höhe: " + hoehe);
System.out.println("Durchmesser: " + durchmesser);
System.out.println("Henkel: " + henkel);
System.out.println("Aufdruck: " + aufdruck);
System.out.println();
}
void hinzufuegen (LinkedList l) {
l.add(this);
System.out.println("Tasse hinzugefügt");
}
void loeschen (LinkedList l) {
l.remove(this);
System.out.println("Tasse gelöscht");
}
// Die Klasse Tasse schließen
}