Fichier album musical

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 644 fois - Téléchargée 20 fois

Contenu du snippet

.............................................................................creer un fichier contenant un ensemble d'albums musicaux ..................................................................

Source / Exemple :


#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include <windows.h>

typedef struct{char nom[30];
               char prenom[30];
               }artst;
typedef struct {char titre_alb[30];
               artst artiste;
               int annee;
               }Album;
typedef struct {int sec,min;}temps;
typedef struct {char titre_ch[30];
                char titre_alb[30];
                temps duree;
                }chanson;
 void ajout_alb(FILE* );
 int existe(FILE*,char*);
  void affiche_alb(FILE*);
   void remplir_falb(FILE*);
 void ajout_ch(FILE*,FILE*);
 void remplir_fch(FILE*,FILE*);
  void affiche_fch(FILE*);
  void chanson_par_album(FILE*,FILE*);
   void color(int,int);
  
int main()

{FILE* pfk=NULL;
FILE*pfc=NULL;
 FILE*pfa=NULL;
int choix,c, cont=1;
Album a;
char titre[30];
color(10,0);
 color(13,0);
printf("                      Bienvenue sur notre programme\n\n");
printf("              Ce programme permet de creer deux fichiers :\n");
printf(" un fichier liste albums qui est fait par un ensemble d'albums de chansons ...\n ");
printf("      un fichier liste chansons qui est fait par une liste de chansons ...\n\n");  
             
                   

color(13,0);    printf("                        *******  MENU  *******                    \n\n");
color (13,0);

/*system("cls");*/
while (cont==1)
{color (13,0);
printf("            ****-====-****-====-****-====-****-====-****-====****\n\n");color(10,0);
 printf("                       1) -->     ajouter album             \n");
 printf("                       2) -->     remplir album             \n");
 printf("                       3) -->     afficher album            \n");
 printf("                       4) -->     exister \n");
 printf("                       5) -->     ajouter chanson           \n");
 printf("                       6) -->     remplir liste des chansons   \n");
 printf("                       7) -->     afficher liste des chansons  \n");
 printf("                       8) -->     chansons_par_album         \n");
 printf("                       9) -->     QUITTER                    \n\n");
 color (13,0);
 printf("            ****-====-****-====-****-====-****-====-****-====-****\n\n");color(10,0);
       printf("\n"); printf("taper le numero de la fonction que vous voulez executer\n\n");
scanf("%d",&choix);
switch (choix) 
{case 1: {color(4,0);
      printf("<<<<<<<  l'ajout d'un album  >>>>>>>");printf("\n");printf("\n");
          pfa=fopen("LISTE_ALBUMS","ab");
                   if (pfa==NULL)
                       {printf("erreur d'ouverture");exit(-1);}
                   else  {ajout_alb(pfa);}
                          
           
                   fclose(pfa);
          }  break;
    case 2 :{color(11,0);printf("\n");
         printf("<<<<<<<  remplissage du  fichier des  albums  >>>>>>>");printf("\n");printf("\n");
    pfa=fopen("LISTE_ALBUMS","w");
                            if (pfa==NULL)
                                 {printf("erreur d'ouverture");exit(-1);}
                            else {remplir_falb(pfa);}
    
                  
                  fclose(pfa);
          } break;  
  case 3:{printf("\n");color(14,0);printf("<<<<<<<l'affichage de  la liste des albums>>>>>>>");printf("\n");printf("\n");
       pfa=fopen("LISTE_ALBUMS","r+b");
                       if (pfa==NULL)
                           {printf("erreur d'ouverture");exit(-1);}
                       else {affiche_alb(pfa);}
                       fclose(pfa);}break;
case 4 :  {printf("\n");color( 3,0);printf("<<<<<<<  verification de l'existance d'un album  >>>>>>>");printf("\n");printf("\n");
     pfa=fopen("LISTE_ALBUMS","r");
                       if (pfa==NULL)
                           {printf("le fichier album n'est pas encor cree");/*exit(-1);*/}
                      else {printf("donner le titre de l'album a rechercher"); printf("\n");
                             scanf("%s",titre);getchar();            
                             if(existe(pfa,titre)==1){color( 3,0);printf("%s",titre);printf(" :  existe");}
                            else {color( 3,0);printf("%s",titre);printf(" : n'existe pas");}
                           }
                         
        fclose(pfa); }  break; 
                                      
  case 5 :{ color(5,0);printf("\n");
        printf("     <<<<<<< ajout chanson au fichier chanson  >>>>>>>");printf("\n");printf("\n");
       pfa=fopen("LISTE_ALBUMS","r");
                if (pfa==NULL){printf("le fichier album n'est pas encore rempli\n");getchar();getchar();}
                      
                 else{pfc=fopen("liste_chanson","r"); 
                              if (pfc==NULL)
                                                  {fclose(pfc);
                                                        pfc=fopen("liste_chanson","w"); 
                                                   if (pfc==NULL)   {printf("erreur d'ouverture");exit(-1);} 
                                                   else  {ajout_ch(pfa,pfc);}
                                                   }
                              else {fclose(pfc);pfc=fopen("liste_chanson","a");ajout_ch(pfa,pfc);} 
                                                          
                                                                         
                      }
                      fclose(pfc);fclose(pfa);
         }break;      
  
  case 6 :{printf("\n");printf("\n");printf("<<<<<<<  remplissage de la liste des chansons  >>>>>>>");printf("\n");printf("\n");
          pfc=fopen("liste_chanson","w");  if(pfc==NULL){printf("erreur d'allocation\n");getchar();}
          pfa=fopen("LISTE_ALBUMS","r");
                if (pfa==NULL){printf("le fichier album n'est pas encore cree\n");getchar();}
                      else{       remplir_fch(pfa,pfc);
                          }
       
                                    fclose(pfa);fclose(pfc);
                                    
          }break;  
           
   case 7 : {color(13,0);printf("\n");printf("<<<<<<<  affichage de la liste des chansons  >>>>>>>");printf("\n");printf("\n");
        pfk=fopen("LISTE_CHANSON","r");
                if (pfk==NULL){printf("le fichier est vide il faut d'abord le remplir");getchar();}
                else { affiche_fch(pfk);}
            fclose(pfk);
          }break; 
          
  case 8 :
       {printf("\n");color(12,0);printf("<<<<<<<  chansons par album  >>>>>>>\n\n");
                  pfa=fopen("LISTE_ALBUMS","r");getchar();
                if (pfa==NULL){printf("le fichier album n'est pas encore rempli\n");}
                  
           else  { pfk=fopen("LISTE_CHANSON","r" );
                       if (pfk==NULL)
                         {printf("le fichier liste chanson n'est pas creé");}
                      else {chanson_par_album(pfa,pfk);}
   fclose(pfa);fclose(pfc); } break;    
   case 9 :{  exit(-1); } break;    
 default : {color(12,0);printf("erreur taper un numero entre 1 et 9");  } 
}
} 
color(7,0);printf("\n"); 

}  
      
 getch();
}

