# C++ brauche Bitte dringend Hilfe bei meinem Programm (Lagerverwaltung)



## jojo2009 (18. Februar 2009)

Hallo erstmal!

Ich muss ein Programm mit C++ 6.0 Autoren Edition  zur Lagerverwaltung schreiben (Objekt Orientiert)... soweit so gut ich habe Probleme beim Speichern der Artikel da ich Später den Waren Eingang und Abgang abbuchen will und das, dass dann automatisch in der Textdatei gespeicher und überschrieben wird. Mein Problem ist da bei das ich die anderen Stammdaten nicht noch einmal eingeben darf sondern nur das der Bestand verändert wird. kann mir jemand sagen wie ich das realiesieren soll mit C++?

weiter unten ist meine Funktion zum eingeben der Waren.... ich weiss leider nicht wo ich da anfangen soll und womit ich das machen soll....Bitte um Hilfe!!

es wäre auch sehr hilfreich wenn mir jemand sagen kann wie ich die formeln der Lagerkennziffern realisieren kann..

Vielen Dank im Vorraus







```
void anlegenArtikel()
{
	char filename[80];
	char buffer[50];
	char ende_kenn = ' ';

	do{
		system("cls");
		printf("%s","\n\n\t \t Anlegen eines Artikels");
		printf("%s","\n\nBitte geben Sie nun die Daten des Artikels ein!\n\n");
		printf("%s","Artikelnummer: ");
		cin >> artikelnummer;
		printf("%s","Artikelbezeichnung: ");
		gets(artikelbezeichnung);
		printf("%s","Anfangsbestand: ");
		cin >> anfangsbestand;
		printf("%s","Mindestbestand: ");
		cin >> minbestand;
		printf("%s","Meldebestand: ");
		cin >> melbestand;
		printf("%s","H\x94");
		printf("%s","chstbestand: ");
		cin >> maxbestand;
		printf("%s","\n\n");

		// Speichern des Artikels in eine Textdatei(Datenbank)
		printf("\nArtikelnummer zum speichern eingeben: ");
		cin >> filename;
		ofstream textdatei(filename, ios::trunc);
		cin.ignore(1,'\n');
	
		bestand=anfangsbestand;

		textdatei << "\n\nBestand des Artikels: " << artikelbezeichnung << " mit der Artikelnummer: "<< artikelnummer<< endl << endl;
		textdatei << "Artikelnummer: \t\t" << artikelnummer << endl;
		textdatei << "Artikelbezeichnung: \t" << artikelbezeichnung << endl;
		textdatei << "Anfangsbestand: \t" << anfangsbestand << endl;
		textdatei << "Bestand: \t\t" << bestand << endl;
		textdatei << "Mindestbestand: \t" << minbestand << endl;
		textdatei << "Meldebstand: \t\t" << melbestand << endl;
		textdatei << "H\x94";	
		textdatei << "chstbestand: \t\t" << maxbestand << endl;
		textdatei <<  endl;
		textdatei.close();

		

		printf("%s","Wollen Sie noch einen Weiteren Artikel Anlegen <J/N>?: ");
		cin >> ende_kenn;
	}while (ende_kenn == 'J' || ende_kenn == 'j');


}
```


----------



## Mizi Mace (18. Februar 2009)

Einen wunderschönen guten Tag,

die angegebene Funktion ist zwar schön und nett, aber irgendwie will sich daraus kein Bild ergeben. Objektorientiert ist dieser Ansatz ganz und gar nicht. Und konsequent C++ nutzt du auch nicht.

Du solltest erstmal ein Klassenkonzept entwickeln, welches deine Lagerverwaltung und die entsprechenden Artikel (und das ganze alles,was eben dazu gehört) zusammenfasst. Dann kannst du dich an die Spezifizierung der Methoden machen.

Gruss
Mizi


----------



## vfl_freak (18. Februar 2009)

Moin,



> es wäre auch sehr hilfreich wenn mir jemand sagen kann wie ich die formeln der Lagerkennziffern realisieren kann..



Eine kurze -Suche :suspekt:  hat auf die Schnelle folgende Seiten zutage gefördert, die die von Dir gesuchten Formeln enthalten :

http://home.arcor.de/wolflumb/verlag/lehrmaterial/verlagsbetriebslehre/kennziffern.htm
http://www.azubikurse.de/Formelsammlung/lager.php
http://de.wikipedia.org/wiki/Lagerkennziffern
http://www.lernen-mit-webquests.de/wq/wq40/vorlage/rucksack-formeln1.htm

Gruß
Klaus


----------



## jojo2009 (18. Februar 2009)

ersteinmal vielen dank für die schnelle Hilfe...

Leider hat mir das nicht wirklich weiter geholfen..

erstmal zu mizi:
wir haben schon ein Konzept entwickelt ich wollte hier nur nicht alles reinkoperen weil es ein ellen langer quellcode gewesen wäre...das war nur meine Funktion zum Anlegen eins artikels. der dann in eine .txt datei gespeichert wird und mein Problem ist nur das ich nicht weiss wie ich es nun realisieren kann das ich zb. nur den Bestand ändere ohne das ich die anderen Positionen neu eingeben muss..(Der bestand soll sich so ändern, dass wenn ich einen Warenausgang buche, automatisch in der die differenz zum aktuellen bestand ermittelt..und diese dann in der .txt datei festhält ohne das sich die anderen positionen ändern...

zum 2. :
Die allgemeinen kaufmännsichen Formeln kenne ich schon..ich wollte nur fragen ob jemand konkrete C++ Befehle und Formeln hat um die Lagerkennziffern zu errechnen.


trotzdem Vielen dank

liebe Grüße


----------



## vfl_freak (18. Februar 2009)

Hallo,



> mein Problem ist nur das ich nicht weiss wie ich es nun realisieren kann das ich zb. nur den Bestand ändere ohne das ich die anderen Positionen neu eingeben muss..(Der bestand soll sich so ändern, dass wenn ich einen Warenausgang buche, automatisch in der die differenz zum aktuellen bestand ermittelt..und diese dann in der .txt datei festhält ohne das sich die anderen positionen ändern...



Ganz einfach: schreib' einzelne Funktionen! ! !
Und zwar ggf. sowohl zum Einlesen, als auch zum Speichern - dann kannst Du an allen Stellen im Programmen immer genau diejenigen aufrufen, diue Du gerade benötigst! Wie Mizi schon schrieb: Dein Code-Schnipsel ist in keiner Weise objektorientiert! ;-]



> ich wollte nur fragen ob jemand konkrete C++ Befehle und Formeln hat um die Lagerkennziffern zu errechnen


Hmm, verstehe ich das jetzt richtig? Du weißt nicht, wie Du die Formeln zu programmieren hast ? ? ? :suspekt:

Beispiel "Der durchschnittliche             Lagerbestand - (Anfangsbestand + Schlussbestand) ÷ 2" :

```
int iAnfangsbestand = 0;
int iSchlussbestand = 0;
int iDurchschnittlicherLagerbestand = 0;
....
// Einlesen der Werte
...
iDurchschnittlicherLagerbestand = (iAnfangsbestand - iSchlussbestand) / 2;  // Hier besser ein Funktionsaufruf!
```

Ist hier aber quasi nur PseudoCode! Schreib Dir für jede Formel eine Funktion, der Du die enstpr. Werte übergibst und die dann den gesuchten Wert berechnet und zurückgibt!

Gruß
Klaus


----------



## Mizi Mace (18. Februar 2009)

Einen wunderschönen guten Tag,

ein Klassenkonzept ist also vorhanden. Das ist schön.

Wenn es aussreicht, die Textdateien erst vor Beenden des Programms zu speichern (als Sicherung des aktuellen Lagerzustandes), dann würde ich das auch dann erst machen.

Wenn die Textdateien permanent geändert werden sollen (so wie es mir hier scheint), dann hast du (mir bekannte) zwei Möglichkeiten. Entweder du schreibst die gesamte Datei neu, was bei den kleinen Dateien und der Speicherung jedes Artikels in eine separate Textdatei nicht weiter zu Geschwindigkeitseinbußen führen sollte. Oder du verwendest Positionszeiger für Streams. Mit diesen kannst du deine Lese- und Schreibposition in der Datei festlegen.

Bei den Lagerkennziffern sehe ich gar kein Problem. Das sind doch ganz einfache Formeln. Die Division scheint die komplizierteste Rechenoperation zu sein.

Ich würd an deiner Stelle für die Standardausgabe _cout_ statt _printf()_ verwenden. Dort wird eine automatische Typüberprüfung durchgeführt. Außerdem hast du somit dein C-C++-Wirrwarr beseitigt.

Gruss
Mizi


----------

