Program.cs 6.05 KB
Newer Older
Uwe Wienkop's avatar
Uwe Wienkop committed
1
2
using System;
using System.Collections.Generic;
Uwe Wienkop's avatar
Uwe Wienkop committed
3
using System.Linq;
Uwe Wienkop's avatar
Uwe Wienkop committed
4
5
6
7

// Modifizieren/Erweitern Sie die KeyValue Klassen bzw. das Main()-Programm
// derart, dass Sie eine weitergehende Kalenderverwaltung realisieren. In
// Main erstellen Sie bitte eine Menü mit Auswahl:
Uwe Wienkop's avatar
Uwe Wienkop committed
8
// 1 - Termin eintragen (tt.mm|Thema|Projekt|Teilnehmer|Uhrzeit)
Uwe Wienkop's avatar
Uwe Wienkop committed
9
10
11
// 2 - Monatstermine auflisten; Eingabe Monat mm
// 3 - Jahrestermine auflisten
// 4 - Alle Termine eines Projekts im Monat mm; Eingabe mm|Projektname
Uwe Wienkop's avatar
Uwe Wienkop committed
12
// Diskutieren Sie die KeyValue-Struktur
Uwe Wienkop's avatar
Uwe Wienkop committed
13
14

// 12 x 100 (5 Tage x 4 Wochen x 5 Termine/Tag); 10 Projekte
Uwe Wienkop's avatar
Uwe Wienkop committed
15
// Variante 1:   Ebene 1: Monat; Ebene 2: Projekt; Value 2: Restliche Infos
Uwe Wienkop's avatar
Uwe Wienkop committed
16
17
18
19
20
21
22
23
24
//    06 | {
//            Prog2 | {
//                      09, 8:45, Übung, Gruppe-B
//                      09, 9:45, Vorlesung, alle
//                    }
//       | {
//            DigBB | { ...
// Ebene 1: 12 Elemente, 10 Elemente, 10 Einträge/Proj.
// Suchschritte: 6 + 5 + 5 = 16
Uwe Wienkop's avatar
Uwe Wienkop committed
25
// KeyValueList<int,KeyValueList<string,List<Termin>>> givemeAName
Uwe Wienkop's avatar
Uwe Wienkop committed
26

Uwe Wienkop's avatar
Uwe Wienkop committed
27
28
29
30
31
32
33
34
// Variante 2:   Ebene 1: Datum; Value 1: Restl. Infos
//    09-06 | {
//               08:00, Übung, Prog2, Gruppe-B
//               09:45, Vorlesung, Prog2, alle
//            }
//    10-06 | {
//               09:45, Vorlesung, DigBB, alle
//            }
Uwe Wienkop's avatar
Uwe Wienkop committed
35
36
// DateTime datum = new DateTime(2020, 6, 9)
// KeyValueList<DateTime, List<Termin>> organizer = ....
Uwe Wienkop's avatar
Uwe Wienkop committed
37
38
// Ebene 1: 240 Arbeitstage, Ebene 2: 5 Elemente
// Suchschritte: 120 + 3 = 123
Uwe Wienkop's avatar
Uwe Wienkop committed
39
40
41
42
43
44
45

namespace _07KeyValueList
{
    class Termin
    {
        public string was;
        public string wer;
Uwe Wienkop's avatar
Uwe Wienkop committed
46
        public Termin(string was, string wer) { this.was = was; this.wer = wer; }
Uwe Wienkop's avatar
Uwe Wienkop committed
47
48
        public override string ToString() => $"Termin: {was} mit {wer}";
    }
Uwe Wienkop's avatar
Uwe Wienkop committed
49
50
    class ComplexKey : IComparable<ComplexKey>
    {
Uwe Wienkop's avatar
Uwe Wienkop committed
51
52
53
        public int Wert1 { get; set; }
        public string Wert2 { get; set; }
        public ComplexKey(int Wert1, string Wert2) { this.Wert1 = Wert1;this.Wert2 = Wert2; }
Uwe Wienkop's avatar
Uwe Wienkop committed
54
55
        public int CompareTo(ComplexKey other)
        {
Uwe Wienkop's avatar
Uwe Wienkop committed
56
            int diff = Wert1.CompareTo(other.Wert1);
Uwe Wienkop's avatar
Uwe Wienkop committed
57
58
            if (diff != 0)
                return diff;
Uwe Wienkop's avatar
Uwe Wienkop committed
59
            return Wert2.CompareTo(other.Wert2);
Uwe Wienkop's avatar
Uwe Wienkop committed
60
61
        }
    }
Uwe Wienkop's avatar
Uwe Wienkop committed
62
63
64
65
66
67
68
69
    class Program
    {
        static void Main(string[] args)
        {
            KeyValueListe<string, int> kvListe = new KeyValueListe<string, int>();
            kvListe["Wienkop"] = 1614;
            kvListe["Otsa"] = 1855;

Uwe Wienkop's avatar
Uwe Wienkop committed
70
71
72
            Console.WriteLine($"Telefonnummer von Wienkop: {kvListe["Wienkop"]}");
            Console.WriteLine("-----------");

Uwe Wienkop's avatar
Uwe Wienkop committed
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
            kvListe.Print();
            Console.WriteLine("-----------");
            kvListe["Otsa"] = 9999;
            kvListe.Print();
            Console.WriteLine("-----------");

            KeyValueListe<string, Termin> termine = new KeyValueListe<string, Termin>();
            termine["Wienkop"] = new Termin("IT-Proj", "Digitale Visitenkarte");
            termine.Print();
            //foreach (var item in termine)
            //{
            //    Console.WriteLine(item.val);
            //}

            List<Termin> termineMi = new List<Termin>();
            termineMi.Add(new Termin("08:00 Prog2-Vorlesung", "Gruppe-Wienkop"));
Uwe Wienkop's avatar
Uwe Wienkop committed
89
            termineMi.Add(new Termin("09:45 Dig Bildbearbeitung", "MA-MIN"));
Uwe Wienkop's avatar
Uwe Wienkop committed
90
91
92
93

            List<Termin> termineDi = new List<Termin>();
            termineDi.Add(new Termin("08:00 Prog2-Übung", "Gruppe-Wienkop"));
            termineDi.Add(new Termin("09:45 Prog2-Vorlesung", "Gruppe-Wienkop"));
Uwe Wienkop's avatar
Uwe Wienkop committed
94
            termineDi.Add(new Termin("11:30 Mitarbeiterbesprechung", "Jobbörse"));
Uwe Wienkop's avatar
Uwe Wienkop committed
95
96
97

            KeyValueListe<string, List<Termin>> terminverwaltung = new KeyValueListe<string, List<Termin>>();
            terminverwaltung["02.06.2020"] = termineDi;
Uwe Wienkop's avatar
Uwe Wienkop committed
98
            terminverwaltung["03.06.2020"] = termineMi;
Uwe Wienkop's avatar
Uwe Wienkop committed
99
100
            terminverwaltung["02.06.2020"].Add(new Termin("11:30 Teams", "BayernMINT"));

Uwe Wienkop's avatar
Uwe Wienkop committed
101

Uwe Wienkop's avatar
Uwe Wienkop committed
102
            // Pfannkuchen, Zutaten(Mehl, Milch, Eier), Zubereitung (Schritt1, Schritt2, ...)
Uwe Wienkop's avatar
Uwe Wienkop committed
103
104
105
106
107
108
109
110
111
112
            KeyValueListe<string, (List<string>, List<string>)> rezepte = new KeyValueListe<string, (List<string>, List<string>)>();
            List<string> zutaten = new List<string>();
            zutaten.Add("Mehl");
            zutaten.Add("Milch");
            zutaten.Add("Eier");
            List<string> zubereitung = new List<string>();
            zubereitung.Add("Eier in Schüssel schlagen");
            zubereitung.Add("mit Mehl und Milch verrühren");

            rezepte["Pfannkuchen"] = (zutaten, zubereitung);
Uwe Wienkop's avatar
Uwe Wienkop committed
113
114


Uwe Wienkop's avatar
Uwe Wienkop committed
115
116
117
            List<string> zutaten2;
            List<string> zubereitung2;
            (zutaten2, zubereitung2) = rezepte["Pfannkuchen"];
Uwe Wienkop's avatar
Uwe Wienkop committed
118
119
120
121
122
123
124
125
126
127
            Console.WriteLine("Zutaten: ");
            foreach (var item in zutaten2)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("Zubereitung:");
            foreach (var item in zubereitung2)
            {
                Console.WriteLine(item);
            }
Uwe Wienkop's avatar
Uwe Wienkop committed
128
129
130

            //KeyValueListe<string, KeyValueListe<char, string>> l3 = new KeyValueListe<string, KeyValueListe<char, string>>();
            //l3["Wienkop"]['A'] = "Teambesprechung";
Uwe Wienkop's avatar
Uwe Wienkop committed
131
132
133
134
135
136
137
138
139

            foreach (var tag in terminverwaltung)
            {
                Console.WriteLine($"\nTermine am {tag.key}:");
                foreach (var item in tag.val)
                {
                    Console.WriteLine(item);
                }
            }
Uwe Wienkop's avatar
Uwe Wienkop committed
140
141

            if ((2, 3, "2020").CompareTo((2, 3, "2020")) == 0)
Uwe Wienkop's avatar
Uwe Wienkop committed
142
                Console.WriteLine("Ist gleich");   // Ergebnis: die beiden sind gleich!
Uwe Wienkop's avatar
Uwe Wienkop committed
143
144
145
146
            else
                Console.WriteLine("Ist ungleich");

            KeyValueListe<int, KeyValueListe<string, List<string>>> t3 = new KeyValueListe<int, KeyValueListe<string, List<string>>>();
Uwe Wienkop's avatar
Uwe Wienkop committed
147
148
149
150
151
152
            List<string> l;
            t3[6]["Prog2"] = l = new List<string>();
            l.Add("09.45 Vorlesung");

            KeyValueListe<(int, int), string> t4 = new KeyValueListe<(int, int), string>();
            t4[(3, 6)] = "Kaffestunde";
Uwe Wienkop's avatar
Uwe Wienkop committed
153
            t4[(2, 5)] = "Vorlesung";
Uwe Wienkop's avatar
Uwe Wienkop committed
154

Uwe Wienkop's avatar
Uwe Wienkop committed
155
            KeyValueListe<ComplexKey, string> t5 = new KeyValueListe<ComplexKey, string>();
Uwe Wienkop's avatar
Uwe Wienkop committed
156
157
158
        }
    }
}