Université Abdelmalek Essaâdi 
Ecole Nationale des Sciences Appliquées de TANGER 
Mini Projet en 
Programmation en Langage...
ENSAT 2013 [GESTION D’UNE BANQUE] 
1 
SOMMAIRE 
INTRODUCTION __________________________________________________________ 2 ...
ENSAT 2013 [GESTION D’UNE BANQUE] 
2 
INTRODUCTION 
Le langage C reste un des langages les plus utilisés actuellement. Cel...
ENSAT 2013 [GESTION D’UNE BANQUE] 
3 
1. Introduction au Langage C 
Le C a été conçu en 1972 par Dennis Richie et Ken Thom...
ENSAT 2013 [GESTION D’UNE BANQUE] 
4 
 il permet l'écriture de logiciels qui n'ont besoin d'aucun support à l'exécution (...
ENSAT 2013 [GESTION D’UNE BANQUE] 
5 
Elle n'est pas facile à définir, on peut toutefois la cerner à travers quelques crit...
ENSAT 2013 [GESTION D’UNE BANQUE] 
6 
Chaque module communique avec tous les autres et, sauf spécification contraire, tous...
ENSAT 2013 [GESTION D’UNE BANQUE] 
7 
En C, un fichier est une suite d'octets. Les informations contenues dans le fichier ...
ENSAT 2013 [GESTION D’UNE BANQUE] 
8 
Les opérations possibles avec les fichiers sont: Créer - Ouvrir - Fermer - Lire - Ec...
ENSAT 2013 [GESTION D’UNE BANQUE] 
9 
Comme cité précédemment, notre projet sera constitué de trois menus, et on a les deu...
ENSAT 2013 [GESTION D’UNE BANQUE] 
10 
Dans ce menu, l’utilisateur peut ajouter un client, modifier ses informations, le s...
ENSAT 2013 [GESTION D’UNE BANQUE] 
11 
méthode Merise. Cela permet d'améliorer la modélisation, les processus, le coût et ...
ENSAT 2013 [GESTION D’UNE BANQUE] 
12 
Voyons maintenant la manipulation de chaque Menu de l’application : 
a> Gestion des...
ENSAT 2013 [GESTION D’UNE BANQUE] 
13 
2) Modification 
Il est aussi possible de modifier les informations d’un client, il...
ENSAT 2013 [GESTION D’UNE BANQUE] 
14 
1) Nouveau Compte 
A chaque Client on peut attribuer un ou plusieurs comptes, pour ...
ENSAT 2013 [GESTION D’UNE BANQUE] 
15 
3) Fermeture du Compte 
La fermeture ou la suppression d’un compte est très simple,...
ENSAT 2013 [GESTION D’UNE BANQUE] 
16 
2) Virement 
Le versement se passe automatiquement en entrant l’identificateur du c...
ENSAT 2013 [GESTION D’UNE BANQUE] 
17 
CONCLUSION 
Au cours de ce travail on a vu la programmation modulaire sous le langa...
ENSAT 2013 [GESTION D’UNE BANQUE] 
18 
BIBLIOGRAPHIE 
 Delannoy (C.), Programmer en langage C, Eyrolles, 1992. 
 Anne CA...
ENSAT 2013 [GESTION D’UNE BANQUE] 
19 
ANNEXE 
 Client 
struct client 
{ 
int id_client; 
char nom[21]; 
char prenom[21];...
ENSAT 2013 [GESTION D’UNE BANQUE] 
20 
while(ch=='o'||ch=='O'); 
fclose(fp); 
} 
 Compte 
struct compte 
{ 
int id_compte...
ENSAT 2013 [GESTION D’UNE BANQUE] 
21 
printf("Le solde de base doit etre > 1000 DH!!"); 
} 
Cmp.day = myTime->tm_mday; 
C...
Prochain SlideShare
Chargement dans…5
×

Gestion d'une Banque en C

4 635 vues

Publié le

Pour ce mini projet, on est censé écrire un programme en C qui gère les ressources d'une banque (gestion de clients, comptes et d'opérations).

