C++/CLI Lehrgang: Lagerverwaltung



  • Hallo
    Machst du zufällig grad einen Lehrgang der C++/CLI beinhaltet?
    Hatte da auch mal an so einer Aufgabe gesessen.
    Wenn noch Fragen sind kannst dich ja per Mail melden.

    Hier mal der komplette Code dafür:

    #include "stdafx.h"
    
    using namespace System;
    
    //Maximale Kistenanzahl
    const Int32 Maxzahl=3;
    
    struct Kiste {
    		Int32 kistennummer;
    		Int32 breite;
    		Int32 hoehe;
    		Int32 laenge;
    		};
    
    //Funktionsprototypen
    Void anlegen(Kiste *);
    Void loeschen(Kiste *);
    Void aendern(Kiste *);
    Void anzeigen(Kiste *);
    Void auflisten(Kiste *);
    Int32 volumen(Kiste *, Int32);
    
    int main(array<System::String ^> ^args)
    {
    	Int32 eingabe;
    	Boolean fortsetzen=true;
    
    	Kiste grossekiste[Maxzahl];
    
    	//Werte auf 0 setzen
    	for(Int32 zaehler=0; zaehler<Maxzahl; zaehler++) {
    		grossekiste[zaehler].kistennummer=0;
    		grossekiste[zaehler].breite=0;
    		grossekiste[zaehler].hoehe=0;
    		grossekiste[zaehler].laenge=0;
    	}
    
    	//Hauptmenue
    	while(fortsetzen==true) {
    
    		Console::Clear();
    		Console::WriteLine("Bitte wählen Sie eine Funktion aus");
    		Console::WriteLine("1 - Neue Kiste anlegen");
    		Console::WriteLine("2 - Kiste löschen");
    		Console::WriteLine("3 - Kiste ändern");
    		Console::WriteLine("4 - Kiste anzeigen");
    		Console::WriteLine("5 - Liste aller Kisten anzeigen");
    		Console::WriteLine("9 - Programm beenden\n");
    		Console::Write("Ihre Auswahl: ");
    
    		eingabe=Convert::ToInt32(Console::ReadLine());
    
    		switch (eingabe) {
    			case 1 : anlegen(grossekiste);
    				break;
    			case 2 : loeschen(grossekiste);
    				 break;
    			case 3 : aendern(grossekiste);
    				 break;
    			case 4 : anzeigen(grossekiste);
    				 break;
    			case 5 : auflisten(grossekiste);
    				 break;
    			case 9 :fortsetzen=false;
    				 break;
    			default : Console::WriteLine("Falsche Eingabe");
    		}
    	}
    
        return 0;
    }
    
    //Funktionen
    Void anlegen(Kiste anlegen[Maxzahl]) {
    	Int32 nummer;
    	Boolean stop=false;
    
    	Console::WriteLine("\nWelche Kiste soll neu angelegt werden?");
    	Console::Write("Bitte geben Sie eine Nummer fuer die Kiste ein: ");
    	nummer=Convert::ToInt32(Console::ReadLine());
    	if(nummer==0) {
    		Console::WriteLine("Ungueltige Kistennummer");
    		stop=true;
    		Console::ReadLine();
    	}
    
    	if(stop==false) {
    		for(Int32 zaehler=0; zaehler<Maxzahl; zaehler++) {
    			if(anlegen[zaehler].kistennummer==nummer){
    				Console::WriteLine("Kiste schon vorhanden");
    				Console::ReadLine();
    				stop=true;
    			}
    		}
    	}
    
    	if(stop==false){
    			for(Int32 zaehler1=0; zaehler1<Maxzahl; zaehler1++){
    				if(anlegen[zaehler1].kistennummer==0){
    					anlegen[zaehler1].kistennummer=nummer;
    					Console::WriteLine("\nBitte geben Sie die Kistendaten ein:");
    					Console::Write("\nBreite: ");
    					anlegen[zaehler1].breite=Convert::ToInt32(Console::ReadLine());
    					Console::Write("Hohehe: ");
    					anlegen[zaehler1].hoehe=Convert::ToInt32(Console::ReadLine());
    					Console::Write("Laenge:");
    					anlegen[zaehler1].laenge=Convert::ToInt32(Console::ReadLine());
    					Console::ReadLine();
    					break;
    				}
    			}
    	}
    };
    
    Void loeschen(Kiste lKiste[Maxzahl]) {
    	Int32 nummer2;
    	Boolean treffer=false;
    
    	Console::WriteLine("\nWelche Kiste soll gelöscht werden?");
    	Console::Write("Bitte geben Sie die Nummer der Kiste ein: ");
    	nummer2=Convert::ToInt32(Console::ReadLine());
    	for(Int32 i=0; i<Maxzahl; i++) {
    		if(lKiste[i].kistennummer==nummer2) {
    			lKiste[i].kistennummer=0;
    			lKiste[i].breite=0;
    			lKiste[i].hoehe=0;
    			lKiste[i].laenge=0;
    			treffer=true;
    			break;
    		}
    	}
    	if (treffer==false) {
    			Console::WriteLine("Kiste nicht vorhanden!");
    			Console::ReadLine();
    		}
    };
    
    Void aendern(Kiste bKiste[Maxzahl]){
    	Int32 nummer3;
    	Boolean treffer=false;
    
    	Console::Write("\nWelche Kiste möchten Sie aendern?: ");
    	nummer3=Convert::ToInt32(Console::ReadLine());
    
    	if(nummer3==0) {
    		Console::WriteLine("Ungueltige Kistennummer");
    		treffer=true;
    		Console::ReadLine();
    	}
    
    	if(treffer==false) {
    		for(Int32 i=0; i<Maxzahl; i++) {
    				if (bKiste[i].kistennummer==nummer3){
    					Console::WriteLine("\nBitte geben Sie die neuen Kistendaten ein.");
    					Console::Write("\nBreite: ");
    					bKiste[i].breite=Convert::ToInt32(Console::ReadLine());
    					Console::Write("Hoehe: ");
    					bKiste[i].hoehe=Convert::ToInt32(Console::ReadLine());
    					Console::Write("Laenge: ");
    					bKiste[i].laenge=Convert::ToInt32(Console::ReadLine());
    					Console::ReadLine();
    					treffer=true;
    					break;
    				}
    		}
    	}
    
    	if (treffer==false) {
    		Console::WriteLine("Kiste nicht vorhanden");
    		Console::ReadLine();
    	}
    };
    
    Void anzeigen(Kiste akiste[Maxzahl]) {
    	Int32 nummer4;
    	Boolean treffer=false;
    
    	Console::Write("\nWelche Kiste möchten Sie azeigen?: ");
    	nummer4=Convert::ToInt32(Console::ReadLine());
    
    	if(nummer4==0) {
    		Console::WriteLine("Ungueltige Kistennummer");
    		treffer=true;
    		Console::ReadLine();
    	}
    
    	if(treffer==false) {
    		for(Int32 i=0; i<Maxzahl; i++) {
    			if (akiste[i].kistennummer==nummer4){
    				Console::WriteLine("\nKistennummer\tBreite\tHoehe\tLaenge\tVolumen");
    				Console::WriteLine("{0}\t\t{1}\t{2}\t{3}\t{4}", akiste[i].kistennummer, akiste[i].breite, akiste[i].hoehe, akiste[i].laenge, volumen(akiste, i));
    				Console::ReadLine();
    				treffer=true;
    			}
    		}
    	}
    
    	if (treffer==false) {
    		Console::WriteLine("Kiste nicht vorhanden");
    		Console::ReadLine();
    	}
    };
    
    Void auflisten(Kiste alles[Maxzahl]) {
    	Boolean nobox=true;
    	Int32 a=0;
    	Int32 b=0;
    
    	Console::Clear();
    	Console::WriteLine("Kistennummer\tBreite\tHoehe\tLaenge\tVolumen");
    	for(Int32 u=0; u<Maxzahl; u++) {
    		if(alles[u].kistennummer!=0) {
    			Console::WriteLine("{0}\t\t{1}\t{2}\t{3}\t{4}", alles[u].kistennummer, alles[u].breite, alles[u].hoehe, alles[u].laenge, volumen(alles, u));
    			b++;
    			//begrenzung der kistendaten auf 20 zeilen pro seite
    			if(b==20){
    				Console::Write("\nMit Enter zur nächsten seite zu blaettern");
    				b=0;
    				Console::ReadLine();
    				Console::Clear();
    				Console::WriteLine("Kistennummer\tBreite\tHoehe\tLaenge\tVolumen");
    			}
    		nobox=false;
    
    		}
    	}
    
    	while (nobox==true) {
    			if (alles[a].kistennummer==0) {
    				a++;
    				if(a<Maxzahl && alles[(Maxzahl-1)].kistennummer==0) {
    					Console::WriteLine("\nKeine Kiste vorhanden");
    					nobox=false;
    				}
    			}
    	}	
    
    	Console::Write("\nEnter-Taste druecken fuer Hauptmenue");
    	Console::ReadLine();
    };
    
    Int32 volumen(Kiste vkiste[Maxzahl], Int32 zaehler) {
    	Int32 v;
    	v=vkiste[zaehler].breite*vkiste[zaehler].hoehe*vkiste[zaehler].laenge;
    	return v;
    }
    


  • Lieben Dank Chaosoverlord. Hast mit dem Lehrgang den Nagel auf den Kopf getroffen.

    Werde mich diese Woche ein wenig mit Deinem Code auseinandersetzen und mit bei Dir melden, wenn ich noch Fragen habe. Schließlich möchte ich auch verstehen und nicht abpinnen.

    In der ersten, schnellen Durchsicht ist mir eine Kleinigkeit aufgefallen, aber dazu dann in der nächsten Woche. Jetzt habe ich erst mal Weekend.

    cahmpman


Anmelden zum Antworten