Cadastro de aluno
Publicado por Alberto Guimarães Viana 22/08/2006
[ Hits: 15.782 ]
Programa feito para aula de estrutura de dados. Cadastra alunos, organiza-os em ordem alfabética e imprime na tela.
#include<stdio.h>
#include<string.h>
#define arq_dados "./fdados.dat"
#define x 4
struct aluno {
char nome[30];
float n1;
float n2;
float media;
char sitreg[10];
};
typedef struct aluno reg;
void incluir(reg *sa, FILE *fdados);//chamada da funcao
void ordena(reg *sa, FILE *fdados);
void aprovados(reg *sa,FILE *fdados);
int main (void)
{
char resp;
reg sa[x];
FILE *fdados=NULL;//definindo q o arquivo comeca sendo nulo
//fdados=fopen(arq_dados, "r+b"); //abrindo o arquivo para leitura =r + binario=b
//if(fdados==NULL)
fdados=fopen(arq_dados, "w+b");//abrindo para leitura e escrita
//FILE *fdados_ord;
/* FILE *fdados_ord=NULL;//cria o arquivo fdados_ord
fdados_ord=fopen(arq_dados_ord, "rb"); //abrindo o arquivo para leitura =r + binario=b
if(fdados_ord==NULL) fdados_ord=fopen(arq_dados_ord, "w+b");
*/
while(resp!='3')
{
system("cls");
printf("\n|-------Cadasto de Alunos-------|\n");
printf("1- Incluir Aluno \n");
printf("2- Imprime Lista Ordenada\n");
printf("3- Sair \n");
printf("Opcao: ");
resp = getch();
switch(resp)
{
case '1':
incluir(sa, fdados); //ordem de execucao a hierarquia do programa
break;
case '2':
ordena(sa,fdados);
aprovados(sa,fdados);
break;
}
}
}
//funcao para incluir alunos
void incluir(reg *sa, FILE *fdados)
{
float media=0;
int i;
system("cls");
for(i=0; i<x; i++)
{
system("cls");
printf("\n |----------Cadastro de Aluno----------|\n\n");
printf("\n Digite o nome do Aluno: ");
scanf("%s",&sa[i].nome);
printf("\n\n Digite a Nota 1: ");
scanf("%f",&sa[i].n1);
printf("\n Digite a Nota 2: ");
scanf("%f",&sa[i].n2);
//efetuando o calculo da media
media = (sa[i].n1+sa[i].n2)/2;
if(media>=6){
sa[i].media=media;
strcpy(sa[i].sitreg, "Aprovado");
}
else
{
sa[i].media=media;
strcpy(sa[i].sitreg,"Reprovado");
}
//fseek(fdados,0,SEEK_END); // posiciona o prompt no final do arquivo
fwrite(&sa[i],sizeof(reg),1,fdados);// gravar
//sizeof aloca dinamicamente a quantidade necessaria de byte
}
fclose(fdados);
}
//funcao de ordenacao dos dados informados
void ordena(reg *sa, FILE *fdados)
{
reg aux;//cria um tipo auxiliar para fazer a ordenacao
int i, j;
fdados=fopen(arq_dados, "rb");
for(i=0; i<x; i++)
{
fread(&sa[i], sizeof(reg),1,fdados);
}
for(i=0;i<(x-1);i++){
for(j=i+1;j<(x); j++){
if(strcmp(sa[i].nome, sa[j].nome)>0)//compara o campo do 1 registro com o campo 1 do segundo registro.
{
aux=sa[i];
sa[i]=sa[j];
sa[j]=aux;
}
}
}
fclose(fdados);
fdados=fopen(arq_dados, "w+b");
for(i=0;i<x;i++)
{
//fseek(fdados_ord,sizeof(sa),SEEK_END);//posiciona no fim do arquivo
fwrite(&sa[i], sizeof(reg),1,fdados); //grava no arquivo
}
fclose(fdados);
}
//funcao imprime na tela os aprovados
void aprovados(reg *sa,FILE *fdados)
{
int i;
system("cls");
//cria o arquivo fdados_ord
fdados=fopen(arq_dados, "rb");
printf("\n |----------------Listagem dos Aprovados----------------| \n\n");
for(i=0; i<x; i++)
{
fread(&sa[i], sizeof(reg),1,fdados);
if (strcmp(sa[i].sitreg,"Aprovado")==0)//escreve todos os aprovados
{
printf("\n Nome: %s ",sa[i].nome);
printf("\n Nota 1: %.2f ",sa[i].n1);
printf("\n Nota 2: %.2f \n\n",sa[i].n2);
printf("\n Media: %.2f \n",sa[i].media);
printf("\n Situacao: %s \n\n",sa[i].sitreg);
}
}
getch();
system("cls");
}
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (9)
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)









