Advertisement
Jkljk

TRABALHO 1 - sistema CRUD (create, read, update, delete) Sistemas de Controle de Estoque para o site Ali-IFB

Sep 29th, 2020 (edited)
1,130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 13.29 KB | None | 0 0
  1.  
  2. /**********************************
  3. Neste trabalho será feito um sistema de controle de estoque de um grande
  4. site de vendas online, o site Ali-IFB (não tão grande assim…). Neste sistema será
  5. possível cadastrar novos produtos, Consultar produtos, atualizar informações sobre
  6. os produtos já existentes e remover (vender) estes produtos. Ou seja criaremos um
  7. sistema CRUD (Create, Read, Update and Delete) para a entrada e saída de
  8. produtos do site Ali-IFB.
  9. Para construí-lo precisamos entender quais informações precisaremos
  10. armazenar em um dado produto. Um produto é composto por:
  11. ● Nome do produto (Máximo de 50 caracteres);
  12. ● País de Origem (Máximo de 50 caracteres);
  13. ● Quantidade de itens;
  14. ● Código simplificado formado por 8 caracteres no padrão “PPIFBDDD”,
  15. onde:
  16. ○ PP: dois primeiros caracteres do país de origem em Maiúsculo;
  17. ○ IFB: aparece em todos os produtos os três caracteres: “IFB”;
  18. ○ DDD: código de três dígitos variando de 000 a 999 de acordo
  19. com a ordem de registro de produtos.
  20. Exemplo de Código: “BRIFB003” significa que é um produto feito no
  21. Brasil e foi o terceiro produto a ser cadastrado no sistema.
  22.  
  23. Cadastrar novo produto
  24. Ao selecionar a opção de n° 1 o programa deve cadastrar um novo produto
  25. recebendo do usuário as seguintes informações (Além das seguintes mensagens
  26. para o usuário):
  27. ● Nome do produto:
  28. ● País de origem:
  29. ● Quantidade de itens:
  30. Após isso deve ser gerado um novo código de acordo com a ordem de
  31. registro do produto.
  32.  
  33. Atualizar informações de um produto
  34. Ao selecionar a opção de n° 2 o programa deve receber como entrada o
  35. código do produto. Caso não encontre o produto deve-se emitir a mensagem
  36. “Código inválido!” e voltar ao menu principal.
  37. 1. Alterar nome: O produto recebe um novo nome para o produto;
  38. 2. Alterar país de origem: O produto recebe um novo país de origem;
  39. 3. Adicionar mais itens: O produto recebe uma quantidade de itens a ser
  40. adicionado ao estoque atual.
  41. Obs.: Deve-se atualizar o código do produto nos caracteres de país de
  42. origem, caso seja alterado o país de origem do produto. Caso permaneça o mesmo
  43. país de origem, não deve ser alterado o código.
  44.  
  45. Vender Produto
  46. Ao selecionar a opção de n° 3 deve-se receber como entrada o código do
  47. produto. Caso não encontre o produto deve-se emitir a mensagem “Código
  48. inválido!” e voltar ao menu principal. Caso o encontre deve-se receber a
  49. quantidade de itens a serem vendidas.
  50. ● A quantidade de itens a ser vendido deve ser maior ou igual a zero e
  51. não deve ser maior que o estoque disponível. Caso seja negativo,
  52. deve-se emitir a mensagem: “Valor inválido, digite novamente” e
  53. receber uma nova quantidade. Caso seja maior, deve-se emitir a
  54. mensagem “Não existem itens suficientes para este produto” e
  55. receber uma nova quantidade.
  56. Após a venda do produto deve-se voltar ao menu principal.
  57.  
  58. Consultar informações de um produto
  59. Ao selecionar a opção de n° 4 deve-se receber como entrada o código do
  60. produto. Caso não encontre o produto deve-se emitir a mensagem “Código
  61. inválido!” e voltar ao menu principal. Caso o encontre deve-se exibir todas as
  62. informações contidas deste produto.
  63.  
  64. Consultar quantidade de todos os produtos
  65. Ao selecionar a opção de n° 5 deve-se exibir todos os produtos (Código de
  66. Barras e quantidade de itens), um em cada linha.
  67. *********************************/
  68.  
  69.  
  70. #include "estruturas.h"
  71. #include "converte.h"
  72.  
  73.  
  74.  
  75. int main()
  76. {
  77.     int ax = 20;
  78.     int controlle =0;
  79.     int estoque = 0;
  80.     int verifica=0;
  81.     int inteiros[qtd];
  82.     int aux_vendas=0;
  83.     int ordem_produto=0;
  84.     int opcao1=0, opcao2=0;
  85.     int qtdProdutos=0, qtdAdicional=0;
  86.     char aux_pp[3], nomePais[50], Codigo_aux[8], aux_codigo[8];
  87.     char DDD_AUX[size];
  88.  
  89.     for(int i=0; i<size; i++)
  90.     {
  91.         if(i==size-1){
  92.  
  93.         }
  94.         else
  95.         {
  96.             DDD_AUX[i] = ' ';
  97.         }
  98.     }
  99.  
  100.     do
  101.     {
  102.         puts("+----------------------------------------------------------------------+");
  103.         puts("|     CONTROLE DE ESTOQUE ALI-IFB                                      |");
  104.         puts("|     1-cadastrar novo produto;                                        |");
  105.         puts("|     2-atualizar informacoes de um produto;                           |");
  106.         puts("|     3-vender produto                                                 |");
  107.         puts("|     4-consultar informacoes de um produto;                           |");
  108.         puts("|     5-consultar quantidade de todos produtos;                        |");
  109.         puts("|     6-finalizar programa;                                            |");
  110.         puts("+----------------------------------------------------------------------+");
  111.         puts("\nseleciona a opcao desejada: \n");
  112.         scanf("%d",&opcao1);
  113.         switch(opcao1)
  114.         {
  115.         case 1:
  116.             if(estoque<20)
  117.             {
  118.                 getchar();
  119.                 printf("\nnome do produto: ");
  120.                 scanf("%[^\n]s",&produto[qtdProdutos].nome_produto);
  121.                 getchar();
  122.  
  123.                 printf("\npais de origem: ");
  124.                 scanf("%[^\n]s",&nomePais);//variavel auxiliar pra receber o nome do pais e assim pegar seu codigo PP
  125.                 strcpy(produto[qtdProdutos].pais_origem, nomePais);
  126.                 getchar();
  127.                 printf("\nqtd de itens: ");
  128.                 scanf("%d",&produto[qtdProdutos].qtd_items);
  129.  
  130.                 for(int i=0; i<2; i++)
  131.                 {
  132.                     aux_pp[i] = toupper(aux_pp[i] = nomePais[i]);//pegando as duas primeiras iniciais do pais de origem e tornando em maiusculo
  133.                 }
  134.                 strcpy(produto[qtdProdutos].PP,aux_pp);
  135.                 strcpy(Codigo_aux, aux_pp);
  136.                 strcat(Codigo_aux, "IFB");
  137.                 strcpy(produto[qtdProdutos].codigo,Codigo_aux);
  138.  
  139.                 cria_codigo(ordem_produto, DDD_AUX);
  140.  
  141.                 strcat(produto[qtdProdutos].codigo,DDD_AUX);
  142.                 printf("\n");
  143.                 inteiros[qtdProdutos] = ordem_produto;
  144.  
  145.  
  146.  
  147.                 qtdProdutos = qtdProdutos + 1;
  148.                 ordem_produto = ordem_produto + 1;
  149.                 estoque = estoque + 1;
  150.             }
  151.             else{
  152.                 printf("\nNao e possivel adicionar mais produtos no estoque\n");
  153.             }
  154.             break;
  155.         case 2:
  156.             controlle = 0;
  157.             printf("\ndigite o codigo do produto: ");
  158.             scanf("%s",&aux_codigo);
  159.             for(int i=0; i<qtd; i++)
  160.             {
  161.                 if (strcmp(aux_codigo,produto[i].codigo) == 0)
  162.                 {
  163.                     printf("\n1-alterar nome;\n2-alterar pais de origem;\n3-adicionar mais itens;\n");
  164.                     scanf("%d",&opcao2);
  165.                     switch(opcao2)
  166.                     {
  167.                     case 1:
  168.                         getchar();
  169.                         printf("\ndigite o novo nome do produto: ");
  170.                         scanf("%[^\n]s",&produto[i].nome_produto);
  171.                         //getchar();
  172.                         controlle = 0;
  173.                         controlle = controlle + 1;
  174.                         break;
  175.                     case 2:
  176.                         getchar();
  177.                         printf("\ndigite o nome do pais de origem: ");
  178.                         scanf("%[^\n]s",&nomePais);
  179.                         getchar();
  180.  
  181.                         for(int i=0; i<2; i++)
  182.                         {
  183.                             aux_pp[i] = toupper(aux_pp[i] = nomePais[i]);//pegando as duas primeiras iniciais do pais de origem e tornando em maiusculo
  184.                         }
  185.                         /*
  186.                         for(int i=0; i<qtd; i++)
  187.                         {
  188.                             if (strcmp(aux_codigo,produto[i].codigo) == 0)
  189.                             {*/
  190.                                 //incrementar o i, e o qtd
  191.                                 strcpy(produto[i].PP,aux_pp);                       //como muda o nome do pais de origem, e necessario
  192.                                 strcpy(Codigo_aux, aux_pp);                         //gerar um novo codigo para o mesmo
  193.                                 strcat(Codigo_aux, "IFB");
  194.                                 strcpy(produto[i].codigo,Codigo_aux);
  195.                                 cria_codigo(inteiros[i], DDD_AUX);
  196.                                 strcat(produto[i].codigo,DDD_AUX);
  197.                                 strcpy(produto[i].pais_origem, nomePais);
  198.                             //}
  199.                         //}
  200.                         controlle = 0;
  201.                         controlle = controlle + 1;
  202.                         break;
  203.                     case 3:
  204.                         printf("\ndigite a qntd de itens que deseja aumentar: ");
  205.                         scanf("%d",&qtdAdicional);
  206.                         produto[i].qtd_items = produto[i].qtd_items + qtdAdicional;// somando a quantidade anterior
  207.                         controlle = 0;
  208.                         controlle = controlle + 1;
  209.                         break;
  210.                     default:
  211.                         printf("\nopcao invalida, voltando ao menu anterior\n");
  212.                         break;
  213.                     }
  214.                 }
  215.             }
  216.             if(controlle==0)
  217.             {
  218.                 printf("\ncodigo invalido!\n");
  219.             }
  220.             break;
  221.  
  222.         case 3:
  223.             controlle = 0;
  224.             puts("\ndigite o codigo do produto: ");
  225.             scanf("%s",&aux_codigo);
  226.             for(int z=0; z<qtd; z++)
  227.             {
  228.                 if (strcmp(aux_codigo,produto[z].codigo) == 0)
  229.                 {
  230.  
  231.                     do
  232.                     {
  233.                         printf("\ndigite a quantidade que deseja vender: ");
  234.                         scanf("%d",&aux_vendas);
  235.  
  236.                         if(aux_vendas < 0)
  237.                         {
  238.                             printf("\nvalor invalido! ");
  239.                         }
  240.                         if(aux_vendas > produto[z].qtd_items)
  241.                         {
  242.                             printf("\nNao existem itens suficientes para este produto!");
  243.                         }
  244.                         if(aux_vendas>=0 && aux_vendas<=produto[z].qtd_items)
  245.                         {
  246.                             produto[z].qtd_items = produto[z].qtd_items - aux_vendas;
  247.                             printf("\nqtd restante: %d\n",produto[z].qtd_items);
  248.                             controlle = 0;
  249.                             controlle = controlle + 1;
  250.                             if(produto[z].qtd_items == 0)
  251.                             {
  252.                                 for(int j=z; j<ax; j++)
  253.                                 {
  254.                                     strcpy(produto[j].nome_produto, produto[j+1].nome_produto);
  255.                                     strcpy(produto[j].pais_origem, produto[j+1].pais_origem);
  256.                                     produto[j].qtd_items = produto[j+1].qtd_items;
  257.                                     strcpy(produto[j].codigo, produto[j+1].codigo);
  258.                                     inteiros[j]=inteiros[j+1];
  259.                                 }
  260.                                 qtdProdutos = qtdProdutos - 1;
  261.                                 controlle = 0;
  262.                                 controlle = controlle + 1;
  263.                                 estoque = estoque - 1;
  264.                             }
  265.                             verifica = 1;
  266.                         }
  267.                     }
  268.                     while(verifica!=1);
  269.                 }
  270.             }
  271.             if(controlle==0)
  272.             {
  273.                 printf("\ncodigo invalido!\n");
  274.             }
  275.             break;
  276.  
  277.         case 4:
  278.             puts("\ndigite o codigo do produto: ");
  279.             scanf("%s",&aux_codigo);
  280.             controlle = 0;
  281.  
  282.             for(int i=0; i<qtd; i++)
  283.             {
  284.                 if (strcmp(aux_codigo,produto[i].codigo) == 0)
  285.                 {
  286.                     printf("\nnome do produto: %s",produto[i].nome_produto);
  287.                     printf("\npais de origem: %s",produto[i].pais_origem);
  288.                     printf("\nquantidade: %d",produto[i].qtd_items);
  289.                     printf("\ncodigo do produto: %s",produto[i].codigo);
  290.                     printf("\n");
  291.  
  292.                 }
  293.                 else{
  294.                     controlle = controlle + 1;
  295.                 }
  296.             }
  297.  
  298.             if(controlle == 20){
  299.                 printf("\ncodigo invalido!\n");                 //a variavel controle é incrementada sempre que
  300.             }                                                   //o codigo nao for encontrado no vetor, caso chegue a
  301.                                                                 //20, significa que nenhuma posição do vetor possui esse codigo
  302.             break;
  303.         case 5:
  304.             for(int i=0; i<qtd; i++)
  305.             {
  306.                 printf("\n%s        %d\n",produto[i].codigo, produto[i].qtd_items, inteiros[i]);
  307.             }
  308.             break;
  309.         case 6:
  310.             puts("\nvoce saiu;\n");
  311.             opcao1 = 6;
  312.             break;
  313.         default:
  314.             printf("\nopcao invalida\n");
  315.         }
  316.     }
  317.     while(opcao1!=6);
  318. }
  319.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement