using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dictionnaire_Simple1
{   
    public class Etudiant
    {
    public string Nom {get;set;}
    public string Prenom {get;set;}
    public UInt16 Age {get;set;}
    public UInt32 CodeApogee {get;set;}

    public Etudiant(string nom,string prenom,UInt16  age, UInt32 codeApogee)
    {Nom=nom; Prenom=prenom;Age=age;CodeApogee=codeApogee;}

    public override string ToString()
    {return (CodeApogee+":"+Nom+" "+Prenom+" age de "+Age.ToString()+" ans");}

    }
 
    class Program
    {
        static void Main(string[] args)
        {   // creation dictionnaire
            Dictionary<UInt32,Etudiant> dicLPSE=new Dictionary<UInt32,Etudiant> ();
            // ajout des entrees
            dicLPSE.Add(100213,new Etudiant("Oscar","Amel",21,100213));
            dicLPSE.Add(100214,new Etudiant("Copter","Elie",20,100214));
            // acces d'un elt (affichage necessite surcharge de ToString) 
            Console.WriteLine(dicLPSE[100214]);
            // Modification d'un elt
            dicLPSE[100214] = new Etudiant("Duck", "Donald", 20, 100214);
            // test de cle avec try/catch
            uint codeTest = 100214;
            try
            {dicLPSE.Add(codeTest, new Etudiant("Duck", "Donald", 18, 100214));}
            catch (System.ArgumentException)
            { Console.WriteLine("code apogee "+codeTest+ " deja utilise"); }
            // alternative possible avec recherche de clé
            Etudiant unEtudiant;
            if (!dicLPSE.TryGetValue(100214, out unEtudiant))
                Console.WriteLine("No val"); // "No val"
            else
                Console.WriteLine(unEtudiant);
            // Methode 1:parcours du dictionnaire pour chaque couple cle/valeur
            Console.WriteLine("-----");
            foreach (KeyValuePair<UInt32, Etudiant> kv in dicLPSE) 
                Console.WriteLine(kv.Key + "; " + kv.Value);
            // Methode 2:parcours du dictionnaire pour chaque cle
            Console.WriteLine("-----");
            foreach (UInt32 code in dicLPSE.Keys)
                Console.WriteLine(code+"/"+dicLPSE[code]);
            // Methode 2:parcours du dictionnaire pour chaque "valeur"
            Console.WriteLine("-----");
            foreach (Etudiant etud in dicLPSE.Values)
                Console.WriteLine(etud);

            Console.ReadKey();
        }
    }
}
