Exercice langage C: faire un programme permettant de gérer des fichiers de QCM

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;
 
}

6) Faire la fonction menu de prototype char menu_admin(void) qui présente les choix suivants : menu administrateur :



(a) consulter un fichier qcm,

(b) créer un fichier qcm,

(c) maintenance d'un fichier,

(d) quitter

Lit le caractère saisi au clavier et le retourne à la fonction appelante.

7) Faire la fonction void gestion_admin() qui gère les fonctionnalités du mode administrateur.

Nota : La maintenance du fichier permettant la modification des questions ne sera pas mise en œuvre. Il n'y aura pas de gestion automatisée du numéro des questions dans le fichier.


/* PROGRAMME QCM */
#include 
#include 
#define MLIGNE 256
#define MNAME 100
struct qcm {
int numquest;
char quest[MLIGNE];
char rep1[MLIGNE];
char rep2[MLIGNE];
char rep3[MLIGNE];
char rep4[MLIGNE];
int solrep;
};
typedef struct qcm TQCM;
/***** PARTIE ADMINISTRATEUR *******/
char menu_admin(void);
/* menu administrateur : 
(a) consulter un fichier qcm, 
(b) créer un fichier qcm, 
(c) maintenance d'un fichier,
(d) quitter */
/* On supposera que l'index numquest de la question dans un fichier est unique.
** On ne traitera pas la maintenance des fichiers (modification d'une question dans un 
fichier) */
void gestion_admin(); /* mode administrateur, gestion des fonctionnalités de 
l'administrateur */