Celà n'enregistre pas [:(!],grrrr

Signaler
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004
-
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
-
voilà, mon programme n'enregistre toujours pas, je ne sais pas pourquoi, surtout qu'il fait comme si c'etait le cas, je desepesere,
voici mon programme( desole il est un peu long)

#include<conio.h>
#include<stdio.h>
#include
#include<string.h>
#define max 19
#define max2 51

/* Prototypes */

void nouvellesfamilles();
void approvisionnement();
void chequesemis();
void solde();
void releve();
void chargement();
void enregistrement();
void depart();
void initialiser();

/* Nom des fichiers */

FILE * familles;
FILE * cheques;

/* Variables */

typedef struct
{
int no;
char nom[20];
int nbpers;
int appro;
}Tenrfamilles;

Tenrfamilles Tfamilles[20];
int Tcheques[max2][max];
int bungalow[20];

int i,enr ;
char res;

void main()
{
// chargement();
initialiser();
int choix;
do
{
cout<<"\n Gestion des comptes cheques club.";
cout<<"\n 1- saisir la liste des nouvelles familles.";
cout<<"\n 2- saisir un approvisionnement de compte." ;
cout<<"\n 3- Saisir les cheques emis de la journee.";
cout<<"\n 4- lister les familles dont le solde est negatif." ;
cout<<"\n 5- lister le releve de compte d'une famille" ;
cout<<"\n 6- sauvegarder les donnees sur le disque.";
cout<<"\n 7- enregistrer les departs";
cout<<"\n 0 quitter le programme." ;
cout<<"\n votre choix ?";
cin>>choix;
switch(choix)
{case 1:nouvellesfamilles();
break;
case 2:approvisionnement();
break;
case 3:chequesemis();
break;
case 4:solde();
break;
case 5:releve();
break;
case 6:enregistrement();
break;
case 7: depart();
break;
}
} while(choix!=0);
if (enr==0)
{
cout<<"\n vous n'avez pas enregistre vos modifications,souhaitez vous le faire?(O/N)";
cin>>res;
if(res==0)
{
enregistrement();
}
cout<<"\n au revoir";
}
getch();
}

/* option 1*/
void nouvellesfamilles()
{
int nb;
char rep;
rep='o';
nb=1;
// i=0;
while( rep=='o')
{
/** on verifie que le bungalow est vide **/

// while(i!=1 || nb>=max)
// { cout<<" rentre dans la boucle";
// nb++;
// if(Tfamilles[nb].nom == " ")
// {
// i=1;
// }
// }


if(nb>=max)
{
cout<<"\n le village vacances est complet, vous ne pouvez plus rajouter de famille.";
cout<<"\n ";
rep='n';
}
else
{
cout<< "\n bungalow no "<< nb;
cout<<"\n entrer le nom:";
cin>>Tfamilles[nb].nom;
cout<<"\n entrer le nombre de personnes:";
cin>>Tfamilles[nb].nbpers;
nb=nb++;
cout<<"\n voulez vous entrer une autre famille?(o/n)" ;
cin>> rep;
}
}
enr=0 ;
}
/* Option 2*/
void approvisionnement()
{int mont,i,r;
char rep[20];
char res,res2;
do
{
i=1;
do
{
cout<<"\n entrer le nom:";
cin>>rep;
do
{ if (strcmp(Tfamilles[i].nom, rep)==0)
{ cout<<"\n montant credite?";
cin>>mont;
cout<<"\n etes vous sur du montant?(O/N):";
cin>>res;
}
else
{ cout<< "\n ce nom ne correspond a aucun bungalow." ;
}
i=i+1;
}
while(strcmp(Tfamilles[i].nom, rep)==0 && i<=max);
}
while (strcmp(Tfamilles[i].nom, rep)==1);
Tfamilles[i].appro=Tfamilles[i].appro+ mont;
cout<<"voulez vous entrer un autre approvisionnement?(O/N):";
cin>> res2;
}while(res2=='o');
enr=0 ;
cout<< Tfamilles[i].appro ;
}

