Sistema de alunos 1.0

Publicado por Danilo Lima 15/03/2007 (última atualização em 28/10/2009)

[ Hits: 7.742 ]

Homepage: http://danilo.site88.net

Download alunos.c

Download alunos.c (versão 2)




A versão beta de um sitema de alunos.

Com vetores e strings que permitem desde o cadastro de alunos e notas, até a modificação de todos os dados.

  



Versões atualizadas deste script

Versão 2 - Enviado por Danilo Lima em 17/10/2009

Changelog: Essa versão traz uma função para inserir notas em separado.

Download alunos.c


Esconder código-fonte

/*
  Name: alunos 1.0
  Copyright: limadaguia 
  Author: Danilo Lima da Guia
  Date: 24/02/07 08:22
  Description: 
*/

# include "stdio.h"
# include "string.h"
# include "dos.h"
struct cadAluno {
       char nome[15];
       int codigo;
       float nota[4];
       float media;
       }aluno[20];
int i,j,n;
//**********************************************************//
void cadastraAluno(){
      
     printf ("Quantos alunos deseja cadastrar? ");
     scanf ("%d",&n);
       for (i=1;i<=n;i++)
       {
       printf ("\nCodigo: ");
       scanf ("%d",&aluno[i].codigo);
       printf ("Nome do Aluno: ");
       scanf("%s", &aluno[i].nome);
         
         for (j=1;j<=4;j++){
         printf ("NOTA %d: ", j);
         scanf ("%f", &aluno[i].nota[j]);
             }
       }
     printf ("\n\naguarde...") ;
     sleep (2500) ;
}
//*********************************************************//
void pesquisa(){
     int cod;
     float soma=0, media=0, aux=0;
     puts ("Digite o codigo do aluno que deseja pesquisar");
     scanf ("%d", &cod);
    int a;
    for (i=1;i<=n;i++){
         if (cod == aluno[i].codigo)
         {
          a = 1;
         printf ("\n**** Codigo **** = %d", aluno[i].codigo);
         printf ("\nNome = %s", aluno[i].nome);
              
              for (j=1;j<=4;j++){
                 soma = aluno[i].nota[j]+ aux;
                 aux = soma;
                  printf ("\n Nota %d = %f",j, aluno[i].nota[j]);
                  }//for 2             
         media = soma / 4;
         printf ("\nMedia: %f", media);
               if (media >= 7)
               {
                 printf ("\nSituacao: Aprovado");
                 }
               else {printf ("\n\aSituacao: Reprovado");}
         
         if (a!=1){
              puts ("\n\a erro:ALUNO NAO ENCONTRADO !!! ");
              } 
         }//if
         }  //for1  
    printf ("\n\naguarde...") ;
    sleep (2500) ;
}//*********************************************************//    
void alteraNome() {
 int cod;
 char name[15];
 printf ("Codigo: ");   
 scanf ("%d", &cod);
   
   for (i=1;i<=n;i++){
       if (cod == aluno[i].codigo)
         {
         printf ("\nAluno: %s", aluno[i].nome);   
         }//if
         else
         {
         printf ("ALUNO NAO ENCONTRADO !!! ");
          } 
   }//for 1
           printf("\nNovo nome:");
           scanf ("%s", name);
              for (i=1;i<=n;i++){
                   if (cod == aluno[i].codigo)
                  {
                   strcpy (aluno[i].nome,name);   //troca o nome
                  }//if 
              }  //for2 
         printf ("\n\naguarde...") ;
         sleep (2500) ;
}//**********************************************************//
 void alteraCodigo(){
      int cod,a;
     
      puts ("Codigo antigo: ");   
      scanf ("%d", &cod);
      for (i=1;i<=n;i++){
       if (cod == aluno[i].codigo)
         { 
         a=1;
         printf ("\nAluno: %s", aluno[i].nome);   
         }//if
      int ncod; 
      printf ("\nNovo codigo:");
      scanf ("%d", &ncod);
         for (i=1;i<=n;i++){
            if (cod == aluno[i].codigo)
            {
            aluno[i].codigo = ncod;
            }//if
         }//fo2  
      }//forfor 1
                if (a != 1)
                {
                printf ("\n\aerro:ALUNO NAO ENCONTRADO !!! ");
                 }//if
 
 printf ("\n\naguarde...") ;
 sleep (2500) ;
}//********************************************************//   
void alteraNota(){  
int cod ;
float nova;
int numNota;
     puts ("\nCodigo: ");
     scanf ("%d", &cod);
     printf ("\nQual nota ?");
     scanf ("%d", &numNota);
     printf ("\nDigite a nova nota:");
     scanf ("%f", &nova);
       for (i=1;i<=n;i++)
       {
           for (j=1;j<=4;j++)
           {
              if (cod == aluno[i].codigo)
              { 
               aluno[i].nota[numNota] = nova;     
              }//if1
              else
              {
              puts ("ALUNO NAO ENCONTRADO !!! ");
              } //else
           }//for 2  
       }//for 1  
    
       printf ("\n\naguarde...") ;
       sleep (2500) ;
}//*******************************************************//
void excluiAluno (){
      char zerado[5]={0,0,0,0,0};
      int cod;
      puts ("Codigo: ");   
      scanf ("%d", &cod);
      for (i=1;i<=n;i++){
         if (cod == aluno[i].codigo)
         {
         aluno[i].codigo = 0;
         strcpy (aluno[i].nome, zerado);
             for (j=1;j<=4;j++)
             {
                 aluno[i].nota[j]=0;
             }//for 2
         }//if
         else
         {
         printf ("ALUNO NAO ENCONTRADO !!! ");
         } //else
      }//for
 printf ("\n\naguarde...") ;
 sleep (2500) ;
     }
