Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Seabra86

Navegação entre Menus

Mensagens Recomendadas

Seabra86    0
Seabra86

Boa Tarde Pessoal,

Estou a fazer um projeto para a universidade e estou a ter dificuldades em efetuar a navegação entre menus.  Será que alguém me pode ajudar? estou a iniciar a programar em C por isso ainda tenho algumas dificuldades.

Já chamei os menus, como faço no MenuMostrar mas não funciona nada no menu chamado. agradeço toda a vossa ajuda.

Cumprimentos,

Hélder Seabra

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

char MenuMostrar();/*Define o MenuMostrar como global para poder usar em todo o programa*/
char Menu_Venda();
char Menu_pessoal();
void Menu_Venda_inserir();
void Menu_Venda_pesquisar();

void Menu_pessoal_ins  system("cls");/* Limpa o ecrã*/erir();
void Menu_pessoal_pesquisar();

struct defmaterial/* criação da estrutura e definição do nome*/

{
    int iID[4];/*defenir o tipo de variavel e o tamanho nesta estrutura*/
char sMarca[20];
char sModelo[20];
int iPreco[7];
char slocalvenda[15];
int iNumSerie[30];
char sgrupo[25];
};
/*
struct defContador{
    int iId;
}*/

int main()
{ /*Programa principal*/

    /*FILE *fp;
    fp=fopen("contador.dat","rb+");
    if (fp==NULL){
        struct defContador c;
        c.iId =0;
        fp=fopen("contador.dat","wb");
        fwrite (&c, sizeof(struct defContador),1,fp);
        fclose(fp);
        fp=fopen("contador.dat","rb+");
    }*/

    int termina=0;

    char m=MenuMostrar();
    while (termina==0)
    {
        switch (m)
        {
            case '1':
                {
                Menu_Venda();
                break;
                }
            case '2':
                {
                Menu_pessoal();
                break;
                }
            case '3':
                {

                break;
                }
            case '4':
                {
                printf("\n\nEscolheu sair. \nAte breve\n");
                termina=1;
                break;
                }
            default:
                {
                printf("\nEscolheu uma opcao invalida.\n\n");
                }
        }
            system("cls");/* Limpa o ecrã*/
    }
    return (termina);
}


/*char user(){
    char u;
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--        printf("\nQualquer Tecla para continuar\n");                   --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--   1 - Já sou utilizador   --\n");
    printf ("--   2 - Novo Utilizador     --\n");
    printf ("--   3 - Sair                --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: ");
    M = getch();
   return(M);
   system("cls");
}

}*/

char MenuMostrar()
{

    char M;
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--                           --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--   1 - Material Para Venda --\n");
    printf ("--   2 - Material Pessoal    --\n");
    printf ("--   3 - Pesquisa Global     --\n");
    printf ("--   4 - Sair                --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: ");
    M = getch();
   return(M);/*Retorna a opção escolhida que se encontra na variavel M*/

}
/*************************** Venda ***************************/

char Menu_Venda()
{
    int termina=0;
    char v;
    char continuar;
    system("cls");/* Limpa o ecrã*/
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--                           --\n");
    printf ("     Material Para Venda       \n");
    printf ("--                           --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--   1 - Inserir             --\n");
    printf ("--   2 - Pesquisar           --\n");
    printf ("--   3 - Remover             --\n");
    printf ("--   4 - Menu Principal      --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: \n");

    v = getch();
     switch (v) {
            case '1':
                    {
                        Menu_pessoal_inserir();
                        break;
                    }
            case '2':
                    {
                        Menu_pessoal_pesquisar();
                        break;
                    }
            case '3':
                    {
                       /* char elim;
                        int elimm;
                        int elimp;printf("Escolha a Marca\n");
                        int remm=0;
                        int remp=0;

                        printf("Prima m se deseja ELIMINAR um medico\n");
                        printf("\t\t\tou\n");
                        printf("Prima p se deseja ELIMINAR um paciente\n");
                        scanf("%s",&elim);

                        if(elim=='m')
                                remprintf("Escolha a Marca\n");m=elimm(m,remm);
                        else
                                if(elim=='p')
                                   printf("Escolha a Marca\n");     remp=elimp(p,remp);                 //função para eliminar médicos ou pacientes
                        break;*/
                    }
            case '4':
                    {

                       break;
                    }
            default:
                    {
                        printf("Escolheu uma opcao invalida.\n\n");
                    }

        }
        printf("\nQualquer Tecla para continuar\n");
        continuar=getch();
        system("cls");/* Limpa o ecrã*/
        return(v);
}


