Projet en language C

Fermé
bassekoa Messages postés 1 Date d'inscription mardi 16 août 2011 Statut Membre Dernière intervention 19 septembre 2011 - 19 sept. 2011 à 22:19
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 20 sept. 2011 à 08:20
j'ai un projet en language C a effectué;je demande de l'aide;le voici:
Projet
Le but de cette série du projet est d'écrire un programme qui gère les agences d'une banque.
Les différentes entités gérées sont :
· Les agences. Une agence contient des comptes, ainsi qu'un solde global ;
· Les comptes. Un compte contient le nom du titulaire, le numéro du compte, le solde, les 4 dernières opérations
effectuées sur ce compte ;
· Les opérations. Une opération contient le type d'opération (création, dépôt, retrait, clôture), la date de
l'opération, un montant éventuel (dépôt, retrait).
L'ensemble des comptes d'une agence est représenté par un tableau de taille fixe. Les opérations d'un compte
sont classées par ordre de saisie décroissant (la dernière opération saisie est la première de la liste). Un compte
peut avoir trois états différents : libre, ouvert, ou clos. Un compte qui a été clos n'est pas physiquement détruit : on
conserve ses informations après la clôture (pendant 6 mois, par exemple). L'agence contient un compteur,
initialisé à 1, qui est le numéro qui sera affecté au prochain compte ouvert. A chaque création (ouverture) de
compte, ce compteur est incrémenté.
On souhaite que le programme présente à l'utilisateur un menu principal lui permettant de choisir l'opération à
effectuer. Ces opérations du menu principal sont :
· Consulter le solde agence ;
· Accéder au menu secondaire des opérations sur les comptes;
· Purger l'agence des comptes clos et anciens ;
· Arrêter le programme.
Le menu secondaire des opérations sur comptes clients permet d'effectuer les opérations suivantes :
· Ouvrir un compte ;
· Rechercher un compte;
· Effectuer une transaction (dépôt, retrait, clôture) sur le compte ;
· Obtenir un relevé du compte (solde et 4 dernières opérations) ;
Le principe de fonctionnement de ces menus consiste à proposer les choix à l'utilisateur, à effectuer le traitement
demandé, et à réafficher le menu (si l'opérateur ne demande pas explicitement à revenir au menu précédent, ou à
sortir du programme).
Le menu Consulter le solde agence consiste à afficher le solde d'une agence.
Le menu Purger l'agence des comptes clos et anciens consiste à réinitialiser les comptes clos et anciens et à
afficher le nombre de comptes réinitialisés.
Le menu Ouvrir un compte consiste à :
· saisir le nom du (nouveau) titulaire ;
· saisir la date d'ouverture (jour, mois, année) ;
· lancer l'opération d'ouverture, indiquer les cas d'échec, donner le numéro du compte créé en cas de
succès.
Le menu Rechercher un compte consiste à :
· saisir le nom du titulaire recherché ;
· si on le trouve, on affiche le numéro de compte ;
· sinon, on indique qu'on ne l'a pas trouvé !
Le menu Effectuer une transaction consiste à :
· saisir le numéro de compte ;
· saisir le type d'opération (?D? pour dépôt, ?R? pour retrait, ?C? pour clôture);
· si l'opération est un dépôt ou un retrait, saisir le montant ;
· saisir la date de l'opération (jour, mois, année);
· lancer le traitement, indiquer s'il a réussi ou échoué.
Le menu Relevé de compte consiste à :
· saisir le numéro de compte ;
· lancer l'opération de relevé de ce compte, indiquer les cas d'échec (compte inexistant).
2
La modélisation de ces entités a donné les structures de données et le début de programme suivants :
#include<stdio.h>
#include<time.h>/* pour time_t et les fonctions de gestion du temps*/
#define LONG_TITU 41 /* longueur maximale du nom du titulaire*/
#define MAX_COMPTES 256 /* nombre maximum de comptes dans une agence*/
#define MAX_OP 4 /* nombre maximum des dernières opérations retenues*/
/* codage des types d'opérations */
typedef enum {NO_OP /* absence d'opération*/, OUVERTURE, DEPOT,RETRAIT,
CLOTURE 4}TYPE_OP ;
/* codage des états de compte */
typedef enum {LIBRE, OUVERT, CLOS} ETAT_COMP ;
/* Codage des opérations */
typedef struct operation {
double montant;
TYPE_OP type; /* NO_OP, OUVERTURE... */
time_t date;/*date au format "système"*/
}OPERATION;
/* Codage des comptes */
typedef struct compte {
int numero;
char titulaire[LONG_TITU];
ETAT_COMP etat; /* LIBRE, OUVERT ou CLOS */
double solde;
OPERATION ops[MAX_OP];/* liste des opérations sur un compte*/
int nbOp ; /* nombre d'opérations effectivement dans le tableau ops */
}COMPTE;
/*Codage des agences */
typedef struct agence {
double solde;
int num_prochain_compte;
COMPTE comptes[MAX_COMPTES];
int nbcptouv ;/* Nombre de comptes ouverts*/
}AGENCE;
Une banque est un ensemble d'agences. Dans un premier temps, on cherche à gérer une agence.
/* Gestion de l'agence IT2*/
int main(void)
{
/* déclaration des fichiers compte et opération
de l'agence fpc2 à faire ici */
AGENCE fpc2 ;
/* suite. . .*/
return 0 ;
}
Travail à faire
1) Ecrire les fonctions menuPrincipal et menuSecondaire permettent d'afficher respectivement le menu
principal et le menu secondaire et retourner le choix de l'utilisateur.
2) Ecrire la fonction init_Compte dont le prototype est void init_Compte(COMPTE*), permettant
d'initialiser un compte ; l'initialisation d'un compte consiste à mettre à zéro son numéro et son solde, à
mettre à vide le nom du titulaire, à mettre à LIBRE l'état, mettre à zéro le nombre de ses opérations
retenues.
3) Ecrire la fonction raz_compte dont le prototype est void raz_compte(COMPTE*), permettant de
réinitialiser un compte ; la réinitialisation d'un compte consiste à mettre à zéro son numéro et son solde, à
mettre à vide le nom du titulaire, à mettre à zéro l'état, à supprimer les opérations du compte et mettre à
zéro (NULL) la liste de ses opérations.
3
4) Ecrire la fonction raz_agence dont le prototype est void raz_agence(AGENCE*), permettant
d'initialiser une agence ; l'initialisation d'une agence consiste à initialiser tous comptes de l'agence et à
mettre à zéro les autres champs.
5) Ecrire la fonction solde_agence qui retourne le solde global d'une agence.
6) Ecrire la fonction purge_agence permettant de purger une agence ; ce qui consiste à parcourir le tableau
de comptes de l'agence et à réinitialiser tous les comptes clos dont la date de clôture (qui est la date de la
dernière opération pour ce compte) est antérieure à 6 mois. La fonction doit retourner le nombre de
comptes réinitialisés.
7) Ecrire les fonctions rech_libre, rech_titu, rech_num permettant de rechercher respectivement dans une
agence un compte libre, un compte dont on connaît le titulaire et un compte dont on connaît le numéro.
Toutes ces fonctions prennent l'agence comme paramètre et retournent la position du compte en cas de
recherche fructueuse, -1 sinon.
8) Ecrire la fonction ouvrir_compte permettant d'ouvrir un compte dans une agence connaissant le nom du
titulaire et la date d'ouverture. On doit vérifier le titulaire n'a pas déjà un compte (un titulaire doit avoir
un seul compte) dans l'agence, trouver un compte libre, initialiser le compte et le marquer comme étant
ouvert. La fonction retourne -2 si le titulaire a déjà un compte, -1 si l'agence est complète (plus de compte
libre) et le numéro du compte ouvert en cas de succès. Le prototype de la fonction est :
int ouvrir_compte(AGENCE* ag, char nom[LONG_TITU], time_t d)
9) Ecrire la fonction transact permettant de traiter une opération sur un compte dans une agence à partir du
numéro du compte et de l'opération (nature, date, montant éventuel). Traiter l'opération consiste à :
· rechercher le compte dont le numéro est indiqué ;
· vérifier que ce compte est ouvert ;
· si l'opération est un dépôt
o ajouter le montant du dépôt au solde du compte ;
o ajouter le montant du dépôt au solde agence ;
· si l'opération est un retrait
o vérifier si le montant du retrait est inférieur au solde ;
o retrancher le montant du retrait au solde du compte ;
o retrancher le montant du retrait au solde agence ;
· si l'opération est la clôture du compte
o vérifier que le solde du compte est nul ;
o indiquer que le compte est clos ;
· ajouter la nouvelle opération (en tête de liste);
La fonction retourne 1 en de traitement réussi, 0 sinon.
10) Ecrire la fonction relev_compte permettant d'effectuer un relevé sur un compte dans une agence à
partir du numéro de compte. Effectuer un relevé consiste à :
· rechercher le numéro de compte indiqué ;
· afficher le nom du titulaire ;
· si le compte est ouvert, indiquer son solde ; sinon, indiquer que le compte est clos ;
· afficher les dernières opérations (nature, date, montant éventuel) ;
La fonction retourne une valeur en fonction du résultat de la recherche du compte dans l'agence.
11) Compléter la fonction principale afin de gérer l'agence fpc2.
12) Compléter la fonction principale obtenue en 11) afin de gérer l'ensemble des agences d'une banque.

2 réponses

cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
20 sept. 2011 à 01:42
NOOOOOOOON
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
20 sept. 2011 à 08:20
0