[C++] Brauche Hilfe

Mudvayner

Grünschnabel
ich muss ne Lagerverwaltung schreiben, in objektorientierten c++ ...

ich weiß, der code sieht dreckig aus, bin halt anfänger

--anzeigen,eingeben,speichern funktioniert eigentlich bis auf ein paar schönheitsfehler

--spezielle überprüfung ob leerzeichen engegeben worden sind ist auch drin
--spezielle überprüfung ob zahlen engegeben worden sind ist auch

mir fehlt noch das lesen und das sortieren

und ausserdem ne schleife die überprüft, die oben genannten überprüfungen verbindet, also ob eine zahl ohne leerzeichen eingegeben worden ist

wenn sich jemand damit auskennt, werft mal nen blick rein und sagt mal was ich anders machen oder ändern könnte/müsste

code --> http://srv8.qfile.de/free/4916415/lager.txt
 
Zuletzt bearbeitet:
moin


Was ist denn das Problem beim lesen und sortiere?
Weisst du nciht wie man das macht? Oder wie man es einbauen muss, in deinen Code?

Zu beiden findest du hier massig Beispiele im Forum, schonmal geguckt?


mfg
umbrasaxum
 
Ich habe jetzt einige Beispiele durchgesehen, aber entweder finde ich nicht das Richtige oder ich bin noch zu sehr Anfänger um das passende zu finden.
Das lesen wird nicht das Problem sein, habe das mit dem schreiben ja auch geschafft (2 tage). Aber das Sortieren macht mir Sorgen.
 
das laden macht mir doch ganz schön probleme...

sieht jetzt ungefähr so aus...ich weiss nicht wie ich das dateiende erkennen lasse

Code:
void laden_knd()
	{
		Adresse knd[ANZ];
		std::string name;
		std::string vorname;
		std::ifstream fin("kunden.txt");
		do{
			for (int i=0;i<ANZ;i++)
			{
		getline (fin, name, ' ');
		getline (fin, vorname, ' ');
		knd[i].set_name(name);
		knd[i].set_vorname(vorname);
					}
			}while(std::cin.eof()!=0);
 
die kunden.txt hat das format

Code:
name1 vorname1
name2 vorname2

oder ist es einfacher wenn sie ein anderes format hätte?
 
Also im normalfall ist das Format deiner Textdatei ok, Probleme gibts nur wenn dein Name z.b. "Fred Müller- Schulze" wäre... dann würdeste die komplette datei falsch auslesen.

Besser wäre das TAB Zeichen zum trennen.
z.b. "Fred Müller- Schulze"
dann wäre das kein Problem.

Wenn das eine Aufgabe einer Uni ist, sollteste das mit TAB machen, denn manche Profs machen das gerne wie oben, und dann kannste ein Proggi in die Tonne haun *g*

Gruss

MFC OpenGL
 
Jetzt funktioniert das einlesen von name und vorname, aber ich bekomme bei der hausnummer und der plz eine fehlermeldung weil sie ja INT sind. gibt es da noch einen anderen befehl, statt getline?

Code:
	void laden_knd(Adresse knd[])
	{
						  for (int i=0;i<ANZ;i++)//init Datensätze
		  { 
			  knd[i].set_name("#");//datensatz frei
			  knd[i].set_vorname("#");
				  }
		std::string name;
		std::string vorname;
		std::string strasse;
		std::string hausnummer;
		std::string plz;
		std::string stadt;
		std::ifstream fin;
		fin.open("kunden.txt");
		do{
			
			for (int i=0;i<ANZ;i++)
			{
				if(!fin.eof())
			{
		getline (fin, name, '\t');
		getline (fin, vorname, '\t');
		getline (fin, strasse, '\t');
		getline (fin, hausnummer, '\t');
		getline (fin, plz, '\t');
		getline (fin, stadt, '\t');
		knd[i].set_name(name);
		knd[i].set_vorname(vorname);
		knd[i].set_strasse(strasse);
		knd[i].set_hausnummer(hausnummer);
		knd[i].set_plz(plz);
		knd[i].set_stadt(stadt);
			}
					}
			}while(!fin.eof());

				system("pause");
				fin.close();


			
		
		
		
	}
 
habs mit atoi geschafft *juchuu*

Code:
void laden_knd(Adresse knd[])
	{
		std::string name;
		std::string vorname;
		std::string strasse;
		std::string hausnummer_string;
		std::string plz_string;
		std::string stadt;
		std::ifstream fin;
		fin.open("kunden.txt");
		if (!fin)
		{
			cout << "Kunden-daten aus kunden.txt NICHT geladen weil die Datei nicht vorhanden ist. Tragen sie erst Daten ein und speichern sie diese.\n";
		}
		else
		{
			int x;
			do{
				
				for (int i=0;i<ANZ;i++)
				{
					if(!fin.eof())
					{
						//int hausnummer=0;
						//	int plz=0;
						
						getline (fin, name, '\t');
						getline (fin, vorname, '\t');
						getline (fin, strasse, '\t');
						getline (fin, hausnummer_string, '\t');
						getline (fin, plz_string, '\t');
						getline (fin, stadt, '\n');
						
						int hausnummer = atoi(hausnummer_string.c_str());
						int plz = atoi(plz_string.c_str());
						
						knd[i].set_name(name);
						knd[i].set_name(name);
						knd[i].set_vorname(vorname);
						knd[i].set_strasse(strasse);
						knd[i].set_hausnummer(hausnummer);
						knd[i].set_plz(plz);
						knd[i].set_stadt(stadt);
						x=i;
						
					}
				}
				name='#'; //löschen der beiden nullen in plz und hausnummer
				knd[x].set_name(name);
			}while(!fin.eof());
			fin.close();
			cout << "Auftrags-daten aus auftrag.txt geladen" <<  endl;
		}
		
	}
 
Zurück