void menu ()
{
  int op;
     puts ("Selecione a opcao desejada:\n ");
     puts ("\t 1 - NOVO ALUNO\n ");
     puts ("\t 2 - PESQUISAR\n ");
     puts ("\t 3 - ALTERAR CODIGO\n ");
     puts ("\t 4 - ALTERAR NOME\n ");
     puts ("\t 5 - ALTERAR NOTAS\n ");
     puts ("\t 6 - EXCLUIR ALUNO\n");
     puts ("\t 7  <- SAIR !!! \n ");
     scanf ("%d", &op); 
  
     switch (op){      
     case 1 :
system ("cls");
     cadastraAluno ();
system ("cls");
       menu();
     case 2 :       
system ("cls");
     pesquisa ();
system ("cls");
       menu ();
     case 3 :     
system ("cls");  
     alteraCodigo();
system ("cls");  
       menu ();
     case 4:
system ("cls");
     alteraNome();
system ("cls");
       menu ();
     case 5:
system ("cls");
     alteraNota();
system ("cls");
     menu ();
     case 6:
system ("cls");
     excluiAluno ();
system ("cls");
       menu ();
     case 7:
     exit (1);
     }//escolha    
}//******************************************************//
main (){
  menu (); 
  getch();
 }

Scripts recomendados

Números primos da seqüência Fibonacci

trabalho de aula da empresa

Jogo da forca

Barra de progresso em forma de "roda"

Simulador de cronometro com 2 digitos - otimizado


  

Comentários
[1] Comentário enviado por gedarius em 28/10/2009 - 11:07h

bacana.... mas a busca de alunos poderia/deveria ser por nome e não por código...

caso exista 2(ou mais) alunos com o mesmo nome vc trata isso mostrando na tela quem são os caras e seus respectivos codigos, ai sim vc fala p/ o usuário digitar o código correspondente... pq o usuário a principio não é obrigado a conhecer o codigo dos caras cadastrados!

abraços, e fica ai a dica

[2] Comentário enviado por inacioalves em 30/10/2009 - 11:00h

Caro Danilo Lima,

1. Se eu tisesse que trabalhar com uma quantidade variável de alunos como eu faria? Você prefixou um vetor com 20 alunos.

2. Cuidado com o tal do buffer-overflow:
http://www.vivaolinux.com.br/artigo/Buffer-Overflow-Entendendo-e-explorando/
Veja o artigo do professor Elgio para evitar:
http://www.vivaolinux.com.br/artigo/Parametros-interessantes-do-scanf-e-do-printf-em-C

3. Lembre-se que o scanf só permite ler a primeira palavra (se tiver um espaço no meio o scanf será "quebrado"). Veja o mesmo artigo do professor Elgio que ele ensina como evitar este problema.

4. Seria interessante você usar menos variáveis globais.

5. Seria igualmente interessante que você refizesse o código usando listas encadeadas, ou alocando seu vetor de alunos dinâmicamente com o uso de malloc.

Finalmente! Não veja isto como uma ofensa. Não sei se sua intenção era apresentar o código para pessoas iniciantes, mas vale a pena chamar atenção para estes fatos.

[3] Comentário enviado por limadaguia em 06/11/2009 - 22:49h

sim sim, perfeitas as observações. A minha ideia e mosrtar um dos paradigmas da programação em c, baseado no paradigma entre linguagem estruturada e poo; eu pretendo mostrar aos iniciantes, que se pode ter programas funcinais com as mais basicas estruturas em c, e também contruir o mesmo programa, utilizando outros recursos, como os citados por vc, para mostrar ao fim o que se pode ser feito com a linguagem.

Se der, vamos fazer tipo um tutorial o step-by-step desse programa, ai com certeza ajudaremos mais os iniciante.
Mãos À obra !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts