Beruflich Dokumente
Kultur Dokumente
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Atelier1: l’objectif de cet atelier est la gestion de personnelle à l’aide d’une application
console utilisant le langage CSharp dans l’environnement visuel studio .net.
Pour créer cette classe, on utilise l’assistant de création des objets en Visual studio :
Une clique droite sur la racine du projet dans l’anglet explorateur des solutions en Visual
studio :
1
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Ensuite une clique sur l’élément ajouter un nouvel élément et choisir comme objet une classe
2
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
using System;
using System.Collections.Generic;
using System.Text;
namespace gestion_de_personnel
{
class Personnel
{
}
}
Ensuite, on ajoute les définitions des attributs et les constructeurs à la classe Personnel:
les attributs sont déclaré protected afin qu’on puisse y est accédé a partir des classe
dérivé (classe fille, sous classe) ;
3
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Constructeur vide :
public Personnel()
{ }
using System;
using System.Collections.Generic;
using System.Text;
namespace gestion_de_personnel
{
class Personnel
{ protected int code;
protected string nom;
protected string prenom;
protected int grade;
public Personnel()
{ }
public Personnel(int c,string n,string p,int g)
{ code = c;
nom = n;
prenom = p;
grade = g;
}
public Personnel(Personnel p)
{
code = p.code;
nom = p.nom;
prenom = p.prenom;
grade = p.grade;
}
}
}
4
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Il existe une autre façon (autre que l’utilisation des accesseurs) d'avoir accès aux
attributs privés et protégés d'une classe, c'est de créer des propriétés. Celles-ci nous
permettent de manipuler des attributs privés et protégés comme s'ils étaient publics.
Attribut code :
public int Code
{
get { return code; }
set { code = value; }
}
Attribut nom :
public string Nom
{
get { return nom; }
set { nom = value; }
}
Attribut prenom :
public string Prenom
{
get { return prenom; }
set { prenom = value; }
}
grade = value;
}
else { throw new Exception("grade invalide"); }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace gestion_de_personnel
{
class Personnel
{ protected int code;
5
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
grade = value;
}
else { throw new Exception("grade invalide"); }
}
}
}
}
Pour créer le menu on ajoute dans la méthode principale main le code permettant d’afficher
Le menu interactive
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
6
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
class Program
{
public static int choix = 0;
static void Main(string[] args)
{
Console.WriteLine("5- Quitter");
Console.WriteLine("*******************************");
Console.WriteLine("Saisir votre choix");
choix = int.Parse(Console.ReadLine());
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine(Ajouter une personne");
break;
case 2: Console.WriteLine(Affiche la liste des
personnes");
break;
case 3: Console.WriteLine(Modifier une personne");
break;
case 4: Console.WriteLine(" Supprimer une personne");
break;
case 5: Console.WriteLine("fin programme");
break;
default: Console.WriteLine();
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
}
}
7
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
using System.Collections;
une méthode qu’on va utiliser dans le menu afin de gérer les ajouts cette méthode est
appelée Remplir est reçoit en paramètre la collection ArrayList.
On ajoute cette méthode dans la méthode Main du Programme principal ; cette méthode
utilise une méthode publique de la classe Personnel appelée Saisie ().
8
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Console.WriteLine("Entrée le grade");
this.grade = int.Parse(Console.ReadLine());
namespace gestion_de_personnel
{
class Personnel
{ protected int code;
protected string nom;
protected string prenom;
protected int grade;
public Personnel()
{ }
public Personnel(int c,string n,string p,int g)
{ code = c;
nom = n;
prenom = p;
grade = g;
}
public Personnel(Personnel p)
{
code = p.code;
nom = p.nom;
prenom = p.prenom;
grade = p.grade;
}
grade = value;
9
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
}
else { throw new Exception("grade invalide"); }
}
}
public void Saisie()
{
Console.WriteLine("Entrée le code");
this.code = int.Parse(Console.ReadLine());
Console.WriteLine("Entrée le nom");
this.nom = Console.ReadLine();
Console.WriteLine("Entrée le Prénom");
this.prenom = Console.ReadLine();
Console.WriteLine("Entrée le grade");
this.grade = int.Parse(Console.ReadLine());
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
class Program
{
public static int choix = 0;
public static int i, n;
static void Main(string[] args)
{
10
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Console.WriteLine("*******************************");
Console.WriteLine("1- Ajouter une personne");
Console.WriteLine("2- Affiche la liste des personnes");
Console.WriteLine("3- Modifier une personne");
Console.WriteLine("4- Supprimer une personne");
Console.WriteLine("5- Quitter");
Console.WriteLine("*******************************");
Console.WriteLine("Saisir votre choix");
choix = int.Parse(Console.ReadLine());
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine("Ajout d' une personne");
Remplir(t);
break;
case 2: Console.WriteLine("Affiche la liste des
personnes");
break;
case 3: Console.WriteLine("Modifier une personne");
break;
case 4: Console.WriteLine(" Supprimer une personne");
break;
case 5: Console.WriteLine("fin programme");
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
public static void Remplir(ArrayList p)
{
}
}
}
Pour cela on doit ajouter une méthode d’affichage dans la classe personnel
11
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
{ s.Affiche(); }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace gestion_de_personnel
{
class Personnel
{ protected int code;
protected string nom;
protected string prenom;
protected int grade;
public Personnel()
{ }
public Personnel(int c,string n,string p,int g)
{ code = c;
nom = n;
prenom = p;
grade = g;
}
public Personnel(Personnel p)
{
code = p.code;
nom = p.nom;
prenom = p.prenom;
grade = p.grade;
}
12
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
grade = value;
}
else { throw new Exception("grade invalide"); }
}
}
public void Saisie()
{
Console.WriteLine("Entrée le code");
this.code = int.Parse(Console.ReadLine());
Console.WriteLine("Entrée le nom");
this.nom = Console.ReadLine();
Console.WriteLine("Entrée le Prénom");
this.prenom = Console.ReadLine();
Console.WriteLine("Entrée le grade");
this.grade = int.Parse(Console.ReadLine());
}
public void Affiche()
{
Console.WriteLine("\nLes données de la personne sont :\nle code
: {0}\n"
+ "le nom : {1}\nle le prenom : {2}\nle grade : "
+ "{3}", code, nom,prenom, grade);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
class Program
{
public static int choix = 0;
public static int i, n;
13
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Console.WriteLine("5- Quitter");
Console.WriteLine("*******************************");
Console.WriteLine("Saisir votre choix");
choix = int.Parse(Console.ReadLine());
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine("Ajout d' une personne");
Remplir(t);
break;
case 2: Console.WriteLine("Affiche la liste des
personnes");
AfficheListe(t);
break;
case 3: Console.WriteLine("Modifier une personne");
break;
case 4: Console.WriteLine(" Supprimer une personne");
break;
case 5: Console.WriteLine("fin programme");
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
public static void Remplir(ArrayList p)
{
14
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
}
public static void AfficheListe(ArrayList p)
{
foreach (Personnel s in p)
{
{ s.Affiche(); }
}
}
}
}
}
}
if(trouve == 0)
{Console.WriteLine("élément inéxistant");}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
class Program
{
public static int choix = 0;
public static string nom;
15
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
Console.WriteLine("5- Quitter");
Console.WriteLine("*******************************");
Console.WriteLine("Saisir votre choix");
choix = int.Parse(Console.ReadLine());
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine("Ajout d' une personne");
Remplir(t);
break;
case 2: Console.WriteLine("Affiche la liste des
personnes");
AfficheListe(t);
break;
case 3: Console.WriteLine("Modifier une personne");
break;
case 4: Console.WriteLine(" Supprimer une personne");
SupprimerListe(t);
break;
case 5: Console.WriteLine("fin programme");
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
public static void Remplir(ArrayList p)
{
16
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
p.Add(s);
}
}
public static void AfficheListe(ArrayList p)
{
foreach (Personnel s in p)
{
{ s.Affiche(); }
}
}
public static void SupprimerListe(ArrayList p)
{
trouve = 0;
Personnel s = new Personnel();
Console.WriteLine("donner le nom de la personne à supprimer");
nom = Console.ReadLine();
for(i = 0;i<p.Count;i++)
{
s = (Personnel)(p[i]);
if(s.Nom==nom)
{ trouve = 1;
p.RemoveAt(i);
Console.WriteLine("suppression efféctuée avec
succées");
}
}
if(trouve == 0)
{Console.WriteLine("élément inéxistant");}
}
}
}
On doit ajouter une méthode qui va faire une recherche et modifier par la suite soit le prénom
soit le grade d’une personne dont le nom est passé en paramètre lors de l’appel de la fonction
de modification.
17
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
class Program
{
public static int choix = 0;
public static string nom;
public static int i,r, n;
public static int trouve;
static void Main(string[] args)
{
Console.WriteLine("5- Quitter");
Console.WriteLine("*******************************");
Console.WriteLine("Saisir votre choix");
choix = int.Parse(Console.ReadLine());
18
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine("Ajout d' une personne");
Remplir(t);
break;
case 2: Console.WriteLine("Affiche la liste des
personnes");
AfficheListe(t);
break;
case 3: Console.WriteLine("Modifier une personne");
ModifierListe(t);
break;
case 4: Console.WriteLine(" Supprimer une personne");
SupprimerListe(t);
break;
case 5: Console.WriteLine("fin programme");
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
public static void Remplir(ArrayList p)
{
}
public static void AfficheListe(ArrayList p)
{
foreach (Personnel s in p)
{
{ s.Affiche(); }
}
}
public static void ModifierListe(ArrayList p)
{
Personnel s = new Personnel();
Console.WriteLine("donner le nom de la personne à modifier");
nom = Console.ReadLine();
trouve = 0;
for (int i = 0; i < p.Count; i++)
19
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
{
s = (Personnel)(p[i]);
if (s.Nom == nom)
{
}
}
public static void SupprimerListe(ArrayList p)
{
trouve = 0;
Personnel s = new Personnel();
Console.WriteLine("donner le nom de la personne à supprimer");
nom = Console.ReadLine();
for(i = 0;i<p.Count;i++)
{
s = (Personnel)(p[i]);
if(s.Nom==nom)
{ trouve = 1;
p.RemoveAt(i);
Console.WriteLine("suppression efféctuée avec
succées");
}
}
if(trouve == 0)
{Console.WriteLine("élément inéxistant");}
}
}
}
Etape 8 : ajout d’une méthode pour trier la liste des personnes suivant le
code
Pour cela on ajoute la méthode suivante dans le programme principale :
20
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
foreach (Personnel s in p)
{ sl.Add(s.Code, s.Nom); }
Console.WriteLine(sl.Count);
Personnel pers = new Personnel();
for (i = 0; i < sl.Count; i++)
{
Console.WriteLine("\t{0}:\t{1}", sl.GetKey(i),
sl.GetByIndex(i));
//pers=(Personnel)sl.g;
//pers.Affiche();
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace gestion_de_personnel
{
class Program
{
public static int choix = 0;
public static string nom;
public static int i,r, n;
public static int trouve;
static void Main(string[] args)
{
21
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
choix = int.Parse(Console.ReadLine());
//int m=Menu(ch);
switch (choix)
{
case 1: Console.WriteLine("Ajout d' une personne");
Remplir(t);
break;
case 2: Console.WriteLine("Affiche la liste des
personnes");
AfficheListe(t);
break;
case 3: Console.WriteLine("Modifier une personne");
ModifierListe(t);
break;
case 4: Console.WriteLine(" Supprimer une personne");
SupprimerListe(t);
break;
case 5: Console.WriteLine(" Trier la liste suivant le code");
TrierListe(t);
break;
}
Console.WriteLine("Désirez-vous faire une autre opération ?
oui/non");
reponse = Console.ReadLine();
}
public static void Remplir(ArrayList p)
{
}
public static void AfficheListe(ArrayList p)
{
foreach (Personnel s in p)
{
{ s.Affiche(); }
}
}
22
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
}
}
public static void TrierListe(ArrayList p)
{
foreach (Personnel s in p)
{ sl.Add(s.Code, s.Nom); }
Console.WriteLine(sl.Count);
Personnel pers = new Personnel();
for (i = 0; i < sl.Count; i++)
{
Console.WriteLine("\t{0}:\t{1}", sl.GetKey(i),
sl.GetByIndex(i));
//pers=(Personnel)sl.g;
//pers.Affiche();
}
public static void SupprimerListe(ArrayList p)
{
trouve = 0;
Personnel s = new Personnel();
Console.WriteLine("donner le nom de la personne à supprimer");
nom = Console.ReadLine();
for(i = 0;i<p.Count;i++)
23
langage CSharp 1ER Année TSDI Formateur
CFMOTI@ ème
Gestion de personne à 2 SEMISTRE
l’aide d’une collection
Rachid Dehbi
2009/2010
{
s = (Personnel)(p[i]);
if(s.Nom==nom)
{ trouve = 1;
p.RemoveAt(i);
Console.WriteLine("suppression efféctuée avec
succées");
}
}
if(trouve == 0)
{Console.WriteLine("élément inéxistant");}
}
}
}
24