Ir ao conteúdo
  • Cadastre-se

Celsofc

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. @AdrianoSiqueira @AdrianoSiqueira @AdrianoSiqueiraé estou fazendo na mão mesmo sem IDE ... esse trabalho é pra faculdade venho trabalhando nele a mais de 1 semestre rsrsr .. valeu muito obrigado por ajudar..
  2. Amigo sou novato na programação preciso desse trabalho pra faculdade na compilação fala que o erro é ( [Erro] tipos conflitantes para 'produto' )
  3. /* Incluindo Blibiotecas que serão necessárias para o programa */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <time.h> char op; /* Variável global para capturar no qual gerencia o usuario quer entrar */ void getch(){ system("read b"); } /* Estrutura do tipo de 'Endereço' */ typedef struct{ char logradouro[10]; char complemento[20]; char cep[10]; char bairro[20]; char cidade[20]; char estado[3]; }End; /* Estrutura do tipo 'Cliente' junto com a estrutura de 'Endereço' */ typedef struct{ int codigo; char nome[30]; char cnpj[20], cpf[20]; char telefone[20]; End endereco; }Cli; /* Estrutura do Tipo Produto */ typedef struct{ int codigo; char nome[30]; char fornecedor[30]; char categoria[30]; int quant; float valorUnit; }Prod; /* Estrutura do tipo 'Pedido' junto com as estruturas 'Cliente' e 'Produto' */ typedef struct{ int codigo; int dia; int mes; int ano; Cli clienteQuePediu; Prod *produtoPedido; int *qdtProdutoPedido; int qdt; }Ped; /* Declaração da função 'Menu', que irá gerenciar o funcionamanto do programa */ void menu(); /* Declaração das funções que gerencia as ações relacionadas com os 'Clientes' */ void gerenciaDeClientes(Cli*, int*, FILE*); Cli cadastrarCliente(Cli, int); void listarCliente(Cli*, int); void ordenarClientePorOrdemAlfabetica(Cli*, int); void buscarCliente(Cli*, int); void atualizarCliente(Cli*, int); void excluirCliente(Cli*, int*); void imprimirCliente(Cli); /* Declaração das funções que gerencia as ações relacionamentos aos 'Produtos' */ void gerenciaDeProdutos(Prod*, int*, FILE*); Prod cadastrarProduto(Prod, int); void listarProdutosCadastrados(Prod*, int); void ordenarProdutoPorNome(Prod*, int); void filtrarCategoria(); void atualizarProdutoCadastrado(Prod*, int); void atualizarEstoqueProduto(Prod*,int); void imprimirProduto(Prod); /* Declaração das funções que gerencia as ações relacionamento aos 'Pedidos' */ void gerenciaDePedidos(Ped*, Cli*, Prod*, int*,int, int); void cadastrarPedido(Ped*, Cli*, Prod*, int*,int, int); void obterData(Ped*); void listarPedidosDeUmCliente(Ped*, int); void ordenarPedidosPorData(Ped*, int); void listarPedidosDeUmDia(Ped*, int); void ordenarPorNomeDoCliente(Ped*, int); void imprimirPedido(Ped); /*Função Principal*/ int main(){ FILE *arquivo; /* Decçaração de um Arquivo */ Prod *produto; /* Declaração de um ponteiro para a estrutura 'Produto' */ Cli *cliente; /* Declaração de um ponteiro para a estrutura 'Cliente' */ Ped *pedido; /* Declaração de um ponteiro para a estrutura 'Pedido' */ int contCliente = 0, contProduto = 0, contPedido = 0, /* Inicializando os contadores em '0' */ /*Alocando na memória para os ponteiros */ produto = calloc(10, sizeof(Prod)); cliente = calloc(10, sizeof(Cli)); pedido = calloc(10, sizeof(Ped)); /* Chamada da função 'Menu' */ menu(); do{ /*ciclo que irá controlar o funcionamaneto do programa */ switch(op){ case 'C': case 'c': gerenciaDeClintes(cliente, &contCliente, arquivo); break; case 'P': case 'p': gerenciaDeProdutos(produto, &contProduto, arquivo); break; case 'E': case 'e': gerenciaDePedidos(pedido, cliente, produto, &contPedido, contCliente, contProduto); break; case 'S': case 's': exit(1); default: printf(" COMANDO INVADILO!!\n Entre com o comando Novamnte\n"); sleep(3); system("clear"); menu(); } }while(1); return 0; }/* Fim da função principal*/ /* Código da função 'Menu' */ void menu(){ printf("=======Menu de Gerenciamento=======\n"); printf("C - Gerenciar Clientes\n"); printf("P - Gerenciar Produtos\n"); printf("E - Gerenciar Pedidos\n"); printf("S - Sair\n"); printf("Digite um Comando para Prosseguir: "); scanf(" %c",&op); system("clear"); } /* Código da função que gerencia os Clientes */ void gerenciaDeClientes(Cli *cliente, int *contCliente, FILE *arquivo){ char opcao; do{ printf("=======Gerenciar Clientes=======\n"); printf("C - Cadastrar Cliente\n"); printf("L - Listar Clientes Cadastrados\n"); printf("B - Buscar Cliente Cadastrado\n"); printf("A - Atualizar Cliente Cadastrado\n"); printf("B - Excluir Cliente Cadastrado\n"); printf("Digite um Comando para Prosseguir: "); scanf(" %c",&opcao); system("clear"); switch(opcao){ case 'C': case 'c': arquivo = fopen("Força de Vendas.txt,","a+"); if(arquivo == NULL){ printf("Não foi possivel abrir o arquivo."); return; } printf("===== Cadastro de Cliente=====\n"); cliente[*contCliente] = cadastrarCliente(cliente[*contCliente], 0); fprinf(arquivo, " %d; %s; %s; %s; %s; %s; %s; %s; %s; %s; %s\n", cliente[*contCliente].codigo, cliente[*contCliente].nome, cliente[*contCliente].cnpj, cliente[*contCliente].cpf, cliente[*contCliente].telefone, cliente[*contCliente].endereco.logradouro, cliente[*contCliente].endereco.complemento, cliente[*contCliente].endereco.cep, cliente[*contCliente].endereco.bairro, cliente[*contCliente].endereco.cidade, cliente[*contCliente].endereco.estado); fclose(arquivo); *contCliente+=1; if(*contCliente == 10) cliente = realloc(cliente, (*contCliente +1) * sizeof(Cli)); break; case 'L': case 'l': listarCliente(cliente, *contCliente); break; case 'B': case 'b': buscarCliente(cliente, *contCliente); break; case 'A': case 'a': atualizarCliente(cliente, *contCliente); break; case 'E': case 'e': excluirCliente(cliente, *contCliente); break; default: printf(" !!OPCAO INVALIDA!!\n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Função que Cadastra um Cliente */ Cli cadastrarCliente(Cli cliente, int identificador){ char opcao; char codigoCliente[10]; do{ printf("Codigo do Clienete: "); scanf(" %s", codigoCliente); cliente.codigo =atoi(codigoCliente); if(identificador == 0){ if(cliente.codigo == 0){ printf("\n !!CODIGO INVADIDO!!\n Apenas numeros para o Codigo\n"); sleep(3); system("clear"); printf("=====Cadastro de Cliente=====\n"); continue; } } else{ if(cliente.codigo == 0 && strlen(codigoCliente) > 0){ printf("!!CODIGO INVALIDO!!\n Apenas Numeros para o Codigo\n"); sleep(3); system("clear"); continue; } } break; }while(1); printf("Nome do Cliente: "); scanf(" %[^\n]s", cliente.nome); do{ printf("Pessoa: Fisica(F), Juridica(J): "); scanf("%c", &opcao); switch(opcao){ /* swith case para determinar qual indentificador do Usuário */ case 'F': case 'f': printf("CPF do Cliente: "); scanf(" %[^\n]", cliente.cpf); break; case 'J': case 'j': printf("CNPJ do Cliente: "); scanf(" %[^\n]", cliente.cnpj); break; default: printf("\n !!ATENCAO!!\n Digite (F) para pessoa Fisica ou (J) para pessoa Juridica\n\n"); continue; } break; }while(1); printf(" Telefone do Cliente: "); scanf(" %[^\n]s",cliente.telefone); printf("\n Endereco do Cliente: "); scanf(" %[^\n]s", cliente.endereco); printf("\n Logradouro: "); scanf(" %[^\n]s", cliente.endereco.logradouro); printf("\n Complemento: "); scanf(" %[^\n]s", cliente.endereco.complemento); printf("\n CEP: "); scanf(" %[^\n]s", cliente.endereco.cep); printf("\n Bairro: "); scanf(" %[^\n]s", cliente.endereco.bairro); printf("\n Cidade: "); scanf(" %[^\n]s", cliente.endereco.cidade); printf("\n Estado: "); scanf(" %[^\n]s", cliente.endereco.estado); if(identificador == 0){ printf("\n Cadastro Realizado Com Sucesso!\n"); sleep(3); system("clear"); menu; } return cliente; } /*Função que lista um cliente selecionado */ void listarCliente(Cli *cliente, int contCliente){ int i; if(contCliente == 0){ printf(" !!ERRO!!\n Nenhum Cliente Cadastrado\n"); sleep(3); system("clear"); menu; return; } /* A função irá ordenar os Clientes em ordem Alfabética */ ordenarClientePorOrdemAlfabetica(cliente, contCliente); printf("Lista de Clientes Cadastrados\n\n "); for(i=0; i<contCliente; i++) /*Ciclo que procura e imprime um Cliente */ imprimirCliente(cliente[i]); getch(); system("clear"); menu(); /* Chamando a função 'Menu' ao final da função 'ListaCliente' */ } /* Códio da função que ordena os Clientes em Ordem alfabetica */ void ordenarClientePorOrdemAlfabetica(Cli *cliente, int contCliente){ /* algoritmo de oedenaçãp foi usado o insertion sort */ int i, j, marcador; Cli aux; for(i=1; i<contCliente; i++){ aux = cliente[i]; j = i-1; do{ marcador = 0; if(strcmp(cliente[j].nome, aux.nome) > 0){ cliente[j+1] = cliente[j]; j--; marcador = 0; } if(j < 0) marcador = 0; }while(marcador); cliente[j+1] = aux; } } /*Função que imprime os dados do Cliente passando por parâmetros */ void imprimirCliente(Cli cliente){ printf("Codigo: %d\n", cliente.codigo); printf("Nome: %s\n", cliente.nome); if(strlen(cliente.cnpj) == 0); printf("CPF: %s\n", cliente.cpf); printf("CNPJ: %s\n", cliente.cnpj); printf("Telefone: %s\n", cliente.telefone); printf("Endereco: Logradouro %s / Complemento %s\n", cliente.endereco.logradouro, cliente.endereco.complemento); printf("CEP: %s\n", cliente.endereco.cep); printf("Bairro: %s\n", cliente.endereco.bairro); printf("Cidade: %s\n", cliente.endereco.cidade); printf("Estado: %s\n", cliente.endereco.estado); } /* Função que Busca um Cliente Selecionado */ void busucarCliente(Cli *cliente, int contCliente){ int i, marcador=0; int codigoCliente; char nomeCliente[30]; printf(" Digite o Nome ou Codigo do Cliente que deseja Buscar: "); scanf(" %[^\n]s", nomeCliente); printf("\n"); codigoCliente = atoi(nomeCliente); for(i=0; i<contCliente; i++){ if(cliente[i].codigo == codigoCliente || strcmp(cliente[i].nome, nomeCliente) == 0){ imprimirCliente(cliente[i]); getch(); marcador = 1; break; } } if(!marcador){ printf(" !!ERRO!!\n Cliente nao Cadastrado\n"); sleep(3); } sytem("clear"); menu(); /* Chamando a função 'Menu' depois de ter Buscado um Cliente */ } /* Função que busca e atualiza os dados de Cliente */ void atualizaCliente(Cli *cliente, int contCliente){ int codigo, i, marcador = 0; Cli aux; char codigoCliente[10]; do{ printf("Codigo do Cliente que deseja Atualizar: "); scanf(" %s", contCliente); codigo = atoi(codigoCliente); if(codigo == 0){ printf("\n !!ERRO!! \n Apenas numeros para o Codigo\n"); sleep(3); system("clear"); continue; } break; }while(1); for(i=0; i<contCliente; i++){ if(cliente[i].codigo == codigo){ marcador = 1; break; } } if(!marcador) printf("\n !!ERRO!! \n Cliente nao cadastrador\n"); else{ printf("\n Entre com os Dados Atualizados\n"); aux = cadastrarCliente(aux, -1); if(aux.codigo > 0) cliente[i].codigo, aux.codigo; if(strlen(aux.nome) > 0) strpy(cliente[i].nome, aux.nome); if(strlen(aux.cpf) > 0) strpy(cliente[i].cpf, aux.cpf); if(strlen(aux.cnpj) > 0) strpy(cliente[i].cnpj, aux.cnpj); if(strlen(aux.telefone) > 0) strpy(cliente[i].telefone, aux.telefone); if(strlen(aux.endereco.logradouro) > 0) strpy(cliente[i].endereco.logradouro, aux.endereco.logradouro); if(strlen(aux.endereco.complemento) > 0) strpy(cliente[i].endereco.complemento, aux.endereco.complemento); if(strlen(aux.endereco.cep) > 0) strpy(cliente[i].endereco.cep, aux.endereco.cep); if(strlen(aux.endereco.bairro) > 0) strpy(cliente[i].endereco.bairro, aux.endereco.bairro); if(strlen(aux.endereco.cidade) > 0) strpy(cliente[i].endereco.cidade, aux.endereco.cidade); if(strlen(aux.endereco.estado) > 0) strpy(cliente[i].endereco.estado, aux.endereco.estado); printf("\n Cliente Atualizado Com Sucesso\n"); } sleep(3); system("clear"); menu(); /* Chama a função 'Menu' ao final da função Atualizada */ } /*Função que exclui um Cliente selecionado*/ void excluirCliente(Cli *cliente, int *contCliente){ int codigo, i, marcador=0; printf("Codigo do Cliente que deseja Excluir: "); scanf(" %d", &codigo); for(i=0; i<*contCliente; i++){ /* Laço que verifica se o cliente existe */ if(cliente->codigo == codigo){ marcador = 1; break; } } if(!marcador) printf("\n !!ERRO!! \n Cliente nao Cadastrado"); else{ /* Se existi, o cliente será Sobrescrito e será excluido */ for(i; i<*contCliente; i++) cliente[i] = cliente[i+1]; *contCliente -=1; printf("\n Cliente Excluido com Sucesso\n"); } sleep(2); system("clear"); menu(); /* Chamando a função 'Menu' ao final da função ExcluirCliente */ } /* Código da função que gerencia as ações relacionadas aos produtos */ void gerenciamentoDeProdutos(Prod *produto, int* contProduto, FILE *arquivo){ char opcao; do{ printf("============== Gerenciamento de Produtos ==============\n"); printf("C - Cadastrar um Produto\n"); printf("L - Listar todos os Produtos Cadastrados\n"); printf("B - Buscar Produto ja Cadastrados\n"); printf("A - Atualizar um Produto Cadastrado\n"); printf("S - Atualizar estoque de um Produto\n"); printf("\n Digite uma opcao para Prosseguir\n"); scanf(" %c%*c", &opcao); system("clear"); switch(opcao){ case 'C': case 'c': arquivo = fopen("Força de Vendas.txt", "a+"); if(arquivo == NULL) { printf("Nao foi possivel abrir o arquivo"); return; } printf("========== Cadastro de Produtos\n"); produto[*contProduto] = cadastrarProduto(produto[*contProduto], 0); fprintf(arquivo, "%d; %s; %s; %s; %d; %.2f\n"), produto[*contProduto].codigo, produto[*contProduto].nome, produto[*contProduto].fornecedor, produto[*contProduto].categoria, produto[*contProduto].quant, produto[*contProduto].valorUnit; fclouse(arquivo); *contProduto +=1; if(*contProduto == 10) produto = realloc(produto, (*contProduto+1) * sizeof(Prod)); break; case 'L': case 'l': listarProdutosCadastros(produto, *contProduto); break; case 'B': case 'b': buscarProdutoCadastro(produto, *contProduto); break; case 'A': case 'a': atualizarProdutoCadastro(produto, *contProduto); break; case 'S': case 's': atualizarEstoqueCadastro(produto, *contProduto); break; default: printf(" !!OPCAO INVALIDA!!\n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Código da função de Cadastro de um Produto */ Prod cadastrarProduto(Prod produto, int identificador){ char aux[15]; do{ printf("Codigo do Produto: "); scanf(" %10s", aux); produto.codigo = atoi(aux); if(identificador == 0){ if(produto.codigo == 0){ printf("\n !!CODIGO INVALIDO!! \n Apenas numeros para Codigo\n"); sleep(2); system("clear"); printf("============ Cadastro de Produtos ===========\n"); continue; } } else{ if(produto.codigo == 0 && strlen(aux) > 0){ printf("\n !!CODIGO INVAVIDO \n Apenas numeros para Codigo\n"); sleep(3); system("clear"); continue; } } break; }while(1); printf("Nome do Produto: "); scanf(" %[^\n]s", produto.nome); printf("Fornecedor: "); scanf(" %[^\n]s", produto.fornecedor); printf("Categoria: "); scanf(" %[^\n]s",produto.categoria); if(identificador == 0){ printf("Quantidade: "); scanf(" %s", &produto.quant); } do{ printf("Valor Unitario: "); scanf(" %s", aux); produto.valorUnit = atof(aux); if(identificador == 0){ if(produto.valorUnit == 0){ printf("\n !!VALOR UNITARIO INVALIDO!! \n Apenas Numeros para valor Unitario\n"); sleep(3); system("clear"); continue; } } else{ if(produto.valorUnit == 0 && strlen(aux) > 0){ printf("\n !!VALOR UNITARIO INVALIDO!! \n Apenas numeros para valor Unitario\n"); sleep(3); system("clear"); continue; } } break; }while(1); if(identificador == 0){ printf("\n Porduto cadastrado com Sucesso\n"); sleep(3); system("clear"); menu(); } return produto; } /* Função que Lista os Produtos que estão Cadastrados */ void listarProdutosCadastrados(Prod *produto, int contProduto){ char filtar; /* Chamando função para Ordenar Produtos por Nome */ ordenarProdutoPorNome(produto, contProduto); printf("Deseja Filtar por Categoria [S/N]: "); switch(filtar){ /* Switch Case para verificar com o usuário se deseja Listar os Produtos */ case 'S': case 's': filtarCategoria(produto, contProduto); break; case 'N': case 'n':{ int i; printf("\n"); if(contProduto > 0){ for(i=0; i<contProduto; i++) imprimirProduto(produto[i]); getch(); } else{ printf("\n !!ERRO!! \n Nenhum Cliente Cadastrado\n"); sleep(3); } break; } } system("clear"); menu(); /* Chamando a Função 'Menu' */ } /* Função que Filtra a categoria do Produto para Imprimir-lo */ void filtarCategoria(Prod *produto, int contProduto){ int i, j=0, indiceMesmaCategoria[30]; char categoria[30]; printf("Deseja visualizar os Produtos de qual Categoria: "); scanf(" %s", categoria); printf("\n"); for(i=0; i<contProduto; i++){ if(strcmp(produto[i].categoria, categoria) ==0) indiceMesmaCategoria[j++] = i; } if(!j){ print("\n !!ERRO!! \n Categoria nao Cadastrada\n"); sleep(3); } else{ for(i=0; i<j; i++) imprimirProduto(produto[indiceMesmaCategoria[i]]); getch(); } } /*função que Ordena Produtos por Nome */ void ordenarProdutoPorNome(Prod *produto, int contProduto){ int i, j, marcador; Prod aux; for(i=1; i<contProduto; i++){ aux = produto[i]; j = i-1; do{ marcador = 0; if(strcmp(produto[j].nome, aux.nome) > 0){ produto[j+1] = produto[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); produto[j+1] = aux; } } /* Função que busca um Produto Cadastrado */ void buscarProdutoCadastrado(Prod *produto, int contProduto){ int codigoProduto; char nomeProduto[30]; int i, marcador = 0; printf("Digite o Nome do Produto que deseja Buscar: "); scanf(" %[^\n]s", nomeProduto); printf("\n"); codigoProduto = atoi(nomeProduto); for(i=0; i<contProduto; i++){ /* Laço que Busca e imprime o Produto solicitado pelo usuário */ if(produto[i].codigo == codigoProduto || strcmp(produto[i].nome, nomeProduto) == 0){ imprimirProduto(produto[i]); marcador=1; getch(); break; } } if(!marcador){ printf(" !!ERRO!! \n Produto nao Cadastrado!!\n"); sleep(3); } system("clear"); menu(); /* Chamando a função 'Menu' */ } /* Função que Imprime um Produto */ void imprimirProduto(Prod produto){ printf("Codigo: %d\n", produto.codigo); printf("Nome: %s\n", produto.nome); printf("Categoria: %s\n", produto.categoria); printf("Fornecedor: %s\n", produto.fornecedor); printf("Quantidade: %d\n", produto.quant); printf("Valor Unitario: %.2f\n\n", produto.valorUnit); } /* Função que atualiza um Produto já Cadastrado */ void AtualizarProdutoCadastrado(Prod *produto, int contProduto){ Prod aux; int i, marcador=0; printf("Digite o Codigo do Produto que deseja Atualizar: "); scanf(" %d", &aux.codigo); for(i=0; i<contProduto; i++){ if(produto[i].codigo == aux.codigo){ marcador=1; break; } } if(!marcador) printf("\n !!ERRO!! \n Produto nao Cadastrado!!!\n"); else{ printf("\n Entre com os Dados Atualizados\n"); aux = cadastrarProduto(aux, -1); if(aux.codigo > 0) produto[i].codigo = aux.codigo; if(strlen(aux.nome) > 0) strcpy(produto[i].nome, aux.nome); if(strlen(aux.fornecedor) > 0) strcpy(produto[i].fornecedor, aux.fornecedor); if(strlen(aux.categoria) > 0) strcpy(produto[i].categoria, aux.categoria); if(aux.valorUnit > 0) produto[i].valorUnit = aux.valorUnit; printf("\n Produto Atualizado Com Sucesso\n"); } sleep(3); system("clear"); menu(); /*Chamando a função 'Menu' */ } /* Função que atualiza o estoque de um Produto */ void atualizarEstoqueDeProduto(Prod *produto, int contProduto){ int codigo, i, marcador=0; printf("Digite o Codigo do Produto que tera seu estoque atualizado: "); scanf(" %d", &codigo); for(i=0; i<contProduto; i++){ if(produto[i].codigo == codigo){ printf("Digite o estoque a ser atualizado: "); scanf(" %d", &produto[i].quant); marcador=1; printf("\n Estoque Atualizado com Sucesso\n"); break; } } if(!marcador) printf("\n !!ERO!! \n Produto nao Cadastrado\n"); sleep(3); system("clear"); menu(); /* Chamada da função 'Menu' */ } /* Código da função que gerencia as ações relacionadas a Pedidos */ void gerenciadorDePedidos(Ped *pedido, Cli *cliente, Prod *produto, int *contPedido, int contCliente, int contProduto){ char opcao; do{ printf("=============== Gerenciador de Pedidos ===============\n"); printf("C - Cadastrar um Pedido\n"); printf("L - Listar todos os Pedidos de um Cliente\n"); printf("D - Listar todos os Pedidos de um dia Especifico\n"); printf("\n Digite uma opcao para Processeguir: "); scanf(" %c,", &opcao); system("clear"); switch(opcao){ case 'C': case 'c': cadastrarPedido(pedido, cliente, produto, contPedido, contCliente, contProduto); break; case 'L': case 'l': listarPedidoDeUmDiaCliente(pedido, *contPedido); break; case 'D': case 'd': listarPedidoDeUmDia(pedido, *contPedido); break; default: printf(" !!OPCAO INVALIDA!! \n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Código da função que Cadastra um Pedido */ void cadastrarPedido(Ped *pedido, Cli *cliente, Prod *produto, int *contPedido, int contCliente, int contProduto){ char nomeCliente[30]; int codigoCliente, marcador=0; int codidoProdutoParaCadastro; int qdtProduto; int i, j, auxindice=0; char opcao; printf(" ============== Cadastro de Pedidos ===============\n"); printf("Digite o Codigo ou Nome do Cliente que esta Fazendo o Pedido: "); scanf(" %[^\n]s", nomeCliente); codigoCliente = atoi(nomeCliente); /* Convertendo a string em inteiro */ for(i=0; i<contCliente; i++){ if(codigoCliente == cliente[i].codigo || strcmp(cliente[i].nome, nomeCliente) == 0){ pedido[*contPedido].clienteQuePediu = cliente[i]; marcador = 1; break; } } if(!marcador && strlen(nomeCliente) !=0){ printf("\n !!ERRO!! \n Cliente nao Encontrado\n"); sleep(3); system("clear"); menu(); return; } printf(" Digite a quantidade de Produtos que deseja Pedir: "); scanf(" %d", &pedido[*contPedido].qdt); pedido[*contPedido].produtoPedido = malloc(pedido[*contPedido].qdt * sizeof(Ped)); pedido[*contPedido].qdtProdutoPedido = malloc(pedido[*contPedido].qdt * sizeof(int)); do{ /* Laço que captura o Pedido do Cliente */ marcador = 0; for(i=auxindice; i<pedido[*contPedido].qdt; i++){ printf("Digite o Codigo do Produto para Cadastro: "); scanf(" %d", &codidoProdutoParaCadastro); for(j=0; j<contProduto; j++){ if(produto[j].codigo == codidoProdutoParaCadastro){ printf("Digite o Codigo do Produto para Cadastro: "); scanf(" %d", &qdtProduto); pedido[*contPedido].produtoPedido[i] = produto[j]; pedido[*contPedido].qdtProdutoPedido[i] = qdtProduto; marcador = 1; break; } } if(!marcador){ printf("\n !!ERRO!! \n Produto nao Encontrado\n"); printf(" O Pedido sera descartado; ou Deseja digitar Novamente outro Codigo de Produto [S/N]"); scanf(" %c", &opcao); auxindice = 1; system("clear"); break; } } }while(opcao == 'S' || opcao == 's'); if(opcao == 'N' || opcao == 'n'){ printf("Pedido nao Cadastrado\n"); sleep(3); } else{ obterData(&pedido[*contPedido]); *contPedido +=1; if(*contPedido ==10) pedido = realloc(pedido, (*contPedido +1) * sizeof(Ped)); printf("\n Pedido Cadastrado Com Sucesso\n"); sleep(2); } system("clear"); menu(); } /* Função que usa a Blibioteca 'time.h' para implantar a data */ void obterData(Ped *pedido){ time_t t = time(NULL); struct tm data = *localtime(&t); pedido->ano =data.tm_year + 1900; pedido->mes =data.tm_mon + 1; pedido->dia =data.tm_mday; } /* Função que lista os pedidos de um cliente */ void listatPedidosDeUmCliente(Ped *pedido, int contPedido){ char nomeCliente[30]; int codigoCliente; int i, marcador=0; printf("Digite o codigo ou nome do cliente para visualizar seus pedidos: "); scanf(" %[^\n]s", nomeCliente); system("clear"); codigoCliente = atoi(nomeCliente); for(i=0; i<contPedido; i++){ /* Ciclo que encontra, ordena e imprime o pedido solicitado */ if(pedido[i].clienteQuePediu == codigoCliente || strcmp(pedido[i].clienteQuePediu, nomeCliente) == 0){ ordenarPedidosPorData(pedido, contPedido); /* Chamando a função que ordena os pedidos por dia */ imprimirPedido(pedido[i]); getch(); marcador = 1; break; } } if(!marcador){ /* Se a variavl marcador não tiver sido incrementado, o pedido não foi encontrado */ printf(" !!ERRO!!\n Nenhum pedido cadastrado para esse cliente\n"); sleep(3); } system("clear"); menu(); } /* Codigo da função que ordena pedidos por data*/ void ordenaPedidoPorData(Ped *pedido, int contPedido){ int i, j, marcador; Ped aux; for(i=1; i<contPedido; i++){ /* laço que ordena por ano */ aux = pedido[i]; j = i-1; do{ marcador = 0; if(pedido[j].ano > aux.ano); pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j+1] = aux; } for(i=1; i<contPedido; i++){ /* laço que ordena por ano */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(pedido[j].mes > aux.mes && pedido[j].ano){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } for(i=1; i<contPedido; i++){ /* Laço que ordena por dia */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(pedido[j].dia > aux.dia && pedido[j].ano){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } } /* Função que imprime um pedido */ void imprimirPedido(Ped pedido){ int i; printf("Nome do Cliente: %s\nPEDIDOS", pedido.clienteQuePediu.nome); for(i=0; i<contPedido; i++){ printff("Produto: %s\n", pedido.produtoPedido[i].nome); printff("Quantidade: %d\n", pedido.qdtProdutoPedido[i]); } printff("\n=================================\n"); } /* Codigo de Função que lista todos os pedidos feitos em um dia */ void listaPedidoDeUmDia(Ped *pedido, int contPedido){ int i, dia, mes, ano, marcador = 0; char d[3]; char m[3]; char a[5]; printf(" Para visualizar todos os pedidos de uma determinado data entre com a data OBS:(apenas numeros)\n"); printf("Dia: "); scanf(" %s", d); printf("Mes: "); scanf(" %s", m); printf("Ano: "); scanf(" %s", a); system("clear"); dia = atoi(d); mes = atoi(m); ano = atoi(a); ordenarPorNomeCliente(pedido, contPedido); /* Função que ordena os pedidos por nome dos Clientes */ for(i=0; i<contPedido; i++){ if(pedido[i].ano == ano && pedido[i].mes && pedido[i].dia){ imprimirPedido(pedido[i]); marcador = i; } } if(!marcador){ printf("\n !!Nenhum pedido cadaastrado nesse dia!!\n"); sleep(3); } else getch(); system("clear"); menu(); } /* Codigo da Função que ordena os pedidos pelo nome dos clientes */ void ordenarPorNomeCliente(Ped *pedido, int contPedido){ int i, j, marcador; Ped aux; for(i=1; i<contPedido; i++){ /* laço que faz a busca e ordenação */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(strcmp(pedido[j]).clienteQuePediu.nome, aux.clienteQuePediu.nome) > 0){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } } /* Fim do Programa */

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