Ir ao conteúdo
  • Cadastre-se
F1rmeza

C !C Controle de Ingressos

Recommended Posts

Fala rapeize, beleza? Estava fazendo um trabalho para a faculdade e gostaria de saber o que vocês acharam do meu código. Quero saber o que devo e não devo usar, se o código está bom, se estou fazendo algo de errado, etc.

Nesse trabalho eu tinha que fazer com que o dono do programa registre um estadio, contendo nome, valor do ingresso e os respectivos descontos de acordo com o sexo da pessoa. Também é necessário informar a quantidade de cadeiras da fileira tribuna, onde o usuário vai poder reservar sua cadeira. Foi necessário criar um MENU com 4 opções, dentre elas: Verificação de Cadeiras, Efetuar Reserva, Cancelar Reserva, Confirmar Reserva e Resumo.

 

Código:

 

//Funções e Procedimento
void validaPorcentagemDesconto(float *valorIng, float *descontoM, float *descontoF);
void validaSexo(char *sexo);
float calculaIngresso(char sexo, float valorIng, float descontoM, float descontoF);


//Bibliotecas
#include<locale.h>
#include<stdio.h>
#include<conio2.h>


//Código Principal
main() {
    setlocale(LC_ALL, "portuguese");

    //Declarações
    int qtdeCad, numReserva;
    int indice;
    float valorIng, descontoM, descontoF;
    char estadio[10], cadeiras[10], id[10];
    char opcao, sexo, continuar;
    //Instruções
    indice=0;
    do {
        printf("#===================================================#\n");
        printf("\t\tREGISTRO DE ");
        textcolor(DARKGRAY);printf("ESTÁDIO\n");textcolor(WHITE);
        printf("#===================================================#");
        printf("\n\nPor favor, informe o nome do estádio: ");
        gets(estadio);
        system("cls");
        }
    while(strcmp(estadio, "")==0);
    do {
        printf("#===================================================#\n");
        printf("\t\tREGISTRO DE ");
        textcolor(DARKGRAY);printf("ESTÁDIO\n");textcolor(WHITE);
        printf("#===================================================#");
        printf("\n\nQuantidade de cadeiras da tribuna: ");
        scanf("%i", &qtdeCad);
        system("cls");
        }
    while(qtdeCad<5 || qtdeCad>=10);
    validaPorcentagemDesconto(&valorIng, &descontoM, &descontoF);
    do{
        cadeiras[indice]='D';
        indice=indice+1;
    }while(indice<qtdeCad);
    menu:
    gotoxy(31,1);printf("#========================================================#");
    gotoxy(31,2);printf("#                                                        #");
    gotoxy(31,3);printf("#                     MENU DE OPÇÕES                     #");
    gotoxy(31,4);printf("#                                                        #");
    gotoxy(31,5);printf("#========================================================#");
    gotoxy(35,7);printf("(1) Verificar Ocupações");gotoxy(65,7);printf("(2) Efetuar Reserva");
    gotoxy(35,9);printf("(3) Cancelar Reserva");gotoxy(65,9);printf("(4) Confirmar Reserva");
    gotoxy(35,11);printf("(5) Resumo Geral");
    opcao=getch();
    system("cls");
    switch(opcao){
        case '1':
            caso1:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                        OCUPAÇÕES                       #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,6);printf("       CADEIRA                               ESTADO       ");
            for(indice=0;indice<qtdeCad;indice++){
                if(cadeiras[indice]=='D'){
                    gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTGREEN);printf("%c       ", cadeiras[indice]);textcolor(WHITE);    
                }else
                    if(cadeiras[indice]=='R'){
                        gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(YELLOW);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                    }else
                        if(cadeiras[indice]=='C'){
                            gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTRED);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                        }
            }
            gotoxy(1,qtdeCad+8);printf("DESEJA RETORNAR AO MENU? (S)/(N)");
            continuar=getch();
            if(continuar=='s'){
                system("cls");
                goto menu;
            }else
                if(continuar=='n'){
                    system("cls");
                    goto caso1;
                }
        break;
        case '2':
            caso2:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                     EFETUAR RESERVA                    #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,6);printf("       CADEIRA                               ESTADO       ");
            for(indice=0;indice<qtdeCad;indice++){
                if(cadeiras[indice]=='D'){
                    gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTGREEN);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                }
            }
            textcolor(YELLOW);printf("\n\nInforme a CADEIRA que deseja reservar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            validaSexo(&sexo);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==indice && cadeiras[indice]=='D'){
                    cadeiras[indice]='R';
                    do{
                        id[indice]=rand() % 500;
                    }while(id[indice]<100);
                }
            }
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                    RESERVA EFETUADA                    #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,7);textcolor(WHITE);printf("          RESERVA");
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==indice){
                    gotoxy(34,8);textcolor(LIGHTGREEN);printf("         %i", id[indice]);textcolor(WHITE);
                }
            }
            sexo=toupper(sexo);
            gotoxy(70,7);printf("CADEIRA ");textcolor(LIGHTGRAY);gotoxy(73,8);printf("%i", numReserva);textcolor(WHITE);
            gotoxy(31,10);printf("#========================================================#");
            gotoxy(32,12);printf("          SEXO");textcolor(WHITE);gotoxy(34,13);printf("         %c", sexo);textcolor(WHITE);
            gotoxy(71,12);printf("VALOR ");textcolor(LIGHTGREEN);gotoxy(71,13);printf("R$%2.f", calculaIngresso(sexo, valorIng, descontoM, descontoF));textcolor(WHITE);
            gotoxy(31,14);printf("#========================================================#");
            gotoxy(31,15);printf("#========================================================#");
            gotoxy(1,16);printf("DESEJA EFETUAR UMA NOVA RESERVA? (S)/(N)");
            continuar=getch();
            if(continuar=='s'){
                system("cls");
                goto caso2;
            }else
                if(continuar=='n'){
                    system("cls");
                    goto menu;
                }
        break;
        case '3':
            caso3:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                     CANCELAR RESERVA                   #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            textcolor(YELLOW);printf("\n\nInforme o número da RESERVA que deseja cancelar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==id[indice] && cadeiras[indice]=='R'){
                    cadeiras[indice]='D';
                    system("cls");
                    gotoxy(31,1);printf("#========================================================#");
                    gotoxy(31,2);printf("#                                                        #");
                    gotoxy(31,3);printf("#            ");textcolor(LIGHTGREEN);printf("[!] RESERVA CANCELADA COM SUCESSO");textcolor(WHITE);printf("           #");
                    gotoxy(31,4);printf("#                                                        #");
                    gotoxy(31,5);printf("#========================================================#");
                    gotoxy(1,8);printf("DESEJA CANCELAR OUTRA RESERVA? (S)/(N)");
                    continuar=getch();
                    if(continuar=='s'){
                        system("cls");
                        goto caso3;
                    }else
                        if(continuar=='n'){
                            system("cls");
                            goto menu;
                        }
                }else
                    if(numReserva!=id[indice] && cadeiras[indice]!='R'){
                        system("cls");
                        goto caso3;
                    }
            }
        break;
        case '4':
            caso4:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                 CONFIRMAÇÃO DE RESERVA                 #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            textcolor(YELLOW);printf("\n\nInforme o número da RESERVA que deseja confirmar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==id[indice]){
                    cadeiras[indice]='C';
                    system("cls");
                    gotoxy(31,1);printf("#========================================================#");
                    gotoxy(31,2);printf("#                                                        #");
                    gotoxy(31,3);printf("#          ");textcolor(LIGHTGREEN);printf("[!] CONFIRMAÇÃO EFETUADA COM SUCESSO");textcolor(WHITE);printf("          #");
                    gotoxy(31,4);printf("#                                                        #");
                    gotoxy(31,5);printf("#========================================================#");
                    gotoxy(1,8);printf("DESEJA CONFIRMAR OUTRA RESERVA? (S)/(N)");
                    continuar=getch();
                    if(continuar=='s'){
                        system("cls");
                        goto caso4;
                    }else
                        if(continuar=='n'){
                            system("cls");
                            goto menu;
                        }
                }
            }
        break;
        case '5':
            //Instruções
        break;
    }
}

