DeMon Toll Geschrieben 24. Juli 2008 Geschrieben 24. Juli 2008 Moin zusammen, ich muss gerade ein kleines Lagerverwaltungs Programm in C++ Schreiben. Im moment hänge ich bei der Benutzerkontrolle. Hier die Situation: Es soll beim Programmstart Überprüft werden ob die beiden Text Dateien (.txt) infoName.txt (Datei für Benutzer) und die Datei infoPW.txt (liste der Passwörter für die Benutzer). schon vorhanden sind oder nicht. Wenn nicht sollen Sie angelegt werden und dem User per Ausgabe mitgeteilt werden dasdieser Schritt erfolgreich beendet wurde (diese aktion funktioniert bereits ohne Probleme). Der Benutzer soll nun den Username und das Passwort eingeben. Die eingabe soll mit den Informationen aus den beiden .txt Dateien überprüft werden (hier happerts^^). Problemdefinition: Hier mal der QT Auszug: cout << "\nGeben Sie den Benutzernamen ein:"; cout << "\n"; cout << "<INPUT>"; cin >> LoginNameUeb; // Eingabe desBenutzernamens cout << "Geben Sie das Passwort ein:"; cout << "\n"; cout << "<INPUT>"; cin >> LoginPwUeb; // Eingabe des Passworts ifstream loginInfoName("infoName.txt"); // öffnen der Datei infoName.txt ifstream loginInfoPW ("infoPW.txt"); // öffnen der Datei infoPW.txt while (!loginInfoName.eof()){ //schleifendurchlauf solange loginInfoName nicht EOF getline (loginInfoName,LoginNameUeb); //Zeilenweises einlesen der Informationen aus infoName.txt while (!loginInfoPW.eof()){ // schleifen durchlauf solange infoPW nicht EOF getline (loginInfoPW, LoginPwUeb); // Zeilenweise einlesen der Informationen aus infoPW.txt } } Das problem ist wie kann ich die eingelesenen zeilen in eine Variable schreiben und diese dann mit der eingabe überprüfen? Wäre super wenn ihr mir nen tipp geben könntet wie ich das anstelle^^. so long DeMon Zitieren
Klotzkopp Geschrieben 24. Juli 2008 Geschrieben 24. Juli 2008 Das ist so schon gar nicht schlecht. Allerdings ist es nicht besonders sinnvoll, für die Eingabe und die Dateien dieselben Variablen zu benutzen. Wie willst du die denn vergleichen, wenn du die eingegebenen Daten mit denen aus den Dateien überschreibst? Zitieren
DeMon Toll Geschrieben 24. Juli 2008 Autor Geschrieben 24. Juli 2008 Hi, erst mal danke für deine antwort. Das mit der Variable stimmt natürlich den Auszug den ich hier gepostet habe war innerhalb meiner Ausprobier aktion^^. Ich habe einfach sämmtliche möglichkeiten ausprobiert^^. Eigentlich müsst es richtig heißen (zumindest so wies war): getline (loginInfoName,LoginInfName); und getline (loginInfoPW,LoginInfPw); ich weis die Namensgebung is bescheiden aber zu der zeit is mir nichts besseres eingefallen^^. so long DeMon Zitieren
Klotzkopp Geschrieben 24. Juli 2008 Geschrieben 24. Juli 2008 Willst du nur prüfen, ob die Eingabe auf irgendeine Kombination von Name und Passwort passt, oder müssen es schon die zusammengehörigen sein? Denn dadurch, dass du die Schleifen verschachtelst, würdest du jede Kombination prüfen, was vermutlich nicht gewollt ist. Zitieren
DeMon Toll Geschrieben 25. Juli 2008 Autor Geschrieben 25. Juli 2008 (bearbeitet) Moin, du hast recht es ist eigentlich nicht gewollt, es soll das haargenau sein (also root - root und nicht root - anderespw). Gut das du dass sagst 0.0 so long DeMon Bearbeitet 25. Juli 2008 von DeMon Toll Zitieren
DeMon Toll Geschrieben 25. Juli 2008 Autor Geschrieben 25. Juli 2008 Moin, ich habs endlich . War im grunde ganz einfach^^. Danke an Klotzkopp für deine Hilfe, vor allem dein 1. Post hat mich auf die richtige Spur gebracht^^. Achja die beiden while Schleifen hab ich ausseinander gebastelt^^. Hier mal der QT für die leute die ein ähnliches Problem haben: while (!loginInfoName.eof()){ //schleifendurchlauf solange loginInfoName nicht EOF getline (loginInfoName,LoginInfName); //Zeilenweises einlesen der Informationen aus infoName.txt } while (!loginInfoPW.eof()){ // schleifen durchlauf solange infoPW nicht EOF getline (loginInfoPW,LoginInfPw); // Zeilenweise einlesen der Informationen aus infoPW.txt } if ((LoginNameUeb == LoginInfName) && (LoginPwUeb == LoginInfPw)){ cout << "Erfolgreich eingeloggt" << endl; } else cout << "Fehler beim Login" << endl; grütze und ein schönes WE DeMon Zitieren
Klotzkopp Geschrieben 25. Juli 2008 Geschrieben 25. Juli 2008 Hier mal der QT für die leute die ein ähnliches Problem haben:Hast du das mal mit mehr als einer Zeile in den Dateien getestet? Das sollte eigentlich nur dann funktionieren, wenn der Benutzer die Daten der jeweils letzten Zeilen der Dateien eingibt. Zitieren
DeMon Toll Geschrieben 25. Juli 2008 Autor Geschrieben 25. Juli 2008 hmmm....du hast recht weil die Variable ja bei jedem durchlauf neu überschrieben wird =/. naja dann..........werd ich mal weiter rumprobieren^^. Schade zu früh gefreut xD Zitieren
DeMon Toll Geschrieben 25. Juli 2008 Autor Geschrieben 25. Juli 2008 So es funktioniert (getestet mit je 5 Zeilen pro Datei). Hier der QT: while (!loginInfoName.eof()){ //schleifendurchlauf solange loginInfoName nicht EOF getline (loginInfoName,LoginInfName); //Zeilenweises einlesen der Informationen aus infoName.txt if (LoginInfName == LoginNameUeb){ cout << "Benutzernamen erfolgreich verifiziert" << endl; break; } else{ } } while (!loginInfoPW.eof()){ // schleifen durchlauf solange infoPW nicht EOF getline (loginInfoPW,LoginInfPw); // Zeilenweise einlesen der Informationen aus infoPW.txt if (LoginInfPw == LoginPwUeb){ cout << "Passwort erfolgreich verifiziert" << endl; break; } else{ } } if ((LoginNameUeb == LoginInfName) && (LoginPwUeb == LoginInfPw)){ cout << "Erfolgreich eingeloggt" << endl; } else{ // Fehler ausgabe bei nicht erfolgreichem Login cout << "Fehler beim Login" << endl; cout << "Versuchen Sie den Login erneut" << endl; cout << "Sollte es dennoch probleme geben wenden Sie sich an" << endl; cout << "ihren Systemadministrator." << endl; cout << "Druecken sie eine beliebige Taste um fortzufahren" << endl; cout << "\n\n<INPUT>"; getch(); goto LoginGoTo; } } Ich weis is nicht gerade die sauberste Methode mit break aber es funktioniert^^. so long DeMon Zitieren
Klotzkopp Geschrieben 25. Juli 2008 Geschrieben 25. Juli 2008 Jetzt hast du aber wieder das Problem, dass jede Kombination aus Name und Passwort akzeptiert wird, auch wenn die gar nicht zusammengehören. Muss das eigentlich sein, dass die Daten auf zwei Dateien verteilt sind? Das macht das ganze unnötig kompliziert. Unsauber an dem Code ist übrigens nicht das break, sondern das goto. Zitieren
DeMon Toll Geschrieben 25. Juli 2008 Autor Geschrieben 25. Juli 2008 (bearbeitet) Ja ich weis das goto hat die Eigenschaft einfache Quelltexte ruck zuck hunds kompliziert zu machen^^. Zu den Benutzern bzw. den Passwörtern. Ich muss später noch eine Funktion einbauen die überprüft das jedes Passwort nur einmal vorkommt. Da ja noch die Funktion des User anlegens in innerhalb des Programms auch noch bestandteil ist. Zu den beiden Dateien....ja das war so vorgabe von meinem Cheffe^^. Da ich nich ganz so der Programmier Profi bin und mir ehrlich gesagt neue Themen in diesem bereich recht schwer fallen diese schnell zu lernen hat er sich ne Aufgabe ausgedacht die mich fordern soll^^. Naja was will man da machen . Aber trotzdem mal thx für deine Hilfe , wobei ich so das leise gefühl habe ich werde in den nächsten Tagen mich noch 1 oder 2 mal hier melden müssen^^. so long DeMon Bearbeitet 25. Juli 2008 von DeMon Toll Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.