Hallo Community,
ja - es geht mal wieder um einen Programmier-Anfänger und ja - es geht mal wieder um eine Lagerverwaltung ...
Es gibt durchaus schon vorhandene Posts zu diesem Thema, teils recht alt, teils etwas aktueller (sowohl in diesem Forum, als auch in anderen) aber keines der Themen behandelt mein Problem.
Daher der neue Thread ...
Es geht um die Erstellung einer kleinen Lagerverwaltung über ein Konsolenprogramm.
Eine bestimmte Anzahl von Kisten (50 Stk) soll per Eingabe gespeichert werden. Zu jeder Kiste gibt es die Seitenmasze und das Volumen sowie eine eindeutige Identifikationsnummer, unter der die Kiste abgelegt wird und im Rahmen des Programms immer wieder aufgerufen und abgefragt werden kann/soll.
Genau da hänge ich fest ...
Ich habe in meinem Code bisher schon die Struktur der Kiste, die Funktionen 'loeschen', 'aendern', 'anzeigen' und 'einlesen'. Da mein Hund ja in der 'einlesen'-Funktion begraben liegt, bin ich mal so frei und poste euch hier nur die 'einlesen'-Funktion und die main() - die auch noch nicht ganz fertig ist, aber zumindest diese Funktion schon abrufen kann.
Mein Problem ist folgendes:
Wenn ich die main() jetzt ausführe, dann kann ich gem. Hauptmenü die Option "-1- Neue Kiste anlegen" ausführen und dann entsprechend der maxAnzahl auch Kisten einlesen.
Wenn ich aber die Nummer zur eindeutigen Identifikation einlesen will, dann speichert das Programm sie a) nicht ab und b) wirft bei der zweiten Runde immer die Fehlermeldung aus, dass die Eingabe nicht verarbeitet werden konnte. Sprich, die zweite Runde der Schleife führt automatisch zur Ausgabe der if-Option innerhalb der 'einlesen'-Funktion ...
Hänge da jetzt seit knapp 4 Tagen dran und irgendwie habe ich das Gefühl, dass ich mich ordentlich verrannt habe, bzw. einfach auf der Leitung stehe. Manchmal sieht man ja den Wald vor lauter Bäumen nicht mehr ...
Frage:
Wie bekomme ich es hin, dass das Programm zu jeder Kiste eine Nummer speichert und ich über diese Nummer die Daten der Kiste abrufen kann ?
mfG
cpts
ja - es geht mal wieder um einen Programmier-Anfänger und ja - es geht mal wieder um eine Lagerverwaltung ...
Es gibt durchaus schon vorhandene Posts zu diesem Thema, teils recht alt, teils etwas aktueller (sowohl in diesem Forum, als auch in anderen) aber keines der Themen behandelt mein Problem.
Daher der neue Thread ...
Es geht um die Erstellung einer kleinen Lagerverwaltung über ein Konsolenprogramm.
Eine bestimmte Anzahl von Kisten (50 Stk) soll per Eingabe gespeichert werden. Zu jeder Kiste gibt es die Seitenmasze und das Volumen sowie eine eindeutige Identifikationsnummer, unter der die Kiste abgelegt wird und im Rahmen des Programms immer wieder aufgerufen und abgefragt werden kann/soll.
Genau da hänge ich fest ...
Ich habe in meinem Code bisher schon die Struktur der Kiste, die Funktionen 'loeschen', 'aendern', 'anzeigen' und 'einlesen'. Da mein Hund ja in der 'einlesen'-Funktion begraben liegt, bin ich mal so frei und poste euch hier nur die 'einlesen'-Funktion und die main() - die auch noch nicht ganz fertig ist, aber zumindest diese Funktion schon abrufen kann.
C++:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
//Vereinbarung einer Konstanten für die maximale Anzahl von Kisten
const int maxAnzahl = 2; //ACHTUNG - VOR ABGABE AUF 50 ÄNDERN !! <--------------------<-<-<-<-< !!!!!!!!!
//globale Vereinbarung der Struktur
struct kiste
{
int hoehe;
int breite;
int laenge;
int volumen;
int belegt;
int identNr;
};
//-----------------------------------------------------------------
//Funktionen zum Einlesen, Löschen, Ändern, Anzeigen und Auflisten
kiste einlesen(int kistenNummer)
{
kiste aKiste;
int nummer;
cout << "Bitte geben Sie die HOEHE der Kiste in cm ein: ";
cin >> aKiste.hoehe;
cout << "Bitte geben Sie die BREITE der Kiste in cm ein: ";
cin >> aKiste.breite;
cout << "Bitte geben Sie die LAENGE der Kiste in cm ein: ";
cin >> aKiste.laenge;
cout << '\n';
cout << "Bitte geben Sie die Nummer ein (1 - " << maxAnzahl << ") unter der die Eingabe gespeichert werden soll: ";
cin >> nummer;
aKiste.identNr = nummer;
if (aKiste.belegt == 1)
{
cout << "ACHTUNG - Diese Kistennummer ist bereits vergeben.";
cout << " Ihre Eingabe konnte nicht verarbeitet werden.";
}
else
{
cout << "Ihre Kiste wurde unter der Nummer " << aKiste.identNr << " gespeichert.";
aKiste.belegt = 1;
aKiste.volumen = aKiste.hoehe * aKiste.breite * aKiste.laenge;
cout << "\nDas Volumen der neuen Kiste betraegt: " << aKiste.volumen << " Kubikcentimeter." << endl;
cout << '\n';
}
return aKiste;
}
//HAUPTFUNKTION
int main()
{
//Vereinbarung der Variablen für die Struktur
kiste lagerKiste[maxAnzahl];
//sonstige Variablen
int auswahl = 0;
for (int i = 0; i < maxAnzahl; i++ )
{
lagerKiste[i].identNr = i + 1;
lagerKiste[i].belegt = 0;
}
//Anzeige der Optionen und entsprechende Auswahl der Funktionen
while (auswahl != 6)
{
cout << "\nBitte waehlen Sie durch Eingabe der entsprechenden Nummer die gewuenschte Funktion. \nSie haben die Wahl zwischen folgenden Optionen:\n" << endl;
cout << "- 1 - Neue Kiste anlegen\n";
cout << "- 2 - Bestehende Kiste loeschen\n";
cout << "- 3 - Bestehende Kiste aendern\n";
cout << "- 4 - Einzelne Kiste anzeigen\n";
cout << "- 5 - Alle Kisten anzeigen\n";
cout << "- 6 - Beenden\n";
cin >> auswahl;
cout << '\n';
switch (auswahl)
{
case 1:
for ( int schleifeEinlesen = 0; schleifeEinlesen < maxAnzahl; schleifeEinlesen++ )
lagerKiste[schleifeEinlesen] = einlesen(schleifeEinlesen +1);
break;
}
}
return 0;
}
Mein Problem ist folgendes:
Wenn ich die main() jetzt ausführe, dann kann ich gem. Hauptmenü die Option "-1- Neue Kiste anlegen" ausführen und dann entsprechend der maxAnzahl auch Kisten einlesen.
Wenn ich aber die Nummer zur eindeutigen Identifikation einlesen will, dann speichert das Programm sie a) nicht ab und b) wirft bei der zweiten Runde immer die Fehlermeldung aus, dass die Eingabe nicht verarbeitet werden konnte. Sprich, die zweite Runde der Schleife führt automatisch zur Ausgabe der if-Option innerhalb der 'einlesen'-Funktion ...
Hänge da jetzt seit knapp 4 Tagen dran und irgendwie habe ich das Gefühl, dass ich mich ordentlich verrannt habe, bzw. einfach auf der Leitung stehe. Manchmal sieht man ja den Wald vor lauter Bäumen nicht mehr ...
Frage:
Wie bekomme ich es hin, dass das Programm zu jeder Kiste eine Nummer speichert und ich über diese Nummer die Daten der Kiste abrufen kann ?
mfG
cpts
Zuletzt bearbeitet von einem Moderator: