1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Examen de fin de module : Langage de Programmation Structurée 2010/2011 - EFM Langage C

abdelouafiJan 20, 2017

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      181
      Likes Received:
      9
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      examen-fin-module-EFM-langage-c.png


      Questions de cours : Choisir Vrai ou Faux (Corriger si c’est faux) (5 pt)
      examen-fin-module-EFM-langage-c-tableau.png


      Exercice

      On souhaite gérer les utilisateurs d'une application. Les informations sur ces utilisateurs seront stockées par défaut dans le répertoire racine (C:\par exemple) au sein d'un fichier utilisateurs.dat.

      Les informations décrivant un utilisateur sont :

      • IDUtilisateur chaine de caractères (25 au maximum)
      • MotPasse chaine de caractères (15 au maximum)
      • NomUtilisateur chaine de caractères (15 au maximum)


      1. Créer une structure représentant un utilisateur(1. pt)

      2. Ecrire une fonction ajouterUtilisateur qui prend en paramètres un File représentant le fichier et un utilisateur et qui permet d’ajouter un utilisateur au fichier. (4 pt)

      3. Ecrire une fonction lireUtilisateurs qui prend comme arguments un tableau d’utilisateurs USERS et un File représentant le fichier et qui permet de remplir le tableau par les enregistrements du fichier. (4 pt)


      4. Ecrire un programme principale qui permet de : (6 pt)

      • Demander le nombre des utilisateurs de l’application.
      • Entrer les informations sur les utilisateurs et les ajouter au fichier utilisateurs.dat (utiliser la fonction ajouterUtilisateur)
      • Afficher la liste des utilisateurs enregistrés sur le fichier utilisateurs.dat (utiliser la fonction lireUtilisateurs)

      Attention
      : L’ouverture et la fermeture du fichier se font au niveau du programme principal.
      upload_2017-1-20_12-55-39.png

      -------------------------------------------------------------------------------------------------------------------------
      Examens similaires langage C:
      Examen de fin de module 2015 avec correction
       

      Attached Files:

      Last edited: Jan 20, 2017
      Loading...
      EXERCICE :
      Dans un premier temps il faut déclarer une structure utilisateur qui contient 3 chanps : Idutilisateur, login et password.
      Voici le code source:
      Code:
      typedef struct
      
      {
        char login[15];
        char password[15];
        char id[25];
      } utilisateur;


      Par la suite, il faut déclarer les prototypes des fonctions à utiliser comme suit:
      Code:
      void ajouterUtilisateur  (FILE *rep);
      
      void lireUtilisateurs (utilisateur users[],FILE *rep);


      On commence maintenant à développer la fonction ajouterutilisateur() qui permet d'ajouter les utilisateurs dans notre fichier "reper.dat" :
      Code:
      void ajouterUtilisateur (FILE *rep) {
      
        utilisateur ut1;
        printf ("Login : \n");
        scanf ("%s", ut1.login);
        printf ("Le mot de passe : \n");
        scanf ("%s", ut1.password);
        printf ("Id utilisateur : \n");
        scanf ("%s", ut1.id);
        fwrite (&ut1, sizeof(ut1), 1, rep);
      }


      Ce qu'on va faire maintenant c'est de développer une fonction qui permet de remplir un tableau par le contenu de notre fichier "reper.dat". Cette fonction admis deux paramètres: users[] qui est un tableau de structures et un pointeur *rep de type FILE.
      Dans un premier temps on va utiliser la fonction FREAD() pour parcourir notre fichier, cette fonction va lire le contenu de ce fichier ligne par ligne, et chaque ligne lue sera copier dans notre tableau user[] comme suit:
      Code:
      int i=0;
      
         while (fread(&u1,sizeof(utilisateur),1,rep) != 0) {
             strcpy(users[i].id,u1.id);      
             strcpy(users[i].login,u1.login);
             strcpy(users[i].password,u1.password);
             i++;
         }


      Une fois notre tableau sera rempli, alors on commence à lire son contenu comme suit:
      Code:
      for(int j=0;j<=i;j++)
      
         {
             printf("%s  %s  %s \n",users[j].id,users[j].login,users[j].password);
         }


      Notre fonction Lireutilisateur() est comme suit:
      Code:
      void lireUtilisateurs (utilisateur users[],FILE *rep)
      
      {
          utilisateur u1;
      
         fseek(rep,0,SEEK_SET);
         int i=0;
         while (fread(&u1,sizeof(utilisateur),1,rep) != 0) {
             strcpy(users[i].id,u1.id);      
             strcpy(users[i].login,u1.login);
             strcpy(users[i].password,u1.password);
             i++;
         }
         for(int j=0;j<=i;j++)
         {
             printf("%s  %s  %s \n",users[j].id,users[j].login,users[j].password);
         }
        
      }


      On va utiliser une fonction menu pour choisir la fonction à exécuter:
      Code:
      void menu(FILE *rep) {
      
        char reponse, nom[10];
        utilisateur user[100];
        do {
          printf("AJOUTER UTILISATEUR.... : A\n");
          printf("LIRE UTILISATEUR..... : L\n");
          printf("QUITER......: Q\n");
          printf("  votre choix: ");
          scanf(" %c",&reponse);
          switch(reponse) {
          case 'a':case 'A': ajouterUtilisateur (rep);
            break;
          case 'l':case 'L': lireUtilisateurs(user,rep);
            break;
      
          }
        }
        while( reponse != 'q' && reponse != 'Q');
      }


      Le code source complet de notre programme est le suivant:
      Code:
      #include <stdio.h>
      
      #include <string.h>
      
      typedef struct
      {
        char login[15];
        char password[15];
        char id[25];
      } utilisateur;
      utilisateur users[100];
      
      void ajouterUtilisateur  (FILE *rep);
      void lireUtilisateurs (utilisateur users[],FILE *rep);
      
      
      void ajouterUtilisateur (FILE *rep) {
        utilisateur ut1;
        printf ("Login : \n");
        scanf ("%s", ut1.login);
        printf ("Le mot de passe : \n");
        scanf ("%s", ut1.password);
        printf ("Id utilisateur : \n");
        scanf ("%s", ut1.id);
        fwrite (&ut1, sizeof(ut1), 1, rep);
      }
      void lireUtilisateurs (utilisateur users[],FILE *rep)
      {
          utilisateur u1;
      
         fseek(rep,0,SEEK_SET);
         int i=0;
         while (fread(&u1,sizeof(utilisateur),1,rep) != 0) {
             strcpy(users[i].id,u1.id);      
             strcpy(users[i].login,u1.login);
             strcpy(users[i].password,u1.password);
             i++;
         }
         for(int j=0;j<=i;j++)
         {
             printf("%s  %s  %s \n",users[j].id,users[j].login,users[j].password);
         }
        
      }
      
      
      
      
      
      void menu(FILE *rep) {
        char reponse, nom[10];
        utilisateur user[100];
        do {
          printf("AJOUTER UTILISATEUR.... : A\n");
          printf("LIRE UTILISATEUR..... : L\n");
          printf("QUITER......: Q\n");
          printf("  votre choix: ");
          scanf(" %c",&reponse);
          switch(reponse) {
          case 'a':case 'A': ajouterUtilisateur (rep);
            break;
          case 'l':case 'L': lireUtilisateurs(user,rep);
            break;
      
          }
        }
        while( reponse != 'q' && reponse != 'Q');
      }
      
      int main () {
        FILE *repertoire;  
      
        repertoire = fopen ("reper.dat", "a+");  
        menu(repertoire);
        fclose (repertoire);
        return 0;
      }
      Exemple d'exécution:
      [​IMG]

      Affichage:
      [​IMG]

Share This Page

Share