Cadastro de aluno
Publicado por Alberto Guimarães Viana 22/08/2006
[ Hits: 15.858 ]
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");
}
Fila com Lista Encadeada Descritor/Cabeçalho
Retirar caracteres de uma frase
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Fiz uma pergunta no fórum mas não consigo localizar (13)
Quais os códigos mais dificeis que vcs sabem fazer? (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (7)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... [RES... (8)
Dá para criar um bom jogo usando a linguagem de programação C? [RESOLV... (1)









