Implementar um controle de notas em C utilizando arquivos. O controle deve armazenar até 100 alunos e possuir as seguintes funcionalidades:
1 – Incluir Aluno
2 – Excluir Aluno
3 – Pesquisar Aluno
4 – Lançar Notas do Aluno
5 – Listar Notas do Aluno
6 – Sair
O controle deve armazenar as seguintes informações de cada aluno:
- Matrícula
- Nome
- eMail
- Turma
- Nota1
- Nota2
OBS: Não permitir gravar um aluno sem matrícula e/ou nome. Caso o aluno tenha as 02 notas lançadas, calcular automaticamente a média ao Listar as Notas, como também a situação do aluno (“Aprovado”, “Reprovado”), considerando média 7,0.
Soluções para a tarefa
Resposta:
#include <stdio.h>
#include <stdlib.h>
//declarando a estrutura
typedef struct
{
float matricula;
char nome[50];
char email[60];
float turma;
float nota1;
float nota2;
float total;
}estudante;
//Funcoes
int pesquisa(estudante std[], char id[], int itemCont);
void limpar(estudante std[], int deleteItem);
void mostrar();
//FUncoes para menu
void mostrarMenu()
{
printf("============================================================\n");
printf(" MENU \n");
printf("==================================================\n");
printf(" 1.Adiciona um Estudante ao Arquivo\n");
printf(" 2.Exclui um Estudante do Arquivo\n");
printf(" 3.Atualiza um Estudante no Arquivo\n");
printf(" 4.Visualiza todos os Estudantes do Arquivo\n");
printf(" 5.Calcula a média dos Estudantes\n");
printf(" 6.Mostrar a maior nota\n");
printf(" 7.Mostrar a menor nota\n");
printf(" 8.Pesquisa um Estudante pelo ID\n");
printf(" 9.Ordenação pelo TOTAL\n");
}
void add_estudante(estudante std[], int *itemCont)
{
again:
printf("\nEntre com o ID:");
scanf("%s",&std[*itemCont].matricula);
if(search(std,std[*itemCont].matricula,*itemCont)!=-1){
printf("Este ID não existe\n");
goto again;
printf("Entre com o nome do Estudante:");
scanf("%s",&std[*itemCont].nome);
printf("Entre com o Email:");scanf("%s",&std[*itemCont].email);
printf("Entre com a matricula");scanf("%f",&std[*itemCont].matricula);
printf("Entre com a Turma:");scanf("%f",&std[*itemCont].turma);
printf("Entre com a Nota1:");scanf("%f",&std[*itemCont].nota1);
printf("Entre com a Nota2:");scanf("%f",&std[*itemCont].nota2);
++(*itemCont);
}
int pesquisa(estudante std[], char id[], int itemCont){
int localizar =-1,i;
for (i = 0; i < itemCont && localizar==-1; i++)
{
if (strcmp(std[i].matricula,id)==0) localizar=i;
else localizar=-1 ;
}
return localizar;
}
void mostrarTudo(estudante st[], int itemCont){
int i=0;
mostrar();
while(i<itemCont){
if(std[i].nome !=""){
printf("%-5s",std[i].matricula);
printf("%-17s",std[i].nome);
printf("%-5c",std[i].email);
printf("%-6.1f",std[i].nota1);
printf("%-6.1f",std[i].nota2);
printf("%-4.1f",std[i].total);
printf("\n");
}
i=i+1;
}
}
void mostrar(){
printf("ID NOME EMAIL NOTA1 NOTA2 TOTAL \n");
printf("=================================\n");
}
void deletar(estudante std[], int *itemCont){
char id[10];
int index,i;
if (*itemCont > 0)
{
printf("Entre com o ID:");
scanf("%s",id);
index = pesquisar(std, id,*itemCont);
if ((index!=-1) && (*itemCont != 0))
{
if (index == (*itemCont-1)) //delete the last record
{
limpar(std, index);
--(*itemCont);
printf("O registro foi limpo.\n");
}
else //delete the first or middle record
{
for (i = index; i < *itemCont-1; i++)
{
std[i] = std[i + 1];
limpar(std, *itemCont);
--(*itemCont) ;
}
}
}
else printf("O registro não existe.Verifique o ID e tente novamente.\n");
}
else printf("Sem registro para deletar\n");
}
void limpar(estudante std[],int index)
{
//strcpy(std[index].nome,"");
//strcpy(std[index].email,"");
std[index].nota1 = 0;
std[index].nota2 = 0;
std[index].total = 0;
}
Explicação:
Coloquei tudo dentro de um array. Ta ai!