Vous êtes sur la page 1sur 36

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, "banque.dat");

// 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", c.nom);

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

scanf("%s", c.prenom);

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

scanf("%s", c.adresse);

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

scanf("%s", c.telephone);

// Validation du solde
do {

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

if (scanf("%lf", &c.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(c.solde)) {

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

} while (!estSoldeValide(c.solde));

// 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, "banque.dat");

// 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", c.nom);

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

scanf("%s", c.prenom);

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

scanf("%s", c.adresse);

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


scanf("%s", c.telephone);

// Validation du solde

do {

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

if (scanf("%lf", &c.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(c.solde)) {

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

} while (!estSoldeValide(c.solde));

// 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);
d.jour = tm.tm_mday;
d.mois = tm.tm_mon + 1;
d.annee = 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",client.nom);
client.der_operation='V';
client.anc_solde=0.0;
printf("\tSolde initial:");
scanf("%lf",&client.nouv_solde);
getDate(client.date);
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,cli.nom,cli.der_operation,cli.anc_solde,cli.nouv_solde,c
li.date.jour,cli.date.mois,cli.date.annee);
}}

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,cli.nom,cli.der_operation,cli.anc_solde,cli.nouv_solde,c
li.date.jour,cli.date.mois,cli.date.annee);
}
}

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,cli.nom,cli.anc_solde,cli.nouv_solde,cli.date.jour,cli.d
ate.mois,cli.date.annee);
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(cli.date);
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,"BANKACCOUNT.txt");
menu(fich);
fermer(fich);
return 0;
}
#define presentation() printf("Je m'appelle M.Zaero 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("fichiercompte.txt", "a");

if (fich != NULL) {

struct compte client;

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

scanf("%s", client.num);

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

scanf("%s", client.nom);

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

scanf("%s", client.datenaiss);

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

scanf("%s", client.dateouvert);

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

scanf("%s", client.telefone);

printf("Solde initiale: \t");

scanf("%ld", &client.solde);
fprintf(fich, "%s\n%s\n%s\n%s\n%s\n%ld\n", client.num, client.nom, client.datenaiss,
client.dateouvert, client.telefone, client.solde);

fclose(fich);

return 0;

// Fonction pour consulter un compte

int consulter_compte() {

FILE *fich = fopen("fichiercompte.txt", "r");

if (fich != NULL) {

struct compte affich;

while (fgets(affich.num, 50, fich) != NULL) {

printf("Numero de compte: %s\n", affich.num);

fgets(affich.nom, 50, fich);

printf("Nom et prénom: %s\n", affich.nom);

fgets(affich.datenaiss, 25, fich);

printf("Date de naissance: %s\n", affich.datenaiss);

fgets(affich.dateouvert, 25, fich);

printf("Date d'ouverture: %s\n", affich.dateouvert);

fgets(affich.telefone, 25, fich);

printf("Téléphone: %s\n", affich.telefone);

fscanf(fich, "%ld", &affich.solde);

printf("Solde: %ld\n\n\n", affich.solde);

fgets(affich.num, 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