Pular para o conteúdo

Cadastro de aluno

Programa feito para aula de estrutura de dados. Cadastra alunos, organiza-os em ordem alfabética e imprime na tela.
Alberto Guimarães Viana ZX350
Hits: 15.995 Categoria: C/C++ Subcategoria: Expressões Regulares
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Programa feito para aula de estrutura de dados. Cadastra alunos, organiza-os em ordem alfabética e imprime na tela.
Download ed1.c Enviar nova versão

Esconder código-fonte

#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"); 
 
}

Calcula uma PA...

Sequincia em Fibonacci no C++

Automato Finito Determinístico

Lista Encadeada com Ordenação

Pegando entrada do teclado e guardando em uma string

#1 Comentário enviado por cfalcao1991 em 25/06/2012 - 07:48h
Bom Dia, eu sei que este topico ja esta "meio" antigo, maas eu preciso de uma ajuda relacionado a esse programa ai ou algo parecido. Sou novato em programação, estou no primeiro periodo de sistema, e gostaria de saber se alguem aki poderia me ajudar, eu preciso desenvolver algo QUASE (literalmente) parecido com esse assim, porem não posso usufluir da função struct sera que alguem pode me ajudar nisso?? Estou tentando a mais de 1 semana e não venho conseguindo concluir a tarefa.
(Obs: espero não estar postando no local incorreto, não quero atrapalhar nas visualizações posteriores.)

Agradecido

César Falcão

Contribuir com comentário

Entre na sua conta para comentar.