![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
| 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!! |
|
| | Nach oben #2 |
| Benutzer Registriert seit: 11.06.2005
Beiträge: 36
|
Hallo, die Klasse Selektor mal ersetzen mit PHP-Code: Schau mal ob sie für dich zufriedenstellend funktioniert. mfG |
| | |
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
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! |
|
| | Nach oben #4 |
| Benutzer Registriert seit: 11.06.2005
Beiträge: 36
|
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 |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ä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 |