Exercice langage C : Gestion de comptes bancaires

  1. définir un type structure DATE qui contient trois membres entiers : jour, mois et année
  2. définir un type structure CLIENT qui contient les membres suivants :
    • numero_cmpt : entier (numéro de compte)
    • nom : chaîne de caractères (nom d'un client)
    • der_operation : caractère (R : Retrait, V : Virement)
    • anc_solde : réel (ancien solde)
    • nouv_solde : réel (nouveau solde)
    • date : DATE (jj mm aa)
  3. écrire une fonction ouvrir qui ouvre un fichier existant ou le crée sinon
  4. écrire une fonction fermer qui ferme le fichier
  5. écrire la fonction main qui fait appel SEULEMENT aux fonctions ouvrir, fermer et la fonction menu. Le début de la fonction menu est donné. Avant de continuer VERIFIEZ que le fichier est bien créé
  6. écrire une fonction ajout qui ajoute un client
  7. écrire une fonction affiche qui affiche le compte d'un client. Cette fonction doit être, capable de chercher un client soit par son nom soit par son numéro de compte.
    TESTEZ votre programme avant de continuer
  8. écrire une fonction lister qui affiche tous les comptes des clients
    TESTEZ votre programme avant de continuer
  9. écrire une fonction operation qui réalise les retraits, les virements et les mises à jour des comptes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void menu(FILE *fic)
{
       char choix;
       do
       {
              printf("\n\nAjouter d'un nouveau client............: A\n");
              printf("Consultation d'un compte client........: C\n");
              printf("Lister tous les comptes de clients.....: L\n");
              printf("Opération sur un compte client.........: O\n");
              printf("Quitter................................: Q\n");
              printf("                           votre choix: ");
              rewind(stdin);
              scanf("%c",&choix);
              switch(choix)
              {
                      case 'a':
                      case 'A': ajout(...);
                      ...
              }
       }
       while (choix != 'q' && choix != 'Q');
}

 


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;
}