/* Option 3 */
void chequesemis()
{
i=0;
int j;
cout<<"\n lorsque la saisie est terminee ,taper 0 dans le no de bungalow";
do
{ i=0;
cout<<"\n entrer le no de bungalow:";
cin>>i;
if(i!=0)
{
cout<<"\n entrer le no d'ordre";
cin>>j;
cout<<"\n entrer le montant du cheque:";
cin>>Tcheques[i][j];
Tfamilles[i].appro= Tfamilles[i].appro -Tcheques[i][j];
cout<< Tfamilles[i].appro ;
}
}
while ( i!=0);
enr=0;

}

/* Option 4 */
void solde()
{
int i;
i=1;
do
{

if(Tfamilles[i].appro<0)
{
cout<<"\n bungalow no"<<Tfamilles[i].no;
cout<<"\n nom:"<<Tfamilles[i].nom;
cout<<"\n approvisionnement:"<<Tfamilles[i].appro;
}
i=i+1;
} while(i!=max);
enr=0;
}

/* Option 5 */
void releve()
{
i=0;
int i,j;
//char res;
//cout<<"\n voulez vous enregistrer vos donnees auparavant?(O/N)";
//cin>>res;
//if(res==0)
//{
// enregistrement();
// }
cout<<"\n entrer le no du bungalow";
cin>>i;
j=0;
while (j==max2)
{
if(Tcheques[i][j]!=0)
{
cout<<"\n no du cheque:"<> nb;
// Tfamilles[nb].nom="";
Tfamilles[nb].appro=0;
Tfamilles[nb].nbpers=0;
}

/* Chargement */
void chargement()
{
int i,j;
i=0;
familles=fopen("familles.dat","r");
while (!feof (familles))
{
fscanf(familles,"%d %s %d %d ",&Tfamilles[i].no,&Tfamilles[i].nom,&Tfamilles[i].nbpers,&Tfamilles[i].appro);
i=i+1;
}
fclose(familles);
cheques=fopen("cheques.dat","r");
while (!feof(cheques))
{
for(i=1;i<=max2;i=i+1)
{for (j=1;j<=max2;j=j+1)
{fscanf(cheques,"%d ",&Tcheques[i][j]);
}
}
}
fclose(cheques);
}

// initialiser//

void initialiser()
{ int i,j;
for(i=0;i<=max2;i=i+1)
{
for (j=0;j<=max2;j=j+1)
{
Tcheques[i,j]==0;
}
}
for(i=1;i<=max;i=i+1)
{
Tfamilles[i].no=i;
Tfamilles[i].nom=="";
Tfamilles[i].nbpers=0;
Tfamilles[i].appro=0;

}
}

6 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
tu ouvre 2 fois de suite le fichier "chèques.dat" (à la 2ème y'a surement un pb de partage.)
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

non dans le fichiers famille ça n'enregistre pas non plus, le probleme ne vient pas de là( mais c'est vrai je l'ai mis deux fois, je l'ai modifie, mercioceane
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Il reste toujours un Tcheques[i,j]==0; dans initialiser.

Tes indices commencent parfois à 0 parfois à 1.
Ils devraient tous commencer à 0.

Tu ouvres (ouvrais) deux fois le fichier avec .dat et .datt

Mais à part ça, ça enregistre bien des choses dans le fichier.

pourquoi utiliser conio.h pour getch alors que tu as un menu ?

Quel compilateur utilises-tu pour ne pas pouvoir
mettre #include au lieu de #include

Tu devrais éviter d'utiliser du C++ (cout, cin ),
et des formes plus C ( fopen, fprintf, ... )
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
3
dis si tu utilisais les CFile les CString serait beaucoup plus simple

be linux
Messages postés
50
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
21 juin 2004

je ne connais pas. je ne sais pas m'en servir et ne sait en quoi ça consiste.
oceane
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
3
cherche
CString machaine = "un essai"
CFile monfichier.open("c:\\monfichier.dat",CFile::modeCreate|CFile::modeRead);
monfichier.Write(machaine,machaine.getlength());

be linux