void Menu_Venda_inserir()
{

int iCharac;
struct defmaterial P;

FILE *fp;
fp=fopen("MaterialVenda.dat", "rb+");
if (fp==NULL)
{
	fp=fopen("MaterialVenda.dat","wb");
	rewind(fp); /*Aponta para o inicio*/
}
    printf("\nMarca:");
    gets(P.sMarca);
    /*for (iCharac=0; iCharac<strlen(P.sMarca); iCharac++)
        P.sMarca[iCharac]=toupper(P.sMarca[iCharac]);*/
    printf("\nModelo:");
    gets(P.sModelo);
    printf("\nPreco:");
    scanf("%d",&P.iPreco);
    printf("\nLocal de Venda:");
    gets(P.slocalvenda);
    printf("\nNumero Serie:");
    scanf("%d",&P.iNumSerie);
    fseek(fp,0,SEEK_END);  /* coloca o cursor no fim do ficheiro */
                /* se colocar fseek(fp,0,SEEK_SET) ficava no inicio*/
    fwrite(&P, sizeof(struct defmaterial),1,fp);
    fclose(fp);
}

void Menu_Venda_pesquisar()
{
    int fim1;
    char var1[20];
    struct defmaterial P1;
    FILE *fp1;


    int p;
    system("cls"); /* Limpa o ecrã*/
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--                           --\n");
    printf ("Material Para Venda - Pesquisar\n");
    printf ("--                           --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--    1 - ID                 --\n");
    printf ("--    2 - Marca              --\n");
    printf ("--    3 - Modelo             --\n");
    printf ("--    4 - Listar             --\n");
    printf ("--    5 - Menu Principal     --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: ");
    p = getch();


struct defmaterial P;
FILE *fp;
fp=fopen("MaterialVenda.dat", "rb+");
if (fp==NULL)
{
	fp=fopen("MaterialVenda.dat","rb");
	rewind(fp);
}
	int fim;
switch (p) {
            case '1':
                    {
                        FILE *fp;
                        fp=fopen("MaterialVenda.dat", "rb+");
                        if (fp==NULL)
                        {
                            fp=fopen("MaterialVenda.dat","rb");
                            rewind(fp); /*Aponta para o inicio*/
                        }


                        break;
                    }
            case '2':
                    {
                        fim1=0;
                        fp1=fopen("MaterialVenda.dat", "rb+");
                        if (fp1==NULL)
                        {
                            fp1=fopen("MaterialVenda.dat","rb");
                            rewind(fp1); /*Aponta para o inicio*/
                        }
                        fseek(fp1,0,SEEK_SET);

                        printf("Escolha a Marca: \n");
                        scanf("%s",var1);
                         /*printf("o valor de o é: %s\n",var1);*/
                            while (fim1==0)
                            {
                                fread(&P1, sizeof(struct defmaterial), 1, fp1);
                                /*printf("%s\nteste:",P1.sMarca);*/
                                if (feof(fp1))
                                    fim1=1;
                                if (strcmp(P1.sMarca, var1)==0)
                                    printf("%s\t%s\t%d\t%s\t%d\n",P1.sMarca, P1.sModelo, P1.iPreco, P1.slocalvenda, P1.iNumSerie);
                            }
                        fclose(fp);
                        break;
                    }
            case '3':
                    {
                        fim1=0;
                        fp1=fopen("MaterialVenda.dat", "rb+");
                        if (fp1==NULL)
                        {
                            fp1=fopen("MaterialVenda.dat","rb");
                            rewind(fp1); /*Aponta para o inicio*/
                        }
                        fseek(fp1,0,SEEK_SET);

                        printf("Escolha o Modelo: \n");
                        scanf("%s",var1);
                         /*printf("o valor de o é: %s\n",var1);*/
                            while (fim1==0)
                            {
                                fread(&P1, sizeof(struct defmaterial), 1, fp1);
                                /*printf("%s\nteste:",P1.sMarca);*/
                                if (feof(fp1))
                                    fim1=1;
                                if (strcmp(P1.sModelo, var1)==0)
                                    printf("%s\t%s\t%d\t%s\t%d\n",P1.sMarca, P1.sModelo, P1.iPreco, P1.slocalvenda, P1.iNumSerie);
                            }
                        fclose(fp);
                        break;
                    }
            case '4':
                    {
                        fseek(fp,0,SEEK_SET);
                        fim=0;
                        printf("\nMarca\tModelo\tPreço\tLocal Venda\tNum.Serie\n");
                        while (!fim)
                                    {
                            fread(&P, sizeof(struct defmaterial), 1, fp);
                            if (feof(fp)!=0) fim=1;
                            else
                                {

                                printf("%s\t%s\t%d\t%s\t%d\n",P.sMarca, P.sModelo, P.iPreco, P.slocalvenda, P.iNumSerie);
                                }
                                    }
                        fclose(fp);

                        break;
                    }
            case '5':
                    {

                        break;
                    }
            default:
                    {
                         printf("Escolheu uma opcao invalida.\n\n");

                    }

            }

}

