Advertisement
darkstar97

escolinha

Jul 19th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 17.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5.  
  6. //O número de turmas não deve ultrapassar 10
  7. //O número de alunos, de cada turma, não deve ultrapassar 50
  8.  
  9. typedef struct{ //dados aluno
  10.     char nome[50];
  11.     int matricula;
  12.     float notas[6];
  13.     float media;
  14.     int frequencia;
  15.     char situacao[15];
  16.     int situacao1;
  17.     } aluno;
  18.  
  19.  
  20.     typedef struct{ //armazena as turmas
  21.     char materia[20];
  22.     aluno alunos[51];
  23.     int existe;
  24.     } turma;
  25.  
  26. void criarTurma(turma turmas[],int *cont);
  27. void cadastroAluno(turma turmas[],int *cont);
  28. void cadastroNotas(turma turmas[],int *cont);
  29. void imprimirDados(turma turmas[],int *cont);
  30. void imprimirLista(turma turmas[],int *cont);
  31. void imprimirSituacao(turma turmas[],int *cont);
  32.  
  33. int main(){
  34.     setlocale(LC_ALL, "Portuguese");
  35.  
  36.     turma turmas[11];
  37.  
  38.     char opc[10];
  39.     int op, m, cont=2000;
  40.  
  41.     for(m=0; m<11; m++){
  42.         turmas[m].existe = 0;
  43.         turmas[m].alunos[m].matricula = 0;
  44.     }
  45.  
  46.     do{
  47.     system("cls");
  48.     puts("Gerenciador de Notas.\n");
  49.     puts("Selecione uma opção:");
  50.     puts("1 - Criar Turma");
  51.     puts("2 - Cadastrar Aluno");
  52.     puts("3 - Cadastrar Notas e Frequência");
  53.     puts("4 - Imprimir Dados de Alunos");
  54.     puts("5 - Imprimir a Situação Geral");
  55.     puts("6 - Imprimir a Situação de um Aluno Específico");
  56.     puts("7 - Sair");
  57.     fflush(stdin);
  58.     fgets(opc,9,stdin);
  59.     op = atoi(opc);
  60.  
  61.     if(op!=0){ //todo esse processo com atoi e if serve pra impedir o user de colocar idiotice no programa
  62.     switch(op){
  63.         case 1: criarTurma(&turmas[0], &cont); break;
  64.         case 2: cadastroAluno(&turmas[0], &cont); break;
  65.         case 3: cadastroNotas(&turmas[0], &cont); break;
  66.         case 4: imprimirDados(&turmas[0], &cont); break;
  67.         case 5: imprimirLista(&turmas[0], &cont); break;
  68.         case 6: imprimirSituacao(&turmas[0], &cont); break;
  69.         case 7: puts("Até a próxima!"); break;
  70.         default: puts("Inválido. Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL"); break;
  71.     }
  72.     }
  73.     else{
  74.         puts("Entrada inválida.Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL");
  75.     }
  76.     }while(op!=7);
  77. return 0;
  78. }
  79.  
  80. //essa função serve para a criação das diferentes turmas
  81. void criarTurma(turma turmas[],int *cont){
  82.     system("cls");
  83.     int sel,m;
  84.     char op,sele[10];
  85.  
  86.     puts("Escolha um espaço para a matéria: (1-10)");
  87.     fflush(stdin);
  88.     scanf("%s", sele);
  89.     sel = atoi(sele);
  90.     if(sel<=10&&sel!=0){
  91.     if(turmas[sel].existe==0){
  92.         do{
  93.         puts("Digite o nome da matéria:");
  94.         fflush(stdin);
  95.         fgets(turmas[sel].materia,20,stdin);
  96.         if(turmas[sel].materia[0] == '\n'||turmas[sel].materia[0] == '\0'){
  97.             puts("Nome vazio.");
  98.             }
  99.         else{
  100.             turmas[sel].materia[strcspn(turmas[sel].materia, "\n")] = '\0';
  101.             printf("A turma %s tem número %d e foi cadastrada com sucesso.\n", turmas[sel].materia, sel);
  102.             turmas[sel].existe = sel;
  103.             m=1;
  104.         }
  105.         }while(m!=1);
  106.     }
  107.     else{
  108.         puts("Essa turma já existe. Deseja substituí-la? (sim/não)");
  109.         fflush(stdin);
  110.         scanf("%c", &op);
  111.         if(op=='s'){
  112.             do{
  113.             puts("Digite o nome da matéria:");
  114.             fflush(stdin);
  115.             fgets(turmas[sel].materia,20,stdin);
  116.             if(turmas[sel].materia[0] == '\n'||turmas[sel].materia[0] == '\0'){
  117.                 puts("Nome vazio.");
  118.                 }
  119.             else{
  120.                 turmas[sel].materia[strcspn(turmas[sel].materia, "\n")] = '\0';
  121.                 printf("A turma %s tem número %d e foi cadastrada com sucesso.\n", turmas[sel].materia, sel);
  122.                 turmas[sel].existe = sel;
  123.                 m=1;
  124.             }
  125.             }while(m!=1);
  126.         }
  127.     }
  128.     }
  129.     else{
  130.         puts("O número digitado é inválido.\n");
  131.     }
  132.     puts("Pressione qualquer tecla para retornar ao menu.");
  133.     system("pause>>NULL");
  134.     return;
  135. }
  136.  
  137. //essa função serve pra cadastrar os diferentes alunos em cada turma
  138. void cadastroAluno(turma turmas[],int *cont){
  139.     system("cls");
  140.     int sel,sel2,sel3,cont2=1,m=0;
  141.     char sele[10],sele2[10],sele3[10];
  142.     puts("Escolha uma das matérias cadastradas: (1-10)");
  143.     fflush(stdin);
  144.     scanf("%s", sele);
  145.     sel = atoi(sele);
  146.     if(sel<=10&&sel!=0){
  147.             if(turmas[sel].existe!=0){
  148.                 printf("Você selecionou %s!\n", turmas[sel].materia);
  149.                 puts("Quantos alunos você deseja cadastrar?");
  150.                 fflush(stdin);
  151.                 scanf("%s", sele3);
  152.                 sel3 = atoi(sele3);
  153.                 if(sel3<=50&&sel3!=0){
  154.                     do{
  155.                     puts("Escolha uma vaga na turma para o novo aluno: (1-50)");
  156.                     fflush(stdin);
  157.                     scanf("%s", sele2);
  158.                     sel2 = atoi(sele2);
  159.                     if(sel2<=50&&sel2!=0){
  160.                         if(turmas[sel].alunos[sel2].matricula==0){
  161.                         do{
  162.                             printf("Você escolheu a posição %d.\nDigite o nome do aluno:", sel2);
  163.                             fflush(stdin);
  164.                             fgets(turmas[sel].alunos[sel2].nome,50,stdin);
  165.                             if(turmas[sel].alunos[sel2].nome[0] == '\n'||turmas[sel].alunos[sel2].nome[0] == '\0'){
  166.                                 puts("Nome vazio.\n\n");
  167.                                 m=0;
  168.                             }
  169.                             else{
  170.                                 turmas[sel].alunos[sel2].nome[strcspn(turmas[sel].alunos[sel2].nome, "\n")] = '\0';
  171.                                 printf("A matrícula do aluno %s é %d.\n\n", turmas[sel].alunos[sel2].nome, sel2);
  172.                                 turmas[sel].alunos[sel2].matricula = sel2;
  173.                                 cont2++;
  174.                                 m=1;
  175.                             }
  176.                             }while(m!=1);
  177.                         }
  178.                         else{
  179.                             puts("Essa vaga está preenchida. Tente novamente.\n");
  180.                         }
  181.                     }
  182.                     else{
  183.                         puts("Número inválido.\n\n");
  184.                     }
  185.                     } while(cont2<=sel3);
  186.                 }
  187.                 else{
  188.                     puts("Esse quantidade é inválida.");
  189.                 }
  190.             }
  191.             else{
  192.                 puts("Essa turma não foi cadastrada.\n");
  193.             }
  194.     }
  195.     else{
  196.         puts("O número digitado é inválido.\n");
  197.     }
  198.  
  199.     puts("Pressione qualquer tecla para retornar ao menu.");
  200.     system("pause>>NULL");
  201.  
  202.     return;
  203. }
  204.  
  205. //essa função serve para cadastrar notas e a frequência dos alunos
  206. void cadastroNotas(turma turmas[],int *cont){
  207.     system("cls");
  208.     int sel, sel2,i;
  209.     char sele[10], sele2[10];
  210.  
  211.     puts("Escolha uma das matérias cadastradas: (1-10)");
  212.     fflush(stdin);
  213.     scanf("%s", sele);
  214.     sel = atoi(sele);
  215.     if(sel<=10&&sel!=0){
  216.         puts("Digite o número matrícula do aluno desejado.");
  217.         fflush(stdin);
  218.         scanf("%s", sele2);
  219.         sel2 = atoi(sele2);
  220.         if(sel2 != 0){
  221.             for(i=0;i<=50;i++){
  222.                 if(turmas[sel].alunos[i].matricula == sel2){
  223.                     puts("Digite a nota da prova 1: (0-30)");
  224.                     scanf("%f", &turmas[sel].alunos[i].notas[1]);
  225.                     puts("Digite a nota da prova 2: (0-50)");
  226.                     scanf("%f", &turmas[sel].alunos[i].notas[2]);
  227.                     puts("Digite a nota do exercício 1: (0-5)");
  228.                     scanf("%f", &turmas[sel].alunos[i].notas[3]);
  229.                     puts("Digite a nota do exercício 2: (0-5)");
  230.                     scanf("%f", &turmas[sel].alunos[i].notas[4]);
  231.                     puts("Digite a nota do trabalho final: (0-10)");
  232.                     scanf("%f", &turmas[sel].alunos[i].notas[5]);
  233.                     puts("Digite a frequência do aluno: (aulas comparecidas)");
  234.                     scanf("%d", &turmas[sel].alunos[i].frequencia);
  235.  
  236.                     turmas[sel].alunos[i].media = (turmas[sel].alunos[i].notas[1]+turmas[sel].alunos[i].notas[2]+turmas[sel].alunos[i].notas[3]+turmas[sel].alunos[i].notas[4]+turmas[sel].alunos[i].notas[5]);
  237.                     if(turmas[sel].alunos[i].media >=70&&turmas[sel].alunos[i].frequencia>=40){
  238.                         turmas[sel].alunos[i].situacao1 = 1;
  239.                         strcpy(turmas[sel].alunos[i].situacao,"Aprovado");
  240.                     }
  241.                     if(turmas[sel].alunos[i].media < 70|| turmas[sel].alunos[i].frequencia < 40){
  242.                         turmas[sel].alunos[i].situacao1 = 0;
  243.                         strcpy(turmas[sel].alunos[i].situacao,"Reprovado");
  244.                     }
  245.                 }
  246.             }
  247.         }
  248.         else{
  249.             puts("Esse aluno não está cadastrado.");
  250.                }
  251.             }
  252.     else{
  253.         puts("Essa matéria não foi cadastrada.");
  254.     }
  255.  
  256.     puts("Pressione qualquer tecla para retornar ao menu.");
  257.     system("pause>>NULL");
  258.     return;
  259. }
  260.  
  261. //imprime os dados e um ou mais alunos
  262. void imprimirDados(turma turmas[],int *cont){
  263.     system("cls");
  264.     int sel, sel2,i;
  265.     char sele[10], sele2[10];
  266.  
  267.     puts("Escolha uma das matérias cadastradas: (1-10)");
  268.     fflush(stdin);
  269.     scanf("%s", sele);
  270.     sel = atoi(sele);
  271.     if(sel<=10&&sel!=0){
  272.         puts("Digite o número matrícula do aluno desejado ou digite '100' para exibir todos.");
  273.         fflush(stdin);
  274.         scanf("%s", sele2);
  275.         sel2 = atoi(sele2);
  276.         if(sel2 == 100){
  277.             for(i=0;i<=50;i++){
  278.                 if(turmas[sel].alunos[i].matricula != 0){
  279.                     printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
  280.                     printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
  281.                     printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
  282.                     printf("Média:%f\n", turmas[sel].alunos[i].media);
  283.                     printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
  284.                     printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
  285.                 }
  286.             }
  287.         }
  288.         if(sel2 != 100){
  289.             for(i=0;i<=50;i++){
  290.                 if(turmas[sel].alunos[i].matricula != 0&& turmas[sel].alunos[i].matricula == sel2){
  291.                     printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
  292.                     printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
  293.                     printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
  294.                     printf("Média:%f\n", turmas[sel].alunos[i].media);
  295.                     printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
  296.                     printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
  297.                 }
  298.             }
  299.         }
  300.         else{
  301.             puts("Esse aluno não foi cadastrado.");
  302.         }
  303.  
  304.  
  305.     }
  306.     else{
  307.         puts("Essa matéria não foi cadastrada.");
  308.     }
  309.  
  310.  
  311.     puts("Pressione qualquer tecla para retornar ao menu.");
  312.     system("pause>>NULL");
  313.     return;
  314. }
  315.  
  316. //imprime apenas a situação dos alunos
  317. void imprimirLista(turma turmas[],int *cont){
  318.     system("cls");
  319.     int op,i,sel;
  320.     char opc[10],sele[10];
  321.  
  322.     do{
  323.     system("cls");
  324.     puts("Lista de Alunos:");
  325.     puts("1 - Aprovados");
  326.     puts("2 - Reprovados");
  327.     puts("3 - Todos");
  328.     puts("4 - Retornar");
  329.     fflush(stdin);
  330.     fgets(opc,9,stdin);
  331.     op = atoi(opc);
  332.  
  333.     if(op!=0){ //todo esse processo com atoi e if serve pra impedir o user de colocar idiotice no programa
  334.     switch(op){
  335.         case 1:{
  336.                 puts("Selecione a turma: (1-10)");
  337.                 fflush(stdin);
  338.                 scanf("%s", sele);
  339.                 sel = atoi(sele);
  340.                 if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
  341.                     for(i=0;i<=50;i++){
  342.                         if(turmas[sel].alunos[i].situacao1 == 1&&turmas[sel].alunos[i].matricula!=0){
  343.                             puts(turmas[sel].alunos[i].nome);
  344.                             puts("");
  345.                         }
  346.                     }
  347.  
  348.                 op=4;
  349.                 }
  350.                 else{
  351.                     puts("Essa matéria não foi cadastrada.");
  352.                     puts("Pressione qualquer tecla para retornar ao menu.");
  353.                     system("pause>>NULL");
  354.                 }
  355.                 } ; break;
  356.         case 2:{
  357.                 puts("Selecione a turma: (1-10)");
  358.                 fflush(stdin);
  359.                 scanf("%s", sele);
  360.                 sel = atoi(sele);
  361.                 if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
  362.                     for(i=0;i<=50;i++){
  363.                         if(turmas[sel].alunos[i].situacao1 == 0&&turmas[sel].alunos[i].matricula!=0){
  364.                             puts(turmas[sel].alunos[i].nome);
  365.                             puts("");
  366.                         }
  367.                     }
  368.  
  369.                 op=4;
  370.                 }
  371.                 else{
  372.                     puts("Essa matéria não foi cadastrada.");
  373.                     puts("Pressione qualquer tecla para retornar ao menu.");
  374.                     system("pause>>NULL");
  375.                 }
  376.                 } ; break;
  377.         case 3:{
  378.                 puts("Selecione a turma: (1-10)");
  379.                 fflush(stdin);
  380.                 scanf("%s", sele);
  381.                 sel = atoi(sele);
  382.                 if(sel<=10&&sel!=0&&turmas[sel].existe!=0){
  383.                     for(i=0;i<=50;i++){
  384.                         if(turmas[sel].alunos[i].matricula!=0){
  385.                             puts(turmas[sel].alunos[i].nome);
  386.                             puts(turmas[sel].alunos[i].situacao);
  387.                             puts("");
  388.                             }
  389.                         }
  390.  
  391.                 op=4;
  392.                 }
  393.                 else{
  394.                     puts("Essa matéria não foi cadastrada.");
  395.                     puts("Pressione qualquer tecla para retornar ao menu.");
  396.                     system("pause>>NULL");
  397.                 }
  398.                 } ; break;
  399.         case 4: puts("Retornando."); break;
  400.         default: puts("Inválido. Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL"); break;
  401.     }
  402.     }
  403.     else{
  404.         puts("Entrada inválida.Pressione qualquer tecla para retornar ao menu."); system("pause>>NULL");
  405.     }
  406.     }while(op!=4);
  407.  
  408.     puts("Pressione qualquer tecla para retornar ao menu.");
  409.     system("pause>>NULL");
  410.  
  411.     return;
  412. }
  413.  
  414. //essa função imprimi os dados de apenas 1 aluno
  415. void imprimirSituacao(turma turmas[],int *cont){
  416.     system("cls");
  417.     int sel, sel2,i,z;
  418.     char sele[10], sele2[10];
  419.  
  420.     puts("Escolha uma das matérias cadastradas: (1-10)");
  421.     fflush(stdin);
  422.     scanf("%s", sele);
  423.     sel = atoi(sele);
  424.     if(sel<=10&&sel!=0){
  425.         puts("Digite o número matrícula ou o nome do aluno desejado.");
  426.         fflush(stdin);
  427.         scanf("%s", sele2);
  428.         sel2 = atoi(sele2);
  429.         if(sel2 != 0){
  430.             for(i=0;i<=50;i++){
  431.                 if(turmas[sel].alunos[i].matricula == sel2){
  432.                     printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
  433.                     printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
  434.                     printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
  435.                     printf("Média:%f\n", turmas[sel].alunos[i].media);
  436.                     printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
  437.                     printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
  438.                 }
  439.             }
  440.         }
  441.         else{
  442.             for(i=0;i<=50;i++){
  443.                 z=strcmp(sele2,turmas[sel].alunos[i].nome);
  444.                 if(z == 0){
  445.                     printf("\nNome:%s\n", turmas[sel].alunos[i].nome);
  446.                     printf("Matrícula:%d\n", turmas[sel].alunos[i].matricula);
  447.                     printf("Notas:%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t\n", turmas[sel].alunos[i].notas[1],turmas[sel].alunos[i].notas[2],turmas[sel].alunos[i].notas[3],turmas[sel].alunos[i].notas[4],turmas[sel].alunos[i].notas[5]);
  448.                     printf("Média:%f\n", turmas[sel].alunos[i].media);
  449.                     printf("Número de Frequências:%d\n", turmas[sel].alunos[i].frequencia);
  450.                     printf("Situação:%s\n", turmas[sel].alunos[i].situacao);
  451.  
  452.                }
  453.  
  454.             }
  455.                 if(z != 0&&sel2 != 0){
  456.                     puts("Aluno não cadastrado.");
  457.                 }
  458.         }
  459.  
  460.  
  461.     }
  462.     else{
  463.         puts("Essa matéria não foi cadastrada.");
  464.     }
  465.  
  466.  
  467.     puts("Pressione qualquer tecla para retornar ao menu.");
  468.     system("pause>>NULL");
  469.     return;
  470. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement