Halli, hallo!
Ich, ein absoluter Programmierneuling, der gerade erst seine ersten zittrigen, kläglichen Schritte in der Sprache C# macht, brauche einmal eure Hilfe.
Die Hausaufgabe von meinem Programmierkurs bei der ILS lautet, dass ich mit den erlernten Mitteln eine Lagerverwaltung erstellen soll. Nichts Großes, nur ein klitzekleines Programm in der Eingabeaufforderung.
Nun habe ich auch fleißig in die Tasten gehauen. Viele Probleme konnte ich alleine lösen und es werden auch noch weitere Fehler in meinem Code sein, aber mir geht es hier primär darum, dass meine do-while-Schleife sich schlichtweg weigert, sich zu wiederholen. Eine Ausführung erfolgt und dann bleibt sie bei der eingebauten switch-Verzweigung hängen. Am besten ihr schaut euch den Code einfach mal an.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322:
|
using System;
namespace lagerverwaltung { class Program { struct Kiste { public string iNummer; public string jahr; public string monat; public int breite; public int laenge; public int hoehe; public int volumen; }
static Kiste Eingeben(int kistennummer) { Kiste aKiste;
Console.Write("Geben Sie die Breite der {0}. Kiste ein: ", kistennummer); aKiste.breite = Convert.ToInt32(Console.ReadLine()); Console.Write("Geben Sie die Länge der {0}. Kiste ein: ", kistennummer); aKiste.laenge = Convert.ToInt32(Console.ReadLine()); Console.Write("Geben Sie die Höhe der {0}. Kiste ein: ", kistennummer); aKiste.hoehe = Convert.ToInt32(Console.ReadLine());
aKiste.volumen = aKiste.breite * aKiste.laenge * aKiste.hoehe;
Console.WriteLine("\nGeben Sie an, wann die Kiste ins Lager aufgenommen wurde."); Console.Write("Jahr (Format XXXX): "); aKiste.jahr = Console.ReadLine(); Console.Write("Monat(Format XX): "); aKiste.monat = Console.ReadLine();
aKiste.iNummer = aKiste.jahr + "-" + aKiste.monat + "-" + kistennummer;
return aKiste; }
static Kiste Loeschen(Kiste[] lager, int index) { lager[index].iNummer = ""; lager[index].jahr = ""; lager[index].monat = ""; lager[index].breite = 0; lager[index].laenge = 0; lager[index].hoehe = 0; lager[index].volumen = 0;
return lager[index]; }
static Kiste Aendern(Kiste[] lager, int index) { int auswahl = 0; bool auswahlFunktion = false;
Console.WriteLine("Die Daten der Kiste {0} lauten: ", lager[index].iNummer); Console.WriteLine("Breite:\t\t\t" + lager[index].breite); Console.WriteLine("Länge:\t\t\t" + lager[index].laenge); Console.WriteLine("Höhe:\t\t\t" + lager[index].hoehe); Console.WriteLine("Volumen:\t\t" + lager[index].volumen); Console.WriteLine("\n\n");
Console.WriteLine("Welchen Datensatz möchten Sie ändern?"); Console.WriteLine("Mögliche veränderbare Datensätze: Breite (1), Länge (2), Höhe (3), Volumen (4)"); Console.Write("Auswahl: ");
while (auswahlFunktion == false) { try { auswahl = Convert.ToInt32(Console.ReadLine());
if (auswahl > 6 || auswahl < 1) { Console.WriteLine("Ihre Eingabe entspricht nicht der Auswahl von 1 bis 5."); Console.WriteLine("Geben Sie eine zulässige Auswahl ein.\n"); Console.Write("Auswahl: "); } else { auswahlFunktion = true; } } catch (FormatException) { Console.WriteLine("Ihre Eingabe war nicht gültig. Bitte wiederholen.\n"); Console.Write("Auswahl: "); } }
switch (auswahl) { case 1: Console.Write("Neue Breite: "); lager[index].breite = Convert.ToInt32(Console.ReadLine()); break; case 2: Console.Write("Neue Länge: "); lager[index].laenge = Convert.ToInt32(Console.ReadLine()); break; case 3: Console.Write("Neue Höhe: "); lager[index].hoehe = Convert.ToInt32(Console.ReadLine()); break; case 4: Console.Write("Neues Volumen: "); lager[index].volumen = Convert.ToInt32(Console.ReadLine()); break; }
return lager[index]; }
static void Anzeigen(Kiste[] lager, int index) { Console.WriteLine("Identifikationsnummer:\t" + lager[index].iNummer); Console.WriteLine("Breite:\t\t\t" + lager[index].breite); Console.WriteLine("Länge:\t\t\t" + lager[index].laenge); Console.WriteLine("Höhe:\t\t\t" + lager[index].hoehe); Console.WriteLine("Volumen:\t\t" + lager[index].volumen);
Console.WriteLine("\n\n"); }
static void Auflisten(Kiste[] lager) { for(int index = 0; index < 75; index++) { if (lager[index].iNummer == "") continue; else { Console.WriteLine("Identifikationsnummer:\t" + lager[index].iNummer); Console.WriteLine("Breite:\t\t\t" + lager[index].breite); Console.WriteLine("Länge:\t\t\t" + lager[index].laenge); Console.WriteLine("Höhe:\t\t\t" + lager[index].hoehe); Console.WriteLine("Volumen:\t\t" + lager[index].volumen);
Console.WriteLine("\n\n"); } } }
static void Main(string[] args) { Console.Title = "Lagerverwaltung"; Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Green; Console.Clear();
Kiste[] lager = new Kiste[75]; int eingabe = 0; int index = 0; string eingabe2; bool auswahlFunktion = false; bool abbruch = false; bool flagVariable = true;
do { Console.WriteLine("Willkommen bei der Lagerverwaltung."); Console.WriteLine("\n\n"); Console.WriteLine("Folgende Funktionen stehen Ihnen zur Verfügung:\n"); Console.WriteLine("-> Eingeben\t\t\t(1)"); Console.WriteLine("-> Löschen\t\t\t(2)"); Console.WriteLine("-> Ändern\t\t\t(3)"); Console.WriteLine("-> Anzeigen\t\t\t(4)"); Console.WriteLine("-> Auflisten\t\t\t(5)"); Console.WriteLine("-> Abbruch des Programms\t(6)\n\n");
Console.WriteLine("Welche Funktion möchten Sie nutzen?"); Console.WriteLine("Geben Sie die entsprechende Nummer der Funktion ein."); Console.Write("Auswahl: ");
while (auswahlFunktion == false) { try { eingabe = Convert.ToInt32(Console.ReadLine());
if (eingabe > 6 || eingabe < 1) { Console.WriteLine("Ihre Eingabe entspricht nicht der Auswahl von 1 bis 5."); Console.WriteLine("Geben Sie eine zulässige Auswahl ein.\n"); Console.Write("Auswahl: "); } else { auswahlFunktion = true; } } catch (FormatException) { Console.WriteLine("Ihre Eingabe war nicht gültig. Bitte wiederholen.\n"); Console.Write("Auswahl: "); } }
Console.ForegroundColor = ConsoleColor.Magenta; Console.Clear();
switch (eingabe) { case 1: Console.WriteLine("Sie haben sich für die Option \"Eingeben\" entschieden."); Console.WriteLine("Geben Sie alle neu eingetroffenen Kisten in das System ein.\n");
while ((index < 75) && (flagVariable == true)) { lager[index] = Eingeben(index + 1);
Console.WriteLine(); Console.WriteLine("Eine weitere Kiste eingeben?"); Console.WriteLine("(\"J\" = Ja, \"N\" = Nein)"); Console.Write("Eingabe: "); eingabe2 = Console.ReadLine(); eingabe2 = eingabe2.ToUpper();
if (eingabe2 == "N") flagVariable = false; else { Console.WriteLine("\n\n"); index++; } }
Console.WriteLine("Sie werden zur Hauptseite weitergeleitet..."); Console.WriteLine("Mit Enter bestätigen."); Console.ReadKey(); break; case 2: Console.WriteLine("Sie haben sich für die Option \"Löschen\" entschieden."); Console.WriteLine("Welche Kiste hat das Lager verlassen und soll aus der Lagerverwaltung gelöscht werden?"); Console.WriteLine("Geben Sie die Identifikationsnummer der Kiste in der Form XXXX-XX-XX ein.\n"); Console.Write("Identifikationsnummer: "); eingabe2 = Console.ReadLine();
index = Array.IndexOf(lager, eingabe2);
lager[index] = Loeschen(lager, index);
Console.WriteLine("Die Kiste wurde erfolgreich aus der Lagerverwaltung gelöscht.\n"); Console.WriteLine("Sie werden zur Hauptseite weitergeleitet..."); Console.WriteLine("Mit Enter bestätigen."); Console.ReadKey(); break; case 3: Console.WriteLine("Sie haben sich für die Option \"Ändern\" entschieden."); Console.WriteLine("Welche Daten möchten Sie überarbeiten?"); Console.WriteLine("Geben Sie die Identifikationsnummer der Kiste in der Form XXXX-XX-XX ein.\n"); Console.Write("Identifikationsnummer: "); eingabe2 = Console.ReadLine();
index = Array.IndexOf(lager, eingabe2);
lager[index] = Aendern(lager, index);
Console.WriteLine("Die Daten der Kiste {0} wurden erfolgreich geändert.", eingabe2); Console.WriteLine("Sie werden zur Hauptseite weitergeleitet..."); Console.WriteLine("Mit Enter bestätigen."); break; case 4: Console.WriteLine("Sie haben sich für die Option \"Anzeigen\" entschieden."); Console.WriteLine("Welche Daten möchten Sie sich anzeigen lassen?"); Console.WriteLine("Geben Sie die Identifikationsnummer der Kiste in der Form XXXX-XX-XX ein.\n"); Console.Write("Identifikationsnummer: "); eingabe2 = Console.ReadLine();
index = Array.IndexOf(lager, eingabe2);
Anzeigen(lager, index);
Console.ReadKey(); Console.WriteLine("Sie werden zur Hauptseite weitergeleitet..."); Console.WriteLine("Mit Enter bestätigen."); Console.ReadKey(); break; case 5: Console.WriteLine("Sie haben sich für die Option \"Auflisten\" entschieden."); Console.WriteLine("Die folgende Liste zeigt alle im Lager befindlichen Kisten an.\n\n");
Auflisten(lager);
Console.ReadKey(); Console.WriteLine("Sie werden zur Hauptseite weitergeleitet..."); Console.WriteLine("Mit Enter bestätigen."); Console.ReadKey(); break; case 6: abbruch = true; break; } Console.Clear(); } while (abbruch == false);
Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Danke für die Nutzung dieses Programmes.\n"); Console.WriteLine("Ich hoffe, Ihnen hat das Programm zugesagt und Sie werden es weiterempfehlen."); Console.WriteLine("Ann-Kathrin Heidmann");
} } } |
Bitte werft nicht mit Fachbegriffen nach mir, mit denen ich nicht umgehen kann. Es wäre schön, wenn ihr mir helfen könntet, das Problem zu verstehen und entsprechend zu lösen.
Ich wäre euch dafür sehr dankbar.
Liebe Grüße,
Kathi
PS.: Ignoriert bitte die anderen Fehler einfach, die ihr findet. Ich konnte den Großteil ja noch nicht ausprobieren, da die do-while-Schleife das verhindert. Aber ihr könnt mich darauf aufmerksam machen, wenn es euch zu sehr in den Fingern kribbelt. Nur nicht lösen.
Moderiert von Christian S.: Code- durch C#-Tags ersetzt