0% ont trouvé ce document utile (0 vote)
23 vues36 pages

Gestion des clients de banque en C

Ce programme permet de gérer une base de données de clients bancaires. Il offre des fonctionnalités pour ajouter, afficher, rechercher, modifier et supprimer des clients, ainsi que calculer le solde total de la banque. Les données sont stockées dans un tableau dynamique et peuvent être sauvegardées dans un fichier.

Transféré par

hhhhhg
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues36 pages

Gestion des clients de banque en C

Ce programme permet de gérer une base de données de clients bancaires. Il offre des fonctionnalités pour ajouter, afficher, rechercher, modifier et supprimer des clients, ainsi que calculer le solde total de la banque. Les données sont stockées dans un tableau dynamique et peuvent être sauvegardées dans un fichier.

Transféré par

hhhhhg
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Programme bak

printf("\n welcome to the hadilas application to have your account information .\n");

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <locale.h>

// Définition de la structure client

struct client {

char nom[50];

char prenom[50];

char adresse[100];

char telephone[20];

double solde;

};

// Déclaration des variables globales

struct client *tab; // Tableau dynamique des clients

int nb; // Nombre de clients

char fichier[50]; // Nom du fichier de données

// Déclaration des fonctions

void menu();

void ajouter();

void afficher();

void rechercher();

void modifier();

void supprimer();

void sauvegarder();
void charger();

int estTelephoneValide(const char *telephone);

int estSoldeValide(double solde);

double calculerSoldeTotal();

// Fonction principale

