tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
916
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    Hallo,

    soll für die Uni ein bestehendes Telefonbuch erweitern.

    VorhanDen;
    ein Telefonbuch mit Oberfläche
    Klasse Einträge mit Informationen zu Person (eigene Klasse),
    Anschrift (eigene Klasse)
    Telefonnummer (eigne Klasse)

    Was gesucht ist:
    -Einträge in persistent in geeigneten Dateien zu verwalten.
    (z.B. eine Datei für jeden Ort)
    -Einträge sollen erst nach Vorwahl und dann nach Telefonnummer geordnet abgespeichert vorliegen...
    Suche (nach Name und Vorname, eventuell Ort)

    ich müsste ich 2 Aspekte speichern?
    -eine Liste über die verschiedenen Orte/Telefonbücher
    -einmal die Einträge zu jedem dieser Orte


    könnt ihr mir da methodische Hinweise geben?
    --> vor allem betreffend Datenhaltung
    -- Filter und Sortieren?

    DANKE
    Geändert von Cortadillo (09.09.07 um 17:54 Uhr) Grund: Konkretisierung
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Muss das in Dateien gespeichert werden? Eine Datenbank scheint mir dafür mehr geeignet.
     

  3. #3
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    ja,

    nach Aufgabenstellung 'in Dateien'
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    darfst du andere Frameworks nutzen?

    Dann würde ich dir nämlich vorschlagen, das ganze mit XML zu lösen. Dazu kannst du dann einen der folgen Mapper nutzen.
    JAXB
    XMLBeans
    Castor
    JBind
    JBiX

    Sollen die in der richtigen Reihenfolgen abgespeichert werden oder nur angezeigt werden?

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    wie ich das verstanden habe, sollen sie geordnet abgespeichert sein.
    und vermutlich ohne Verwendung eines Mappers.

    bin selbst etwas voran gekommen.

    habe eine sortierte ArrayList gefüllt
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    if (eingabeModus) {
          Person p = new Person(jc_anrede.getSelectedItem().toString(),
                                jt_vorname.getText(), jt_name.getText());
          Anschrift a = new Anschrift(jt_strasse.getText(), jt_hausnr.getText(),
                                      jt_postleitzahl.getText(),
                                      jt_ort.getText(), jt_zusatz.getText());
          TeleNummer t = new TeleNummer(jt_vorwahl.getText(),
                                        jt_nummer.getText(),
                                        jc_anschluss.getSelectedItem().
                                        toString());
          System.out.println(p.toString() + a.toString() + t.toString());
          Eintrag e = new Eintrag(p, t, a);
    mit folgendem wird ein neuer Eintrag angelegt und gleich sortiert
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    public boolean neuenEintragAnlegen(Eintrag e) {
        tbL.add(e);
        Collections.sort(tbL);
        indexAktuell=tbL.size()-1;
        this.setChanged();
        this.notifyObservers();
        return true;
      }
    implementiert werden soll dann eine Suche nach Vorname,Name,Ort (dieser optional)
    wie komme ich daran? (tbl ist als List definiert)
    Code :
    1
    2
    3
    
    public TelBuch1() {
        tbL = new ArrayList();
      }

    Danke
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Ist das ne Übung oder ist das ein Auftrag der Uni?


    Du kannst bei einer Liste leicht über den Index zugreifen.
    Code :
    1
    
    Eintrag e = (Eintrag)tbl.get(0);

    Wenn du mit Java 5 arbeitest, dann kannst du das auch so machen, dann brauchst du nicht zu casten.
    Code :
    1
    2
    3
    
    List<Eintrag> tbl = new ArrayList<Eintrag>();
    // Einträge hinzufügen
    Eintrag e = tbl.get(0);
    MFG

    zEriX
    Geändert von zerix (11.09.07 um 07:46 Uhr)
    Cortadillo bedankt sich. 
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    so beides.

    einerseits muss ich es machen als Schein;
    und habs nicht ohne Hilfe hinbekommen.
    (hab mich allerdings eigentlich nur mit c# beschäftigt und insgesamt nur wenig
    mit Collections)

    andererseits will ich auch selbst verstehen, wie es funkt.

    Danke, das (Eintrag) hilft.

    ich versuchte direkt auf (Person) zu casten, dass nahm mir aber eclipse übel.
     

  8. #8
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    hi, der letzte Tip war hilfreich.
    die Suche funktioniert nun.

    Warum funktioniert '==' nicht bei Vergleichen, aber 'equals' ?

    danke
     

  9. #9
    daN-the-man daN-the-man ist offline Mitglied
    Registriert seit
    Nov 2006
    Beiträge
    15
    Weil == nur überprüft, ob die Referenzen auf das selbe Objekt zeigen.

    Inhaltlicher Vergleich (von String) macht man halt mit equals()...
     

  10. #10
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Mit "==" wird geschaut, ob es sich um das gleiche Object handelt. Also ob die Objecte an der gleichen Speicherstelle liegen.

    Mit equals wird geprüft ob die Objecte gleich sind. Also ob der "Inhalt" der Objecte gleich ist. Deshalb ist es auch wichtig wenn du selbst Models oder ähnliches schreibst, dass du die equals-Methode überschreibst.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  11. #11
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    so, danke,
    kann mich nun an den nächsten Schritt wagen.

    das Speichern.
     

  12. #12
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Zitat Zitat von daN-the-man
    Inhaltlicher Vergleich (von String) macht man halt mit equals()...
    Mit equals vergleicht man nicht nur Strings, sondern genrell Objecte.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  13. #13
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    hallo,
    ich bins wieder.

    hab jetzt geschafft, das Telefonbuch abzuspeichern...
    --> Liste wieder in einzelne Objekte zerpflücken,
    diese abspeichern.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    OutputStream fos = null; 
          List ll=tb.getTelList();
          try 
          { 
            fos = new FileOutputStream(fname); 
            ObjectOutputStream o = new ObjectOutputStream( fos ); 
            for (int x=0;x<(ll.size());x++){
                Eintrag ee = (Eintrag) ll.get(x);
                o.writeObject( ee );    
            }
             }

    nun, das funktioniert soweit, nur ist das Sinnvoll?
    bzw. wie speichert man die komplette Liste?

    nun möchte ich die Liste wieder auslesen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     try {
          ObjectInputStream in =
              new ObjectInputStream(
              new FileInputStream(fname));
          int xx;
          Eintrag e = (Eintrag) in.readObject();
          tb = new TelBuch1();
          tb.neuenEintragAnlegen(e);

    dabei habe ich leider nichts gefunden,
    eine Schleife oder ähnlich,
    um das File auszulesen, bis alle Objekte gelesen und übertragen
     

  14. #14
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Sofern die Liste Serializable ist kannst du diese auch einfach selbst mit dem ObjectOutputStream rausschreiben. ArrayList ist z.B. Serialisierbar.

    Ansonsten schreibst du an den Anfang einen Integer mit der Anzahl von Elementen und liest diesen zuerst aus, dann kannst du solange entsprechend die Listenelemente wieder auslesen.
     

  15. #15
    Cortadillo Cortadillo ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    32
    hi,

    scheinbar funktioniert das Ausschreiben der serialisierten Liste nun.

    aber das Einlesen...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    InputStream fis = null; 
      try 
      { 
        fis = new FileInputStream(fname); 
        ObjectInputStream ois = new ObjectInputStream(fis);
        int cap = ois.read();
        System.out.println(cap);
      }
    --> die Ausgabe von cap ist immer -1, was EOF bedeutet

    wieso ist der Eingangstrom leer?
    das File ist definitiv nicht leer

    danke
     

Ähnliche Themen

  1. telefonbuch in Fensterapplikation umwandeln
    Von mazcapone im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 26.02.08, 15:18
  2. Telefonbuch Suche
    Von port29 im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 12.10.07, 19:28
  3. Telefonbuch script
    Von Angel Arts Grafix im Forum Java
    Antworten: 1
    Letzter Beitrag: 22.05.05, 14:57
  4. Telefonbuch in JAVA
    Von Angel Arts Grafix im Forum Java
    Antworten: 2
    Letzter Beitrag: 17.05.05, 21:32
  5. Telefonbuch programmieren
    Von alma im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 21.08.03, 22:43