Página 1 de 1

Sistema de Cadastro e Lançamento de Notas de Alunos em C: Como Criar um Controle Simples de Notas com Estruturas

Enviado: 06 Nov 2024, 20:52
por bernardino
Se você está iniciando na programação em C e deseja aprender a criar um sistema simples para cadastro de alunos, lançamento de notas e cálculo de médias, este artigo é para você. Vamos explicar um código que implementa um controle de notas de estudantes utilizando estruturas, funções e arrays.

Objetivo do Código
O objetivo deste código é criar um sistema onde é possível cadastrar alunos, registrar suas notas e exibir essas informações posteriormente. A implementação utiliza estruturas (struct), arrays e funções para organizar o código e torná-lo modular. O código também apresenta um menu simples para o usuário interagir, de modo que ele possa escolher entre cadastrar alunos, lançar notas ou exibir as notas e médias.

Estrutura do Código
O código é dividido em várias partes principais:

1. Definição da Estrutura Aluno

A estrutura Aluno é usada para armazenar informações de cada aluno, como nome, matrícula, notas e média:

Código: Selecionar todos

c

typedef struct {
    char nome[50];
    int matricula;
    float notas[3];
    float media;
} Aluno;
  • nome: Um vetor de caracteres para armazenar o nome do aluno.
  • matricula: Um número inteiro que representa a matrícula do aluno.
  • notas: Um vetor de 3 elementos do tipo float, onde são armazenadas as 3 notas do aluno.
  • media: Um número do tipo float, que armazena a média das notas do aluno.
2. Função de Cadastro de Aluno

A função cadastrarAluno() permite que o usuário cadastre até um número máximo de alunos definido pela constante MAX_ALUNOS (neste caso, 3). Para cada aluno, o nome e a matrícula são solicitados ao usuário. As notas são inicializadas com zero, e a média também começa como zero. Após o cadastro, o total de alunos é incrementado.

Código: Selecionar todos

c
void cadastrarAluno() {
    if (totalAlunos >= MAX_ALUNOS) {
        printf("Numero maximo de alunos cadastrados.\n");
        return;
    }
    printf("Nome do aluno: ");
    scanf(" %[^\n]", alunos[totalAlunos].nome);
    printf("Matricula do aluno: ");
    scanf("%d", &alunos[totalAlunos].matricula);
    // Inicializa as notas como 0 e calcula a média inicial como 0.
    for (int i = 0; i < 3; i++) {
        alunos[totalAlunos].notas[i] = 0.0;
    }
    alunos[totalAlunos].media = 0.0;
    totalAlunos++;
    printf("Aluno foi cadastrado com sucesso.\n");
}
3. Função de Lançamento de Notas

A função lancarNotas() permite que o usuário insira as notas para um aluno específico, identificado pela matrícula. O programa então calcula a média das notas e a armazena na estrutura do aluno correspondente.

Código: Selecionar todos

c
void lancarNotas() {
    if (totalAlunos == 0) {
        printf("Nenhum aluno cadastrado.\n");
        return;
    }
    int matricula;
    printf("Informe a matricula do aluno: ");
    scanf("%d", &matricula);
    int encontrado = 0;
    for (int i = 0; i < totalAlunos; i++) {
        if (alunos[i].matricula == matricula) {
            encontrado = 1;
            printf("Informe as 3 notas do aluno %s:\n", alunos[i].nome);
            for (int j = 0; j < 3; j++) {
                printf("Nota %d: ", j + 1);
                scanf("%f", &alunos[i].notas[j]);
            }
            alunos[i].media = (alunos[i].notas[0] + alunos[i].notas[1] + alunos[i].notas[2]) / 3.0;
            break;
        }
    }
    if (!encontrado) {
        printf("Aluno nao encontrado.\n");
    }
}
4. Função para Exibir Notas e Média

A função exibirNotas() permite que o usuário consulte as notas e a média de um aluno específico, identificando-o pela matrícula.

Código: Selecionar todos

c
void exibirNotas() {
    if (totalAlunos == 0) {
        printf("Nenhum aluno cadastrado.\n");
        return;
    }
    int matricula;
    printf("Informe a matricula do aluno: ");
    scanf("%d", &matricula);
    int encontrado = 0;
    for (int i = 0; i < totalAlunos; i++) {
        if (alunos[i].matricula == matricula) {
            encontrado = 1;
            printf("Aluno: %s\n", alunos[i].nome);
            printf("Notas: %.2f, %.2f, %.2f\n", alunos[i].notas[0], alunos[i].notas[1], alunos[i].notas[2]);
            printf("Média: %.2f\n", alunos[i].media);
            break;
        }
    }
    if (!encontrado) {
        printf("Aluno nao encontrado.\n");
    }
}
5. Menu Principal

A função main() contém um menu interativo que permite ao usuário escolher entre as opções de cadastrar aluno, lançar notas ou exibir notas e médias. O menu continua sendo exibido até que o usuário opte por sair.

Código: Selecionar todos

c
int main() {
    int opcao;
    do {
        printf("\nMenu de Opcoes:\n");
        printf("1 - Cadastrar Aluno\n");
        printf("2 - Lancar Notas\n");
        printf("3 - Exibir Notas e Media\n");
        printf("0 - Sair\n");
        printf("Escolha uma opcao: ");
        scanf("%d", &opcao);
        switch (opcao) {
            case 1:
                cadastrarAluno();
                break;
            case 2:
                lancarNotas();
                break;
            case 3:
                exibirNotas();
                break;
            case 0:
                printf("Saindo...\n");
                break;
            default:
                printf("Opcao invalida\n");
                break;
        }
    } while (opcao != 0);
    return 0;
}
Conclusão
Este código simples é uma boa introdução ao uso de estruturas e funções em C. Ele permite gerenciar informações de alunos, como cadastro, lançamento de notas e cálculo de médias, tudo de forma interativa por meio de um menu no terminal. Com esse código, você pode entender como manipular dados com struct, como interagir com o usuário através de entradas e saídas, e como usar funções para organizar o programa de maneira modular.

Re: Sistema de Cadastro e Lançamento de Notas de Alunos em C: Como Criar um Controle Simples de Notas com Estruturas

Enviado: 26 Nov 2024, 22:29
por bernardino

Código: Selecionar todos

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_ALUNOS 3

typedef struct {

 char nome[50];

 int matricula;

 float notas[3];

 float media;

} Aluno;



Aluno alunos[MAX_ALUNOS];

int totalAlunos = 0;



void cadastrarAluno() {

 if(totalAlunos >= MAX_ALUNOS){

  printf("Numero maximo de alunos cadastrados.\n");

  return;

 }



 printf("Nome do aluno: ");

 scanf(" %[^\n]", alunos[totalAlunos].nome);  



 printf("Matrícula do aluno: ");

 scanf("%d", &alunos[totalAlunos].matricula);



 for (int i = 0; i < 3; i++) {

  alunos[totalAlunos].notas[i] = 0.0;  

 }



 alunos[totalAlunos].media = 0.0; 



 totalAlunos++;



 printf("Aluno cadastrado com sucesso!\n");

}



void lancarNotas() {

 int matricula, alunoEncontrado = 0;

 printf("Digite a matricula do aluno: ");

 scanf("%d", &matricula);



 for(int i = 0; i < totalAlunos; i++) {

  if (alunos[i].matricula == matricula) {

   alunoEncontrado = 1;

   printf("Lançando notas para %s\n", alunos[i].nome);



   for(int j = 0; j < 3; j++) {

    printf("Digite a nota da prova %d: ", j + 1);

    scanf("%f", &alunos[i].notas[j]);

   }



   alunos[i].media = (alunos[i].notas[0] + alunos[i].notas[1] + alunos[i].notas[2]) / 3.0;



   printf("Notas lancadas com sucesso\n");

   break;

  }

 }



 if (!alunoEncontrado) {

  printf("Aluno nao encontrado.\n");

 }

}



void exibirNotas() {

 if (totalAlunos == 0) {

  printf("Nenhum aluno cadastrado.\n");

  return;

 }



 printf("\nRelatorio de Notas dos Alunos:\n");

 for (int i = 0; i < totalAlunos; i++) {

  printf("\nAluno: %s\n", alunos[i].nome);

  printf("Matrícula: %d\n", alunos[i].matricula);

  printf("Notas:\n");

  for (int j = 0; j < 3; j++) {

   printf("Nota %d: %.2f\n", j + 1, alunos[i].notas[j]);

  }

  printf("Média: %.2f\n", alunos[i].media);

 }

}



int main() {

 int opcao;



 do {

  printf("\nMenu de Opcoes:\n");

  printf("1 - Cadastrar Aluno\n");

  printf("2 - Lancar Notas\n");

  printf("3 - Exibir Notas e Media\n");

  printf("0 - Sair\n");

  printf("Escolha uma opcao: ");

  scanf("%d", &opcao);



  switch (opcao) {

   case 1:

    cadastrarAluno();

    break;

   case 2:

    lancarNotas();

    break;

   case 3:

    exibirNotas();

    break;

   case 0:

    printf("Saindo...\n");

    break;

   default:

    printf("Opcao invalida\n");

    break;

  }

 } while (opcao != 0);



 return 0;

}[/code~]