Exemple de stockage de données dans un fichier (vc++)

Description


Source / Exemple :


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

struct produit
{
	int num_prod;
	char lib_prod[26];
	float prix_prod;
	float taux_TVA;
};

const int nbmax=100;

FILE *f;
produit buff_p,catalogue[nbmax];
int nbarticles=0;

void affiche()
{
	int i;
	cout<<"-------------------------------------------------------------------------------"<<endl;
	if (nbarticles==0) cout<<"                             Catalogue vide"<<endl;
	for (i=0;i<nbarticles;i++)
	{
		cout<<i<<") "<<catalogue[i].num_prod
			<<"  "<<catalogue[i].lib_prod<<"  "
			<<catalogue[i].prix_prod<<"  "
			<<catalogue[i].taux_TVA<<endl;
	}
	cout<<"-------------------------------------------------------------------------------"<<endl;
}

void ajout()
{
	cout<<"Entrez le num\202ro de l'article : ";cin>>catalogue[nbarticles].num_prod;
	cout<<"Entrez le libell\202 de l'article : ";cin>>catalogue[nbarticles].lib_prod;
	cout<<"Entrez le prix de l'article : ";cin>>catalogue[nbarticles].prix_prod;
	cout<<"Entrez le taux de la TVA appliqu\202e sur cet article : ";cin>>catalogue[nbarticles].taux_TVA;
	nbarticles++;
}

void suppression()
{
	int supp,i;
	affiche();
	cout<<"Entrez l'indice de l'article a supprimer : ";cin>>supp;
	if ((supp>=0)&&(supp<nbarticles))
	{
		nbarticles--;
		for(i=supp;i<nbarticles;i++)
		{
			strcpy(catalogue[i].lib_prod,catalogue[i+1].lib_prod);
			catalogue[i].num_prod=catalogue[i+1].num_prod;
			catalogue[i].prix_prod=catalogue[i+1].prix_prod;
			catalogue[i].taux_TVA=catalogue[i+1].taux_TVA;
		}
	}
	else cout<<"Vous avez tap\202 un mauvais num\202ro"<<endl;
}

void modiftva(float anctva,float nvtva)
{
	int i;
	for (i=0;i<nbarticles;i++)
	{
		if (catalogue[i].taux_TVA=anctva) catalogue[i].taux_TVA+=nvtva;
	}
}

void enregistre()
{
	int i;
	f=fopen("produits.clg","w");
	fwrite (&nbarticles,sizeof(int),1,f);
	for (i=0;i<nbarticles;i++)
	{
		strcpy(buff_p.lib_prod,catalogue[i].lib_prod);
		buff_p.num_prod=catalogue[i].num_prod;
		buff_p.prix_prod=catalogue[i].prix_prod;
		buff_p.taux_TVA=catalogue[i].taux_TVA;
		fwrite (&buff_p,sizeof(produit),1,f);
	}
	fclose(f);
	cout<<"Enregistrement effectu\202"<<endl;
}

void charge()
{
	int i;
	f=fopen("produits.clg","r");
	fread(&nbarticles,sizeof(int),1,f);
	for (i=0;i<nbarticles;i++)
	{
		fread(&buff_p,sizeof(produit),1,f);
		strcpy(catalogue[i].lib_prod,buff_p.lib_prod);
		catalogue[i].num_prod=buff_p.num_prod;
		catalogue[i].prix_prod=buff_p.prix_prod;
		catalogue[i].taux_TVA=buff_p.taux_TVA;
	}
	fclose(f);
	cout<<"Chargement effectu\202"<<endl;
}

void main()
{
	int choix;
	float anctva,nvtva;
	do
	{
		cout<<"1) Ajouter un article"<<endl;
		cout<<"2) Supprimer un article"<<endl;
		cout<<"3) Afficher le catalogue"<<endl;
		cout<<"4) Modifier la TVA"<<endl;
		cout<<"5) Enregistrer le catalogue"<<endl;
		cout<<"6) Charger un catalogue"<<endl;
		cout<<"7) Quitter"<<endl;
		cout<<"Votre choix : ";cin>>choix;
		switch(choix)
		{
		case 1: if (nbarticles<nbmax) ajout();
				else cout<<"Catalogue plein"<<endl;
				break;
		case 2: if (nbarticles>0) suppression();
				else cout<<"Catalogue vide"<<endl;
				break;
		case 3: affiche();
				break;
		case 4: cout<<"Entrez la TVA a modifier : ";cin>>anctva;
				cout<<"Augmenter de : ";cin>>nvtva;
				modiftva(anctva,nvtva);
				break;
		case 5: enregistre();
				break;
		case 6: charge();
				break;
		}
	} while (choix!=7);
	cout<<"Au revoir"<<endl;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.