sexta-feira, 30 de novembro de 2012

Menu Inteligente - Linguagem C

O MENU mais eficiente que eu já vi em linguagem C padrão. Ainda não tinha postado este menu por aqui
más acho que tá na hora, é tudo muito simples e nem vou comentar porque todos entenderão logo
como tudo funciona, pois se baseia em posições estabelecidas em um vetor de char com ponteiro.
Temos o comando for que percorre esta lista e permite que printf a imprima, e então vem o switche case e ifs.
o modo de seleção pela tecla enter não falha más tudo pode ser modificado e melhorado
por um programador iniciante avançado. Se você faz menus melhores que estes porque não compartilha
conosco? Eu gosto de compartilhar conhecimentos e acho isto muito positivo, pena que nem todos
pensam assim. Como meu tempo tá muito curto vou postar assim, más provavelmente depois dou umas ajustadas.

Veja algumas imagens abaixo:









Veja abaixo um vídeo com o funcionamento do programa:



Copie e cole e compile o código abaixo:

#include <stdio.h>
#include <conio.h>
#include <windows.h>
void MenuPrimcipal();
void Janela5(){
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24; lin++ )
         for ( col = 2; col <= 78; col++ ){
              gotoxy(col,lin);textbackground(WHITE);printf(" ");
         }
}
void aaaa(){
     Janela5();
     textcolor(LIGHTRED);gotoxy(33,10);printf("VOCE CLICOU EM AAAA");
     textcolor(BLACK);gotoxy(33,12);printf("ISTO E SO UM TESTE");
     Sleep(3800);MenuPrimcipal();
}
void bbbb(){
     Janela5();
     textcolor(LIGHTRED);gotoxy(33,10);printf("VOCE CLICOU EM BBBB");
     textcolor(BLACK);gotoxy(33,12);printf("ISTO E SO UM TESTE");
     Sleep(3800);MenuPrimcipal();
}
void cccc(){
     Janela5();
     textcolor(LIGHTRED);gotoxy(33,10);printf("VOCE CLICOU EM CCCC");
     textcolor(BLACK);gotoxy(33,12);printf("ISTO E SO UM TESTE");
     Sleep(3800);MenuPrimcipal();
}
void HoraData(){
     textbackground(BLACK);
     gotoxy(6,22);textcolor(WHITE);
     printf("Data:");
     system("date/t");
     gotoxy(6,23);
     printf("Horas:     ");
     system("time/t ");
}
void Funcexit(){
     void Janela5();
     Janela5();HoraData();
     gotoxy(32,11);
     printf("OPERACAO FINALIZADA");
     gotoxy(2,23);
     Sleep(1800);
     gotoxy(20,13);
     printf("MUITO OBRIGADO POR TER USADO ESTE PROGRAMA\n");
     Sleep(4800);exit(0);
     gotoxy(3,24);
}
void Janela6(){
     int lin, col;
     col = 0;
     for( lin = 2; lin <= 24; lin++ )
         for( col = 3; col <= 78; col++ ){
              gotoxy( col, lin );textbackground(6);printf(" ");
         }
     col = 0;
     for( lin = 5; lin <= 21; lin++ )
         for( col = 6; col <= 75; col++ ){
              gotoxy( col, lin );textbackground(16);printf(" ");
         }HoraData();
}
#define MaxNo_Menu 4
void MenuPrimcipal(){
     system("title MENU INTELIGENTE");HoraData();
     system("cls");
     Janela6();
     textcolor(LIGHTRED);gotoxy(33,3); printf("MENU INTELIGENTE");
     textcolor(YELLOW);gotoxy(22,7);printf("PROGRAMA DESENVOLVIDO POR:");
     textcolor(LIGHTCYAN);gotoxy(49,7);printf("Samuel Lima");
     textcolor(LIGHTGREEN);gotoxy(30,9);printf("sa_sp10@hotmail.com");
     textcolor(LIGHTBLUE);gotoxy(29,11); printf("ESCOLHA UMA OPCAO ABAIXO");
     char *menu_list [ MaxNo_Menu ] = { "AAAA",
              "BBBB",
              "CCCC",
              "SAIR" };
     int i,
     xpos = 10,
     ypos [ MaxNo_Menu ] = { 13, 15, 17, 19 }; // lista do menu com o número da linha
     for ( i = 0; i < MaxNo_Menu; ++i ){
         gotoxy (xpos, ypos [i] );
         textattr(12);
         printf("%s",menu_list [i] );
     }
     i = 0;
     while (1) {
         gotoxy( xpos, ypos [i] );
         textattr(16 );
         printf("%s",menu_list [i] );
         switch ( _getch () ){
         case 72: if ( i > 0 ) {
              gotoxy( xpos, ypos [i] );
              textattr(14);
              printf("%s", menu_list [i] );
              --i;
         }
         break;
         case 80: if ( i <  MaxNo_Menu -1 ){
              gotoxy( xpos, ypos [i] );
              textattr(14);
              printf("%s", menu_list [i] );
              ++i;
         }
         break;
         case 13:
              if ( i == 0 ) {  system("cls"); aaaa (); }
              if ( i == 1 ) {  system("cls"); bbbb (); }
              if ( i == 2 ) {  system("cls"); cccc (); }
              if ( i == 3 ) {  system("cls"); Funcexit();}
              break;
         }
     }
}
int main( void ){
     MenuPrimcipal();
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.