G2A Many GEOs
SHARE
TWEET

Untitled

a guest Mar 28th, 2020 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5. #define MAXNOME 60
  6.  
  7. //definição da estrutura aluno
  8. typedef struct aluno
  9. {
  10.  
  11.     char codigo[5];
  12.     char nome[MAXNOME];
  13.     char cpf[11];
  14.     char periodo[6];
  15.  
  16. } aluno;
  17.  
  18. //definição da estrutura disciplina
  19. typedef struct disciplina
  20. {
  21.  
  22.     char codigo[4];
  23.     char nome[MAXNOME];
  24.     int quantiadeCreditos;
  25.     char periodo[6];
  26.  
  27. } disciplina;
  28.  
  29. int verificaCPF(char *cpf)
  30. {
  31.  
  32.     int j, k, t, digito1 = 0, digito2 = 0;
  33.     char numIguais[11], i;
  34.  
  35.     if(strlen(cpf) != 11)
  36.         return 0;
  37.  
  38.     //cpf com todos os digitos iguais é falso
  39.     for(i = '0'; i <= '9'; ++i)
  40.     {
  41.  
  42.         for(j = 0; j < 11; ++j)
  43.         {
  44.             numIguais[j] = i;
  45.         }
  46.  
  47.         if(strcmp(cpf, numIguais) == 0)
  48.         {
  49.             return 0;
  50.         }
  51.  
  52.     }
  53.  
  54.     for(k = 0, t = 10; k < strlen(cpf) - 2; k++, t--)
  55.     {
  56.         digito1 += (cpf[k] - 48) * t;
  57.     }
  58.  
  59.     digito1 %= 11;
  60.  
  61.     if(digito1 < 2)
  62.     {
  63.         digito1 = 0;
  64.     }
  65.  
  66.     else
  67.     {
  68.         digito1 = 11 - digito1;
  69.     }
  70.  
  71.     if((cpf[9] - 48) != digito1)
  72.     {
  73.         return 0;
  74.     }
  75.  
  76.     else
  77.     {
  78.  
  79.         for(k = 0, t = 11; k < strlen(cpf) - 1; k++, t--)
  80.         {
  81.             digito2 += (cpf[k] - 48) * t;
  82.         }
  83.  
  84.         digito2 %= 11;
  85.  
  86.         if(digito2 < 2)
  87.         {
  88.             digito2 = 0;
  89.         }
  90.  
  91.         else
  92.         {
  93.             digito2 = 11 - digito2;
  94.         }
  95.  
  96.         if((cpf[10] - 48) != digito2)
  97.         {
  98.             return 0;
  99.         }
  100.  
  101.     }
  102.  
  103.     return 1;
  104. }
  105.  
  106. int isNumeric(char *c)
  107. {
  108.  
  109.     for(int i = 0; i < strlen(c); i++)
  110.     {
  111.  
  112.         if(c[i] < '0' || c[i] > '9')
  113.         {
  114.             return 0;
  115.         }
  116.     }
  117.  
  118.     return 1;
  119. }
  120.  
  121. void adicionaAluno(aluno *baseAlunos, int *numeroAlunos)
  122. {
  123.  
  124.     aluno novoAluno;
  125.    
  126.     printf("Digite o nome do aluno: ");
  127.     scanf(" %[^\n]", novoAluno.nome);
  128.    
  129.     while(1){
  130.        
  131.         printf("\nDigite o código do aluno: ");
  132.         scanf("%s", novoAluno.codigo);
  133.         if(strlen(novoAluno.codigo) != 5)
  134.         {
  135.             printf("Código inválido\n");
  136.         }
  137.         else
  138.         {
  139.             break;
  140.         }
  141.     }
  142.    
  143.     while(1){
  144.        
  145.         printf("\nDigite o CPF do aluno: ");
  146.         scanf("%s", novoAluno.cpf);
  147.         if(verificaCPF(novoAluno.cpf) == 0)
  148.         {
  149.             printf("CPF inválido\n");
  150.         }
  151.         else
  152.         {
  153.             break;
  154.         }
  155.     }
  156.    
  157.     while(1){
  158.            
  159.         printf("\nDigite o período do aluno: ");
  160.         scanf("%s", novoAluno.periodo);
  161.         if(strlen(novoAluno.periodo) != 6)
  162.         {
  163.             printf("Período precisa ser da forma XXXX.Y\n");
  164.         }
  165.         else
  166.         {
  167.             break;
  168.         }
  169.     }
  170.     *numeroAlunos += 1;
  171.  
  172.     aluno *novosAlunos = (aluno *)realloc(baseAlunos, *numeroAlunos * sizeof(aluno));
  173.  
  174.     if(novosAlunos != NULL)
  175.     {
  176.         baseAlunos = novosAlunos;
  177.         baseAlunos[*numeroAlunos - 1] = novoAluno;
  178.         printf("\nNovo aluno adicionado com sucesso!\n\n");
  179.     }
  180.  
  181.     else
  182.     {
  183.         printf("\nErro ao adicionar aluno na base de dados\n\n");
  184.     }
  185. }
  186.  
  187. void adicionaDisciplina(disciplina *baseDisciplina, int *numeroDisciplinas)
  188. {
  189.  
  190.     disciplina novaDisciplina;
  191.     printf("Digite o nome da disciplina: ");
  192.     scanf(" %[^\n]", novaDisciplina.nome);
  193.  
  194.     while(1){
  195.        
  196.         printf("\nDigite o código da disciplina: ");
  197.         scanf("%s", novaDisciplina.codigo);
  198.         if(strlen(novaDisciplina.codigo) != 4)
  199.         {
  200.             printf("Código inválido\n");
  201.         }
  202.         else
  203.         {
  204.             break;
  205.         }
  206.     }
  207.    
  208.     printf("\nDigite a quantidade de créditos da disciplina: ");
  209.     scanf("%d", &novaDisciplina.quantiadeCreditos);
  210.  
  211.     while(1){
  212.            
  213.         printf("\nDigite o período da disciplina: ");
  214.         scanf("%s", novaDisciplina.periodo);
  215.         if(strlen(novaDisciplina.periodo) != 6)
  216.         {
  217.             printf("Período precisa ser da forma XXXX.Y\n");
  218.         }
  219.         else
  220.         {
  221.             break;
  222.         }
  223.     }
  224.  
  225.     *numeroDisciplinas += 1;
  226.    
  227.     disciplina *novasDisciplinas = (disciplina *)realloc(baseDisciplina, *numeroDisciplinas * sizeof(disciplina));
  228.  
  229.     if(novasDisciplinas != NULL)
  230.     {
  231.         baseDisciplina = novasDisciplinas;
  232.         baseDisciplina[*numeroDisciplinas - 1] = novaDisciplina;
  233.         printf("\nNova disciplina adicionada com sucesso!\n\n");
  234.     }
  235.  
  236.     else
  237.     {
  238.         printf("\nErro ao adicionar disciplina na base de dados\n\n");
  239.     }
  240. }
  241.  
  242. void printAluno (aluno *a){
  243.    
  244.     printf("%s\n%s\n%s\n", a->nome, a->cpf, a->codigo);
  245. }
  246.  
  247. void buscarAluno(aluno *baseAlunos, int numeroAlunos)
  248. {
  249.    
  250.     aluno *p = baseAlunos;
  251.     int i, opcao;
  252.     char cpf[11], nome[60], codigo[5];
  253.     printf ("\t\t SELECIONE COMO DESEJA FAZER A BUSCA   \n");
  254.     printf ("\t\t\t================================\n");
  255.     printf ("\t\t\t|\t                       |\n");
  256.     printf("\t\t\t|    1 - CPF                   |\n");
  257.     printf("\t\t\t|    2 - Código                |\n");
  258.     printf("\t\t\t|    3 - Nome                  |\n");
  259.     printf ("\t\t\t|                              |\n");
  260.     printf ("\t\t\t================================\n");
  261.     printf ("\n\n");
  262.     printf("\t\t\tPor favor, selecione uma opção: ");
  263.     scanf("%d", &opcao);
  264.    
  265.     if(opcao == 1){
  266.        
  267.         printf ("Digite o CPF do aluno: ");
  268.         scanf("%s", codigo);
  269.         for (i=0; i < numeroAlunos; i++)
  270.         {
  271.             if(strcmp(baseAlunos[i].cpf, cpf) == 0)
  272.             {
  273.                 p = &baseAlunos[i];    
  274.                 break;
  275.             }
  276.         }
  277.         if(p != NULL)
  278.         {
  279.             printAluno(p);
  280.         }
  281.        
  282.     }
  283.    
  284.     if(opcao == 2){
  285.        
  286.         printf ("Digite o código do aluno: ");
  287.         scanf("%s", codigo);
  288.         for (i=0; i < numeroAlunos; i++)
  289.         {
  290.             if(strcmp(baseAlunos[i].codigo, codigo) == 0)
  291.             {
  292.                 p = &baseAlunos[i];    
  293.                 break;
  294.             }
  295.         }
  296.         if(p != NULL)
  297.         {
  298.             printAluno(p);
  299.         }
  300.        
  301.     }
  302.    
  303.     if(opcao == 3){
  304.        
  305.         printf ("Digite o nome do aluno: ");
  306.         scanf("%s", nome);
  307.         for (i=0; i < numeroAlunos; i++)
  308.         {
  309.             if(strcmp(baseAlunos[i].nome, nome) == 0)
  310.             {
  311.                 p = &baseAlunos[i];    
  312.                 break;
  313.             }
  314.         }
  315.         if(p != NULL)
  316.         {
  317.             printAluno(p);
  318.         }
  319.     }
  320.     return;
  321. }
  322.  
  323. int main()
  324. {
  325.  
  326.     setlocale(LC_ALL, "Portuguese");
  327.  
  328.     int opcaoMenu = 1, opcaoObjeto = 1, numeroAlunos = 0, numeroDisciplinas = 0;
  329.  
  330.     aluno *baseAlunos = NULL;
  331.     disciplina *baseDisciplina = NULL;
  332.  
  333.     printf("\n\n");
  334.  
  335.     do
  336.     {
  337.         printf ("\t\t SISTEMA DE CONTROLE DE DISCIPLINAS E ALUNOS\n");
  338.         printf ("\t\t\t================================\n");
  339.         printf ("\t\t\t|\t                       |\n");
  340.         printf("\t\t\t|    1 - Consultar             |\n");
  341.         printf("\t\t\t|    2 - Adicionar             |\n");
  342.         printf("\t\t\t|    3 - Remover               |\n");
  343.         printf("\t\t\t|    0 - Sair                  |\n");
  344.         printf ("\t\t\t|                              |\n");
  345.         printf ("\t\t\t================================\n");
  346.         printf ("\n\n");
  347.         printf("\t\t\tPor favor, selecione uma opção: ");
  348.         scanf("%d", &opcaoMenu);
  349.         printf ("\n\n");
  350.         // se a opcao nao e invalida
  351.         if ((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3))
  352.         {
  353.             printf ("\t\t SELECIONE UMA OPÇÃO PARA ADICIONAR OU VOLTAR\n");
  354.             printf ("\t\t\t================================\n");
  355.             printf ("\t\t\t|\t                       |\n");
  356.             printf("\t\t\t|    1 - Aluno                 |\n");
  357.             printf("\t\t\t|    2 - Disciplina            |\n");
  358.             printf("\t\t\t|    3 - Voltar                |\n");
  359.             printf ("\t\t\t|                              |\n");
  360.             printf ("\t\t\t================================\n");
  361.             printf ("\n\n");
  362.             printf("\t\t\tPor favor, selecione uma opção: ");
  363.             scanf("%d", &opcaoObjeto);
  364.             printf("\n\n");
  365.  
  366.             // se o objeto nao e invalido
  367.             if((opcaoObjeto == 1) || (opcaoObjeto == 2))
  368.             {
  369.  
  370.                 // consultar
  371.                 if(opcaoMenu == 1)
  372.                 {
  373.                     buscarAluno(baseAlunos, numeroAlunos);
  374.                 }
  375.  
  376.                 // adicionar
  377.                 else if(opcaoMenu == 2)
  378.                 {
  379.                     // aluno
  380.                     if(opcaoObjeto == 1)
  381.                     {
  382.                         adicionaAluno(baseAlunos, &numeroAlunos);
  383.                     }
  384.  
  385.                     // disciplina
  386.                     else
  387.                     {
  388.                         adicionaDisciplina(baseDisciplina, &numeroDisciplinas);
  389.                     }
  390.  
  391.                 }
  392.  
  393.                 // remover
  394.                 else if(opcaoMenu == 3)
  395.                 {
  396.  
  397.                 }
  398.             }
  399.         }
  400.     }
  401.     while((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3));
  402.  
  403.     printf("Aplicação terminada\n");
  404.  
  405.     return 0;
  406. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top