erstmal schonma danke.
Bitte helft mir, sonst krieg ich im Studium riesig Probleme.
Aufgabe:
Erstelle eine Kunden-DB, die Kunden in nen Vector einliest und ausgibt. => funktioniert
Erstelle dazu einen Selektor, wo man Kundennamen aus dem Vector auf Übereinstimmung suchen und ausgeben kann.
ha?s=hans etc... ha*=haber, haffner etc...
Hier Hilfe pls....
Wenn ich jemandem die Files schicken kann, wär ich dankbar, denn ich hab ziemlich Druck mit dieser Sache und verzweifel fast.
public class Kundenverwaltung { public Kundenverwaltung() { } public static void main(String[] args) throws Exception { try{ KundenContainer kc=new KundenContainer(); kc.auswahl(); } catch (NullPointerException f) { System.out.println("Fehler gefunden: Nullpointer\n"+f.getMessage()); } catch (Exception e) { System.out.println("Fehler gefunden: allgemeiner\n"+e.getMessage()); } } }
Main-Klasse, in der ich versuche zuviele Anweisungen zu vermeiden. Das Exception-Handling ist noch nicht so ausgereift, weil ichs noch nich so verstehe.
public class KundenContainer { protected static Vector v=new Vector(5,2);//static... protected int kundennummer; protected String name; Kunde k1=new Kunde(); public KundenContainer() { } //wählt zwischen den einzelnen Menüoptionen public void auswahl() { Selektor s1=new Selektor(); 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 Kundenstamm, () Abbruch\n"); switch(ein){ case 1: eingabe(); //Eingabe-Maske break; case 2: suchenKnr(); // Suche nach der KNR break; case 3: //s1.setEingabe(name,k1); s1.sucheName(); //Suche nach Name break; case 4: ausgabe(); //bisheriger Kundenstamm break; default: System.out.println("Programmende erwünscht! "); //alles andere: Abbruch break; } }while(ein<5 && ein>0); } //Eingabemaske public void eingabe() { name=IOTools.readString("Wie heißt der Kunde? "); kundennummer=v.size()+1; //automatische Kundennummerzuweisung Kunde k1=new Kunde(name,kundennummer); v.add(k1); } //Ausgabeprozedur public void ausgabe() { for(Iterator iter = v.iterator(); iter.hasNext();){ Kunde k1=(Kunde)iter.next(); System.out.println(k1.ausgebenKunde()); } } public void suchenKnr(){ int suchknr=IOTools.readInteger("Welche Kundennummer wollen sie suchen? "); if(suchknr>v.size() || suchknr<1) { //fängt Kundennummern ab, die nicht existieren System.out.println("Kundennummer nicht vorhanden!"); } for(Iterator iter = v.iterator(); iter.hasNext();){ Kunde k1=(Kunde)iter.next(); if(suchknr == k1.getKnr()){ System.out.println(k1.ausgebenKunde()); } } } }
Nahezu alle Operationen des Programms werden hier ausgeführt.
Ich wollte eigentlich eine Klasse suche, die die suchen Kunde aufnimmt, aber dabei hieß es "Klasse Iterator not found". Warum?
public class Kunde { private String kunde; private String name; private int kundennummer; public Kunde() { } public Kunde(String name,int kundennummer) { this.kundennummer=kundennummer; this.name=name; } public int getKnr() { return kundennummer; } public String getName(){ return name; } public String ausgebenKunde() { kunde=getName()+"\t\t"+getKnr(); return kunde; } }
public class Selektor { private boolean uebergabe; private boolean sternMatchV; private boolean sternMatchH; private boolean sternMatch; private boolean frageMatch; Kunde k1 = new Kunde(); KundenContainer kc=new KundenContainer(); /** Creates a new instance of Selektor */ public Selektor() { } // public void setEingabe(String eingabe, Kunde einKunde){ // this.eingabe=eingabe; // this.einKunde=einKunde; // } public void sucheName() { String eingabe=IOTools.readString("Suche: "); for(Iterator iter = kc.v.iterator(); iter.hasNext();){ Kunde k1=(Kunde)iter.next(); String name = k1.getName(); int nr = k1.getKnr(); String ausgabe2=""; //Durchlauf eines einzelnen Elements und Längenbestimmung for(int x=0;x<eingabe.length();x++ ){ char zwischen[] = {name.charAt(x)}; String ausgabe = new String(zwischen); //Abfang falls Eingabe länger als vorhandene Kundennamenlänge if(eingabe.length()>name.length()){ break; } // falls in der Eingabe ein Fragezeichen vorhanden ist: if(eingabe.charAt(x)=='?'){ ausgabe2 = ausgabe2+ausgabe; } if (eingabe.charAt(x)==name.charAt(x)) { ausgabe2 = ausgabe2+ausgabe; } if(ausgabe2.matches(name)){ frageMatch = true; }else{ frageMatch = false; } } //falls in der Eingabe ein Stern vorhanden ist: try{ if(eingabe.substring(0,eingabe.indexOf('*')).matches(name.substring(0,eingabe.indexOf('*')))){ sternMatchV = true; }else{ sternMatchV = false; } if(eingabe.substring(eingabe.indexOf('*')+1,eingabe.length()).matches(name.substring(name.length()-(eingabe.length()-eingabe.indexOf('*')-1), name.length()))){ sternMatchH = true; }else{ sternMatchH = false; } // Vergleich, ob vorderer und hinterer Teil mit der Eingabe übereinstimmt if(sternMatchV && sternMatchH){ sternMatch=true; }else{ sternMatch=false; } } catch(Exception e){ } if(sternMatch || frageMatch){ uebergabe=true; }else{ uebergabe=false; } } } public void getUebergabe(){ if(uebergabe==true){ System.out.println("gfunden!"); } else { System.out.println("nada!"); } //return uebergabe; } }
Hier kann man nach Namen in der DB/Vector suchen!
ha?s findet z.B. hans, haus
ha* findet haller, haber, hasselbacher, halaaaaaaaaa etc....
Leider bekomm ich es nicht zum laufen, obwohl die Syntax stimmen müsste. Hab ich aus nem anderen Programm reinkopiert. Sind wohl manche Dinge einfach falsch instanziiert, glaub ich.
Kann mir jemand dabei helfen, die 4 Klassen zu sortieren und lauffähig zu machen?
Die Inhalte (und Vector) ist / sind vorgeschrieben. Es geht nur darum, dass man das Programm lauffähig macht.
Hab Druck, da ich es bis 22. fertighaben muss und wär euch daher dankbar, wenn sich jemand die Mühe macht!!