/*********************** Pessoal ***********************/

char Menu_pessoal()
{

    int fim=0;
    int termina=0;
    int P;
    char p='0';
    char continuar;
    system("cls"); /* Limpa o ecrã*/
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--                           --\n");
    printf ("       Material Pessoal        \n");
    printf ("--                           --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--    1 - Inserir            --\n");
    printf ("--    2 - Pesquisar          --\n");
    printf ("--    3 - Remover            --\n");
    printf ("--    4 - Menu Principal     --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: ");
    P = getch();

         switch (P) {
                case '1':
                    {
                        Menu_pessoal_inserir();
                        break;
                    }
            case '2':
                    {
                        Menu_pessoal_pesquisar();
                        break;
                    }
            case '3':
                    {
                        break;
                    }
            case '4':
                    {

                        break;
                    }
            default:
                    {
                        printf("Escolheu uma opcao invalida.\n\n");
                    }
        }
            printf("\nQualquer Tecla para continuar\n");
            continuar=getch();
     return(p);
}
void Menu_pessoal_inserir()
{

int iCharac;
struct defmaterial P;

FILE *fp;
fp=fopen("MaterialPessoal.dat", "rb+");
if (fp==NULL)
{
	fp=fopen("MaterialPessoal.dat","wb");
	rewind(fp); /*Aponta para o inicio*/
}
    printf("\nMarca:");
    gets(P.sMarca);
    /*for (iCharac=0; iCharac<strlen(P.sMarca); iCharac++)
        P.sMarca[iCharac]=toupper(P.sMarca[iCharac]);*/
    printf("\nModelo:");
    gets(P.sModelo);
    printf("\nPreco:");
    scanf("%d",&P.iPreco);
    printf("\nLocal de Venda:");
    gets(P.slocalvenda);
    printf("\nNumero Serie:");
    scanf("%d",&P.iNumSerie);
    fseek(fp,0,SEEK_END);  /* coloca o cursor no fim do ficheiro */
                /* se colocar fseek(fp,0,SEEK_SET) ficava no inicio*/
    fwrite(&P, sizeof(struct defmaterial),1,fp);
    fclose(fp);
}

