begin process at 2012 02 10 08:58:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > PROGRAMME POUR GÉRER UNE BDD DE LIVRES

PROGRAMME POUR GÉRER UNE BDD DE LIVRES


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Niveau :Débutant Date de création :31/05/2005 Date de mise à jour :03/06/2005 21:45:34 Vu :3 864

Auteur : AjJi

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Bon, déjà il faut comprendre le principe sur lequel je me suis basé :
-Un programme qui remplit un fichier de structures Livre(Titre, auteur, editeur, Nombre d'exemplaires disponibles)
-Et un autre programme qui fait le traitement selon ce que vous avez choisi(ajouter/supprimer un livre/exemplaire, consulter un livre...)

Mais, l'execution du programme livre_2.exe suffit..





Source

  • /****************************************
  • *** Livre_1.cpp ***
  • ****************************************/
  • //Remplissage initial du fichier
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • struct livre
  • {
  • char titre[20];
  • char auteur[20];
  • char editeur[20];
  • int nb_ex;
  • } T[1000];
  • int main(void)
  • {
  • int N,i;
  • FILE *f;
  • char pass[20];
  • printf("Entrez le pass : ");
  • gets(pass);
  • if(strcmp(pass,"soufiane")!=0) {
  • printf("Mot de passe incorrect\n");
  • system("pause");
  • exit(1);
  • }
  • f=fopen("livre","w");
  • do {
  • system("cls");
  • printf("Entrez le nombre de livres a entrer : ");
  • scanf("%d",&N);
  • } while(N<1 || N>900);
  • for(i=0;i<N;i++) {
  • printf("Livre N%d ----------------------\n",i+1);
  • fflush(stdin);
  • printf("Titre : ");
  • gets(T[i].titre);
  • printf("Auteur : ");
  • gets(T[i].auteur);
  • printf("Editeur : ");
  • gets(T[i].editeur);
  • printf("Nombres d'exemplaires : ");
  • scanf("%d",&T[i].nb_ex);
  • }
  • fwrite(T,sizeof(struct livre),N,f);
  • fclose(f);
  • system("pause");
  • return 0;
  • }
  • /**************************************
  • **** FIN DU PREMIER PROGRAMME *********
  • ***************************************/
  • /****************************************
  • *** Livre_2.cpp ***
  • ****************************************/
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • struct livre
  • {
  • char titre[20];
  • char auteur[20];
  • char editeur[20];
  • int nb_ex;
  • } T[1000];
  • int if_exists(livre T[],int N, char c_livre[], FILE *f);
  • void ajouter_livre(livre T[],int N, FILE *f);
  • int consulter(livre T[], int N, char c_livre[], FILE *f);
  • void modif_ex(livre T[], int N, char c_livre[], char signe, FILE *f);
  • void suppr_livre(livre T[], int N, char c_livre[], FILE *f);
  • int main()
  • {
  • int N,i,c,choix;
  • FILE *f;
  • char c_livre[20];
  • system("D:\\livre_1.exe || pause");
  • f=fopen("livre","r+");
  • if(f==NULL) { printf("Impossible d'ouvrir le fichier !\n");
  • system("pause");
  • exit(1);
  • }
  • fseek(f,0,2);
  • N=ftell(f)/sizeof(struct livre);
  • fseek(f,0,0);
  • fread(T,sizeof(struct livre),N,f);
  • do {
  • do{
  • system("cls");
  • fflush(stdin);
  • printf("Que voulez-vous faire ?\n ");
  • printf("1 : Ajouter un livre.\n");
  • printf(" 2 : Consulter un livre.\n");
  • printf(" 3 : Ajouter un exemplaire.\n");
  • printf(" 4 : Retirer un exemplaire.\n");
  • printf(" 5 : Supprimer un livre.\n");
  • printf(" 0 : Quitter.\n");
  • printf("Votre choix : ");
  • scanf("%d",&choix);
  • fflush(stdin);
  • } while(choix<0 || choix>5);
  • switch(choix)
  • {
  • case 1 : ajouter_livre(T,N,f);
  • N++;break;
  • case 2 : fflush(stdin);
  • printf("Entrez le livre a consulter : ");
  • gets(c_livre);
  • if(consulter(T, N, c_livre, f)==N) printf("Livre non trouve.\n");
  • else {
  • printf("Livre trouve.\n");
  • printf("TITRE\tAUTEUR\tEDITEUR\tNOMBRE D'EXEMPLAIRES\n");
  • printf("%s\t%s\t%s\t%d\n",T[c].titre,T[c].auteur,T[c].editeur,T[c].nb_ex);
  • } break;
  • case 3 : fflush(stdin);
  • printf("Entrez le livre dont vous voulez ajouter un exemplaire : ");
  • gets(c_livre);
  • modif_ex(T, N, c_livre, '+', f); break;
  • case 4 :
  • printf("Entrez le livre dont vous voulez supprimer un exemplaire : ");
  • gets(c_livre);
  • modif_ex(T, N, c_livre, '-', f); break;
  • case 5 : printf("Entrez le livre a supprimer : ");
  • gets(c_livre);
  • suppr_livre(T, N, c_livre, f);
  • N--;break;
  • case 0 : exit(1);break;
  • default : printf("Choix incorrect.");
  • }
  • printf("\n");
  • printf("TITRE\t\t\tAUTEUR\t\t\tEDITEUR\t\tNB EXEMPLAIRES\n");
  • for(i=0;i<N;i++) printf("%s\t\t\t%s\t\t\t%s\t\t\t%d\n",T[i].titre,T[i].auteur,T[i].editeur,T[i].nb_ex);
  • system("pause");
  • } while(1);
  • fclose(f);
  • system("pause");
  • return 0;
  • }
  • int if_exists(livre T[],int N, char c_livre[], FILE *f)
  • {
  • int V=0, i=0;
  • while(strcmp(c_livre,T[i].titre)!=0 && i<N) i++;
  • if(i!=N) V=1;
  • return V;
  • }
  • void ajouter_livre(livre T[], int N, FILE *f)
  • {
  • fflush(stdin);
  • printf("Entrez le titre du livre : ");
  • gets(T[N].titre);
  • while(if_exists(T,N,T[N].titre,f))
  • {
  • printf("Fichier deja dans la liste.\n");
  • printf("Entrez un nouveau titre : ");
  • gets(T[N].titre);
  • }
  • printf("Entrez l'auteur : ");
  • gets(T[N].auteur);
  • printf("Entrez l'editeur : ");
  • gets(T[N].editeur);
  • printf("Entrez le nombre d'exemplaires : ");
  • scanf("%d",&T[N].nb_ex);
  • fseek(f,0,2);
  • fwrite(&T[N],sizeof(struct livre),1,f);
  • }
  • int consulter(livre T[], int N, char c_livre[], FILE *f)
  • {
  • int i=0;
  • while(strcmp(c_livre,T[i].titre)!=0 && i<N) i++;
  • return i;
  • }
  • void modif_ex(livre T[], int N, char c_livre[], char signe, FILE *f)
  • {
  • int c;
  • c=consulter(T,N,c_livre,f);
  • if(c>=N) printf("Livre non trouve.");
  • else
  • {
  • if(signe=='+') T[c].nb_ex++;
  • else {
  • if(T[c].nb_ex==0) printf("Stock epuise.");
  • else T[c].nb_ex--;
  • }
  • fseek(f,c*sizeof(struct livre),0);
  • fwrite(&T[c],sizeof(struct livre),1,f);
  • }
  • }
  • void suppr_livre(livre T[], int N, char c_livre[], FILE *f)
  • {
  • int c,i;
  • c=consulter(T,N,c_livre,f);
  • if(c>=N) printf("Livre non trouve.");
  • else {
  • for(i=c;i<N;i++) {
  • strcpy(T[i].titre,T[i+1].titre);
  • strcpy(T[i].auteur,T[i+1].auteur);
  • strcpy(T[i].editeur,T[i+1].editeur);
  • T[i+1].nb_ex=T[i].nb_ex;
  • }
  • }
  • }
  • /************************************
  • *** FIN DU 2EME FICHIER ***
  • *************************************/
/****************************************
***           Livre_1.cpp             ***
****************************************/



//Remplissage initial du fichier 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct livre
{
  char titre[20];
  char auteur[20];
  char editeur[20];
  int  nb_ex;     
} T[1000];



int main(void)
{
  int N,i;
  FILE *f;
  char pass[20];
  
  printf("Entrez le pass : ");
  gets(pass);
  if(strcmp(pass,"soufiane")!=0) {
                                   printf("Mot de passe incorrect\n");
                                   system("pause");
                                   exit(1);
                                   }
  f=fopen("livre","w");
do {  
     system("cls"); 
     printf("Entrez le nombre de livres a entrer : ");
     scanf("%d",&N);

   } while(N<1 || N>900);  
   
 for(i=0;i<N;i++) {
                     printf("Livre N%d ----------------------\n",i+1);
                     fflush(stdin);
                     printf("Titre : ");
                     gets(T[i].titre);
                     printf("Auteur : ");
                     gets(T[i].auteur);
                     printf("Editeur : ");
                     gets(T[i].editeur);
                     printf("Nombres d'exemplaires : ");
                     scanf("%d",&T[i].nb_ex);
                    }
                    
 fwrite(T,sizeof(struct livre),N,f);                    
 fclose(f);

  system("pause");
  return 0;
}
/**************************************
**** FIN DU PREMIER PROGRAMME *********
***************************************/




/****************************************
***           Livre_2.cpp             ***
****************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct livre
{
  char titre[20];
  char auteur[20];
  char editeur[20];
  int  nb_ex;     
} T[1000];


int if_exists(livre T[],int N, char c_livre[], FILE *f);
void ajouter_livre(livre T[],int N, FILE *f);
int consulter(livre T[], int N, char c_livre[], FILE *f);
void modif_ex(livre T[], int N, char c_livre[], char signe, FILE *f);

void suppr_livre(livre T[], int N, char c_livre[], FILE *f);

int main()
{
  
  int N,i,c,choix;
  FILE *f;
  char c_livre[20];  
  system("D:\\livre_1.exe || pause");
  f=fopen("livre","r+");
  if(f==NULL) { printf("Impossible d'ouvrir le fichier !\n");
                system("pause");
                exit(1);
                }  
  fseek(f,0,2);
  N=ftell(f)/sizeof(struct livre);
  fseek(f,0,0);
  fread(T,sizeof(struct livre),N,f);
  
  
do {  
    do{
          system("cls");
          fflush(stdin);
          printf("Que voulez-vous faire ?\n ");
          printf("1  : Ajouter un livre.\n");
          printf(" 2  : Consulter un livre.\n");
          printf(" 3  : Ajouter un exemplaire.\n");
          printf(" 4  : Retirer un exemplaire.\n");
          printf(" 5  : Supprimer un livre.\n");
          printf(" 0  : Quitter.\n");
          printf("Votre choix : ");
          scanf("%d",&choix);
          fflush(stdin);
       } while(choix<0 || choix>5);  
 
      switch(choix)
      {
        case 1 : ajouter_livre(T,N,f);
                  N++;break;
    
    
        case 2 : fflush(stdin); 
                 printf("Entrez le livre a consulter : ");
                 gets(c_livre);             
                 if(consulter(T, N, c_livre, f)==N) printf("Livre non trouve.\n");
                 else {
                        printf("Livre trouve.\n");
                        printf("TITRE\tAUTEUR\tEDITEUR\tNOMBRE D'EXEMPLAIRES\n");
                        printf("%s\t%s\t%s\t%d\n",T[c].titre,T[c].auteur,T[c].editeur,T[c].nb_ex);
                      } break; 
    
    
         case 3 : fflush(stdin); 
                  printf("Entrez le livre dont vous voulez ajouter un exemplaire : ");
                  gets(c_livre);
                  modif_ex(T, N, c_livre, '+', f); break;    
    
    
         case 4 : 
                  printf("Entrez le livre dont vous voulez supprimer un exemplaire : ");
                  gets(c_livre);
                  modif_ex(T, N, c_livre, '-', f); break;
         
         case 5 : printf("Entrez le livre a supprimer : ");
                  gets(c_livre);
                  suppr_livre(T, N, c_livre, f);
                  N--;break;   
                  
         case 0 : exit(1);break;        
                  
                  
         default : printf("Choix incorrect."); 
                                       
                   
                   
      }
      
      
             
        printf("\n");
        printf("TITRE\t\t\tAUTEUR\t\t\tEDITEUR\t\tNB EXEMPLAIRES\n");
        for(i=0;i<N;i++) printf("%s\t\t\t%s\t\t\t%s\t\t\t%d\n",T[i].titre,T[i].auteur,T[i].editeur,T[i].nb_ex);
         system("pause");
    } while(1);                            

  fclose(f);
  system("pause");
  return 0;
}


int if_exists(livre T[],int N, char c_livre[], FILE *f)
{
  int V=0, i=0;
  while(strcmp(c_livre,T[i].titre)!=0 && i<N) i++;
  
  if(i!=N) V=1;   
  return V;  
    
}    

void ajouter_livre(livre T[], int N, FILE *f)
{
  fflush(stdin);   

  printf("Entrez le titre du livre : ");
  gets(T[N].titre);
  while(if_exists(T,N,T[N].titre,f))
  {
    printf("Fichier deja dans la liste.\n");
    printf("Entrez un nouveau titre : ");
    gets(T[N].titre);                                  
  }
  printf("Entrez l'auteur : ");
  gets(T[N].auteur);
  printf("Entrez l'editeur : ");
  gets(T[N].editeur);
  printf("Entrez le nombre d'exemplaires : ");
  scanf("%d",&T[N].nb_ex);
  fseek(f,0,2);
  fwrite(&T[N],sizeof(struct livre),1,f);
}

int consulter(livre T[], int N, char c_livre[], FILE *f)
{

  int i=0;
  while(strcmp(c_livre,T[i].titre)!=0 && i<N) i++;
  return i; 
}

void modif_ex(livre T[], int N, char c_livre[], char signe, FILE *f) 
{
    int c;
     c=consulter(T,N,c_livre,f);
     if(c>=N) printf("Livre non trouve.");
     else 
     {
       if(signe=='+') T[c].nb_ex++;
       else {
              if(T[c].nb_ex==0) printf("Stock epuise.");
              else T[c].nb_ex--;
              }  
       fseek(f,c*sizeof(struct livre),0);
       fwrite(&T[c],sizeof(struct livre),1,f);
       }
 }


void suppr_livre(livre T[], int N, char c_livre[], FILE *f)
{
    int c,i;
    c=consulter(T,N,c_livre,f);
    if(c>=N) printf("Livre non trouve.");
    else {
           for(i=c;i<N;i++) {
                              strcpy(T[i].titre,T[i+1].titre);
                              strcpy(T[i].auteur,T[i+1].auteur);
                              strcpy(T[i].editeur,T[i+1].editeur);
                              T[i+1].nb_ex=T[i].nb_ex;
                            }  
         }
 
}
/************************************
***     FIN DU 2EME FICHIER       ***
*************************************/

 Conclusion

P.S.: Ce programme n'est déstiné qu'à des fins personnels pour pratiquer en C, le principe est assez simple, le code aussi d'ailleurs :] j'ai fait le choix d'utiliser les fichiers au lieu d'une bdd vu que j'avais besoin de maitriser les fichiers =] tout cela sous DOS =] je ne suis pas sûr de la portablitié de ce programme, moi je l'ai fait sous dev-c++ =]


 Historique

