Facturation avec utilisation des tableaux de structures en c

Contenu du snippet

Ce code permet de stocker des donnees dans un tableau de strucutures et de les reutilisees, ici on calcule une facture a partir des articles saisis et de la quantité que l on desire commander

Source / Exemple :


/*Bts info 1 Chartreux Mai 2002*/
/*Facturation*/
#include <stdio.h>
#include <string.h>

#define MAX 100

typedef struct 
{
	int code;
	char libelle[MAX];
	float prixunitaire;
}ARTICLE;

void inittab(ARTICLE tart[MAX],int *ptnart);
void saisiefacture(ARTICLE tart[MAX], int tcom[MAX], int *ptncom, int nart, int tquantite[MAX]);
void afficherfacture(ARTICLE tart[MAX],int tcom[MAX],int tqtite[MAX], int ncom);
int rechercher(ARTICLE tart[MAX],int nart,int codesaisi);

void main(void)
{
	ARTICLE tart[MAX];
	int tqtite[MAX];
	int tcom[MAX];
	int nart, ncom;
	inittab(tart,&nart);
	saisiefacture(tart,tcom,&ncom,nart,tqtite);
	afficherfacture(tart,tcom, tqtite, ncom);
}

void inittab(ARTICLE tart[MAX],int *ptnart)
{
	char rep;

  • ptnart=0;
do {
  • ptnart +=1;
printf("SAISIR LE CODE DE L ARTICLE\n"); scanf("%d",&tart[*ptnart].code); while (tart[*ptnart].code <1) { printf("Code invalide\n"); scanf("%d",&tart[*ptnart].code); } printf("Saisir le libelle\n"); fflush(stdin); scanf("%s",tart[*ptnart].libelle); while (tart[*ptnart].libelle=="") { printf("libelle vide\n"); fflush(stdin); scanf("%s",tart[*ptnart].libelle); } printf("Saisie le prix\n"); scanf("%f",&tart[*ptnart].prixunitaire); while (tart[*ptnart].prixunitaire<=0) { printf("Prix Invalide\n"); scanf("%d",&tart[*ptnart].prixunitaire); } if (*ptnart>=MAX) { printf("Tabelau Plein"); rep='n'; } else { printf("Autre Article?\n"); fflush(stdin); scanf("%c",&rep); } } while(rep=='o'); } void saisiefacture(ARTICLE tart[MAX], int tcom[MAX], int *ptncom, int nart, int tquantite[MAX]) { int ind,codartcom,qtite; char rep;
  • ptncom=0;
do {
  • ptncom+=1;
printf("Saisir le code de l article a commander\n"); scanf("%d",&codartcom); ind=rechercher(tart,nart,codartcom); while (ind == 0) { printf("Saisir le code, code invalide\n"); scanf("%d",&codartcom); ind=rechercher(tart,nart,codartcom); } printf("Quelle quantite de ", tart[ind].libelle, "a commander?\n"); scanf("%d",&qtite); while (qtite==0) { printf("quantite invalide resaisir\n"); scanf("%d",&qtite); } tcom[*ptncom]=ind; tquantite[*ptncom]=qtite; if (*ptncom<MAX) { printf("Autres article a commander?\n"); fflush(stdin); scanf("%c",&rep); } else { printf("tableau plein, commande non prise\n"); rep='n'; } } while (rep=='o'); } void afficherfacture(ARTICLE tart[MAX],int tcom[MAX],int tqtite[MAX], int ncom) { int i,ind; float montant,total; total=0; printf(" FACTURE\n"); printf("article quantite prix unitaire montant\n"); for (i=1;i<=ncom;i++) { ind=tcom[i]; printf("%s ",tart[ind].libelle); printf("%d ",tqtite[i]); printf("%f ",tart[ind].prixunitaire); montant=tart[ind].prixunitaire*tqtite[i]; total += montant; printf(" %f\n",total); } printf("Copyright Freeman-Corp\n"); } int rechercher(ARTICLE tart[MAX],int nart,int codesaisi) { int i; i=1; while (i<=nart && tart[i].code != codesaisi) { i+=1; } if (i<=nart) { return i; } else { return 0; } }

Conclusion :


J espere que ca pourra aider certaines personnes bien que le site ait beaucoup plus de sources en C++ qu en C
Si vous avez un probleme avec la source, ou si vous voulez une explication, ecrivez moi

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.