Ir ao conteúdo
  • Cadastre-se
RenanMaia

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

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×