Dirsovisk

Gerenciamento de Histórico Escolar

Jan 24th, 2021
753
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <locale.h>
  6. #include <string.h>
  7. #include <stdbool.h>
  8.  
  9. #define MEDIA 6.0
  10. #define ESC 27
  11. #define TOTAL_DISC 3
  12.  
  13. struct Aluno {
  14.     int id; // matricula
  15.     char nome[50];
  16.     int qtde_mat;
  17. };
  18.  
  19. struct Aluno_Disciplina {
  20.  
  21.     int id_aluno, id_disc;
  22.     int ano, semestre;
  23.     int nota, aulas_assistidas;
  24.  
  25. };
  26.  
  27. struct Disciplina {
  28.     int id;
  29.     char nome[50];
  30.     int total_aulas;
  31. };
  32.  
  33.  
  34. ////////////////////////////////////////////////////////////////////////////
  35.  
  36. char Menu(){
  37.  
  38.     system("cls");
  39.     printf("##### Bem vindo a consulta de histórico escolar! ##### \n");
  40.     printf("\n[1] - Matricular aluno em uma nova disciplina");
  41.     printf("\n[2] - Registrar nota e dados finais do aluno");
  42.     printf("\n[3] - Disciplinas não concluidas.");
  43.     printf("\n[4] - Disciplinas com Aprovação");
  44.     printf("\n[5] - Disciplinas com Reprovação");
  45.     printf("\n[6] - Média nas disciplinas aprovadas");
  46.     printf("\n[7] - Disciplinas cursadas em Ano/Semestre");
  47.     printf("\n[8] - Frequência total");
  48.     printf("\n[ESC] - Sair");
  49.  
  50.     char op = getch();
  51.     return op;
  52. }
  53.  
  54. void Inicio(struct Aluno * aluno){
  55.  
  56.     printf("##### Bem vindo ao Sistema de Gerenciamento de Alunos! #####\n");
  57.     printf("\nInforme os dados do aluno abaixo!");
  58.  
  59.     printf("\nMatricula: ");
  60.     fflush(stdin);
  61.     scanf("%i", &aluno->id);
  62.  
  63.     printf("\nNome: ");
  64.     fflush(stdin);
  65.     fgets (&aluno->nome, 100, stdin);
  66.  
  67.     printf("\n\n**** Dados recebidos com sucesso!: \n");
  68.     system("pause");
  69.  
  70. }
  71.  
  72. char SelecionarDisciplina(struct Aluno *aluno, struct Disciplina disc[]){
  73.  
  74.     char op = "";
  75.  
  76.     do{
  77.         system("cls");
  78.         printf("##### Matricular aluno %s #####\n", aluno->nome);
  79.  
  80.         printf("\nSelecione a disciplina abaixo!");
  81.         for(int i=0; i<TOTAL_DISC; i++)
  82.             printf("\n[%i] - %s", i+1, disc[i].nome);
  83.  
  84.         printf("\n[ESC] - Sair");
  85.         op=getch();
  86.     }while(op != '1' && op != '2' && op != '3' && op != ESC);
  87.  
  88.     return op;
  89. }
  90.  
  91. bool existeMatricula(struct Disciplina *d, struct Aluno *aluno, struct Aluno_Disciplina ad[]){
  92.  
  93.     if(aluno->qtde_mat == 0)
  94.         return false;
  95.  
  96.     for(int i=0;i<aluno->qtde_mat; i++){
  97.         if(ad[i].id_aluno == aluno->id && ad[i].id_disc == d->id)
  98.             return true;
  99.     }
  100.  
  101.     return false;
  102. }
  103.  
  104. void Matricular(struct Aluno *aluno, struct Disciplina disc[], struct Aluno_Disciplina ad[]){
  105.  
  106.     char op = "";
  107.     op = SelecionarDisciplina(aluno, disc);
  108.  
  109.     if(aluno->qtde_mat > 2)
  110.     {
  111.         printf("\n****** Quantidade de matriculas máximas realizadas! (3)");
  112.         getch();
  113.     }
  114.     else
  115.     {
  116.         while(op != ESC && aluno->qtde_mat < 4){
  117.  
  118.             struct Disciplina *d = &disc[op];
  119.  
  120.             if(!existeMatricula(d, aluno, ad)){
  121.                 ad[aluno->qtde_mat].id_aluno = aluno->id;
  122.                 ad[aluno->qtde_mat].id_disc = d->id;
  123.  
  124.                 system("cls");
  125.                 printf("##### Dados complementares da Matricula #####");
  126.                 printf("\nAno/Semestre (9999/99): ");
  127.                 scanf("%i/%i", &ad[aluno->qtde_mat].ano, &ad[aluno->qtde_mat].semestre);
  128.  
  129.                 aluno->qtde_mat++;
  130.                 printf("\n****** MATRÍCULA REALIZADA COM SUCESSO!");
  131.             }
  132.             else
  133.                 printf("\n****** Matricula já nessa disciplina existe!");
  134.  
  135.             getch();
  136.             op = SelecionarDisciplina(aluno, disc);
  137.         }
  138.     }
  139.  
  140. }
  141.  
  142. void Gerenciar(char op, struct Aluno *aluno, struct Disciplina disc[]){
  143.  
  144.     struct Aluno_Disciplina aluno_disc[TOTAL_DISC];
  145.  
  146.     switch(op)
  147.     {
  148.  
  149.         case '1':
  150.             Matricular(aluno, disc, aluno_disc);
  151.         break;
  152.         case '2':
  153.             DadosFinais(aluno, disc, aluno_disc);
  154.         break;
  155.         case '3':
  156.             ExibirNaoConcluidas(aluno, disc, aluno_disc);
  157.         break;
  158.         case '4':
  159.             ExibirAprovadas(aluno, disc, aluno_disc);
  160.         break;
  161.         case '5':
  162.             ExibirReprovadas(aluno, disc, aluno_disc);
  163.         break;
  164.         case '6':
  165.             MediaAprovadas(aluno, disc, aluno_disc);
  166.         break;
  167.         case '7':
  168.             ExibirDisciplinasAno(aluno, disc, aluno_disc);
  169.         break;
  170.         case '8':
  171.             FrequenciaTotal(aluno, disc, aluno_disc);
  172.         break;
  173.     }
  174.  
  175. }
  176.  
  177. void CarregarDisciplinas(struct Disciplina disc[]){
  178.  
  179.     // TOTAL_DISC setado como 3 em #DEFINE ^
  180.     disc[0].id = 1;
  181.     strcpy(disc[0].nome, "Português");
  182.     disc[0].total_aulas = 100;
  183.  
  184.     disc[1].id = 2;
  185.     strcpy(disc[1].nome, "Matemática");
  186.     disc[1].total_aulas = 300;
  187.  
  188.     disc[2].id = 3;
  189.     strcpy(disc[2].nome, "Física");
  190.     disc[2].total_aulas = 200;
  191. }
  192.  
  193. void ExibirDisciplinas(struct Disciplina *disc){
  194.  
  195.     system("cls");
  196.     printf("##### DISCIPLINAS CADASTRADAS #####\n");
  197.     for(int i=0; i<TOTAL_DISC; i++){
  198.         printf("\nID: %d", disc[i].id );
  199.         printf("\nNome: %s", disc[i].nome );
  200.         printf("\nTotal Aulas: %d", disc[i].total_aulas );
  201.         printf("\n\n");
  202.     }
  203.  
  204.     system("pause");
  205. }
  206.  
  207.  
  208. int main()
  209. {
  210.     struct Aluno aluno;
  211.     struct Disciplina disciplinas[TOTAL_DISC];
  212.     char op = "";
  213.  
  214.     setlocale( LC_ALL, "Portuguese" );
  215.  
  216.     // coleta dados do aluno
  217.     aluno.qtde_mat = 0;
  218.     Inicio(&aluno);
  219.     CarregarDisciplinas(disciplinas);
  220.     ExibirDisciplinas(disciplinas);
  221.  
  222.  
  223.     // exibe menu de ações e verifica o que deseja realizar
  224.     do{
  225.         op = Menu();
  226.         Gerenciar(op, &aluno, disciplinas);
  227.  
  228.     }while(op != ESC);
  229.  
  230.     system("pause");
  231.     return 0;
  232. }
  233.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×