Entwickler-Ecke
C# - Die Sprache - Telefonbuch
sepp_a_u - Mi 03.10.07 22:48
Titel: Telefonbuch
hi @ all
bin gerade dabei ein telefon-geb-adressbuch zu schreiben. bin soweit auch schon recht weit glaube ich.
jetzt habe ich noch folgende probleme:
1) bei der ausgabe ist leider keine struktur drin
2) beim menü kommt immer ne fehlermeldung, wenn man einen string eingibt
C#-Quelltext
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:
| using System; using System.Collections.Generic; using System.Text; using System.IO;
namespace telefonbuch { class Program { static void Main(string[] args) { Menue(); } static void WriteFile() { StreamWriter schreiben = new StreamWriter(@"test.txt", true); schreiben.Write(Console.ReadLine()); schreiben.Close(); } static void ReadFile() { StreamReader lesen = new StreamReader("test.txt"); while (!lesen.EndOfStream) { Console.WriteLine(lesen.ReadLine()); } lesen.Close(); Console.ReadLine(); } static void Menue() { bool beenden = false; string[] neueAdresse = new string[7]; neueAdresse[0] = "Name"; neueAdresse[1] = "Vorname"; neueAdresse[2] = "Strasse"; neueAdresse[3] = "Plz"; neueAdresse[4] = "Ort"; neueAdresse[5] = "Telefonnr."; neueAdresse[6] = "Geburtstag"; int eingabe; string daten; Console.WriteLine("\n\n\t \t Was möchtest du tun? \n\n \t \t -----------------------------"); Console.Write("\n \t \t |###########################|"); Console.Write("\n \t \t |# 1.Neue Adresse eingeben #| \n \t"); Console.Write("\t |# 2.Adresse suchen #| \n \t \t |# 3.Beenden #|" ); Console.Write("\n \t \t |###########################|"); Console.WriteLine("\n \t \t -----------------------------"); eingabe = Int32.Parse(Console.ReadLine()); do { if (eingabe == 1 && !beenden) { foreach (string adressen in neueAdresse) { Console.Write("{0}: ",adressen); WriteFile(); daten = Console.Read().ToString(); }
beenden = true;
if (beenden) { Console.ReadLine(); Menue(); } } else if (eingabe == 2 && !beenden) { ReadFile(); beenden = true;
if (beenden) { Menue(); } } else if (eingabe != 1 || eingabe != 2 || !beenden) { Console.WriteLine("Fehlerhafte Eingabe!"); beenden = true; if (beenden) { Menue(); } } } while (eingabe != 3); }
} } |
so das ist mal der code.
jetzt wie kann ich hier:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| else if (eingabe != 1 || eingabe != 2 || !beenden) { Console.WriteLine("Fehlerhafte Eingabe!"); beenden = true; if (beenden) { Menue(); } } |
noch einfügen, dass auch die strings berücksichtigt werden?
mfg
jasocul - Do 04.10.07 11:26
Ich sehe zwei Möglichkeiten:
1. Du verwendest einen Try - Catch - Block für diese Zeile:
C#-Quelltext
1:
| eingabe = Int32.Parse(Console.ReadLine()); |
Der im Catch-Fall "eingabe" auf einen definierten Wert setzt (z.B. 99).
2. Du machst aus "eingabe" einen String und prüfst nicht mehr auf numerische Eingabe, sonder auf String-Eingabe.
Kha - Do 04.10.07 11:56
Die "beenden"-Variable kommt mir ein wenig sinnlos vor :gruebel: . Ich verstehe auch nicht, weshalb du Rekursion
und eine Schleife benötigst. Du erlaubst mir hoffentlich ein wenig Umstrukturierung deiner Funktion ;) :
C#-Quelltext
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:
| static string[] addressProperties = new string[] { "Name", "Vorname", ... };
static void Menu() { Console.WriteLine("\n\n\t \t Was möchtest du tun? \n\n \t \t -----------------------------"); Console.Write("\n \t \t |###########################|"); Console.Write("\n \t \t |# 1.Neue Adresse eingeben #| \n \t"); Console.Write("\t |# 2.Adresse suchen #| \n \t \t |# 3.Beenden #|"); Console.Write("\n \t \t |###########################|"); Console.WriteLine("\n \t \t -----------------------------");
switch (Console.ReadLine().Trim()) { case "1": foreach (string property in addressProperties) { Console.Write("{0}: ", property); WriteFile(); } break; case "2": ReadFile(); break; case "3": return; default: Console.WriteLine("Fehlerhafte Eingabe!"); }
Console.ReadLine(); Menu(); } |
sepp_a_u - Do 04.10.07 22:26
tut mir ja herzlich leid, aber der code funktioniert bei mir absolut nicht!
hab jedoch meinen code noch ein weiteres mal überarbeitet und jetzt läuft er quasi einwandfrei.
jetzt fehlt nur noch, dass die aus- und eingabe schön formatiert wird, wie in einer tabelle. weiß vll jemand, wie ich das machen kann? das wäre zu geil. dann wäre mein prog quasi fertig :) bzw es wäre die beta mit ein paar funktionen...
C#-Quelltext
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:
| using System; using System.Collections.Generic; using System.Text; using System.IO;
namespace telefonbuch { class Program { static void Main(string[] args) { Menue(); } static void WriteFile() { StreamWriter schreiben = new StreamWriter(@"test.txt", true); schreiben.Write(Console.ReadLine()); schreiben.Close(); } static void ReadFile() { StreamReader lesen = new StreamReader("test.txt"); while (!lesen.EndOfStream) { Console.WriteLine(lesen.ReadLine()); } lesen.Close(); Console.ReadLine(); } static void Menue() { bool Ende = true; string[] neueAdresse = new string[7]; neueAdresse[0] = "Name"; neueAdresse[1] = "Vorname"; neueAdresse[2] = "Strasse"; neueAdresse[3] = "Plz"; neueAdresse[4] = "Ort"; neueAdresse[5] = "Telefonnr."; neueAdresse[6] = "Geburtstag"; string eingabe; Console.WriteLine("\n\n\t \t Was möchtest du tun? \n\n \t \t -----------------------------"); Console.Write("\n \t \t |#############################|"); Console.Write("\n \t \t |# N - Neue Adresse eingeben #| \n \t"); Console.Write("\t |# A - Datensätze anzeigen #| \n \t \t |# B - Beenden #|" ); Console.Write("\n \t \t |#############################|"); Console.WriteLine("\n \t \t -----------------------------"); do { switch (eingabe = Console.ReadLine().ToUpper()) { case "N": foreach (string adressen in neueAdresse) { Console.Write("{0}: ",adressen); WriteFile(); } Menue(); break; case "A": ReadFile(); Menue(); break; case "B": Ende = true; break; default: Console.WriteLine("Fehlerhafte Eingabe!"); Menue(); break; } } while (!Ende); }
} } |
mfg
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Kha - Do 04.10.07 22:34
sepp_a_u hat folgendes geschrieben: |
tut mir ja herzlich leid, aber der code funktioniert bei mir absolut nicht! |
Erkläre dich bitte einmal etwas näher, bei mir funktioniert er... Und die Antwort auf deine letzte Frage ist ebenfalls in ihm enthalten.
sepp_a_u - Do 04.10.07 22:40
Khabarakh hat folgendes geschrieben: |
sepp_a_u hat folgendes geschrieben: | tut mir ja herzlich leid, aber der code funktioniert bei mir absolut nicht! | Erkläre dich bitte einmal etwas näher, bei mir funktioniert er... Und die Antwort auf deine letzte Frage ist ebenfalls in ihm enthalten. |
bei mir kommen halt etliche fehlermeldungen. und bevor ich jetzt mein ganzes prog auseinanderreiße mache ich lieber so weiter.
hab teilweise deine ideen umgesetzt (bool variable weg, string variable weg usw)
es fehlt mir jetzt nur noch, dass struktur in die ein-bzw ausgabe hineingebracht wird. das mit der eingabe ist auch behoben, d.h. es werden alle fehler abgefangen
mfg
Narses - Do 04.10.07 22:44
Hallo
sepp_a_u,
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:
*geschlossen*
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!