Publié dans : Formation
0 commentaire
7 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 635
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
7
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Gestion d'une Banque en C

  1. 1. Université Abdelmalek Essaâdi Ecole Nationale des Sciences Appliquées de TANGER Mini Projet en Programmation en Langage C Intitulé : Encadré par : Réalisé Par : M. EL HADDAD Mohamed BELKADI Omayma OUALLA Soumia LAGRINI Ahmed Gestion d’une Banque
  2. 2. ENSAT 2013 [GESTION D’UNE BANQUE] 1 SOMMAIRE INTRODUCTION __________________________________________________________ 2 1. Introduction au Langage C _____________________________________________ 3 2. La Programmation Modulaire ___________________________________________ 4 3. Les Fichiers __________________________________________________________ 6 4. L’application : Gestion d’une Banque _____________________________________ 8 CONCLUSION ___________________________________________________________ 17 BIBLIOGRAPHIE _________________________________________________________ 18 ANNEXE _______________________________________________________________ 19
  3. 3. ENSAT 2013 [GESTION D’UNE BANQUE] 2 INTRODUCTION Le langage C reste un des langages les plus utilisés actuellement. Cela est dû au fait que le langage C est un langage comportant des instructions et des structures de haut niveau (contrairement à l'assembleur par exemple) tout en générant un code très rapide grâce à un compilateur très performant. Pour ce mini projet, on est censé écrire un programme en C qui gère les ressources d'une banque (gestion de clients, comptes et d'opérations). Ce programme va contenir 3 Menus :  Menu clients: contient l'ajout, modification et la suppression d'un client précis  Menu compte: créer, consulter un compte ou le supprimer  Menu opérations: il s'agit des retraits ou les virements effectuées pas un certain client. Et Dans chaqu’un on verra les contraintes et les constructions utilisées.
  4. 4. ENSAT 2013 [GESTION D’UNE BANQUE] 3 1. Introduction au Langage C Le C a été conçu en 1972 par Dennis Richie et Ken Thompson, chercheurs aux Bell Labs, afin de développer un système d’exploitation UNIX sur un DEC PDP-11. En 1978, Brian Kernighan et Dennis Richie publient la définition classique du C dans le livre « The C Programming language ». Le C devenant de plus en plus populaire dans les années 80, plusieurs groupes mirent sur le marché des compilateurs comportant des extensions particulières. En 1983, l’ANSI (American National Standards Institute) décida de normaliser le langage, ce travail s’acheva en 1989 par la définition de la norme ANSI C. Celle-ci fut reprise telle quelle par l’ISO (International Standards Organization) en 1990. C est un langage de programmation impératif et généraliste. C est qualifié de langage de bas niveau dans le sens où chaque instruction du langage est conçue pour être compilée en un nombre d'instructions machine assez prévisible en termes d'occupation mémoire et de charge de calcul. Il propose un éventail de types entiers et flottants conçus pour pouvoir correspondre directement aux types supportés par le processeur. Il fait en outre un usage intensif de la notion de pointeur. Il a une notion de type composé, mais ne propose aucune opération qui traite directement des objets de plus haut niveau (fichier informatique, chaîne de caractères, liste…). Ces types plus évolués doivent être traités en manipulant des pointeurs et des types composés. De même, le langage ne propose pas en standard la gestion de la programmation orientée objet, ni de système de gestion d'exceptions. Il existe des fonctions standards pour gérer les entrées-sorties et les chaînes de caractères, mais contrairement à d'autres langages, aucun opérateur spécifique pour améliorer l'ergonomie. Ceci rend aisé le remplacement des fonctions standards par des fonctions spécifiquement conçues pour un programme donné. C'est un des langages les plus utilisés car :  il existe depuis le début des années 1970, il est fondé sur un standard ouvert, de nombreux informaticiens le connaissent, des compilateurs et bibliothèques logicielles existent sur la plupart des architectures  il a influencé de nombreux langages plus récents dont C++, Java et PHP, sa syntaxe en particulier est largement reprise  il met en oeuvre un nombre restreint de concepts, ce qui facilite sa maîtrise et l'écriture de compilateurs simples et rapides  il ne spécifie pas rigidement le comportement du fichier exécutable produit, ce qui aide à tirer parti des capacités propres à chaque ordinateur
  5. 5. ENSAT 2013 [GESTION D’UNE BANQUE] 4  il permet l'écriture de logiciels qui n'ont besoin d'aucun support à l'exécution (ni bibliothèque logicielle ni machine virtuelle), au comportement prédictible en temps d'exécution comme en consommation de mémoire vive, comme des noyaux de système d'exploitation et des logiciels embarqués. Ses principaux inconvénients sont :  la première version du langage (K&R C) offre particulièrement peu de vérifications lors de la compilation, et il n'offre aucune vérification pendant l'exécution, ce qui fait que des erreurs qui pourraient être automatiquement détectées lors du développement ne le sont que plus tard, souvent au prix d'un plantage du logiciel  son approche de la modularité est inaboutie, il ne facilite pas le développement de concepts informatiques plus récents comme la programmation orientée objet ou la gestion d'exceptions qui exigent un effort de rigueur supplémentaire de la part du développeur  il est difficile d'écrire des programmes portables car le comportement exact des exécutables dépend de l'ordinateur cible  le support de l'allocation de mémoire et des chaînes de caractères est minimaliste, ce qui oblige les programmeurs à s'occuper de détails fastidieux et sources de bugs, il n'y a notamment pas de ramasse-miettes standard  des bugs communs comme le débordement de tampon constituent une faille de sécurité informatique et peuvent être exploités par des logiciels malveillants si le développeur ne fait pas attention  plusieurs genres d'erreurs ne peuvent être détectés automatiquement qu'à l'aide d'outils supplémentaires et non standardisés, comme lint puis splint. 2. La Programmation Modulaire Dès que l’on écrit un programme de taille importante ou destiné à être utilisé et maintenu par d’autres personnes, il est indispensable de se fixer un certain nombre de règles d’écriture. En particulier, il est nécessaire de fractionner le programme en plusieurs fichiers sources, que l’on compile séparément. Ces règles d’écriture ont pour objectifs de rendre un programme lisible, portable, réutilisable, facile à maintenir et à modifier. La modularité est une qualité que les bonnes méthodes de conception doivent posséder.
  6. 6. ENSAT 2013 [GESTION D’UNE BANQUE] 5 Elle n'est pas facile à définir, on peut toutefois la cerner à travers quelques critères. Une méthode de conception doit :  Aider à diviser chaque nouveau problème en sous-problèmes qu'on peut résoudre séparément (critère de décomposabilité)  Favoriser la production de composants logiciels qui peuvent se combiner librement pour produire de nouveaux systèmes (critère de composabilité)  Permettre au concepteur d'écrire des modules dont chacun peut être compris isolement par un lecteur humain (critère de compréhensibilité)  Permettre qu'une petite modification des spécifications du problème entraîne uniquement la modification d'un petit nombre des modules de la solution (critère de continuité)  Assurer que l'effet d'une condition anormale se produisant dans un module restera localisé à ce module ou, au pire, n'atteindra qu'un petit nombre de modules « voisins » (critère de protection). Théoriquement, tout langage de programmation peut servir à mettre en oeuvre une méthode de conception modulaire, mais dans certains cas il faut une telle dose de ruse et d'autodiscipline, pour un résultat si peu fiable, que le jeu n'en vaut pas la chandelle. En pratique un langage est dit modulaire lorsqu'on peut, sans douleur et sans artifice, en faire l'outil d'une méthode de conception modulaire. L'expérience montre que les critères précédents induisent sur le langage en question quelques contraintes assez précises, comme celles-ci :  Les modules doivent correspondre à des entités syntaxiques du langage  Chaque module doit partager des informations avec aussi peu d'autres modules que possible, et quand un tel partage existe il doit concerner aussi peu d'éléments que possible  Quand deux modules partagent des informations, cela doit être clairement indiqué dans leurs deux textes. A la lumière de ces principes la modularité de C apparaît fort rudimentaire, pour ne pas dire inexistante. Si l'on prend pour modules les fichiers sources qui composent un programme, on constate qu'aucune structure syntaxique ne signale les modules ni n'en délimite la portée, d'autant plus que le caractère non syntaxique de la directive #include brouille l'organisation du programme en fichiers distincts. Aucune déclaration particulière n'est requise pour indiquer que des objets sont partagés entre plusieurs modules.
  7. 7. ENSAT 2013 [GESTION D’UNE BANQUE] 6 Chaque module communique avec tous les autres et, sauf spécification contraire, tous les objets de chaque module sont partagés. Bien sûr, la compilation séparée est une des idées-clés du langage, et il est possible de rendre inaccessibles les noms qui peuvent être privés. Mais le langage offre peu d'outils pour rendre fiable le partage des noms qui doivent être publics, et ces outils restent d'un emploi facultatif, subordonné à l'autodiscipline du programmeur. Par exemple, si dans un module B on doit référencer une variable ou une fonction définie dans un module A, il suffit d'écrire dans B une déclaration comme extern int x;. Cet énoncé postule l'existence d'un objet nommé x, ce qui sera contrôlé par l'éditeur de liens. Mais il donne à x des attributs (la classe variable, le type int) que l'objet désigné par x ne possède pas forcement, aucune vérification cependant ne sera faite. Ainsi la compilation de B se fait dans la plus totale insécurité. Le seul moyen dont dispose l'auteur d'un module A pour s'assurer que les autres modules qui forment un programme utilisent correctement les variables et fonctions qu'il rend publiques consiste à écrire un fichier en-tête (fichier A.h) contenant toutes les déclarations publiques. Ce fichier doit être inclus par la directive #include dans le module qui implante les objets publics (fichier A.c) et dans chacun des modules qui les utilisent. De cette manière tous ces fichiers « voient » les mêmes définitions de types, les mêmes déclarations de variables et les mêmes prototypes de fonctions, ces déclarations sont écrites en un seul endroit, et toute modification de l'une d'entre elles se répercute sur tous les fichiers qui en dépendent. La nécessite de ces fichiers en-tête apparait encore plus grande quand on considère le cas des bibliothèques, c'est-à-dire des modules que leurs fonctionnalités placent en position de prestataires de services vis-à-vis des autres modules qui composent un programme, on parle alors de module serveur et de modules clients. En fait, on peut presque toujours voir la modularité en termes de serveurs et clients, car il y a toujours une hiérarchie parmi les modules. Le propre des bibliothèques est d'être conçu de manière indépendante des clients, afin de pouvoir être utilisées dans un programme présent et un nombre quelconque de programmes futurs. L'intérêt de leur associer le meilleur dispositif pour minimiser le risque de mauvaise utilisation est évident. 3. Les Fichiers Un fichier (en anglais file) est un ensemble structuré de données stocké en général sur un support externe (disquette, disque dur, disque optique, bande magnétique, ...).
  8. 8. ENSAT 2013 [GESTION D’UNE BANQUE] 7 En C, un fichier est une suite d'octets. Les informations contenues dans le fichier ne sont pas forcément de même type (un char, un int, une structure ...). Un pointeur fournit l'adresse d'une information quelconque. pointeur En C, comme d’ailleurs dans d’autres langages, tous les périphériques, qu’ils soient d’archivage (disque, disquette...) ou de communication (clavier, écran, imprimante...), peuvent être considérés comme des fichiers. Ainsi, en définitive, les entrées-sorties conversationnelles apparaîtront comme un cas particulier de la gestion de fichiers. Rappelons que l’on distingue traditionnellement deux techniques de gestion de fichiers :  L’accès séquentiel consiste à traiter les informations séquentiellement, c’est-à-dire dans l’ordre où elles apparaissent (ou apparaîtront) dans le fichier  L’accès direct consiste à se placer immédiatement sur l’information souhaitée, sans avoir à parcourir celles qui la précèdent En fait, pour des fichiers disque (ou disquette), la distinction entre accès séquentiel et accès direct n’a plus véritablement de raison d’être. D’ailleurs, comme vous le verrez, en langage C, vous utiliserez les mêmes fonctions dans les deux cas (exception faite d’une fonction de déplacement de pointeur de fichier). Qui plus est, rien ne vous empêchera de mélanger les deux modes d’accès pour un même fichier. Le défaut avec les variables, c'est qu'elles n'existent que dans la mémoire vive(RAM). Une fois votre programme arrêté, toutes vos variables sont supprimées de la mémoire et il n'est pas possible de retrouver ensuite leur valeur. Il existe d’autre part deux façons de coder les informations stockées dans un fichier :  En binaire : Fichier dit « binaire », les informations sont codées telles que. Ce sont en général des fichiers de nombres. Ils ne sont pas listables.  En ASCII : Fichier dit « texte », les informations sont codées en ASCII. Ces fichiers sont listables. Le dernier octet de ces fichiers est EOF (caractère ASCII spécifique).
  9. 9. ENSAT 2013 [GESTION D’UNE BANQUE] 8 Les opérations possibles avec les fichiers sont: Créer - Ouvrir - Fermer - Lire - Ecrire - Détruire - Renommer. La plupart des fonctions permettant la manipulation des fichiers sont rangées dans la bibliothèque standard STDIO.H. Le langage C ne distingue pas les fichiers à accès séquentiel des fichiers à accès direct, certaines fonctions de la bibliothèque livrée avec le compilateur permettent l'accès direct. Les fonctions standards sont des fonctions d'accès séquentiel. 4. L’application : Gestion d’une Banque Le projet prend en entrée un fichier (avec l'extension .pro) décrivant le projet (liste des fichiers sources, dépendances, paramètres passés au compilateur, etc.) et génère un fichier de projet spécifique à la plateforme.  Les .h: appelés fichiers headers. Ces fichiers contiennent les prototypes des fonctions.  Les .c: les fichiers source. Ces fichiers contiennent les fonctions elles-mêmes.
  10. 10. ENSAT 2013 [GESTION D’UNE BANQUE] 9 Comme cité précédemment, notre projet sera constitué de trois menus, et on a les deux structures suivantes :  « Client » il contient les informations sur les clients.  Id_client : entier.  Nom : chaîne de caractères.  Prenom : chaîne de caractères.  Profession : chaîne de caractères.  Num_tel : chaîne de caractères.  « Compte » il contient les informations sur les comptes des clients.  Id_compte : entier.  Id_client : entier.  Solde de base : réel.  Date d’ouverture : chaîne de caractères. Et voici des schémas expliquant chaque menu et sa structure : A. Le Menu General MENU GENERAL En entrant le numéro de notre choix dans la liste on passe au menu choisie suivant. Que ça soit des clients, comptes, ou d’opérations. 1. Gestion des clients 2. Gestion des comptes 3. Gestion des opérations 4. QUITTER B. Le Menu des Clients
  11. 11. ENSAT 2013 [GESTION D’UNE BANQUE] 10 Dans ce menu, l’utilisateur peut ajouter un client, modifier ses informations, le supprimer, ou chercher un certain client par son Identificateur. C. Menu Gestion des Comptes Dans ce dernier, on peut créer un compte pour un client donné avec son Identificateur, consulter son solde, ou fermer son compte. D. Menu Gestion des Operations Permet de retirer ou verser un montant choisi. A l’aide de logiciel PowerAMC on a réalisé le model conceptuel des donnes ci-dessous. PowerAMC est un logiciel de conception créé par la société SDP, qui permet de modéliser les traitements informatiques et leurs bases de données associées. Il permet de réaliser tous les types de modèles informatiques. Il reste un des seuls qui permet de travailler avec la
  12. 12. ENSAT 2013 [GESTION D’UNE BANQUE] 11 méthode Merise. Cela permet d'améliorer la modélisation, les processus, le coût et la production d'applications. Mais dans notre projet, on va utiliser les fichiers séquentiels et non pas une base de données relationnelle, C’est pour cela que PowerAMC n’est qu’un moyen de faciliter la compréhension des taches à suivre.
  13. 13. ENSAT 2013 [GESTION D’UNE BANQUE] 12 Voyons maintenant la manipulation de chaque Menu de l’application : a> Gestion des Clients 1) Ajouter un client On peut ajouter un client en lui donnant un identificateur, son nom, prénom, profession, et numéro de téléphone. On peut ajouter un autre client en choisissant « o » ou « O »
  14. 14. ENSAT 2013 [GESTION D’UNE BANQUE] 13 2) Modification Il est aussi possible de modifier les informations d’un client, il suffit d’entrer son identificateur et commencer à remplir les nouvelles informations 3) Suppression La suppression se fait automatiquement en tapant l’identificateur d’un certain client. Pour s’assurer de la suppression on peut le chercher à l’aide de fonction « Rechercher » au-dessous 4) Rechercher De même pour la recherche d’un client, il suffit de taper l’identificateur du client qu’on veut et toutes ses informations seront affichées. b> Gestion des Comptes On passe maintenant à la gestion des comptes, elle contient trois fonctions comme suite :
  15. 15. ENSAT 2013 [GESTION D’UNE BANQUE] 14 1) Nouveau Compte A chaque Client on peut attribuer un ou plusieurs comptes, pour cela, il est demandé pour créer un compte un Identificateur Client puis on associe un autre identificateur qui est celui du compte, sans oublier de poser un solde de base pour l’ouvrir. 2) Consultation Pour la consultation, en entrant l’identificateur de client, on peut voir ses différents comptes, leurs solde et sa date de création
  16. 16. ENSAT 2013 [GESTION D’UNE BANQUE] 15 3) Fermeture du Compte La fermeture ou la suppression d’un compte est très simple, il suffit d’entrer le numéro de compte qu’in veut fermer c> Gestion des Opérations Cette partie contient les opérations effectuées sur un compte d’un client, comme le retrait d’une somme, ou virement. 1) Retrait Comme indiqué, après avoir choisir le client qui veut retirer de l’argent avec son Id, le retrait ne doit pas dépasser 700DH, sinon le message d’erreur apparait.
  17. 17. ENSAT 2013 [GESTION D’UNE BANQUE] 16 2) Virement Le versement se passe automatiquement en entrant l’identificateur du compte et puis celui du client correspondant, et enfin le montant versé. On a traiter en détails les fonctions utilisées dans l’application et leurs contraintes.
  18. 18. ENSAT 2013 [GESTION D’UNE BANQUE] 17 CONCLUSION Au cours de ce travail on a vu la programmation modulaire sous le langage C, et ainsi le fonctionnement des fichiers et leur mise en pratique dans cette langage. Le projet proposé ici est la gestion d’une banque en langage C. La conception de ce projet a été très enrichissante. D’une part, il nous a permis d'appliquer les connaissances acquises en langage C et d'autre part, il a donné la possibilité d’approfondir nos connaissances sur la programmation modulaire et la manipulation des fichiers. Ce projet nous a donné la possibilité de se familiariser avec une situation réelle de gestion d’une banque, et les problématiques qui peuvent s’imposer afin de la créer. On a également pu observer la mise en pratique des notions de programmation assez difficiles à appréhender seulement en théorie.
  19. 19. ENSAT 2013 [GESTION D’UNE BANQUE] 18 BIBLIOGRAPHIE  Delannoy (C.), Programmer en langage C, Eyrolles, 1992.  Anne CANTEAUT, Programmation en langage C  www.siteduzero.com  www.developpez.com  www.wikipedia.org  http://www.ltam.lu/Tutoriel_Ansi_C
  20. 20. ENSAT 2013 [GESTION D’UNE BANQUE] 19 ANNEXE  Client struct client { int id_client; char nom[21]; char prenom[21]; char profession[21]; char num_tel[11]; }; typedef struct client client; client add_client() { client C; printf("Nouveau Client"); printf("****************"); printf("Id Client : "); scanf("%d", &C.id_client); printf("Nom : "); scanf("%s", C.nom); printf("Prenom : "); fflush(stdin); scanf("%s", C.prenom); printf("Profession : "); scanf("%s", C.profession); printf("N° tel : "); scanf("%s", C.num_tel); return C; } void writeClientToFile(void) { char ch; client C; clscr(); FILE *fp=fopen("bank.dat","a+"); do { clscr(); border(); C= add_client(); fseek(fp,0,2); fwrite(&C,sizeof(C),1,fp); printf("Continuer? (O/N)"); fflush(stdin); ch=getchar(); }
  21. 21. ENSAT 2013 [GESTION D’UNE BANQUE] 20 while(ch=='o'||ch=='O'); fclose(fp); }  Compte struct compte { int id_compte; int id_client; float solde_base; int day; int month; int year; }; typedef struct compte compte; compte new_account(void) { time_t currentTime; time(&currentTime); struct tm *myTime = localtime(&currentTime); client C; int f=0; char ch; FILE *fp; FILE *ft=fopen("account.dat","a+"); compte Cmp; do { clscr(); printf("Creation d'un compte"); printf("Id Client : "); scanf("%d", &Cmp.id_client); fp=fopen("bank.dat","r+"); while(fread(&C,sizeof(C),1,fp)==1) { if(C.id_client==Cmp.id_client) { f=1; printf("Proprietaire : ",130); fflush(stdin); puts(C.nom); puts(C.prenom); Cmp.id_client = C.id_client; printf("Id Compte : "); scanf("%i", &Cmp.id_compte); printf("Solde de base : "); fflush(stdin); scanf("%f", &Cmp.solde_base); if (Cmp.solde_base < 1000) {
  22. 22. ENSAT 2013 [GESTION D’UNE BANQUE] 21 printf("Le solde de base doit etre > 1000 DH!!"); } Cmp.day = myTime->tm_mday; Cmp.month = myTime->tm_mon + 1; Cmp.year = myTime->tm_year + 1900; fseek(ft,0,2); fwrite(&Cmp,sizeof(Cmp),1,ft); break; } } if(f==0) { printf("Ce compte n'existe pas!!"); } fclose(fp); fclose(ft); printf("Continuer? (O/N)"); fflush(stdin); ch=getchar(); } while(ch=='o'||ch=='O'); return Cmp; }

×