Hallo, ich beschäftige mich gerade privat etwas mit C# und bin derzeit dabei zu Übungszwecken eine kleine Kfz-Verwaltung zu erstellen.
Klappt alles ganz gut, bis auf die Tatsache, dass ich Schwierigkeiten mit XML habe.
Ich Habe eine Klasse Auto (nur mal rudimentär angelegt) die ich bei Auswahl des Menüpunktes Speichern im Hauptmenü speichern und wieder laden möchten.
Das speichern habe ich hinbekommen, obwohl ich auch nicht weiß, ob die Routine so richtig ist?
Weiterhin bekomme ich meine Daten nicht mehr geladen aus der .XML, da häng ich gerade fest. Ich möchte die Klasse derzeit
NOCH NICHT serialisieren sondern um erstmal so mit XML klar zu kommen alles zu Fuß erledigen.
Ich poste einfach mal kurz die Klasse und danach das Hauptprogramm. PS: Für Verbesserungsvorschläge oder das Entdecken grober Schnitzer, wäre ich Euch sehr dankbar!
Klasse Auto:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Fabrik { class Auto { public int TankVolumen; public string Marke; public string Typ; public int Preis; } } |
Klasse Fabrik:
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml;
namespace Fabrik { class Program { static void Main(string[] args) { int item; List<Auto> car = new List<Auto>();
try { Load(car); }
catch (Exception ex) { }
do { try { item = Int32.Parse(Menue()); }
catch(Exception ex) { item = 0; } if (item == 1) { Auto kfz = new Auto();
Console.Clear(); Console.WriteLine("Fahrzeug erfassen" + "\n==================================\n");
Console.WriteLine("Bitte den Typ eingeben:"); kfz.Typ = Console.ReadLine();
Console.WriteLine("Bitte die Marke eingeben:"); kfz.Marke = Console.ReadLine();
Console.WriteLine("Bitte das Tank Volumen eingeben:"); kfz.TankVolumen = Int32.Parse(Console.ReadLine());
Console.WriteLine("Bitte den Preis in Euro eingeben:"); kfz.Preis = Int32.Parse(Console.ReadLine());
car.Add(kfz); }
if (item == 2) { if (car.Count > 0) { Console.Clear(); Console.WriteLine("Im System erfasste Fahrzeuge:" + "\n============================================"); }
foreach (Auto mobile in car) { Console.WriteLine("Typ: {0}, Marke: {1}, Tank Volumen: {2}, Preis in Euro: {3}", mobile.Typ, mobile.Marke, mobile.TankVolumen, mobile.Preis); }
if (car.Count > 0) { Console.WriteLine("\n<Drücken Sie eine beliebige Taste zum Fortfahren!>"); Console.ReadKey(); } }
if (item == 3) { if (car.Count > 0) { Console.Clear(); Console.WriteLine("Fahrzeugübersicht:" + "\n==================================="); int i = 0;
foreach (Auto mobile in car) { Console.WriteLine( i.ToString() + ". Typ: {0}, Marke: {1}, Tank Volumen: {2}, Preis in Euro: {3}", mobile.Typ, mobile.Marke, mobile.TankVolumen, mobile.Preis); i++; }
Console.WriteLine("\nBitte wählen Sie das Fahrzeug aus, welches aus dem System entfernt werden soll:"); i = 0; i = Int32.Parse(Console.ReadLine());
try { car.RemoveAt(i); Console.WriteLine("\nDas fahrzeug wurde erfolgreich aus dem System entfernt! <Taste drücken>"); Console.ReadKey(); }
catch (Exception ex) { Console.WriteLine("\nDas von Ihnen gewählte Fahrzeug existiert nicht mehr! <Taste drücken>"); Console.ReadKey(); } } }
if (item == 4) { Save(car); Console.WriteLine("\nKfz-Liste gespeichert! <Bitte eine beliebige Taste drücken!>"); Console.ReadKey(); }
if (item == 5) { car.Clear(); Load(car);
Console.WriteLine("\nKfz-Liste geladen! <Bitte eine beliebige Taste drücken!>"); Console.ReadKey(); } } while (item != 6);
Save(car); }
static string Menue() { Console.Clear(); Console.WriteLine(" Hauptmenü:" + "\n==========================================" + "\n1. Auto anlegen" + "\n2. Bisher angelegte Fahrzeuge anzeigen" + "\n3. Fahrzeug entfernen" + "\n4. Speichern" + "\n5. Laden" + "\n==========================================" + "\n6. Ende\n\nEingabe Bitte:"); return Console.ReadLine(); }
static void Save(List<Auto> car) { XmlWriter xml = XmlWriter.Create(Environment.CurrentDirectory + "\\Kfz.xml"); xml.WriteStartDocument(); xml.WriteStartElement("Kfz");
foreach(Auto kfz in car) { try { xml.WriteStartElement("Fahrzeug");
xml.WriteElementString("Typ", kfz.Typ); xml.WriteElementString("Marke", kfz.Marke); xml.WriteElementString("TankVolumen", kfz.TankVolumen.ToString()); xml.WriteElementString("Preis", kfz.Preis.ToString());
xml.WriteEndElement(); }
catch (Exception ex) { Console.WriteLine("\nFehler! Speichervorgang abgebrochen {0} <Bitte eine beliebige Taste drücken!>", ex.Message); Console.ReadKey(); } }
xml.WriteEndElement(); xml.WriteEndDocument(); xml.Close(); }
static void Load(List<Auto> car) {
XmlReader xml = XmlReader.Create(Environment.CurrentDirectory + "\\Kfz.xml"); Auto kfz = new Auto(); while (xml.Read()) { xml.MoveToContent(); if (xml.NodeType == XmlNodeType.Element && xml.Name == "Fahrzeug") { kfz.Typ = xml.ReadElementString(); kfz.Marke = xml.ReadElementString(); kfz.TankVolumen = Int32.Parse(xml.ReadElementString()); kfz.Preis = Int32.Parse(xml.ReadElementString());
car.Add(kfz); } }
xml.Close(); } } } |