[.NET] [C#] Telefon- Adressbuch

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von juppwatis, 17. September 2007 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 17. September 2007
    [C#] Telefon- Adressbuch

    wie ihr vll schon im anderen thread gesehen habt suche ich programmierideen. bin dann auf die idee en kl. telefonbuch zu schreiben. jetzt häng ich aber an der ein oder anderen stelle:

    1) wenn man zwei beim menue eingibt, dann hört er nicht auf zu lesen, also was in der txt steht. /ERLEDIGT
    2) wie komme ich wieder ins menu zurück, wenn ich einen namen eingeben habe? //ERLEDIGT
    3) wie kann ich einen bestimmten namen in der txt suchen? wenn man bei menu pkt 2 nimmt?
    4) wie kann ich die leerzeile weglassen, wenn der nächste array eingelesen wird, wenn man ne neue adresse eingibt? //ERLEDIGT

    ich will nicht die lösung, sondern nur, wie ich man es machen kann, d.h. vll ein satz dazu schreiben und die methode oder funktion, die man dazu verwenden kann. machen will ich das schon selber...auf jeden fall versuchen.

    hier der quellcode:

    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    
    namespace telefonbuch
    {
     class Program
     {
     static void Main(string[] args)
     {
     new Program().Menue(); 
     }
     public void WriteFile()
     {
     StreamWriter schreiben = new StreamWriter(@"test.txt", true);
     schreiben.Write(Console.ReadLine());
     schreiben.Close(); 
     }
     public void ReadFile()
     {
     StreamReader lesen = new StreamReader("test.txt");
     while (!lesen.EndOfStream)
     {
     Console.WriteLine(lesen.ReadLine());
     }
     } 
     public void Menue()
     {
     string[] neueAdresse = new string[6];
     neueAdresse[0] = "Name";
     neueAdresse[1] = "Vorname";
     neueAdresse[2] = "Strasse";
     neueAdresse[3] = "Plz";
     neueAdresse[4] = "Ort";
     neueAdresse[5] = "Telefonnr.";
     int eingabe;
     string name, vorname, strasse, plz, ort, telefon;
     Console.WriteLine("\t \t Was möchtest du tun? \n\n \t \t ----------------------------- \n \t \t |###########################| \n \t \t |# 1.Neue Adresse eingeben #| \n \t \t |# 2.Adresse suchen #| \n \t \t |# 3.Beenden #| \n \t \t |###########################| \n \t \t -----------------------------");
     eingabe = Int32.Parse(Console.ReadLine());
     do
     {
     if (eingabe == 1)
     {
     Console.Write("{0}: ", neueAdresse[0]);
     WriteFile(); 
     name = Console.ReadLine();
    
     Console.Write("{0}: ", neueAdresse[1]);
     WriteFile();
     vorname = Console.ReadLine();
    
     Console.Write("{0}: ", neueAdresse[2]);
     WriteFile();
     strasse = Console.ReadLine();
    
     Console.Write("{0}: ", neueAdresse[3]);
     WriteFile();
     plz = Console.ReadLine();
    
     Console.Write("{0}: ", neueAdresse[4]);
     WriteFile();
     ort = Console.ReadLine();
    
     Console.WriteLine("{0}: ", neueAdresse[5]);
     WriteFile();
     telefon = Console.ReadLine();
     
     }
     else if (eingabe == 2)
     {
     ReadFile();
     }
     }
     while (eingabe != 3); 
     }
    
     }
    }
    
    wäre nice, wenn mir wer helfen könnte. komm einfach nicht weiter :(

    mfg
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 17. September 2007
    AW: [C#] Telefon- Adressbuch

    1. Benutzt doch anstatt while (!lesen.EndOfStream)
    eine abbruch variable, wenn alles durchlesen wurde springt diese variable um und er hört auf zu lesen...

    2. Du setzt vor Console.WriteLine("\t \t Was möchtest du tun? \n\n \t ... noch eine Schleife, dann musst du aber im Menu eine Auswahl Beenden haben diese mit einer einzigartigen Variable deklarieren, die sich nur dann verändert, wenn der menüpunkt beenden angesprochen wird.

    3. Hab ich heut noch keine ahnung von ;) so weit bin ich noch nicht.

    4. Vlt. wegen dem Console.ReadLine()??? das wartet nämlich immer darauf, dass noch eine tastatureingabe folgt!


    Also mein Tipp: guck dir dein Programm noch mal richtig an und bringt da ne Struktur rein. Wieso machst du keine ArrayList und fügst immer ein Eintrag hinzu? Dann wäre das suchen nach bestimmten Namen etc. auch viel einfacher gestaltet! Das mit dem in eine Textdatei zu schreiben kannst du nacher immer noch machen. Jetzt schreibt der ja nur irgentwelche werte in deine Datei und hat damit nacher überhauptkeine verknüpfung mehr!
    Du fängst auch schon an mit den Strings 0-5, das ist doch völlig unnötig, wenn dann könntest du die werte die du eingibst in strings packen ("stringarrays"), so packst du die bezeichnung der werte in einen string und die werte selber schmeisst du einfach wild in eine datei rein.

    mfg FynnY
     
  4. #3 17. September 2007
    AW: [C#] Telefon- Adressbuch

    was ist denn ne arraylist? hab weiß davon nix... hast du vll einen link? dann schau ich mir das mal an...
    thx für das andere. werde mich morgen nochmal dran setzten jetzt bin ich zu müde

    mfg
     
  5. #4 18. September 2007
    AW: [C#] Telefon- Adressbuch

    wofür hast du googel?
    ich hab heut ne programm gemacht, das fast genauso ist nur,
    dass man vor/nachname eingibt geschlecht und telenummer!
    Dann kannst alles ausgeben lassen und nach bestimmten datensätzen suchen...
    ich werd dich in den nächsten tagen per pn benachrichtigen. bekommst dann das programm kommentiert.

    mfg FynnY
     
  6. #5 3. Oktober 2007
    AW: [C#] Telefon- Adressbuch

    so hab meinen code jetzt mal drastisch optimiert (arrayabfrage mit foreachschleife, anstatt alles einzeln), nachdem ich mich nun endlich wiedermal hingesetzt habe :) ist jetzt um einiges kürzer, die ausgabe wird nicht endlos fortgesetzt und man kann nach aus-/eingaben wieder ins menü zurückkehren

    Code:
    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[6];
     neueAdresse[0] = "Name";
     neueAdresse[1] = "Vorname";
     neueAdresse[2] = "Strasse";
     neueAdresse[3] = "Plz";
     neueAdresse[4] = "Ort";
     neueAdresse[5] = "Telefonnr.";
     int eingabe;
     string daten;
     Console.WriteLine("\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)
     {
     Menue();
     }
     
     }
     else if (eingabe == 2 && !beenden)
     {
     ReadFile();
     beenden = true;
    
     if (beenden)
     {
     Menue();
     }
     }
     }
     while (eingabe != 3); 
     }
    
     }
    }
    
    jetzt muss ich nur noch irgendwie struktur in die ausgabe reinbekommen....kann mir dabei vll wer helfen? wäre echt nice :)
    und noch ein wenig die fehler ausmerzen, wie z.b. dass das prog geschlossen wird, wenn man die 3 drückt und dass es abgefangen wird, wenn man beim menü nen string statt nen int eingibt. wäre nice, wenn mir wer helfen könnte


    mfg
     
  7. #6 6. Oktober 2007
    AW: [C#] Telefon- Adressbuch

    so ein paar fehler sin dwieder weg:

    fehleingabe abfangen //ERLEDIGT
    programm kann beendet werden //ERLEDIGT
    struktur bei ausgabe // NICHT ERLEDIGT

    Code:
    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(@"telebuch.txt", true);
     schreiben.Write(" " + Console.ReadLine() + " "); 
     schreiben.Close(); 
     }
     static void ReadFile()
     { 
     StreamReader lesen = new StreamReader("telebuch.txt");
     while (!lesen.EndOfStream)
     {
     Console.WriteLine(lesen.ReadLine()); 
     }
     lesen.Close();
     Console.ReadLine();
     } 
     static void Menue()
     { 
     bool Ende = true;
     string[] neueAdresse = new string[5];
     neueAdresse[0] = "Name";
     neueAdresse[1] = "Vorname";
     neueAdresse[2] = "Strasse"; 
     neueAdresse[3] = "Ort";
     neueAdresse[4] = "Telefonnr."; 
     string eingabe;
    
     Console.Clear();
     Console.WriteLine("\n\n\t \t\t Menue \n\n"); 
     Console.WriteLine("\t \t -------------------------------");
     Console.Write("\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(); 
     }
     Console.WriteLine("Datensatz gespeichert...");
     Menue(); 
     break;
     
     case "A":
     Console.WriteLine("\n\nDatensatzausgabe");
     Console.WriteLine("------------------\n\n");
     Console.WriteLine("+--------------+--------------+--------------+--------------+--------------+");
     Console.WriteLine("| Nachname | Vorname | Strasse | Ort | Telefon |");
     Console.WriteLine("+--------------+--------------+--------------+--------------+--------------+");
     ReadFile(); 
     Menue(); 
     break;
     
     case "B":
     Ende = true;
     break; 
     default:
     Console.WriteLine("Fehlerhafte Eingabe!");
     Console.ReadLine();
     Menue();
     break;
     }
     } while (!Ende); 
     }
    
     }
    }
    
    für hilfe wäre ich sehr dankbar ;)

    mfg
     
  8. #7 6. Oktober 2007
    AW: [C#] Telefon- Adressbuch

    oha da kommt mir einiges sehr bekannt vor *g*
    Aber
    1. Würd ich beim menü einen punkt machen ihre wahl oder so weil so sieht man das nicht wirklich oder readkey nehmen, damit man so nicht einfach den buchstaben da stehn hat. ich würd vlt. "Ihre wahl:" und das dann in die mitte unter deine menü_anzeige setzen...
    2. würd ich nachdem ein datensatz eingetragen wurde eine meldung anzeigen mit, datensatz erfolgreich erstellt oder so etwas, sonst könnt man ja denken er springt einfach so wieder ins menü!
    3. bei jeder eingabe gewisse abfang methoden anwenden, dass man bei den namen nur buchstaben etc. eingeben kann, das fängt menschliche fehler bei der eingabe ab....

    Nurn paar tipps ;)
    mfg FynNY
     

  9. Videos zum Thema
Die Seite wird geladen...