Exercice langage C : Répertoire téléphonique

On veut gérer un répertoire téléphonique (contenant les noms et numéros de téléphones de personnes).

  1. définir un type de structure PERS qui contient deux champs : le nom d'une personne et son numéro de téléphone
  2. écrire une fonction saisir_personne qui permet de saisir une personne (une structure de type PERS)
  3. écrire une fonction saisir_repertoire qui permet de saisir un tableau de personnes
  4. écrire une fonction afficher_repertoire qui permet d'afficher le contenu du répertoire
  5. écrire une fonction chercher_personne qui permet de chercher un numéro d'une personne donnée dans le répertoire
  6. écrire une fonction main qui saisit un répertoire téléphonique et propose le dialogue suivant :
    • 1- afficher le contenu du répertoire
    • 2- chercher le numéro de téléphone d'une personne
    • 3- quitter le Programme

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
#include 
#include 

struct personne
{
	char nom[20];		/* Le nom de la personne */
	char numero[11];	/* le numero de telephone */
};

typedef struct personne PERS;

void saisir_personne(PERS *pp);
void saisir_repertoire(PERS rep[], int nb);
void afficher_repertoire(PERS rep[], int nb);
char *chercher_personne(PERS rep[], int nb, char *nom);

int main()
{
	PERS monRep[5];
	int choix;
	char nom[20], *pnum;
	saisir_repertoire(monRep, 5);
	do
	{
		do
		{
			printf("\nMenu:\n");
			printf("1-afficher le contenu du répertoire\n");
			printf("2-chercher le numéro d'une personne\n");
			printf("3-quitter le programme\n");
			printf("Votre choix : ");
			scanf("%d", &choix);
		}
		while (choix < 1 || choix > 3);
		switch (choix)
		{
			case 1 : afficher_repertoire(monRep, 5);
				 break;
			case 2 : printf("nom a rechercher : ");
			         scanf("%s", nom);
				 pnum = chercher_personne(monRep, 5, nom);
				 if (pnum == NULL)
				 {
				 	printf(" Personne inexistante\n");
				 }
				 else
				 {
				 	printf("--> Numero de %s: %s\n", nom, pnum);
				 }
				 break;
			default : break;
		}
	}
	while (choix != 3);
	return 0;
}

void saisir_personne(PERS *pp)
{
	printf("Nom : "); scanf("%s", pp->nom);
	printf("Numero : "); scanf("%s", pp->numero);
}

void saisir_repertoire(PERS rep[], int nb)
{
	int i;
	printf("Saisie du repertoire de %d personnes :\n", nb);
	for (i=0; i<nb; i++)
	{
		saisir_personne(&rep[i]);
	}
}

void afficher_repertoire(PERS rep[], int nb)
{
	int i;
	printf("Affichage du repertoire\n");
	printf("%20s ...... Numero\n", "Nom");
	for (i=0; i<nb; i++)
	{
		printf("%20s ...... %s\n", rep[i].nom, rep[i].numero);
	}
}

char *chercher_personne(PERS rep[], int nb, char *nom)
{
	int i;
	for (i=0; i<nb; i++)
	{
		if (strcmp(nom, rep[i].nom) == 0)
		{
			return rep[i].numero;
		}
	}
	return NULL;
}