wie speichere ich die informationen der schüler

disconnectus

Aktives Mitglied
Ich soll jetzt ein programm für die schüler einer Klasse schreiben. Ich soll alle daten der schüler speichern und wennn nötig wieder aufrufen und ändern.

Wie soll ich die daten speichern?

Mein Vorschlag ist :
Für jeden Schüler eine Textdatei erstellen und dort die Informationen der Schüler speichern.
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Das ist schon ein bisschen wenig Information. Interessant ist doch, was mit den Daten darüber hinaus noch geschehen soll. Wenn zum Beispiel jemand die Fehltage eintragen will und später dann ermitteln möchte, wie hoch die durchschnittliche Fehltagerate ist, dann ist Dein Ansatz nicht besonders tauglich. Also: Wie sind die Requirements heute und vorraussichtlich in Zukunft?

Ebenius
 

cz3kit

Bekanntes Mitglied
Wenn es darum geht einfache Objekte zu speichern, dann wäre Serialisieren das Stichwort. Aber wenn es mehr sein soll, wie Ebenius schon sagte, ist das unpraktisch. Da würde ich persöhnlich eine DB verwenden.
 
T

Tomate_Salat

Gast
Auch wenn ich hier nur rauslesen kann: du willst Schülerinformationen speichern, kann cih mir unter deinem Programm nix vorstellen. Aber für das speichern, bearbeiten und aufrufen für Daten sind Datenbanken doch genau das richtige ;-).

In Java arbeite ich derzeit gerne mit der H2-Datenbank. Sie ist portable und liefert für den notfall ein administrationstool mit.

MFG

Tomate_Salat
 

disconnectus

Aktives Mitglied
Ich muss Allgemaine Informationen der Schüler speicher. Name, Vorname, Adresse, Geburtsdatum, Geburtsort, Schule, Klasse... Also die Informationen muss man nicht sehr oft ändern.

Ich habe noch nie mit datenbanken gearbeitet :) Könnt ihr mich kurz erzählen wie es geht und ein tutorial empfehlen?
 
T

Tomate_Salat

Gast
Name, Vorname, Adresse, Geburtsdatum, Geburtsort, Schule, Klasse... Also die Informationen muss man nicht sehr oft ändern.?

Auch wenn man die Informationen nicht sehr oft ändern muss, haben Datenbanken den Vorteil größerer Flexibiliät. Du kannst gezielt nach Datensätzen suchen, Datensätze verbinden etc.

Beispiel:
[c]Select * FROM schueler WHERE klasse='3' AND subklasse='b'[/c]
damit könntest du alle Schüler (+deren Attribute) der Klasse 3B auslesen.

[c]UPDATE TABLE schueler SET klasse='4' WHERE klasse='3'[/c]
Damit haben alle Schüler erfolgreich das Jahr geschafft :p.

Wenn du dir das Tutorial von AlexSpritze angeschaut hast, weist du auch,wie du das oben einbinden kannst.

MFG

Tomate_Salat
 

disconnectus

Aktives Mitglied
Ich habe einige Tutorials durchgelesen. So weit ich verstanden habe muss ein Datenbank Server in meinem Laptop installiert sein und mit JDBCs kann man mit dem Datenbank Server kommunizieren.

Vielleicht ist es eine dumme Frage aber muss das Sql server bei allen Benutzern, die diese Programm benutzen auch installiert sein.
Wenn nicht wie geht es?
 

fastjack

Top Contributor
Zu allererst brauchst Du ein geeignetes Datenmodell (Bild malen etc.), dann kannst Du Dir überlegen, wie Du die Daten speichern willst. Dafür kannst Du Datenbanken, XML, CSV, eigene Formate oder oder oder nutzen. Wenn schnell gehen muß und die Datenmenge nicht sonderlich groß ist, ist sicherlich XML schön. Wildcard hat mir mal EMF empfohlen und ich muß sagen, das ist wirklich gut.
 
Zuletzt bearbeitet:

cz3kit

Bekanntes Mitglied
Vielleicht ist es eine dumme Frage aber muss das Sql server bei allen Benutzern, die diese Programm benutzen auch installiert sein.
Wenn nicht wie geht es?

Nein muss nicht. Ich arbeite z.B. gerne mit XAMPP. Dort wird eine MySQL Datenbank mitgeliefert. Dort kannst du auch einrichten, dass andere Benutzer auf die DB zugreifen können. Aber dazu müsste auf deinem Rechner 31 (24 / 7 :lol:) auf deinem Rechner laufen. Mit den anderen Sache, wie H2 hab ich keine Erfahrung, aber ich glaube dafür wäre, da es Portabel ist.
 

disconnectus

Aktives Mitglied
Ich werde nicht sehr viele daten speichern und das Programm ist nicht so groß deswegen denke ich jetzt auch xml ist gut. Kann jemand mir ein tutorial empfehlen?
 
Zuletzt bearbeitet:

Wuella

Mitglied
Wo wird diese Liste gespeichert werden?

Dort, wo du sie implementierst ;)

Du schreibst bspw. eine Main-Klasse (Anwendung) und initialisiert dort eine Liste.
In derselben Klasse initialisierst du dann deine gewünschten Objekte deiner Schüler-Klasse und fügst sie anschließend in der Liste ein.

Beispiel:

Java:
public class Main {
            public static void main(String [] args) {
               LinkedList <Schueler> l = new LinkedList <Schueler> ();
               Schueler eins = new Schueler (attribut1, attribut2, attribut 3);
               l.add(eins);
             }
}

Java:
  public class Schueler {
               String attribut1, attribut2, attribut3;
               public Schueler (String attribut1, attribut2, attribut3) {
                        this.attribut1 = attribut1;
                        this.attribut2 = attribut2;
                        this.attribut3 = attribut3;
               }

//getter-/setter-Methoden zum ändern der Attribute
}
 
Zuletzt bearbeitet:

cz3kit

Bekanntes Mitglied
Wenn er diese Objekte, auch wenn das Programm beendet wurde, weiterhin haben möchte, muss er diese irgendwie persistent speichern.
 
T

Tomate_Salat

Gast
Mal eine Frage: wird da mehr wie eine Klasse drin gespeichert: Beispiel: 5a,5b,5c?
Werden da mehr als eine Klassenstufe drin gespeichert: Beispiel: 5te klasse, 6te klasse, 7te klasse?

Wenn mind. 2teres wahr ist, halte ich xml oder serialisierung für : "Mit kanonen auf spatzen geschossen". Dein Vorhaben lässt sich wunderschön mit einer Datenbank lösen. Schau dir einfach den SQL zu CREATE, DROP, SELECT, UPDATE und DELETE an. Damit hast du im prinzip das notwendigste was du für SQL brauchst (klar gibt es da noch mehr). Dann schaust du dir an, wie Datenbanktabellen designed werden und du bist wunderbar flexibel unterwegs und hast keine, entweder total vollgestopfte xml oder mehrere total vollgestopfte xml-dateien...

MFG

Tomate_Salat
 

ARadauer

Top Contributor
Man könnte das sogar ganz einfach in eine CSV Datei schreiben und wieder lesen... ist vielleicht ein erster Schritt bevor man sicher näher mit der Thematik beschäftigt... was soll man groß mit jdbc und datenbanken kämpfen, wenn man von objekten und schleifen noch keine Ahnung hat...

Ich würde da gar keine Biblothek verwenden... raus mit ; getrennt, rein mit ; splitten... fertig.. 20 zeilen Code...
die Dinge die CSV schwer machen (Formate, Sonderzeichen, Escapen, Fehler) die kann man ja mal ignorieren... Das Teil wird wohl nicht der Kern einer neuen Bankenlösung sein...

Als nächsten Schritt kann man sich dann mal JDBC ansehen und das in eine H2 oder mysql speichern...

Ohne Anspruch auf eine saubere Architktur, vom hirn direkt ins keyboard.. zb so
Java:
public class Schuehler {
   
   public static String CSV_SEP =";";
   
   private String name;
   private String vorname;
   private int alter;
   private String klasse;
   
   
   
   public Schuehler(String name, String vorname, int alter, String klasse) {
      super();
      this.name = name;
      this.vorname = vorname;
      this.alter = alter;
      this.klasse = klasse;
   }

   public Schuehler(String line) {
      super();
      String[] parts = line.split(CSV_SEP);
      this.name = parts[0];
      this.vorname = parts[1];
      this.alter = Integer.parseInt(parts[2]);
      this.klasse = parts[3];
   }
   
   public String getLineForCsv(){
      return name+CSV_SEP+
      vorname+CSV_SEP+
      alter+CSV_SEP+
      klasse+CSV_SEP;      
   }
   
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getVorname() {
      return vorname;
   }
   public void setVorname(String vorname) {
      this.vorname = vorname;
   }
   public int getAlter() {
      return alter;
   }
   public void setAlter(int alter) {
      this.alter = alter;
   }
   public String getKlasse() {
      return klasse;
   }
   public void setKlasse(String klasse) {
      this.klasse = klasse;
   }
   
   

}
Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class SchuehlerIO {
   
   public static void main(String[] args) throws IOException {
      List<Schuehler> listToWrite = new ArrayList<Schuehler>();
      listToWrite.add(new Schuehler("Muster", "Max", 12, "3A"));
      listToWrite.add(new Schuehler("Lustig", "Susi", 13, "4B"));
      
      SchuehlerIO schuelerio = new SchuehlerIO();
      System.out.print("Schreibe... ");
      schuelerio.writeSchuehler(new File("C:/test.csv"), listToWrite);
      System.out.println("fertig. "+listToWrite.size()+" Sätze");
      
      System.out.print("Lese... ");
      List<Schuehler> listRead = schuelerio.readSchuehler(new File("C:/test.csv"));
      System.out.println("fertig. "+listRead.size()+" Sätze");
      
      for(Schuehler schueler : listRead){
         System.out.println(schueler.getVorname()+" "+schueler.getName());
      }
      
   }
   
   public List<Schuehler> readSchuehler(File file) throws IOException{
      BufferedReader reader = new BufferedReader(new FileReader(file));
      String line = null;
      List<Schuehler> result = new ArrayList<Schuehler>();
      while((line=reader.readLine())!=null){
         result.add( new Schuehler(line));
      }
      reader.close();
      return result;
   }
   
   public void writeSchuehler(File file, List<Schuehler> schuelerList) throws IOException{
     BufferedWriter writer = new BufferedWriter(new FileWriter(file));
     for(Schuehler schueler : schuelerList){
        writer.write(schueler.getLineForCsv());
        writer.write(System.getProperty("line.separator"));
     }
     writer.close();
        
   }

}
 

