Pages

segunda-feira, 11 de julho de 2016

Sistema de controle de uma cantina usando estrutura Fila em c.

Sistema de controle de uma cantina usando estrutura Fila em c.

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define menuErro "\n\n\tOPCAO INVALIDA"
#define clienteN  "\n\n\tNAO CLIENTE CADASTRADO"
#define Erro_menu "\n\n\tOpcao Invalida"

struct No{
       char sexo, nome[20];
       struct No *prox;
};

struct Fila{
       struct No *first;
       struct No *last;
       struct No *item;       
};

int menu();
int subMenu();
void imprimirFila(struct No *f);
struct Fila *remover(struct Fila *f);
char menuSexo();
struct Fila *atender(struct Fila *f);
void dadosNaoAtendidos(int contM, int contF);
void dadosAtendidos(int totalAted, float totalCompra, float contLanche, float contRefri, float contChocolate);

int main(){
   
    struct Fila *f = (struct Fila *)malloc(sizeof(struct Fila));
    int opc,contM=0,contF=0,totalAted=0;
    float contLanche=0,contRefri=0,contChocolate=0,totalCompra=0;
    f->first = f->last = f->item = NULL;
    
    do{
        system("cls");
        opc = menu();
        switch(opc){
                    case 1:{  
                         struct No *nTemp = (struct No *)malloc(sizeof(struct No));
                         printf("Informe o Nome: ");                      
                         gets(nTemp->nome);
                         nTemp->sexo = menuSexo();
                         if (nTemp->sexo == 'M') 
                            contM++;                         
                         else
                            contF++; 
                         nTemp->prox = NULL;
                         
                         if(f->first == NULL & f->last == NULL){
                               f->first = nTemp;
                               f->item = nTemp;
                         }else if(f->last == NULL){
                               f->first->prox = f->last = nTemp;
                               f->item->prox = nTemp;
                         }else{
                               f->last->prox = nTemp;
                               f->last = f->last->prox; 
                         }
                         
                    }break;
                    
                    case 2:{
                         if(f->first == NULL){
                          system("cls");
                            printf(clienteN);            
                         }else{
                               system("cls");   
                               printf("\tCLIENTES NA FILA\n");   
                               imprimirFila(f->item);
                         }                         
                    }break;
                    
                    case 3:{
                    if(f->first == NULL && totalAted==0){
                    system("cls");
printf(clienteN);
}else{
                              dadosNaoAtendidos(contM,contF);
                              
if(totalAted>0){
                                dadosAtendidos(totalAted,totalCompra,contLanche,contRefri,contChocolate);
                             }
}                         
                    }break;
                    
                    case 4:{
                    int op,qtd=0;
                    if(f->first == NULL){
                    system("cls");
                    printf(clienteN);
}else{
     do{
                            system("cls");
                            op = subMenu();
                            switch(op){
                                     case 1:{
                                      printf("Informe a QTD. de lanches: ");
                                      scanf("%d",&qtd);
                                      getchar();
                                           contLanche+=qtd*6.00;
                                           totalCompra+=contLanche;
                                     }break;
                                     
                                     case 2:{
                                      printf("Informe a QTD. de Refrigerantes: ");
                                      scanf("%d",&qtd);
                                      getchar();
                                          contRefri+=qtd*4.50;
                                          totalCompra+=contRefri;
                                     }break;
                                     
                                     case 3:{
                                      printf("Informe a QTD. de Chocolate");
                                      scanf("%d",&qtd);
                                      getchar();
                                      contChocolate+=qtd*4.00;
                                           totalCompra+=contChocolate;
                                     }break;
                                     
                                     case 0: {
                                     
                                      if(f->item->sexo == 'M')
                                      contM--;
                                      else
                                      contF--;
                                      totalAted++;
                                      f = atender(f);
break;
 } 
                                     
                                     default :
                                           printf(menuErro);
                                             break;
                            }
                           
                                }while(op !=0);
}                         
                    }break;
                    
                    case 0:break;
                                        
                    default :
                            printf(menuErro);
                    break;
        }
        getchar();
    }while(opc !=0);
    
    return 0;   
}
int menu(){
    int opc;
    printf("\t\tBEM VINDOS AO ATENDIMENTO DA CANTINA\n\n");
    printf("1 - Entrar na Fila\n2 - Exibir Fila\n3 - Estatisticas\n4 - Atender\n0 - Sair: ");
    scanf("%d",&opc);
    getchar();  
    return opc;    
}

int subMenu(){
    int op;
    printf("\n\n\tInforme qual produto deseja adquirir");
printf("\n1 - Lanche\n2 - Refrigerante\n3 - Chocolate\n0 - Finalizar Atendimento: ");
scanf("%d",&op);
getchar();
    return op;   
    
}
void imprimirFila(struct No *f){
     if(f != NULL){
          printf("Nome: %s\nSexo: %c\n\n",f->nome,f->sexo);     
          imprimirFila(f->prox);
     }     
}

struct Fila *remover(struct Fila *f){
struct Fila *fTemp = f;
struct No *nTemp = fTemp->first;

f->first = f->item = nTemp->prox;

}
char menuSexo(){
char sexo;
do{
printf("\nInforme o sexo do Cliente\nM - Masculino\nF-Feminino: ");
sexo = toupper(getchar());
if(sexo != 'M' && sexo != 'F'){
printf(Erro_menu);
getchar();
}
}while(sexo != 'M' && sexo != 'F');

return sexo;
}
struct Fila *atender(struct Fila *f){
struct Fila *fTemp = f;
struct No *nTemp = fTemp->first;

f->first = f->item = nTemp->prox;
free(nTemp);

return f;
}
void dadosNaoAtendidos(int contM, int contF){
    system("cls");
printf("\tDADOS DOS CLIENTES DA FILA NAO ATENDIDOS\n");
printf("Total de Masculino: %d: ",contM);
printf("\nToal de Femenino: %d", contF); 
}

void dadosAtendidos(int totalAted, float totalCompra, float contLanche, float contRefri, float contChocolate){
   printf("\n\n\tDADOS DOS CLIENTES DA FILA ATENDIDOS\n");
   printf("\nTotal de Clientes Atendidos: %d\nValor Total %.2f\nTotal de Lanches: %.2f"
    "\nTotal de Refri: %.2f\nTotal de Chocolates: %.2f",totalAted,totalCompra,contLanche,contRefri,contChocolate);
 
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

0 comentários:

Postar um comentário