void ajout_alb(FILE* pf)
{Album a;

  printf("donner le titre de l'album\n");getchar();
  scanf("%s",&a.titre_alb);getchar();
  printf("donner le nom et le prenom de l'artiste dans cet ordre\n");
  scanf("%s",&a.artiste.nom);getchar();
  scanf("%s",&a.artiste.prenom);getchar();
  printf("donner l'annee de parution de l'album\n");
  scanf("%d",&a.annee);
  fwrite(&a,sizeof(a),1,pf);
  }
  
  

void remplir_falb(FILE* pf)
   {int continuer=1;
   
        while (continuer==1)
          {ajout_alb(pf);
           printf("voulez vous contiuner? tapez 1 si oui  ou 0 sinon \n");
            scanf("%d",&continuer);
          }  
}

 void affiche_alb(FILE*pf)
 {Album a;
   printf("les donnees du fichier sont :\n\n");
    
      while(fread(&a,sizeof(a),1,pf))
      {printf("titre_album:   ");puts(a.titre_alb);printf("\n");
       printf("nom_artiste:   ");puts(a.artiste.nom);printf("\n");
       printf("prenom_artiste:  ");puts(a.artiste.prenom);printf("\n");
       printf("annee:%d       ",a.annee);printf("\n\n");
      color(2,0);  printf("~.~.~.~.~.~.~.~.~.~\n\n");color(14,0);
       }
       
  }
  
  
  
