C# :: Aufgabe #105 :: Lösung #5
11 Lösungen

#105
Das Array-Telefonbuch
Anfänger - C#
von Energy
- 17.08.2015 um 15:11 Uhr
Erstelle ein mehrdimensionales Array, in der 5 Datensätze gespeichert werden. Es soll eine Festnetznummer, eine Handynummer und eine Geschäftliche Telefonnummer in der Konsole eingegeben werden. Nach der Eingabe soll die Konsole geleert und die Nummern ausgegeben werden. Bei der Ein- sowie Ausgabe soll eine laufende Eintragsnummer angezeigt werden.
#5

von Mexx (2370 Punkte)
- 21.08.2015 um 23:46 Uhr
Screenshot: http://www0.xup.in/exec/ximg.php?fid=10391543
Info: Sorry falls die Darstellung bei euch Variiert, die Konsole von Windows 10 lässt sich in der Breite vergrößern und ist noch ein wenig ungewohnt. Sollte aber passen :)
C#-Code
Info: Sorry falls die Darstellung bei euch Variiert, die Konsole von Windows 10 lässt sich in der Breite vergrößern und ist noch ein wenig ungewohnt. Sollte aber passen :)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace Array_Telefonbuch { [Serializable] class Program { static string[,] telefonbuch; static void Main(string[] args) { if (File.Exists("C:\\Telefonbuch.dat")) telefonbuch = Telefonbuch_Laden(); else telefonbuch = new string[1, 5]; int einträge = telefonbuch.Length / 5; Console.Write("Geben Sie einen Namen, eine Telefonnummer, eine Handynummer und eine " + "Geschäftsnummer durch Komma getrennt ein. Möchten Sie einen Eintrag überspringen" + "geben Sie ein Leerzeichen ein.\n" + "Bsp: \"Max Mustermann, 06589 1234, 0170 12345678, 06589 1789 11\"\n" + "Geben Sie \"ausgabe\" ein um das Telefonbuch nur auszugeben. \n\n"); Console.Write(einträge.ToString() + ":"); string input = Console.ReadLine(); if (input == "ausgabe") { Console.Clear(); Telefonbuch_Ausgeben(telefonbuch); Console.ReadKey(); Environment.Exit(0); } string[] check = input.Split(','); for (int j = 0; j < 4; j++) { check[j] = check[j].Trim(); if (check[j].Length > 19) { Console.WriteLine("Einer der Einträge war zu lang. Erlaubt sind max. 19 Zeichen " + "pro Eintrag!"); Console.ReadKey(); Environment.Exit(0); } } if (check.Length == 4) { telefonbuch[einträge - 1, 0] = einträge.ToString(); for (int i = 1; i <= 4; i++) telefonbuch[einträge - 1, i] = check[i - 1]; telefonbuch = Telefonbuch_Vergrössern(telefonbuch); Telefonbuch_Speichern(telefonbuch); Console.Clear(); Telefonbuch_Ausgeben(telefonbuch); Console.ReadKey(); } else { Console.WriteLine("Ihre Eingaben stimmen nicht mit der Signatur des Telefonbuchs überein"); Environment.Exit(0); } } /// <summary> /// Lädt das Telefonbuch vom Datenträger (von C: Root) /// </summary> /// <returns>Telefonbuch</returns> static string[,] Telefonbuch_Laden() { BinaryFormatter bf = new BinaryFormatter(); Stream stream = new FileStream("C://Telefonbuch.dat", FileMode.OpenOrCreate); string[,] tb = (string[,])bf.Deserialize(stream); stream.Close(); return tb; } /// <summary> /// Speichert das Telefonbuch auf dem Datenträger (unter C: Root) /// </summary> /// <param name="tb">Das zweidimensionale Array mit dem Telefonbuch</param> static void Telefonbuch_Speichern(string[,] tb) { BinaryFormatter bf = new BinaryFormatter(); Stream stream = new FileStream("C://Telefonbuch.dat", FileMode.OpenOrCreate); bf.Serialize(stream, tb); stream.Close(); } /// <summary> /// Vergrößert das Array mit dem Telefonbuch /// </summary> /// <param name="tb">Telefonbuch</param> /// <returns>Das vergrößerte Array</returns> static string[,] Telefonbuch_Vergrössern(string[,] tb) { string[,] neu = new string[telefonbuch.Length / 5 + 1, 5]; for (int i = 0; i < tb.Length / 5; i++) for (int j = 0; j < 5; j++) neu[i, j] = telefonbuch[i, j]; return neu; } /// <summary> /// Gibt die Einträge im Telefonbuch in einer Tabellenstruktur in der Konsole aus /// </summary> /// <param name="tb">Telefonbuch</param> static void Telefonbuch_Ausgeben(string[,] tb) { const int spaltenbreite = 15; // Tabellenkopf ausgeben ////////////////////////////////////////////////////////// string[] spaltennamen = new string[] { "ID", "Name", "Telefon", "Handy", "Geschäftlich" }; for (int i = spaltenbreite * 5; i > 0; i--) Console.Write("-"); Console.Write("\n"); for (int n = 0; n <= 4; n++) { Console.Write("|" + spaltennamen[n]); for (int o = spaltenbreite - (spaltennamen[n].Length + 1); o > 0; o--) Console.Write(" "); } Console.Write("\n"); for (int m = spaltenbreite * 5; m > 0; m--) Console.Write("-"); Console.Write("\n"); ////////////////////////////////////////////////////////////////////////////////// // Einträge ausgeben ///////////////////////////////////////////////////////////// for (int j = 0; j < tb.Length / 5 - 1; j++) { for (int k = 0; k <= 4; k++) { Console.Write("|" + tb[j, k]); for (int l = spaltenbreite - (tb[j, k].Length + 1); l > 0; l--) Console.Write(" "); } Console.Write("\n"); } for (int o = spaltenbreite * 5; o > 0; o--) Console.Write("-"); ////////////////////////////////////////////////////////////////////////////////// } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1