Ir ao conteúdo
  • Cadastre-se

C !C Controle de Ingressos


F1rmeza

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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!

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!