Kunden-DB mit Vector



  • Erstmal das Wesentliche. In der Main dazu steht noch der Aufruf eigtl auf die auswahl() drinne und in der Kunde.class stehen halt Name und KNR als Eigenschaften für die Kunden.

    Erklärung: Man soll einen Kunden eingeben können mit KNR, die automatisch generiert werden soll und soll mit diesen Eigenschaften mehrere Kundenobjekte anlegen mit Hilfe eines Vektors.
    Läuft alles problemlos.

    Suchfunktion per KNR: Wie es oben steht, geht es zwar, jedoch wär es wohl geschickter, wenn ich statt i irgendwie direkt an die Kundennummer der einzelnen Vekotrenelemente komme. Schaff das aber einfach nicht. Wie geht das?? Ich pfusch das ja ein wenig hin mit dem i.

    Hier ist es zwar noch nich so das Prob, jedoch soll da noch ne weitere Suche aufsetzen: nach Namen. Und spätestens da sollte ich die Namen seperat aus dem Vektor Objektname für Objektname auslesen können.
    Nur leider krieg ich immer nur den Namen der letzten Instanz. Wie kann ich dem sagen, dass der einfach direkt Name bzw. KNR jedes Vektorelements ansprechen soll!?

    ==> Es folgen evlt noch weitere Fragen, da ich bei der Suche auch noch an nem Detail häng und auf das ganze noch ne AWT bzw. Swing-GUI aufsetzen soll. Hab nur noch bis nächste Woche Freitag Zeit, daher wär es kewl, wenn ihr mich bißl stützen könnt und mir nen kleinen Tipp gebt.
    Unsern Prof kannste diesbezüglich vergessen!



  • Hmmm da nicht sonderlich viel Hilfe kommt und ich es keinem schicken darf, post ich hier eben alles komplett mal. Bitte helft mir! Mein Studium hängt davon ab. 😃

    public class Kunde {
    
        public String kunde;
        public String name;
        public static int kundennummer;
    
        public Kunde() {
        }
    
        public Kunde(String name,int kundennummer) {
            this.kundennummer=kundennummer;
            this.name=name;
        }
    
        public void setKnr(int kundennummer){
            this.kundennummer=kundennummer;
        }
    
        public static int getKnr() {
            return kundennummer;
        }
    
        public void setName(String name){
            this.name=name;
        }
    
        public String getName(){
            return name;
        }
    
        public String ausgebenKunde() {
            kunde=this.getName()+"\t "+this.getKnr();
            return this.kunde; //kunde
        }
    
    }
    
    public class KundenContainer {
    
        protected Vector v=new Vector(5,2);
        int i;
        protected int kundennummer;
    
        public KundenContainer() {
        }
    
        //wählt zwischen den einzelnen Menüoptionen
        public void auswahl() {
    
            KundenContainer einKundenContainer=new KundenContainer();
    
            System.out.println("Kundenverwaltung");
            System.out.println("Was wollen sie tun?");
            int ein;
    
            //Auswahl-Maske, die solange wiederkommt, bis einer Abbruch wählt
            do {
                ein=IOTools.readInteger("(1) Kunde anlegen, (2) Kunde nach Knr suchen, (3) Kunde nach Name suchen (4) bisheriger Kundentamm, () Abbruch\n");
    
                switch(ein){
                    case 1: einKundenContainer.eingabe(); //Eingabe-Maske
                    break;
    
                    case 2: einKundenContainer.sucheKunde(); // Suche nach der KNR
                    break;
    
                    case 3: einKundenContainer.sucheKunde(); //Suche nach Name
                    break;
    
                    case 4: einKundenContainer.ausgabe(); //bisheriger Kundenstamm
                    break;
    
                    default:
                        System.out.println("Programmende erwünscht! "); //alles andere: Abbruch
                        break;
                }
            }while(ein<5 && ein>0); //ein==1 || ein==2 || ein==3 || ein==4);
    
        }
    
        public void sucheKunde(){
    
            int suchknr=IOTools.readInteger("Welche Kundennummer wollen sie suchen? ");
    
            //fängt Kundennummern ab, die nicht existieren
            if(suchknr>v.size() || suchknr<1) {
                System.out.println("Kundennummer nicht vorhanden!");
            }
    
            i=0;
            for(Iterator iter = v.iterator(); iter.hasNext(); ){
    
                Kunde kunde = (Kunde)v.get(i);
               // Kunde kunde = (Kunde) iter.next();
               // kunde = new Kunde();
                 if (kunde.getKnr() == suchknr) {
              // Gefunden!
                     System.out.println("Gefunden!");
              break;
                }
                i++;
    
    //            Kunde k1=new Kunde();
    //            System.out.println(k1.getKnr());
    //                       
    //            if(suchknr == i+1){ 
    //                System.out.println(v.elementAt(suchknr-1)); //oder i
    //            }
    //            i++;
            }
        }
    
        //Eingabemaske
        public void eingabe() {
            String name=IOTools.readString("Wie heißt der Kunde? ");
            kundennummer=v.size()+1;
            Kunde k1=new Kunde(name,kundennummer);
            v.add(k1); //k1.ausgebenKunde()
        }
    
        //Ausgabeprozedur
        public void ausgabe() { //selbsterklärend und irrelevant
            for(int i=0;i<v.size();i++) {
                System.out.println(v.elementAt(i));
            }
        }
    
    }
    
    public class Kundenverwaltung {
    
        public static void main(String[] args) {
    
            KundenContainer einKundenContainer=new KundenContainer();
    
            einKundenContainer.auswahl(); //die auswahl im Container steuert das ganze Programm
    
           }
    
        }
    


  • Hi

    verwend mal den Code oder java tag. so liest sich das kein schwein durch. Wozu haben die wohl diese vielen schönen buttons eingeführt.

    gruss Termite

    ps. du kanst deinen Beitrag auch nacheditieren. und die Tags einfügen

    class java
    {
    
    };
    


  • public class Kunde {
    
    public String kunde;
    public String name;
    public static int kundennummer; 
    
    ----
    
    public static int getKnr() {
    return kundennummer;
    }
    

    Wieso ist "kundennummer" und damit "getKnr()" static?

    public KundenContainer() {
    }
    
    //wählt zwischen den einzelnen Menüoptionen
    public void auswahl() {
    
    KundenContainer einKundenContainer=new KundenContainer();
    

    Nochmal ein KundenContainer-Objekt in "auswahl()" anzulegen, ist, glaube ich, unnötig.

    Suchfunktion per KNR: Wie es oben steht, geht es zwar, jedoch wär es wohl geschickter, wenn ich statt i irgendwie direkt an die Kundennummer der einzelnen Vekotrenelemente komme. Schaff das aber einfach nicht. Wie geht das?? Ich pfusch das ja ein wenig hin mit dem i.

    Ich würd's erstmal bei einer Schleife belassen, aber ein bischen anders schreiben:

    for (int i = 0; i < v.size(); i++)
     {
      if (((Kunde)v.get(i)).getKnr() == suchknr)
       System.out.println("Gefunden");
     }
    

    Namen suchen (fast genauso bis auf if):

    if (((Kunde)v.get(i)).getName().equals(suchname))
    


  • Hi Felli,
    also KNR is jetzt nimmer static. War glaub noch ne Programmierleiche von ner vorigen Version.

    Ohne das Kundenobjekt in der auswahl() findet er leider die in den cases aufgerufenen Methoden net, daher is die drin!

    Hmm also dein unterer Codeschnippsel hat mich schonmal weiter.
    Wie geb ich denn jetzt den Kunden aus?

    Ich krieg halt grad nur "p@3294" und null bzw. 0 als knr, d.h. er hat probleme mit den instanzen. hast du da ne idee?

    was muss ich da an der suche ändern?
    und was muss ich in der ausgabe() ändern?

    Kriegs grad net hin. 😞



  • mubbelbubbel82 schrieb:

    Ohne das Kundenobjekt in der auswahl() findet er leider die in den cases aufgerufenen Methoden net, daher is die drin!

    Du hast ja schon ein Objekt von "KundenContainer" in deiner main()-Methode. In "auswahl()" kannst du dann this verwenden (einfach noch mal mit Java-Grundlagen auseinander setzen):

    Beispiel:

    case 4: this.ausgabe();
    

    Ich krieg halt grad nur "p@3294" und null bzw. 0 als knr, d.h. er hat probleme mit den instanzen. hast du da ne idee?

    Hab's mal bei mir ausprobiert und "static" aus der "Kunde"-Klasse entfernt. Dann hab ich bei "KundenContainer" folgende Methoden ergänzt bzw. zum Testen geändert:

    public void sucheKunde(String suchname)
        {
         for (int i = 0; i < v.size(); i++)
         {
          if (((Kunde)v.get(i)).getName().equals(suchname))
          {
           System.out.println("Gefunden");
           System.out.println( ((Kunde)v.get(i)).ausgebenKunde() );
          }
         }
        }
    
        public void eingabe(String name)
        {
            kundennummer=v.size()+1;
            Kunde k1=new Kunde(name,kundennummer);
            v.add(k1);
            System.out.println("Neuer Kunde eingetragen: " + kundennummer);
        }
    

    In main() hab ich dann das geschrieben:

    public static void main(String[] args)
        {
         KundenContainer e = new KundenContainer();
         e.eingabe("Fritz");
         e.eingabe("Hans");
         e.eingabe("Albert");
         e.sucheKunde("Hans");
        }
    

    Kunde wird gefunden; Name und Nummer ausgegeben.


Anmelden zum Antworten