int main() {

setlocale(LC_ALL, ""); // Utilisation de la locale pour le formatage monétaire

// Initialisation des variables globales

tab = NULL;

nb = 0;

strcpy(fichier, "[Link]");

// Chargement des données à partir du fichier

charger();

// Affichage du menu principal

menu();

// Libération de la mémoire allouée au tableau

free(tab);

return 0;

// Fonction qui affiche le menu principal et permet de choisir une option

void menu() {

int choix; // Variable locale pour stocker le choix de l'utilisateur

do {

// Affichage du menu
printf("***** Menu principal *****\n");

printf("1. Ajouter un nouveau client\n");

printf("2. Afficher la liste des clients\n");

printf("3. Rechercher un client par son nom\n");

printf("4. Modifier les informations d'un client\n");

printf("5. Supprimer un client\n");

printf("6. Calculer le solde total de la banque\n");

printf("7. Sauvegarder les données dans le fichier\n");

printf("8. Quitter le programme\n");

printf("**************************\n");

printf("Entrez votre choix: ");

scanf("%d", &choix);

// Traitement du choix

switch (choix) {

case 1:

ajouter(); // Appel de la fonction pour ajouter un nouveau client

break;

case 2:

afficher(); // Appel de la fonction pour afficher la liste des clients

break;

case 3:

rechercher(); // Appel de la fonction pour rechercher un client par son nom

break;

case 4:

modifier(); // Appel de la fonction pour modifier les informations d'un client

break;

case 5:

supprimer(); // Appel de la fonction pour supprimer un client

break;

case 6:
printf("Le solde total de la banque est : %.2lf\n", calculerSoldeTotal());

break;

case 7:

sauvegarder(); // Appel de la fonction pour sauvegarder les données dans le fichier

break;

case 8:

printf("Merci d'avoir utilisé ce programme.\n"); // Message de fin du programme

break;

default:

printf("Choix invalide. Veuillez réessayer.\n"); // Message d'erreur si le choix n'est pas valide

break;

} while (choix != 8); // Répétition du menu tant que le choix n'est pas 8 (quitter)

// Fonction qui ajoute un nouveau client au tableau dynamique et met à jour le nombre de clients

void ajouter() {

struct client c; // Variable locale pour stocker les informations du nouveau client

// Saisie des informations du nouveau client

printf("***** Ajout d'un nouveau client *****\n");

printf("Entrez le nom du client: ");

scanf("%s", [Link]);

printf("Entrez le prénom du client: ");

scanf("%s", [Link]);

printf("Entrez l'adresse du client: ");

scanf("%s", [Link]);

printf("Entrez le numéro de téléphone du client: ");

scanf("%s", [Link]);

// Validation du solde
do {

printf("Entrez le solde du compte du client: ");

if (scanf("%lf", &[Link]) != 1) {

// En cas d'erreur de saisie, nettoyer le tampon

while (getchar() != '\n');

printf("Saisie invalide. Veuillez entrer un nombre valide.\n");

} else if (!estSoldeValide([Link])) {

printf("Solde invalide. Le solde doit être positif.\n");

} while (!estSoldeValide([Link]));

// Allocation de la mémoire pour le nouveau client

tab = (struct client *) realloc(tab, (nb + 1) * sizeof(struct client));

// Vérification de l'allocation

if (tab == NULL) {

printf("Erreur d'allocation de mémoire.\n");

exit(1);

// Ajout du nouveau client au tableau

tab[nb] = c;

// Mise à jour du nombre de clients

nb++;

// Message de confirmation

printf("Le client a été ajouté avec succès.\n");

// Fonction qui affiche la liste des clients du tableau


void afficher() {

int i; // Variable locale pour parcourir le tableau

// Vérification si le tableau est vide

if (nb == 0) {

printf("Il n'y a aucun client à afficher.\n");

return;

// Affichage des clients

printf("***** Liste des clients *****\n");

for (i = 0; i < nb; i++) {

printf("Client %d:\n", i + 1);

printf("Nom: %s\n", tab[i].nom);

printf("Prénom: %s\n", tab[i].prenom);

printf("Adresse: %s\n", tab[i].adresse);

printf("Téléphone: %s\n", tab[i].telephone);

// Formatage de l'affichage du solde en utilisant la locale

printf("Solde: %.2lf\n", tab[i].solde);

printf("--------------------\n");

// Fonction qui recherche un client par son nom et affiche ses informations

void rechercher() {

char nom[50]; // Variable locale pour stocker le nom à rechercher

int i; // Variable locale pour parcourir le tableau

int trouve; // Variable locale pour indiquer si le nom a été trouvé ou non

// Saisie du nom à rechercher

printf("***** Recherche d'un client par son nom *****\n");


printf("Entrez le nom du client à rechercher: ");

scanf("%s", nom);

// Initialisation de la variable trouve à 0 (non trouvé)

trouve = 0;

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Affichage des informations du client trouvé

printf("Client trouvé:\n");

printf("Nom: %s\n", tab[i].nom);

printf("Prénom: %s\n", tab[i].prenom);

printf("Adresse: %s\n", tab[i].adresse);

printf("Téléphone: %s\n", tab[i].telephone);

// Formatage de l'affichage du solde en utilisant la locale

printf("Solde: %.2lf\n", tab[i].solde);

// Mise à jour de la variable trouve à 1 (trouvé)

trouve = 1;

// Arrêt de la boucle

break;

// Vérification si le nom n'a pas été trouvé

if (trouve == 0) {

// Message d'erreur

printf("Aucun client ne correspond au nom recherché.\n");


}

// Fonction qui modifie les informations d'un client en fonction de son nom

void modifier() {

char nom[50]; // Variable locale pour stocker le nom à modifier

int i; // Variable locale pour parcourir le tableau

int trouve; // Variable locale pour indiquer si le nom a été trouvé ou non

// Saisie du nom à modifier

printf("***** Modification des informations d'un client *****\n");

printf("Entrez le nom du client à modifier: ");

scanf("%s", nom);

// Initialisation de la variable trouve à 0 (non trouvé)

trouve = 0;

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Saisie des nouvelles informations du client

printf("Entrez les nouvelles informations du client:\n");

printf("Nom: ");

scanf("%s", tab[i].nom);

printf("Prénom: ");

scanf("%s", tab[i].prenom);

printf("Adresse: ");

scanf("%s", tab[i].adresse);

printf("Téléphone: ");

scanf("%s", tab[i].telephone);
// Validation du solde

do {

printf("Entrez le solde du compte du client: ");

if (scanf("%lf", &tab[i].solde) != 1) {

// En cas d'erreur de saisie, nettoyer le tampon

while (getchar() != '\n');

printf("Saisie invalide. Veuillez entrer un nombre valide.\n");

} else if (!estSoldeValide(tab[i].solde)) {

printf("Solde invalide. Le solde doit être positif.\n");

} while (!estSoldeValide(tab[i].solde));

// Mise à jour de la variable trouve à 1 (trouvé)

trouve = 1;

// Message de confirmation

printf("Les informations du client ont été mises à jour.\n");

// Arrêt de la boucle

break;

// Vérification si le nom n'a pas été trouvé

if (trouve == 0) {

// Message d'erreur

printf("Aucun client ne correspond au nom spécifié.\n");

}
// Fonction qui supprime un client en fonction de son nom

void supprimer() {

char nom[50]; // Variable locale pour stocker le nom à supprimer

int i, j; // Variables locales pour parcourir le tableau

// Saisie du nom à supprimer

printf("***** Suppression d'un client *****\n");

printf("Entrez le nom du client à supprimer: ");

scanf("%s", nom);

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Suppression du client en décalant les éléments suivants

for (j = i; j < nb - 1; j++) {

tab[j] = tab[j + 1];

// Mise à jour du nombre de clients

nb--;

// Message de confirmation

printf("Le client a été supprimé avec succès.\n");

// Sortie de la boucle

break;

// Vérification si le nom n'a pas été trouvé

if (i == nb) {
// Message d'erreur

printf("Aucun client ne correspond au nom spécifié.\n");

// Fonction qui sauvegarde les données dans un fichier

void sauvegarder() {

FILE *fichierClient; // Pointeur de fichier

int i; // Variable locale pour parcourir le tableau

// Ouverture du fichier en mode écriture (écrase le fichier existant)

fichierClient = fopen(fichier, "w");

// Vérification si le fichier a été ouvert avec succès

if (fichierClient == NULL) {

printf("Erreur d'ouverture du fichier.\n");

return;

// Écriture du nombre de clients dans le fichier

fprintf(fichierClient, "%d\n", nb);

// Écriture des informations de chaque client dans le fichier

for (i = 0; i < nb; i++) {

fprintf(fichierClient, "%s %s %s %s %.2lf\n", tab[i].nom, tab[i].prenom, tab[i].adresse,


tab[i].telephone, tab[i].solde);

// Fermeture du fichier

fclose(fichierClient);
// Message de confirmation

printf("Les données ont été sauvegardées avec succès dans le fichier %s.\n", fichier);

// Fonction qui charge les données à partir d'un fichier

void charger() {

FILE *fichierClient; // Pointeur de fichier

int i; // Variable locale pour parcourir le tableau

// Ouverture du fichier en mode lecture

fichierClient = fopen(fichier, "r");

// Vérification si le fichier a été ouvert avec succès

if (fichierClient == NULL) {

printf("Le fichier de données n'existe pas.\n");

return;

// Lecture du nombre de clients depuis le fichier

fscanf(fichierClient, "%d", &nb);

// Allocation de mémoire pour le tableau

tab = (struct client *) malloc(nb * sizeof(struct client));

// Vérification de l'allocation

if (tab == NULL) {

printf("Erreur d'allocation de mémoire.\n");

exit(1);

// Lecture des informations de chaque client depuis le fichier


for (i = 0; i < nb; i++) {

fscanf(fichierClient, "%s %s %s %s %lf", tab[i].nom, tab[i].prenom, tab[i].adresse,


tab[i].telephone, &tab[i].solde);

// Fermeture du fichier

fclose(fichierClient);

// Message de confirmation

printf("Les données ont été chargées avec succès depuis le fichier %s.\n", fichier);

// Fonction pour valider le format du numéro de téléphone (simple vérification de la longueur)

int estTelephoneValide(const char *telephone) {

return (strlen(telephone) == 10); // Un numéro de téléphone valide a une longueur de 10


caractères

// Fonction pour valider le solde (doit être positif)

int estSoldeValide(double solde) {

return (solde >= 0.0);

// Fonction qui calcule le solde total de la banque

double calculerSoldeTotal() {

double soldeTotal = 0.0;

for (int i = 0; i < nb; i++) {

soldeTotal += tab[i].solde;

return soldeTotal;

}
2

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <locale.h>

// Définition de la structure client

struct client {

char nom[50];

char prenom[50];

char adresse[100];

char telephone[20];

double solde;

};

// Déclaration des variables globales

struct client *tab; // Tableau dynamique des clients

int nb; // Nombre de clients

char fichier[50]; // Nom du fichier de données

// Déclaration des fonctions

void menu();

void ajouter();

void afficher();

void rechercher();

void modifier();

void supprimer();

void sauvegarder();

void charger();

int estTelephoneValide(const char *telephone);

int estSoldeValide(double solde);


double calculerSoldeTotal();

void transfert();

// Fonction principale

int main() {

setlocale(LC_ALL, ""); // Utilisation de la locale pour le formatage monétaire

// Initialisation des variables globales

tab = NULL;

nb = 0;

strcpy(fichier, "[Link]");

// Chargement des données à partir du fichier

charger();

// Affichage du menu principal

menu();

// Libération de la mémoire allouée au tableau

free(tab);

return 0;

// Fonction qui affiche le menu principal et permet de choisir une option

void menu() {

int choix; // Variable locale pour stocker le choix de l'utilisateur

do {

printf("welcome to the hadilas application to have your account information .\n");

// Affichage du menu

printf("***** Menu principal *****\n");


printf("1. Ajouter un nouveau client\n");

printf("2. Afficher la liste des clients\n");

printf("3. Rechercher un client par son nom\n");

printf("4. Modifier les informations d'un client\n");

printf("5. Supprimer un client\n");

printf("6. Calculer le solde total de la banque\n");

printf("7. Effectuer un transfert entre comptes\n");

printf("8. Sauvegarder les données dans le fichier\n");

printf("9. Quitter le programme\n");

printf("**************************\n");

printf("Entrez votre choix: ");

scanf("%d", &choix);

// Traitement du choix

switch (choix) {

case 1:

ajouter(); // Appel de la fonction pour ajouter un nouveau client

break;

case 2:

afficher(); // Appel de la fonction pour afficher la liste des clients

break;

case 3:

rechercher(); // Appel de la fonction pour rechercher un client par son nom

break;

case 4:

modifier(); // Appel de la fonction pour modifier les informations d'un client

break;

case 5:

supprimer(); // Appel de la fonction pour supprimer un client

break;

case 6:
printf("Le solde total de la banque est : %.2lf\n", calculerSoldeTotal());

break;

case 7:

transfert(); // Appel de la fonction pour effectuer un transfert entre comptes

break;

case 8:

sauvegarder(); // Appel de la fonction pour sauvegarder les données dans le fichier

break;

case 9:

printf("Merci d'avoir utilisé ce programme.\n"); // Message de fin du programme

break;

default:

printf("Choix invalide. Veuillez réessayer.\n"); // Message d'erreur si le choix n'est pas valide

break;

} while (choix != 9); // Répétition du menu tant que le choix n'est pas 9 (quitter)

// Fonction qui ajoute un nouveau client au tableau dynamique et met à jour le nombre de clients

void ajouter() {

struct client c; // Variable locale pour stocker les informations du nouveau client

// Saisie des informations du nouveau client

printf("***** Ajout d'un nouveau client *****\n");

printf("Entrez le nom du client: ");

scanf("%s", [Link]);

printf("Entrez le prénom du client: ");

scanf("%s", [Link]);

printf("Entrez l'adresse du client: ");

scanf("%s", [Link]);

printf("Entrez le numéro de téléphone du client: ");


scanf("%s", [Link]);

// Validation du solde

do {

printf("Entrez le solde du compte du client: ");

if (scanf("%lf", &[Link]) != 1) {

// En cas d'erreur de saisie, nettoyer le tampon

while (getchar() != '\n');

printf("Saisie invalide. Veuillez entrer un nombre valide.\n");

} else if (!estSoldeValide([Link])) {

printf("Solde invalide. Le solde doit être positif.\n");

} while (!estSoldeValide([Link]));

// Allocation de la mémoire pour le nouveau client

tab = (struct client *) realloc(tab, (nb + 1) * sizeof(struct client));

// Vérification de l'allocation

if (tab == NULL) {

printf("Erreur d'allocation de mémoire.\n");

exit(1);

// Ajout du nouveau client au tableau

tab[nb] = c;

// Mise à jour du nombre de clients

nb++;

// Message de confirmation

printf("Le client a été ajouté avec succès.\n");


}

// Fonction qui affiche la liste des clients du tableau

void afficher() {

int i; // Variable locale pour parcourir le tableau

// Vérification si le tableau est vide

if (nb == 0) {

printf("Il n'y a aucun client à afficher.\n");

return;

// Affichage des clients

printf("***** Liste des clients *****\n");

for (i = 0; i < nb; i++) {

printf("Client %d:\n", i + 1);

printf("Nom: %s\n", tab[i].nom);

printf("Prénom: %s\n", tab[i].prenom);

printf("Adresse: %s\n", tab[i].adresse);

printf("Téléphone: %s\n", tab[i].telephone);

// Formatage de l'affichage du solde en utilisant la locale

printf("Solde: %.2lf\n", tab[i].solde);

printf("--------------------\n");

// Fonction qui recherche un client par son nom et affiche ses informations

void rechercher() {

char nom[50]; // Variable locale pour stocker le nom à rechercher

int i; // Variable locale pour parcourir le tableau

int trouve; // Variable locale pour indiquer si le nom a été trouvé ou non
// Saisie du nom à rechercher

printf("***** Recherche d'un client par son nom *****\n");

printf("Entrez le nom du client à rechercher: ");

scanf("%s", nom);

// Initialisation de la variable trouve à 0 (non trouvé)

trouve = 0;

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Affichage des informations du client trouvé

printf("Client trouvé:\n");

printf("Nom: %s\n", tab[i].nom);

printf("Prénom: %s\n", tab[i].prenom);

printf("Adresse: %s\n", tab[i].adresse);

printf("Téléphone: %s\n", tab[i].telephone);

// Formatage de l'affichage du solde en utilisant la locale

printf("Solde: %.2lf\n", tab[i].solde);

// Mise à jour de la variable trouve à 1 (trouvé)

trouve = 1;

// Arrêt de la boucle

break;

// Vérification si le nom n'a pas été trouvé


if (trouve == 0) {

// Message d'erreur

printf("Aucun client ne correspond au nom recherché.\n");

// Fonction qui modifie les informations d'un client en fonction de son nom

void modifier() {

char nom[50]; // Variable locale pour stocker le nom à modifier

int i; // Variable locale pour parcourir le tableau

int trouve; // Variable locale pour indiquer si le nom a été trouvé ou non

// Saisie du nom à modifier

printf("***** Modification des informations d'un client *****\n");

printf("Entrez le nom du client à modifier: ");

scanf("%s", nom);

// Initialisation de la variable trouve à 0 (non trouvé)

trouve = 0;

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Saisie des nouvelles informations du client

printf("Entrez les nouvelles informations du client:\n");

printf("Nom: ");

scanf("%s", tab[i].nom);

printf("Prénom: ");

scanf("%s", tab[i].prenom);

printf("Adresse: ");
scanf("%s", tab[i].adresse);

printf("Téléphone: ");

scanf("%s", tab[i].telephone);

// Validation du solde

do {

printf("Entrez le solde du compte du client: ");

if (scanf("%lf", &tab[i].solde) != 1) {

// En cas d'erreur de saisie, nettoyer le tampon

while (getchar() != '\n');

printf("Saisie invalide. Veuillez entrer un nombre valide.\n");

} else if (!estSoldeValide(tab[i].solde)) {

printf("Solde invalide. Le solde doit être positif.\n");

} while (!estSoldeValide(tab[i].solde));

// Mise à jour de la variable trouve à 1 (trouvé)

trouve = 1;

// Message de confirmation

printf("Les informations du client ont été mises à jour.\n");

// Arrêt de la boucle

break;

// Vérification si le nom n'a pas été trouvé

if (trouve == 0) {

// Message d'erreur

printf("Aucun client ne correspond au nom spécifié.\n");


}

// Fonction qui supprime un client en fonction de son nom

void supprimer() {

char nom[50]; // Variable locale pour stocker le nom à supprimer

int i, j; // Variables locales pour parcourir le tableau

// Saisie du nom à supprimer

printf("***** Suppression d'un client *****\n");

printf("Entrez le nom du client à supprimer: ");

scanf("%s", nom);

// Recherche du nom dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom, tab[i].nom) == 0) {

// Suppression du client en décalant les éléments suivants

for (j = i; j < nb - 1; j++) {

tab[j] = tab[j + 1];

// Mise à jour du nombre de clients

nb--;

// Message de confirmation

printf("Le client a été supprimé avec succès.\n");

// Sortie de la boucle

break;

}
// Vérification si le nom n'a pas été trouvé

if (i == nb) {

// Message d'erreur

printf("Aucun client ne correspond au nom spécifié.\n");

// Fonction qui sauvegarde les données dans un fichier

void sauvegarder() {

FILE *fichierClient; // Pointeur de fichier

int i; // Variable locale pour parcourir le tableau

// Ouverture du fichier en mode écriture (écrase le fichier existant)

fichierClient = fopen(fichier, "w");

// Vérification si le fichier a été ouvert avec succès

if (fichierClient == NULL) {

printf("Erreur d'ouverture du fichier.\n");

return;

// Écriture du nombre de clients dans le fichier

fprintf(fichierClient, "%d\n", nb);

// Écriture des informations de chaque client dans le fichier

for (i = 0; i < nb; i++) {

fprintf(fichierClient, "%s %s %s %s %.2lf\n", tab[i].nom, tab[i].prenom, tab[i].adresse,


tab[i].telephone, tab[i].solde);

}
// Fermeture du fichier

fclose(fichierClient);

// Message de confirmation

printf("Les données ont été sauvegardées avec succès dans le fichier %s.\n", fichier);

// Fonction qui charge les données à partir d'un fichier

void charger() {

FILE *fichierClient; // Pointeur de fichier

int i; // Variable locale pour parcourir le tableau

// Ouverture du fichier en mode lecture

fichierClient = fopen(fichier, "r");

// Vérification si le fichier a été ouvert avec succès

if (fichierClient == NULL) {

printf("Le fichier de données n'existe pas.\n");

return;

// Lecture du nombre de clients depuis le fichier

fscanf(fichierClient, "%d", &nb);

// Allocation de mémoire pour le tableau

tab = (struct client *) malloc(nb * sizeof(struct client));

// Vérification de l'allocation

if (tab == NULL) {

printf("Erreur d'allocation de mémoire.\n");

exit(1);
}

// Lecture des informations de chaque client depuis le fichier

for (i = 0; i < nb; i++) {

fscanf(fichierClient, "%s %s %s %s %lf", tab[i].nom, tab[i].prenom, tab[i].adresse,


tab[i].telephone, &tab[i].solde);

// Fermeture du fichier

fclose(fichierClient);

// Message de confirmation

printf("Les données ont été chargées avec succès depuis le fichier %s.\n", fichier);

// Fonction pour valider le format du numéro de téléphone (simple vérification de la longueur)

int estTelephoneValide(const char *telephone) {

return (strlen(telephone) == 10); // Un numéro de téléphone valide a une longueur de 10


caractères

// Fonction pour valider le solde (doit être positif)

int estSoldeValide(double solde) {

return (solde >= 0.0);

// Fonction qui calcule le solde total de la banque

double calculerSoldeTotal() {

double soldeTotal = 0.0;

for (int i = 0; i < nb; i++) {

soldeTotal += tab[i].solde;

}
return soldeTotal;

// Fonction qui effectue un transfert entre deux comptes

void transfert() {

char nom_source[50]; // Nom du client source

char nom_dest[50]; // Nom du client destinataire

double montant; // Montant du transfert

int i, j; // Variables locales pour parcourir le tableau

int trouve_source, trouve_dest; // Variables locales pour indiquer si les noms ont été trouvés

// Saisie du nom du client source

printf("***** Transfert entre comptes *****\n");

printf("Entrez le nom du client source : ");

scanf("%s", nom_source);

// Saisie du nom du client destinataire

printf("Entrez le nom du client destinataire : ");

scanf("%s", nom_dest);

// Initialisation des variables trouve_source et trouve_dest à 0 (non trouvés)

trouve_source = 0;

trouve_dest = 0;

// Recherche des noms dans le tableau

for (i = 0; i < nb; i++) {

// Comparaison du nom avec celui du client courant

if (strcmp(nom_source, tab[i].nom) == 0) {

// Le nom source a été trouvé

trouve_source = 1;
// Saisie du montant à transférer

printf("Entrez le montant à transférer : ");

if (scanf("%lf", &montant) != 1 || montant <= 0) {

printf("Montant invalide. Le montant doit être supérieur à zéro.\n");

return;

// Vérification si le solde est suffisant

if (montant > tab[i].solde) {

printf("Solde insuffisant pour effectuer ce transfert.\n");

return;

// Recherche du nom du destinataire

for (j = 0; j < nb; j++) {

if (strcmp(nom_dest, tab[j].nom) == 0) {

// Le nom destinataire a été trouvé

trouve_dest = 1;

// Effectuer le transfert

tab[i].solde -= montant;

tab[j].solde += montant;

printf("Transfert de %.2lf effectué avec succès de %s vers %s.\n", montant, nom_source,


nom_dest);

break;

}
// Vérification si les noms n'ont pas été trouvés

if (trouve_source == 0) {

printf("Le nom source n'a pas été trouvé dans la liste des clients.\n");

if (trouve_dest == 0) {

printf("Le nom destinataire n'a pas été trouvé dans la liste des clients.\n");

3
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define MAXNOM 20
typedef struct { //structure for the date
int jour;
int mois;
int annee;
}DATE;

typedef struct { // Client informations struct


int numero_cmpt;
char nom[MAXNOM];
char der_operation;
double anc_solde;
double nouv_solde;
DATE date;
}CLIENT;

void getDate(DATE d) { //fonction to get machine date


time_t t = time(NULL);
struct tm tm = *localtime(&t);
[Link] = tm.tm_mday;
[Link] = tm.tm_mon + 1;
[Link] = tm.tm_year + 1900;
}

void ouvrir(FILE **f,char nomfich[]){ // Fonction to open the file


*f=fopen(nomfich,"r+"); // ouvrir on mode lecture et ecriture
if(*f==NULL){
*f=fopen(nomfich,"w+"); //sinn ouvrir on mode
écriture et lecture (creer le fichier automatiquement
if(*f==NULL){
perror("Erreur d'ouverture du
fichier!"); //afficher un message d'erreur
exit(EXIT_FAILURE);
}
}
}

void fermer(FILE *fich){ //fonction to close the file


if(fich!=NULL){
fclose(fich);
}
}

int chercher_compte(FILE *fich,int cpt){ //fonction to seek the desired


account
CLIENT client;
int trouve=0, ret;
rewind(fich);//pointeur au debut
while(!trouve){
ret=fread(&client,sizeof(CLIENT),1,fich);
if(ret==0)break;
if(client.numero_cmpt==cpt){
fseek(fich,-11*sizeof(CLIENT),SEEK_CUR);
return 1;
}
}
return 0;

int ajout(FILE *fich){ //fonction to add an account


int ret;
CLIENT client;
printf("Ajout d'un client\n");
printf("\tNumero de compte:");
scanf("%d",&client.numero_cmpt);
if(chercher_compte(fich,client.numero_cmpt)){
fprintf(stderr,("Compte existant\n"));
return 0;
}
printf("\tNom:");
scanf("%s",[Link]);
client.der_operation='V';
client.anc_solde=0.0;
printf("\tSolde initial:");
scanf("%lf",&client.nouv_solde);
getDate([Link]);
fseek(fich,0,SEEK_END);//moving pointer to end
ret=fwrite(&client,sizeof(CLIENT),1,fich);
printf("Succes !");
return ret;
}

void affiche(FILE *fich){ //fonction to show the account desired


CLIENT cli;
char nom[MAXNOM];
int cpt,ret;
printf("Consultation par numero du compte\n");
printf("Numero du compte:");
scanf("%d",&cpt);
ret=chercher_compte(fich,cpt);
if(ret==0){
printf("Compte inexistant...\n");
}
else{
fread(&cli,sizeof(CLIENT),1,fich);
printf("compte:\t%d\nNom:\t%s\nDerniere operation:
%c\nAncien solde:%.2f\nNouveau solde:%.2f\nDate:\t%d/%d/%d\
n",cli.numero_cmpt,[Link],cli.der_operation,cli.anc_solde,cli.nouv_solde,c
[Link],[Link],[Link]);
}}

void lister(FILE *fich){ //fontion to list all bank accounts already


added
CLIENT cli;
rewind(fich);
printf("listage du contenu du fichier.\n");
printf("Num\t\tNom\t\tOpe\t\tAnc\t\tNouv\t\tDate\n");
while(fread(&cli,sizeof(CLIENT),1,fich)==1){
printf("%d\t\t%s\t\t%c\t\t%.2f\t\t%.2f\t\t%d/%d/%d\
n",cli.numero_cmpt,[Link],cli.der_operation,cli.anc_solde,cli.nouv_solde,c
[Link],[Link],[Link]);
}
}

void operation(FILE *fich){ //fonction for modifiying an account


informations
CLIENT cli;
char choix;
double somme;
printf("Numero du compte:");
scanf("%d",&cli.numero_cmpt);
if(!chercher_compte(fich,cli.numero_cmpt)){
printf("Compte inexienstant...\n");
return;
}
fread(&cli,sizeof(CLIENT),1,fich); // read from file
printf("Compte %d\nNom %s\n Ancien solde %.2f\nNouveau solde
%.2f\nDate %d/%d/%d\
n",cli.numero_cmpt,[Link],cli.anc_solde,cli.nouv_solde,[Link],cli.d
[Link],[Link]);
printf("Que voulez-vous faire?\n");
do{
printf("Versement:V\n Retrait:R\n Votre choix:");
scanf("%c",&choix);
}while (choix!='V'&& choix!='R');
cli.anc_solde=cli.nouv_solde;
printf("Somme:");
scanf("%lf",&somme);
if(somme<0.0){
somme=-somme;
}
if(choix='V'){
cli.der_operation='V';
cli.anc_solde+=somme;
}
else{
cli.der_operation='R';
cli.nouv_solde-=somme;
}
getDate([Link]);
fseek(fich,-11*sizeof(CLIENT),SEEK_CUR);
fwrite(&cli,sizeof(CLIENT),1,fich);
printf("Succes !");
}

void menu(FILE *fic){ //main fonction


char choix;
do{
printf("\n\n-Ajouter d'un nouveau
client ..............:A\n");
printf("-Consultation d'un compte
client ..........:C\n");
printf("-Lister tous les comptes des
clients ......:L\n");
printf("-Operation sur un compte
client ...........:O\n");
printf("-
Quitter ..................................:Q\n");
printf(".........................votre choix : ");
scanf("%c",&choix);
printf("\n");
switch(choix){
case'a':
case'A':
ajout(fic);
break;
case'c':
case'C':
affiche(fic);
break;
case'l':
case'L':
lister(fic);
break;
case'o':
case 'O':
operation(fic);
break;
case'q':
case'Q':
printf("Bye !");
break;
default:
printf("Erreur de
saisie,recommencez....\n");
break;
}
}
while(choix!='q'&&choix!='Q');
}

int main(){
FILE *fich;
printf("\t\t* Bank Account *");
ouvrir(&fich,"[Link]");
menu(fich);
fermer(fich);
return 0;
}
#define presentation() printf("Je m'appelle [Link] et je serai votre guide pendant votre passage
ici.\n");

#include<stdio.h>
#include<string.h>

// Structure pour représenter un compte

struct compte {

char num[10];

char nom[50];

char datenaiss[25];

char dateouvert[25];

char telefone[25];

long solde;

};

// Fonction pour ouvrir un compte

int ouverture_de_compte() {

FILE *fich = fopen("[Link]", "a");

if (fich != NULL) {

struct compte client;

printf("Numero de compte: \t");

scanf("%s", [Link]);

printf("Nom et prénom: \t");

scanf("%s", [Link]);

printf("Date de naissance: \t");

scanf("%s", [Link]);

printf("Date du jour: \t");

scanf("%s", [Link]);

printf("Téléphone: \t");

scanf("%s", [Link]);

printf("Solde initiale: \t");

scanf("%ld", &[Link]);
fprintf(fich, "%s\n%s\n%s\n%s\n%s\n%ld\n", [Link], [Link], [Link],
[Link], [Link], [Link]);

fclose(fich);

return 0;

// Fonction pour consulter un compte

int consulter_compte() {

FILE *fich = fopen("[Link]", "r");

if (fich != NULL) {

struct compte affich;

while (fgets([Link], 50, fich) != NULL) {

printf("Numero de compte: %s\n", [Link]);

fgets([Link], 50, fich);

printf("Nom et prénom: %s\n", [Link]);

fgets([Link], 25, fich);

printf("Date de naissance: %s\n", [Link]);

fgets([Link], 25, fich);

printf("Date d'ouverture: %s\n", [Link]);

fgets([Link], 25, fich);

printf("Téléphone: %s\n", [Link]);

fscanf(fich, "%ld", &[Link]);

printf("Solde: %ld\n\n\n", [Link]);

fgets([Link], 50, fich); // Pour passer à la ligne suivante

fclose(fich);

return 0;

}
int main() {

int choix;

int quitter = 1;

printf("************************************************************\n");

printf("* *\n");

printf("* BIENVENU DANS LE PROGRAMME DE GESTION DE COMPTE *\n");

printf("* Merci *\n");

printf("************************************************************\n\n");

do {

printf("===================== MENU =====================\n\n");

printf(" Ouverture de compte: =========> 1\n Consulter compte: =========> 2\n Quitter:
=========> 3\n");

scanf("%d", &choix);

switch (choix) {

case 1:

ouverture_de_compte();

break;

case 2:

consulter_compte();

break;

case 3:

printf("VOUS AVEZ CHOISI DE QUITTER. AU REVOIR !\n");

quitter = 0;

break;

default:

printf("CHOIX INVALIDE. VEUILLEZ REESSAYER.\n");

break;

} while (quitter);
return 0;

Vous aimerez peut-être aussi