void validaPorcentagemDesconto(float *valorIng, float *descontoM, float *descontoF) {
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do ingresso: R$");
    scanf("%f", valorIng);
    system("cls");
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do desconto MASCULINO: %%");
    scanf("%f", descontoM);
    system("cls");
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do desconto FEMININO: %%");
    scanf("%f", descontoF);
    system("cls");
    }

void validaSexo(char *sexo){
    system("cls");
    gotoxy(31,1);printf("#========================================================#");
    gotoxy(31,2);printf("#                                                        #");
    gotoxy(31,3);printf("#                    INFORME SEU SEXO                    #");
    gotoxy(31,4);printf("#                                                        #");
    gotoxy(31,5);printf("#========================================================#");
    gotoxy(31,7);textcolor(YELLOW);printf("     (M) Masculino                        (F) Feminino");textcolor(WHITE);
    *sexo=getch();
    system("cls");
}

float calculaIngresso(char sexo, float valorIng, float descontoM, float descontoF){
    descontoM = descontoM/100;
    descontoF = descontoF/100;
    if(sexo=='m' || sexo=='M'){
        return (valorIng-(valorIng*descontoM));
    }else
        if(sexo=='f' || sexo=='F'){
            return (valorIng-(valorIng*descontoF));
        }
}
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@devair1010 Olá. Segue as funções q estão faltando:

