You are not logged in.

wcf.regNote.message

error404

Beginner

  • "error404" started this thread

Posts: 2

  • Send private message

1

Wednesday, January 19th 2011, 5:39pm

C#(XML-Serialisierung) neue Daten über Console in Datei Speichern, Datensatz suchen und bearbeiten

Hallo ich bin neu hier.

Ich muss für die Schule eine Konsolen-Anwendung schreiben mit der ich Daten in einer Datei speichern kann. Dafür habe ich das Format Xml gewählt.
Weitere Funktionen sollen das Suchen und bearbeiten von einem vorhandenen Datensatz sein.

Habt ihr vielleicht eine Idee(am besten mit Beispiel) wie ich das machen kann???

Hier erstmal das Programm wie es bisher aussieht

Die Klassendatei

Source code

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
[XmlRoot("Klassenliste")]
    public class SchuelerListe
    {
        [XmlElement("Klasse")]
        public string Listenname;

        [XmlArray("Mitglieder")]
        [XmlArrayItem("TAler")]
        public List<Schueler> Schueler = new List<Schueler>();

        //Konstruktoren
        public SchuelerListe() { }

        public SchuelerListe(string name)
        {
            this.Listenname = name;
        }
    }

    public class Schueler
    {
        public string Vorname { get; set; }
        
        public string Nachname { get; set; }

        public string Note { get; set; }
        
        public string GebDatum { get; set; }
        public string Ort { get; set; }
   
        //Konstruktoren

        public Schueler() { }

        public Schueler(string vorname, string nachname, string note, string gebDatum, string ort)
        {
            this.vorname = vorname;
            this.nachname = nachname;
            this.note = note;
            this.gebDatum = gebDatum;
            this.ort = ort;
        }

        public void Ausgabe()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("\nVorname:{0}\nNachname:{1}\nNote:{2}\n\ngebDatum:{3}\n\nOrt:{4}\n", vorname, nachname, note, gebDatum, ort);
            //Console.WriteLine("\nVorname:{0}\nNachname:{1}\nNote:{2}\n", vorname, nachname, note);
            Console.ResetColor();
        }
    }




Das Programm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static void Main(string[] args)
        {
            SchuelerListe catalog = new SchuelerListe("TA 92");
            catalog.Listenname = "TA 92";

            //Schueler erzeugen
            Schueler TAler1 = new Schueler("Max", "Planck", "2", "1945", "Berlin");
            catalog.Schueler.Add(TAler1);
            Schueler TAler2 = new Schueler("Marcel", "Steinke", "1", "1986", "Gütersloh");
            catalog.Schueler.Add(TAler2);

            //Serialisierung
            XmlSerializer serializer = new XmlSerializer(typeof(SchuelerListe));
            FileStream fs = new FileStream("Schuelerliste.xml", FileMode.Create);
            serializer.Serialize(fs, catalog);
            fs.Close();
            catalog = null;

             //Deserialisierung
            fs = new FileStream("Schuelerliste.xml", FileMode.Open);
            catalog = (SchuelerListe)serializer.Deserialize(fs);
            serializer.Serialize(Console.Out, catalog);
            Console.ReadLine();
        }



Ich habe sowas auch schon mal mit einer Textdatei gemacht und habe davon noch folgenden Code behalten.

Source code

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
            while (ende == false)
            {
                Console.WriteLine("h - Person hinzufügen");
                Console.WriteLine("s - Person suchen");
                Console.WriteLine("e - Programm beenden");
                Console.Write("Befehl:");
                ConsoleKeyInfo Befehl;
                Befehl = Console.ReadKey(true);
                switch (Befehl.Key)
                {
                    case ConsoleKey.S: AuswahlPer(ref Sch, ref PersonList,ref path);
                        break;
                    case ConsoleKey.H: AddPer(ref PersonList,ref path);
                        break;
                    case ConsoleKey.E: ende = true;
                        break;
                }
            }

            Console.ReadKey();

        }



        public static void AddPer(ref List<string> PersonList,ref string path)
        {
            //string path = @"c:\SchulV6\Person.txt";
            StreamWriter WPersonTXT = File.AppendText(path);//Append fügt der Datei Text hinzu!
            
            Console.Write("\n\nVorname:");
            string vorname = Console.ReadLine();
            PersonList.Add(vorname);
            WPersonTXT.WriteLine(vorname);
            
            Console.Write("Nachname:");
            string nachname = Console.ReadLine();
            PersonList.Add(nachname);
            WPersonTXT.WriteLine(nachname);

            Console.Write("Note:");
            string note = CheckNote();
            PersonList.Add(note);
            WPersonTXT.WriteLine(note);

            Console.Write("gebDatum{Tag.Monat.Jahr}(1985-1990):");
            string datum = CheckDatum();
            PersonList.Add(datum);
            WPersonTXT.WriteLine(datum);

            Console.Write("Adresse(Ort):");
            string adresse = Console.ReadLine();
            PersonList.Add(adresse);
            WPersonTXT.WriteLine(adresse);

            WPersonTXT.Close();
            Console.WriteLine();
        }

        public static string CheckNote()
        {
            int Note = 9;//Dient nur zur deklarierung
            while (Note < 1 || Note > 6) Note = Convert.ToInt16(Console.ReadLine());
            return Convert.ToString(Note);
        }

        public static string CheckDatum()
        {
            DateTime datum = DateTime.Today;//Dient nur zur deklarierung
            string Eingabe = "Test";
            bool ok = false;

            while (ok == false)
            {
                if (DateTime.TryParse(Eingabe, out datum) == true) datum = Convert.ToDateTime(Eingabe);// Solange es kein Datum in der Eingabe gibt...
                if (datum.Year > 1984 && datum.Year < 1996 == true) ok = true;
                else Eingabe = Console.ReadLine();
            }
            return Convert.ToString(String.Format("{0:dd.MM.yyyy}", datum));
        }


        public static void AuswahlPer(ref Schueler Sch, ref List<string> PersonList,ref string path)
        {
            string gesVorname = "test";
            string gesNachname = "test";
            int gesID = 0;//Vorname in ArrayList

            Console.Write("\n\nges.Vorname:");
            gesVorname = Console.ReadLine();

            Console.Write("ges.Nachname:");
            gesNachname = Console.ReadLine();

            for (int ie = 0; ie <= PersonList.Count - 1; ie += 5)
            {
                if (PersonList[ie].Contains(gesVorname) && PersonList[ie + 1].Contains(gesNachname)) gesID = ie;
            }

            Sch.MetVorname = PersonList[gesID];
            Sch.MetNachname = PersonList[gesID + 1];
            Sch.MetNote = PersonList[gesID + 2];
            Sch.MetgebDatum = PersonList[gesID + 3];
            Sch.MetAdresse = PersonList[gesID + 4];

            Sch.Ausgabe();

            Console.WriteLine("Note ändern?(ja/nein):");
            string befehl = Console.ReadLine();
            if (befehl.Contains("ja"))
            {
                Console.Write("Note:");
                PersonList[gesID + 2] = CheckNote();
                StreamWriter WPersonTXT = new StreamWriter(path);
                for (int je = 0; je < PersonList.Count; je++) WPersonTXT.WriteLine(PersonList[je]);
                WPersonTXT.Close();

            }
            Console.WriteLine();
        }

        

    }
}


Kann ich diesen Code für mein Programm verwenden wenn ich ihn anpasse?

Falls ja:
Wie passe ich diesen am besten an?


Sorry für die blöden Fragen aber ich bin noch Anfänger in C#. Vor allem in Verbindung mit XML


Gruß,
error

Similar threads

wcf.user.socialbookmarks.titel