Wortraum

Bekanntes Mitglied
Ich muss Allgemaine Informationen der Schüler speicher. Name, Vorname, Adresse, Geburtsdatum, Geburtsort, Schule, Klasse... Also die Informationen muss man nicht sehr oft ändern.

Ich habe noch nie mit datenbanken gearbeitet :) Könnt ihr mich kurz erzählen wie es geht und ein tutorial empfehlen?
Das würde ich in Deinem Fall auch nicht machen. Es ist übertrieben, es ist nicht einfach, und es ist nicht notwendig. Eine oder mehrere Textdateien sind bereits ein guter Anfang, zumal man dann auch ohne Dein Programm die Daten einsehen oder ändern kann.

Sollten die Datenstrukturen komplexer sein, kannst Du auch komplette Java-Objekte schreiben, entweder einzelne Schüler-Objekte oder gleich eine Liste oder ein Baum mit Schülerobjekten. Das Zauberwort heißt hier ObjectOutputStream und writeObject(Object) und zum Einlesen ObjectInputStream und readObject(). Das ist auch das einfachste, da man sich nicht einmal um eine Syntax für eine Textdatei kümmern muß.

Edit: Aha, es gibt eine zweite Seite. :pfeif:
 
T

Tomate_Salat

Gast
Das würde ich in Deinem Fall auch nicht machen. Es ist übertrieben, es ist nicht einfach, und es ist nicht notwendig.

Wie hier die Meinungen auseinander gehen können. Naja, letztendlich ist es dem TO überlassen, was ihm am besten gefällt + was er sich zutraut umsetzen zu können.

Gut finde ich auch die Lösungsmöglichkeit von ARadauer, die gefällt mir persönlich neben Datenbanken am besten, zumal sie schnell aufzubauen und gut zu händeln ist.

MFG

Tomate_Salat
 

ARadauer

Top Contributor
Ich versteh nur nicht die super() Anweisung in den beiden Schüler-Konstruktoren?

Sie ist doch gar keine Unterklasse?

ja kann man sich sparen... Wenn du dir mit Eclipse den Konstruktor generieren lässt, erstellt er diese Zeile...

Und frei nach dem Motto "Hüfts ned so schods ned!" Hab ich sie auch nicht gelöscht... :D
 

Empire Phoenix

Top Contributor
Die is sowieso do ab explizit oder implizit, is so ähnlich wei bei jeder instanzvariable nen this. vorzusetzen.
(was auch viele machen, bin da keine ausnahme, weil dann die syntaxvervollständigung hilft ^^)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Wo speichere ich die Jar-Files zu JGoodies FormLayout? Java Basics - Anfänger-Themen 4
S Wo speichere ich Bilder für Applets (Netbeans) Java Basics - Anfänger-Themen 5
B Zu Property Feld weitere Informationen hinzufügen? Java Basics - Anfänger-Themen 4
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
C Quelltext mit Formatierungs- und Style-Informationen versehen Java Basics - Anfänger-Themen 7
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
GreenTeaYT Wie gebe ich Informationen von einer Klasse zur anderen Klasse? Java Basics - Anfänger-Themen 9
I Informationen aus XML Datei auslesen Java Basics - Anfänger-Themen 2
MiMa Informationen aus dem Internet Abgleichen Java Basics - Anfänger-Themen 62
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Informationen zu einer URL sammeln? Java Basics - Anfänger-Themen 6
M Informationen von externem Programm bekommen (Firefox) Java Basics - Anfänger-Themen 6
D System Informationen auslesen Java Basics - Anfänger-Themen 7
S Winamp Informationen mit Java auslesen? Java Basics - Anfänger-Themen 3
D auslesen von informationen aus seitenquelltext Java Basics - Anfänger-Themen 6
2 Informationen zu Theoriethema Java Basics - Anfänger-Themen 3
cowabunga1984 Auslesen von Informationen aus Textdateien Java Basics - Anfänger-Themen 2
M Aus einer Datei (File) mehr Informationen auslesen ? Java Basics - Anfänger-Themen 8
A geeignete Java-Projekte für Schüler (Einsteiger) Java Basics - Anfänger-Themen 28
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
B Hilfe beim Schüler-Project Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben