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

Soyez le premier à donner votre avis sur cette source.

Vue 4 873 fois - Téléchargée 228 fois

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

Ajouter un commentaire

Commentaire

FloZix
Messages postés
42
Date d'inscription
dimanche 3 mars 2002
Statut
Membre
Dernière intervention
24 juin 2008
-
Merci, vraiment trop pratique. ;)

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.