03 juin 2005 21:45:34 :
J'ai essayé d'éclaircir un peu mon code, là y'a 2 programmes et NON 1 !

 Sources de la même categorie

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty

Commentaires et avis

Commentaire de jad_raad le 31/05/2005 21:14:05

d'abord t'as fait un bon travail mais une remarque t'as mit 2 main() et c'est pas executable et t'as defini struct livre 2 fois .

Commentaire de AjJi le 03/06/2005 21:42:05

enfait j'ai eu un pb pour mettre le zip donc j'ai mit ici les 2 programmes :]
il s'agit là de deux programmes ^^ celui qui initialise les données dans le fichier et l'autre qui fait le traitement voulu ^^ (je modifie ça tout de suit pour que ca soit plus claire)
Merci pour ton commentaire :]

Commentaire de jad_raad le 03/06/2005 22:37:58

c'est mieux maintenant
il fallait mettre une remarque que le code est pas executable si losrque tu compile chak programme à part

Commentaire de AjJi le 04/06/2005 01:31:46

Si tu voulais mettre une note tu metterais combien ? :]

Commentaire de juki_webmaster le 04/06/2005 02:34:19

Juste une chose:
Hash ton mot de passe en utiliser le md5, sa sera plus efficace et plus instructif.

Commentaire de minet03 le 26/07/2005 18:48:42

J'ain une question. Si tu écrit dans le fichier une structure dont un des membres est vide, est ce que la lecture dans le fichier se fera normalement ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales