Pb prog C: recuperation clavier

Signaler
Messages postés
1
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
28 février 2006
-
Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018
-
bonjour,


voila, je vous expose mon prob. je developpe (depuis peu) avec Dev C++ sous Windows XP.


je dois faire un projet qui permet de gerer le materiel d'une
entreprise. pour cela, il faut faire un menu (à l'aide de la
bibliothèque pdcurses) mais j' un prob je n'arrive pas a recuperer le
choix tapé au clavier pour ensuite m'en servir! (equivalent de scanf
non?)


alors voici une partie de mon code afin que vous compreniez ce que je
veux dire car je sais pas si j'ai ete tres claire!! (soyez indulgent
svp car c'est mon tout premier code! merci)


merci beaucoup,


#include <stdio.h>

#include <stdlib.h>

#include <curses.h>

/* declaration des fonctions*/

void menu_principal();

void menu_gerer_dispositifs();

void menu_gerer_interventions();

void menu_affichage();

void menu_recherche_dispo();

void menu_recherche_intervention();

void menu_quitter();



/* fonctions menu*/

void menu_principal()

{ int c;

int choix1;

char rep;

mvprintw (2,20,"***********************");

mvprintw (3,20,"* Outil de GMAO de DM *");

mvprintw (4,20,"***********************");

mvprintw (6,25,"MENU PRINCIPAL");

mvprintw (8,10,"1) Gérer les dispositifs");

mvprintw (9,10,"2) Gérer les interventions");

mvprintw (10,10,"3) Affichage");

mvprintw (11,10,"4) Recherche d'un dispositif a partir d'une caracteristique");

mvprintw (12,10,"5) Recherche d'une intervention a partir d'une caracteristique");

mvprintw (13,10,"6) Pour quitter appuyer sur F1");

mvprintw(14,8,"Entrez le numéro désiré : ",choix1);

refresh();

do

{

choix1 = getch();

switch (choix1)

{/* gestion des dispo*/

case 1:

do{

/*sous-menu 1*/

menu_gerer_dispositifs();


puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);

break;

case 2:

do{


/*sous-menu 2*/


menu_gerer_interventions();


puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);

break;

case 3:

do

{

/*sous-menu 3*/

menu_affichage();


puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);

break;

case 4:

do

{




menu_recherche_dispo();


puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);

break;

case 5:

do

{




menu_recherche_intervention();


puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);



break;

case 6:

do


{


menu_quitter();

puts("pour sortir frapper ESC");

rep = getch();

}

while (rep!=27);

break;

}

} while (choix1!= KEY_F(1));



}



void menu_gerer_dispositifs()

{

mvprintw (2,20,"GESTION DES DISPOSITIFS");

mvprintw (6,10,"1.1) Ajouter un nouveau dispositif");

mvprintw (7,10,"1.2) Supprimer un dispositif existant");

mvprintw (8,10,"1.3) Modifier un dispositif existant");

mvprintw (9,10,"1.4) Retour au menu principal");

mvprintw (10,8,"Entrez le numéro désiré : ");

refresh();

}

void menu_gerer_interventions()

{

mvprintw (2,20,"GESTION DES INTERVENTIONS");

mvprintw (6,10,"2.1) Ajouter des interventions");

mvprintw (7,10,"2.2) Supprimer des interventions");

mvprintw (8,10,"2.3) Modifier une intervention existante");

mvprintw (9,10,"2.4) Retour au menu principal");

mvprintw (10,8,"Entrez le numero desire:");

refresh();

}

void menu_affichage()

{

mvprintw (2,20,"AFFICHAGE");

mvprintw (6,10,"3.1) Afficher les interventions d'un dispositif choisi");

mvprintw (7,10,"3.2) Afficher tous les dispositifs devant etre soumis a une intervention dans les n mois suivants");

mvprintw (8,10,"3.3) Afficher tous les dispositifs en retard");

mvprintw (9,10,"3.4) Afficher tous les dispositifs n'ayant pas encore d'interventions planifiees");

mvprintw (10,10,"3.5) Afficher le planning des interventions pour les n mois suivants");

mvprintw (11,10,"3.6) Retour au menu principal");

mvprintw (13,8," Entrez le numero desire:");

refresh();

}

void menu_recherche_dispo()

{

mvprintw (2,20,"RECHERCHER DES DISPOSITIFS");

mvprintw (6,10,"4.1) A partir du code interne");

mvprintw (7,10,"4.2) A partir du code constructeur");

mvprintw (8,10,"4.3) A partir du modele");

mvprintw (9,10,"4.4) A partir de la marque");

mvprintw (10,10,"4.5) A partir d'une designation");

mvprintw (11,10,"4.6) A partir de la classe");

mvprintw (12,10,"4.7) A partir du modele d'intervention");

mvprintw (13,10,"4.8) A partir de la periode de maintenance");

mvprintw (14,10,"4.9) A partir de la date de mise en service");

mvprintw (15,10,"4.10) A partir du niveau de risque");

mvprintw (16,10,"4.11) Retour au menu principal");

mvprintw (17,8," Entrez le numero desire:");

refresh();

}

void menu_recherche_intervention()

{

mvprintw (2,20,"RECHERCHER DES INTERVENTIONS");

mvprintw (6,10,"5.1) A partir du code interne");

mvprintw (7,10,"5.2) A partir de la date de l'intervention");

mvprintw (8,10,"5.3) A partir de l'equipement");

mvprintw (9,10,"5.4) A partir du modele de l'intervention");

mvprintw (10,10,"5.5) A partir du cout");

mvprintw (11,10,"5.6) A partir de l'operateur");

mvprintw (12,10,"5.7) Retour au menu principal");

mvprintw (13,8, " Entrez le numero desire");

refresh();

}



void menu_quitter()

{

}


/**********************/


/* FONCTION PRINCIPALE*/


/**********************/

int main(int argc, char *argv[])

{

int choix1;

initscr();

menu_principal();

menu_gerer_dispositifs();

return 0;

}

3 réponses

Messages postés
65
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011
1
Bonjour
Je ne sais pas si ceci est très correct:
choix1 = getch();
switch (choix1)
{/* gestion des dispo*/
case 1: ...
case 2:...

En effet, getch() renvoie bien un entier, mais c'est le cose ASCII de la touche.
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
bah il faut transformer 1 en '1' 2 en '2' ... jusqu'a 0 en '0'
Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018

Oui moi j'utilserai bien le getch() il appartient a la bibliotheque <conio.h> et ne peut etre utiliser que sous windows. Le probleme c'est que parfois le buffer ne se vide pas tout de suite et le choix saisie reste le meme apres la fin d'une boucle,donc j'accompagne toujours un getch() d'un fflush(stdin);