int existe(FILE* pfa,char* titre)
  { Album a;
    int exist=0;color(9,0);
    fread(&a,sizeof(a),1,pfa);
   while (!feof(pfa)&& exist==0)
   { if (strcmp(a.titre_alb,titre)==0) {exist=1;}
     fread(&a,sizeof(a),1,pfa);
}
rewind(pfa);

    if (exist==1) {return (1);}
    else return (0);
 
}

void ajout_ch(FILE*pfa,FILE* pfc)
 {Album a;int i;color(5,0);
  chanson c;
 printf("\n");
 printf("donner le titre de l'album de la chanson");printf("\n");
 scanf("%s",c.titre_alb);getchar();
 if (existe(pfa,c.titre_alb)==0){printf("l'album de la chanson n'existe pas dans le fichier d'albums\n");}
 else{ printf("donner le titre de la chanson\n");
      scanf("%s",c.titre_ch);getchar();printf("\n");
      printf("donner la duree de la chanson en minute et seconde dans l'ordre svp\n");printf("\n");
      scanf("%d",&c.duree.min);getchar();
      scanf("%d", &c.duree.sec);getchar();
      fwrite(&c,sizeof(c),1,pfc);

     }
  } 
  
  
  
 void remplir_fch(FILE*pfa,FILE*pfc)
 {int continuer=1;color(9,0);
   
        while (continuer==1)
       { 
              ajout_ch(pfa,pfc);
            printf("voulez vous contiuner? tapez 1 si oui  ou 0 sinon \n");
            scanf("%d",&continuer);
          }
 } 
 

 void affiche_fch(FILE* pf) 
 {chanson c;
  color(13,0); printf("les donnees du fichier chanson sont :\n");printf("\n");
 
      while(fread(&c,sizeof(c),1,pf))
      { printf("\n");
       printf("titre_chanson:   ");printf("%s",c.titre_ch);printf("\n");
       printf("titre_album  :   ");printf("%s",c.titre_alb);printf("\n");
       printf("duree        :   ");printf("%d min ",c.duree.min);
                                   printf("%d  sec ",c.duree.sec);printf("\n");printf("\n");
                                  color(9,0); printf("=.=.=.=.=.=.=");printf("\n");printf("\n");color(13,0);
                               
                                   }
  }
  
  
  void chanson_par_album(FILE* pfa,FILE* pfc)
  {Album a;
   chanson c;
   fread(&a,sizeof(a),1,pfa);
  
    while(!feof(pfa))
    { color(12,0);
   printf("\n");printf("*/*/*/*  ");printf("%s",a.titre_alb);printf(" */*/*/*");printf("\n");

     while(  fread(&c,sizeof(c),1,pfc))
           {  color(14,0);
                if(strcmp(a.titre_alb,c.titre_alb)==0)
               {  printf("\n");
                  printf("titre_chanson:   ");puts(c.titre_ch);printf("\n");
                  printf("duree        :   ");printf("%d min %d sec",c.duree.min,c.duree.sec);printf("\n\n");
                color(4,0);  printf("-.-.-.-.-.-\n\n");color(12,0);
               }
           
             }
     rewind(pfc);
     fread(&a,sizeof(a),1,pfa);
     
     }
     } 
     
     
 void color(int couleurDuTexte,int couleurDeFond)
{
        HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
20 juillet 2012

C super ton application je t'en felicite.Cependant j'aimerais mutualiser les 2 fichiers en un seul fichier formaté par ligne comme ceci :
titre_alb1:titre_ch1:duree1.min:duree1.sec:titre_ch2:duree2.min:duree2.sec:titre_ch3:duree3.min:duree3.sec
titre_alb2:titre_ch21:duree21.min:duree21.sec:titre_ch22:duree22.min:duree22.sec:titre_ch23:duree23.min:duree23.sec
....
Peux-tu m'aider stp?
Messages postés
2
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mai 2010

super !

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.