Portal > Foren > Java > Allgemeine Java-Programmierung > Probleme und Zeitdruck: Kunden-DB (Vector)
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 14.07.2005, 16:21 Nach oben    #1
mubbelbubbel82
Gast
 
Beiträge: n/a
Standard Probleme und Zeitdruck: Kunden-DB (Vector)

Hallo Gemeinde,
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.




Code:
   
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.



Code:
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?




Code:
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;
	 }
Code:
[/font]
   
  	public String getName(){
		return  name;
	}
	
	public String ausgebenKunde() {
		 kunde=getName()+"\t\t"+getKnr();
		return kunde; 
	}
	 
} 






[font=Arial]
Code:
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!!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.07.2005, 22:50 Nach oben    #2
Benutzer
 
Registriert seit: 11.06.2005
Beiträge: 36
Standard

Hallo,
die Klasse Selektor mal ersetzen mit

PHP-Code:
import java.util.*;
import java.util.regex.*;
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: ");
        
        
eingabe eingabe.replaceAll("\\?{1}","[([a-z][A-Z])]{1}");
        
eingabe eingabe.replaceAll("\\*{1}",".\\*");
        
eingabe "(("+eingabe+"))";
        
Pattern p Pattern.compile(eingabe);
        
Matcher matcher;
        
        
Kunde k1;
        for(
Iterator iter  kc.v.iterator(); iter.hasNext();-){
            
k1=(Kunde)iter.next();
            
String name =  k1.getName();
            
matcher p.matcher(name);
            if(
matcher.find() == true){
             
System.out.println(name+" mit Kund.Nr: "+k1.getKnr()+" passt!");
            }
        }
     }
    
    public 
void getUebergabe(){
         if(
uebergabe==true){
          
System.out.println("gfunden!"); 
         }
        else 
        {
             
System.out.println("nada!");         
        }
        
         
//return uebergabe;
    
}

es sind nur die imports und die Methode sucheName() geändert.
Schau mal ob sie für dich zufriedenstellend funktioniert.

mfG
rath ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.07.2005, 23:01 Nach oben    #3
mubbelbubbel82
Gast
 
Beiträge: n/a
Standard

ich probiers mal gegen später.

mir ist nur vorhin aufgefallen, dass ich es eh an ne access-db anbinden soll.

soll ich weiterhin mit dem vektor verfahren oder soll ich einfach alle einzeln in die db kloppen? ich würd zu zweiterem gerade tendieren.

wie kann ich denn die connection zu der datei herstellen?
dachte eigentlich, dass es passen müsste, aber es heißt immer, dass ich weder treiber geladen hab und datenquelle auch net bekannt ist.

die datei heißt verwaltung.mdb und darin gibt es ne tabelle kunden, auf die ich zugreifen bzw. in die ich inserten will via
INSERT INTO kunden VALUES (?,?,?) (es wären 11 Spalten, aber das is ja net der Grund, oder?)

oder müsste hinter kunden noch .... kunden (kundennummer, name, straße, telefon)

Krieg das net hin und das is noch n größeres Prob als die Suche.
Die Suche müsste halt dann auf DB angepasst werden. Was ändert sich dann?

Und danke soweit für eure Mühe!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.07.2005, 23:43 Nach oben    #4
Benutzer
 
Registriert seit: 11.06.2005
Beiträge: 36
Standard

Hallo,

eine kleine Anleitung zur Arbeit mit Datenbanken (auch Access)
unter http://www.galileocomputing.de/openb...0008361F02A1C0
Die Daten in der Datenbank oder im Vector-Objekt zu haben hat beides
Vor- und Nachteile. Wäre denke ich bei deinem Programm auch rel. egal.

Solltest du dich für das Vector-Objekt entscheiden musst du eben
am Anfang die gesamte Tabelle auslesen und in das Objekt schreiben und dieses am Ende wieder in die Datenbank schreiben (nachdem die Tabelle komplett gelöscht wurde).

Andernfalls eben bei jedem Zugriff eine SQL-Abfrage starten worüber
sich auch die Suche (SELECT) gut regeln läßt, da es SQL-Platzhalter gibt
die die gleiche Wirkung wie dein '?' und '*' haben.

Ob du beim INSERT-Statement alles angeben muss kommt auf das
Design der Tabelle an, also ob nun in jeder Spalte etwas drin stehen MUSS
oder eben nicht und wenn ja in welcher.
Ein Statement in dem du nur ein paar Spalten ausfüllen sehen so aus:
INSERT INTO tabelle (spalte1,spalte4,spalte3) VALUES ('kdk','iei',5)
Wenn in jede Spalte etwas geschrieben werden soll kannst du die Klammern hinter "tabelle" weglassen und gleich mit VALUES anfangen, musst dich dabei allerdings an die Reihenfolge der Spalten halten.

mfG
rath ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Kundensupport? Sclot Plauderecke 13 06.06.2007 15:51
Probleme mit Strato / Arcor? MrNiceGuy Plauderecke 15 28.12.2006 23:35
JTable Probleme boehseronkel Desktop-Applikationen und Grafik 3 09.11.2006 18:30
Kunden - Gute Argumente um uneinsichtigen Kunden zu helfen WarrenFaith Interessante Diskussionsthemen 13 23.09.2006 14:37
all-inkl.com warnt Kunden wegen Sicherheitslücken in Standardsoftware Jann Hendrik Nachrichten 8 14.01.2006 15:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45