Exercice langage C : Partie Administrateur

Il s'agit de faire un programme permettant de gérer des fichiers de QCM.  Un qcm sera représenté par une

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
structure du type :

typedef truct qcm {

int numquest;

char quest[256];

char rep1[256];

char rep2[256];

char rep3[256];

char rep4[256];

int solrep;

} TQCM;

 

Où numquest est le numéro de la question,

quest est la chaine de caractère représentant la question,  rep1 à rep 4 les 4 réponses possibles.

solrep est le numéro de la seule solution à la question

Le programme permet de passer en mode administrateur pour générer des fichiers de qcm, ou en mode utilisateur pour utiliser les qcm. Ces deux modes font l'objet de deux parties différentes. Il est conseillé de commencer par la partie administrateur. Le code de la fonction main vous est donné ci-dessous :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main (void)

{

char calu;

do { printf("(a) mode administrateur,\n(b) mode utilisateur,\n");

printf("(c) quitter,\nvotre choix : ");

scanf(" %c", &calu);

switch(calu)

{ case 'a': gestion_admin();

calu = 'c';

break;

case 'b': gestion_util();

calu = 'c';

break;

case 'c': printf("fin du programme \n\n");

break;

default : printf("\nmauvaise saisie recommencer !!\n");

}

} while( calu !='c');

return 0;

}

1) Faire une fonction de prototype TQCM tsaisie_quest(void) qui permet de saisir au clavier le numéro de la question, le libellé de la question, les 4 réponses possibles, le numéro de la réponse solution.



Nota : vous utiliserez de préférence la fonction fgets(char *ligne, 255, stdin) qui permet la lecture au clavier d'une chaine de caractères jusqu'au retour chariot. En cas de problème vous utiliserez la fonction scanf("%s", char *ligne)  en remplaçant les espaces par les caractères '_'.

2) Faire une fonction de prototype  void fenr_quest(TQCM *Q, FILE * fq) qui permet d'enregistrer la structure Q, passée en paramètre dans le fichier fq ouvert préalablement en écriture en fin de fichier.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* PROGRAMME QCM */

#include 
#include 

#define MLIGNE 256      /* Taille d'une ligne en nombre de caracteres */
#define MNAME 100       /* Taille d'un nom de fichier en nombre de caracteres */

typedef struct
{
  int numquest;         /* Numero de la question */
  char quest[MLIGNE];   /* Question du QCM */
  char rep1[MLIGNE];    /* Premiere  reponse possible */
  char rep2[MLIGNE];    /* Deuxieme  reponse possible */
  char rep3[MLIGNE];    /* Troisieme reponse possible */
  char rep4[MLIGNE];    /* Quatrieme reponse possible */
  int solrep;           /* Numero de la bonne reponse */
} Question;

TQCM tsaisie_quest(void); /* mode administrateur, saisie de la question et de la réponse 
*/
void fenr_quest(TQCM *Q, FILE * fq); 
/* mode administrateur, enregistrement de la question Q dans le fichier ouvert fq*/
int fcreer_qcm(char *nomfic);