void Menu_pessoal_pesquisar()
{
    int fim1;
    char var1[20];
    struct defmaterial P1;
    FILE *fp1;


    int p;
    system("cls"); /* Limpa o ecrã*/
    printf ("-------------------------------\n");
    printf ("--                           --\n");
    printf ("--          FindHit          --\n");
    printf ("--                           --\n");
    printf ("  Material Pessoal - Pesquisar \n");
    printf ("--                           --\n");
    printf ("-------------------------------\n");
    printf ("                               \n");
    printf ("--    1 - ID                 --\n");
    printf ("--    2 - Marca              --\n");
    printf ("--    3 - Modelo             --\n");
    printf ("--    4 - Listar             --\n");
    printf ("--    5 - Menu Principal     --\n");
    printf ("                               \n");
    printf ("-------------------------------\n");
    printf ("Escolha a opcao desejada: ");
    p = getch();


struct defmaterial P;
FILE *fp;
fp=fopen("MaterialPessoal.dat", "rb+");
if (fp==NULL)
{
	fp=fopen("MaterialPessoal.dat","rb");
	rewind(fp);
}
	int fim;
switch (p) {
            case '1':
                    {
                        FILE *fp;
                        fp=fopen("MaterialPessoal.dat", "rb+");
                        if (fp==NULL)
                        {
                            fp=fopen("MaterialPessoal.dat","rb");
                            rewind(fp); /*Aponta para o inicio*/
                        }


                        break;
                    }
            case '2':
                    {
                        fim1=0;
                        fp1=fopen("MaterialPessoal.dat", "rb+");
                        if (fp1==NULL)
                        {
                            fp1=fopen("MaterialPessoal.dat","rb");
                            rewind(fp1); /*Aponta para o inicio*/
                        }
                        fseek(fp1,0,SEEK_SET);

                        printf("Escolha a Marca: \n");
                        scanf("%s",var1);
                         /*printf("o valor de o é: %s\n",var1);*/
                            while (fim1==0)
                            {
                                fread(&P1, sizeof(struct defmaterial), 1, fp1);
                                /*printf("%s\nteste:",P1.sMarca);*/
                                if (feof(fp1))
                                    fim1=1;
                                if (strcmp(P1.sMarca, var1)==0)
                                    printf("%s\t%s\t%d\t%s\t%d\n",P1.sMarca, P1.sModelo, P1.iPreco, P1.slocalvenda, P1.iNumSerie);
                            }
                        fclose(fp);
                        break;
                    }
            case '3':
                    {
                        fim1=0;
                        fp1=fopen("MaterialPessoal.dat", "rb+");
                        if (fp1==NULL)
                        {
                            fp1=fopen("MaterialPessoal.dat","rb");
                            rewind(fp1); /*Aponta para o inicio*/
                        }
                        fseek(fp1,0,SEEK_SET);

                        printf("Escolha o Modelo: \n");
                        scanf("%s",var1);
                         /*printf("o valor de o é: %s\n",var1);*/
                            while (fim1==0)
                            {
                                fread(&P1, sizeof(struct defmaterial), 1, fp1);
                                /*printf("%s\nteste:",P1.sMarca);*/
                                if (feof(fp1))
                                    fim1=1;
                                if (strcmp(P1.sModelo, var1)==0)
                                    printf("%s\t%s\t%d\t%s\t%d\n",P1.sMarca, P1.sModelo, P1.iPreco, P1.slocalvenda, P1.iNumSerie);
                            }
                        fclose(fp);
                        break;
                    }
            case '4':
                    {
                        fseek(fp,0,SEEK_SET);
                        fim=0;
                        printf("\nMarca\tModelo\tPreço\tLocal Venda\tNum.Serie\n");
                        while (!fim)
                                    {
                            fread(&P, sizeof(struct defmaterial), 1, fp);
                            if (feof(fp)!=0) fim=1;
                            else
                                {

                                printf("%s\t%s\t%d\t%s\t%d\n",P.sMarca, P.sModelo, P.iPreco, P.slocalvenda, P.iNumSerie);
                                }
                                    }
                        fclose(fp);

                        break;
                    }
            case '5':
                    {

                        break;
                    }
            default:
                    {
                         printf("Escolheu uma opcao invalida.\n\n");

                    }

            }

}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Seabra86    0
Seabra86

Obrigado e peço desculpa por algum erro meu, mas sou novo por cá e não tenho tido muito tempo, logo que possa irei ler o que sugeriu.

Cumprimentos,

Hélder Seabra

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mundo    4
mundo

Nao vi muita coisa, mas nao queres aqui dizer:

while (termina!=0)
    {
        switch (m)
        {
            case '1':
                {
                Menu_Venda();
                break;
                }
            case '2':
                {
                Menu_pessoal();
                break;
                }
            case '3':
                {

                break;
                }
            case '4':
                {
                printf("\n\nEscolheu sair. \nAte breve\n");
                termina=1;
                break;
                }
            default:
                {
                printf("\nEscolheu uma opcao invalida.\n\n");
                }
        }
            system("cls");/* Limpa o ecrã*/
    }

em vez do que tinhas?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade