Ir ao conteúdo

C Não estou conseguindo voltar para um sub-menu


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Olá, estou fazendo um programa de cadastro de produtos e cliente, ai quando eu abro o primeiro ou segundo item do menu, "tipos de serviços" e "cadastro de clientes" (por enquanto só mexi nesses dois itens) funciona normal mas depois que eu volto para o menu principal e tento abrir um dos dois de novo eles não abrem!

 

Obs: sou novo em programação, me perdoem qualquer erro grosseiro no código!

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

struct servicos
{
    int numero_servico;
    float valor_servico;
    char codigo_servico[5];
    int codigo_cliente;
};
struct servicos serv[4];
struct cadastro
{
    char primeiro_nome[15];
    char ultimo_nome[15];
    char cpf[15];
    char data_nasc[11];
};

int main()
{
    FILE *cliente_file[200];
    FILE *lerBackUp;
    FILE *BackUP;
    FILE *descricao;
    int opcao, opcao2, opcao3;
    char ler_descricao[1000];
    int conta_cliente;
    struct cadastro
    {
        char primeiro_nome[15];
        char ultimo_nome[15];
        char cpf[15];
        char data_nasc[11];
    };
    struct cadastro cliente[200];

    while(opcao < 1 || opcao > 7)
    {
        system("cls");
        puts("======================");
        puts("PRESTADORA DE SERVICOS");
        puts("======================");
        puts("          MENU        ");
        puts("----------------------");
        puts("1 - Tipos de servicos");
        puts("2 - Cadastro de Clientes");
        puts("3 - Cadastrar os servicos prestados");
        puts("4 - servicos (por dia)");
        puts("5 - servicos prestados por valor");
        puts("6 - relatorio geral");
        puts("7 - Sair");
        puts("----------------------");
        scanf("%i", &opcao);

        switch (opcao)
        {
            case 1:
                    system("cls");

                    while(opcao2 < 1 || opcao2 > 5)
                    {
                        system("cls");
                        puts("======================");
                        puts("PRESTADORA DE SERVICOS");
                        puts("======================");
                        puts("  CADASTRAR SERVICOS  ");
                        puts("----------------------");
                        puts("1 - PINTURA           ");
                        puts("2 - JARDINAGEM        ");
                        puts("3 - FAXINA            ");
                        puts("4 - REFORMA EM GERAL  ");
                        puts("5 - VOLTAR            ");
                        puts("----------------------");
                        scanf("%i", &opcao2);

                        switch (opcao2)
                        {
                            case 1:
                                system("cls");
                                puts("======================");
                                puts("PRESTADORA DE SERVICOS");
                                puts("======================");
                                puts("       PINTURA        ");
                                puts("----------------------");
                                puts("Descricao: ");
                                descricao = fopen("descricao pintura.txt", "r");
                                if (descricao == NULL)
                                {
                                    printf("\n\aArquivo nao encontrado!");
                                }
                                while (fgets(ler_descricao, 1000, descricao) != NULL)
                                {
                                    printf("\n%s", ler_descricao);
                                }
                                printf("\n\n\nCodigo do servico: #100\n");

                                printf("\nDigite Enter para voltar!");

                                system("pause");

                                opcao2 = 0;
                                break;
                            case 2:
                                system("cls");
                                puts("======================");
                                puts("PRESTADORA DE SERVICOS");
                                puts("======================");
                                puts("      JARDINAGEM      ");
                                puts("----------------------");
                                puts("Descricao: ");
                                descricao = fopen("descricao jardinagem.txt", "r");
                                if (descricao == NULL)
                                {
                                    printf("\n\aArquivo nao encontrado!");
                                }
                                while (fgets(ler_descricao, 1000, descricao) != NULL)
                                {
                                    printf("\n%s", ler_descricao);
                                }
                                printf("\n\n\nCodigo do servico: #200\n");

                                printf("\nDigite Enter para voltar!");

                                system("pause");
                                opcao2 = 0;
                                break;
                            case 3:
                                system("cls");

                                puts("======================");
                                puts("PRESTADORA DE SERVICOS");
                                puts("======================");
                                puts("        FAXINA        ");
                                puts("----------------------");

                                puts("Descricao: ");
                                descricao = fopen("descricao faxina.txt", "r");
                                if (descricao == NULL)
                                {
                                    printf("\n\aArquivo nao encontrado!");
                                }
                                while (fgets(ler_descricao, 1000, descricao) != NULL)
                                {
                                    printf("\n%s", ler_descricao);
                                }
                                printf("\n\n\nCodigo do servico: #300\n");

                                printf("\nDigite Enter para voltar!");

                                system("pause");
                                opcao2 = 0;
                                break;
                            case 4:
                                system("cls");

                                puts("======================");
                                puts("PRESTADORA DE SERVICOS");
                                puts("======================");
                                puts("     REFORMA GERAL    ");
                                puts("----------------------------------");
                                puts("Descricao: ");
                                descricao = fopen("descricao rg.txt", "r");
                                if (descricao == NULL)
                                {
                                    printf("\n\aArquivo nao encontrado!");
                                }
                                while (fgets(ler_descricao, 1000, descricao) != NULL)
                                {
                                    printf("\n%s", ler_descricao);
                                }
                                printf("\n\n\nCodigo do servico: #400\n");

                                printf("\nDigite Enter para voltar!");
                                fclose(descricao);
                                system("pause");
                                opcao2 = 0;
                                break;
                            case 5:
                                system("cls");
                                opcao = 0;
                        }
                    }
                    break;
            case 2:

                while (opcao3 < 1 || opcao3 > 5)
                {
                        system("cls");

                        puts("======================");
                        puts("PRESTADORA DE SERVICOS");
                        puts("======================");
                        puts("  CADASTRAR CLIENTES  ");
                        puts("----------------------");
                        puts("1 - Cadastrar Cliente ");
                        puts("2 - Pesquisar Cliente ");
                        puts("3 - Listar Clientes   ");
                        puts("4 - Excluir Cliente   ");
                        puts("5 - Voltar            ");
                        puts("----------------------");
                        scanf("%i", &opcao3);

                        switch (opcao3)
                        {
                            case 1:
                                system("cls");

                                lerBackUp = fopen("BackUp.txt", "r");

                                if(lerBackUp == NULL)
                                {
                                    printf("\a Arquivo nao encontrado!\n");
                                    getchar();
                                    exit(0);
                                }

                                fscanf(lerBackUp, "%i", &conta_cliente);

                                fclose(lerBackUp);

                                puts("======================");
                                puts("PRESTADORA DE SERVICOS");
                                puts("======================");
                                puts("       CADASTRO       ");
                                puts("----------------------");
                                puts("Primeiro nome:        ");
                                scanf("%s", cliente[conta_cliente].primeiro_nome);
                                puts("Ultimo Nome:          ");
                                scanf("%s", cliente[conta_cliente].ultimo_nome);
                                puts("CPF:                  ");
                                scanf("%s", cliente[conta_cliente].cpf);
                                puts("Data de Nascimento:   ");
                                scanf("%s", cliente[conta_cliente].data_nasc);
                                puts("----------------------");

                                cliente[conta_cliente].primeiro_nome[0] = toupper(cliente[conta_cliente].primeiro_nome[0]);
                                cliente[conta_cliente].ultimo_nome[0] = toupper(cliente[conta_cliente].ultimo_nome[0]);

                                cliente_file[conta_cliente] = fopen("clientes\\client.txt", "w");

                                fputs("---------------------------\n", cliente_file[conta_cliente]);
                                fputs("         CADASTRO                           \n", cliente_file[conta_cliente]);
                                fputs("---------------------------\n", cliente_file[conta_cliente]);
                                fprintf(cliente_file[conta_cliente], "Nome: %s %s\n", cliente[conta_cliente].primeiro_nome, cliente[conta_cliente].ultimo_nome);
                                fprintf(cliente_file[conta_cliente], "CPF: %s\n", cliente[conta_cliente].cpf);
                                fprintf(cliente_file[conta_cliente], "Data de Nascimento: %s\n", cliente[conta_cliente].data_nasc);
                                fprintf(cliente_file[conta_cliente], "Numero Do Cliente: #%i\n", conta_cliente);
                                fputs("---------------------------", cliente_file[conta_cliente]);
                                fclose(cliente_file[conta_cliente]);

                                conta_cliente++;

                                BackUP = fopen("BackUp.txt", "w");

                                fprintf(BackUP, "%i", conta_cliente);

                                fclose(BackUP);

                                system("cls");

                                printf("Cadastro efetuado com sucesso!\n");
                                system("pause");
                                opcao3 = 0;
                                break;
                            case 2:
                                system("cls");


                                system("pause");
                                break;
                            case 3:
                                system("cls");


                                system("pause");
                                break;
                            case 4:
                                system("cls");


                                system("pause");
                                break;
                            case 5:
                                system("pause");

                                break;


                        }
                }





                    system("cls");

                    break;
            case 3:
                    system("cls");

                    break;
            case 4:
                    system("cls");

                    break;
            case 5:
                    system("cls");

                    break;

            case 6:
                    system("cls");

                    break;
            case 7:
                    system("cls");
                    exit(0);

                    break;
        }
    }

    return 0;
}

 

  • Curtir 1
  • Solução
Postado

@RenanMaia    ele está terminado por que a variável de controle opcao não foi zerada quando saiu do submenu opção 5 , e também precisa colocar as opcao2 e opcao3 zeradas logo depois do menu principal :

 while(opcao < 1 || opcao > 7)
    {
        printf("valor de opca= %d",opcao);getch();
        system("cls");
        puts("======================");
        puts("PRESTADORA DE SERVICOS");
        puts("======================");
        puts("          MENU        ");
        puts("----------------------");
        puts("1 - Tipos de servicos");
        puts("2 - Cadastro de Clientes");
        puts("3 - Cadastrar os servicos prestados");
        puts("4 - servicos (por dia)");
        puts("5 - servicos prestados por valor");
        puts("6 - relatorio geral");
        puts("7 - Sair");
        puts("----------------------");
        scanf("%i", &opcao);
        opcao2 = 0;opcao3 = 0;/* essa linha aqui */
        switch (opcao)

e também na função cadastrar clientes no case 1  você colocou exit( 0 ) e com isso ele sai do programa, então coloque break 

switch (opcao3)
{
    case 1:
       system("cls");
       lerBackUp = fopen("BackUp.txt", "r");
       if(lerBackUp == NULL)
       {
           printf("\a Arquivo nao encontrado!\n");
           getchar();
           /*exit(0);*/
           break;
        }

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!