typedef enum{ BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY,
LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE} COLORS;

static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;

void textcolor(int color) {
    __FOREGROUND = color;
    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ),
    color + (__BACKGROUND << 4));
}

void gotoxy(int x, int y) {
    COORD c = {x, y};
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c);
}

Pelo q percebi quando a gente escolhe para voltar ao menu o programa termina

adicionado 1 minuto depois

É preciso incluir o arquivo d cabeçalho <windows.h> e mudar para <conio.h>. Está como <conio2.h> e aqui não roda!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, giu_d disse:

Está como <conio2.h> e aqui não roda!

Existe uma biblioteca chamada conio2 por isso o do conio2.h. Tenho inclusive a conio21 >_<

Dentro tem um pdf explicando como usar >_<

adicionado 0 minutos depois

conio21.zip

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@vangodp Obrigado! Sinceramente não conhecia hehe

Já dei uma olhada e agora não se faz necessário incluir "na mão" as funções acima q passei

Mais uma q aprendo. Maravilha!

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

A biblioteca (ou arquivo de cabeçalho) <windows.h> contém declarações para todas as funções da API do Windows, todos os macros comuns utilizados pelos programadores do Windows, e todos os tipos de dados utilizados pelas várias funções e subsistemas. Essa API do Windows é mais conhecida como Win32 API

Possibilita você a fazer coisas como:

Criar janelas e botões.

Enumerar arquivos de um diretório.

Consultar informações sobre o sistema(eg processos, serviços, janelas).

Coisas do gênero.

Obs: Para dar uma resposta mais adequada como essa tive q pesquisar a respeito, pois não tinha "certeza" de q era p isso mesmo (devo ser sincero)

Se interessar conhecer um pouco mais a respeito, dá uma olhada nesse link:

https://docs.microsoft.com/pt-br/windows/desktop/apiindex/windows-api-list

Por exemplo: Para executar as funções q postei acima, tal como a função SetConsoleCursorPosition, o tipo de dado COORD, DWORD etc..

Segue um exemplo simples de um código para capturar o nome de usuário do Windows:

#include <stdio.h>
#include <windows.h>
#include <Lmcons.h>

int main() {

    char username[UNLEN + 1];
    DWORD size = UNLEN + 1;
    GetUserName(username, &size);

    printf("Nome de usuario: %s\n\n", username);

    return 0;
}

Essa é justamente a área q estou interessado em conhecer melhor e estudar a respeito, a API do Windows

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, F1rmeza disse:

@devair1010 Ela funciona com a biblioteca <conio2.h>

 

Sim, mas essa biblioteca não é padrão, é uma biblioteca de terceiros, então as pessoas tem que obter a biblioteca conio2.h para conseguir rodar o seu código.

  • 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

×