Advertisement
Pedromaia26

Ficheiros ex

Feb 5th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  6.  
  7. typedef struct ex{
  8.     int num;
  9.     char nome[40];
  10.     char turma[3];
  11.     float media;
  12. }estrutura;
  13.  
  14. estrutura dados;
  15.  
  16. FILE *fx;
  17.  
  18. void insere(){
  19.     int c;
  20.     fx=fopen("aluno.dat","a+");
  21.     do{
  22.         printf("Numero do aluno:");
  23.         scanf("%d",&dados.num);
  24.         printf("Nome do aluno:");
  25.         scanf("%s",dados.nome);
  26.         printf("Turma do aluno:");
  27.         scanf("%s",dados.turma);
  28.         printf("Media do aluno:");
  29.         scanf("%f",&dados.media);
  30.         fwrite(&dados,sizeof(dados),1,fx);
  31.         printf("----------- Pretende continuar?(0-n/1-s) -----------\n");
  32.         scanf("%d",&c);    
  33.     }while (c==1);
  34.     fclose(fx);
  35.    
  36. }
  37.  
  38. void lista()
  39. {
  40.     int i=0;
  41.     float s=0, media;
  42.     fx=fopen("aluno.dat","r");
  43.     fread(&dados,sizeof(dados),1,fx);
  44.     while (!feof(fx)){
  45.         i++;
  46.         printf("Numero: %d\nNome: %s\nTurma: %s\nMedia: %.2f\n-----------\n",dados.num,dados.nome,dados.turma,dados.media);
  47.         s += dados.media;
  48.         fread(&dados,sizeof(dados),1,fx);
  49.     }
  50.     media = (s / i);
  51.     printf("Media Global:%.2f\n",media);
  52.     printf("-----------\n");
  53.     fclose(fx);
  54. }
  55.  
  56. void pesquisa(){
  57.     int numero;
  58.     printf("Numero a pesquisar:\n");
  59.     scanf("%d",&numero);
  60.     fx=fopen("aluno.dat","r");
  61.     fread(&dados,sizeof(dados),1,fx);
  62.     while ((numero!=dados.num) && (!feof(fx))){
  63.         fread(&dados,sizeof(dados),1,fx);
  64.     }
  65.     if (numero==dados.num){
  66.         printf("------------ Numero encontrado -----------\n");
  67.         printf("Numero: %d\nNome: %s\nTurma: %s\nMedia: %.2f\n",dados.num,dados.nome,dados.turma,dados.media);
  68.     }
  69.     else{
  70.         printf("----------- Numero nao encontrado -----------\n");
  71.     }
  72.     fclose(fx);
  73. }
  74.  
  75. void consulta(){
  76.     char tap[3];
  77.     fx = fopen("aluno.dat","r");
  78.     printf("Turma a pesquisar:\n");
  79.     scanf("%s",tap);
  80.     fread(&dados,sizeof(dados),1,fx);
  81.     while (!feof(fx)){
  82.         if (strcmp(tap,dados.turma)==0){
  83.             printf("-----------\nNumero: %d\nNome: %s\nMedia: %.2f\n-----------\n",dados.num,dados.nome,dados.media);
  84.         }
  85.         else{
  86.             printf("----------\nTurma nao encontrada\n-----------\n");
  87.         }
  88.         fread(&dados,sizeof(dados),1,fx);
  89.     }
  90. }
  91.  
  92. void pesquisaa(){
  93.     int nAluno,c=0;
  94.     fx = fopen ("aluno.dat","r+" );
  95.     printf("Número do aluno:\n");
  96.     scanf("%d",&nAluno);
  97.     while ( nAluno!=dados.num   &&!feof(fx) ){
  98.         fread(&dados,sizeof(dados),1,fx);
  99.         if( nAluno == dados.num ){
  100.             printf("----------Aluno Encontrado-----------\n");  
  101.             fseek ( fx,-sizeof(dados),1 );
  102.             dados.num = nAluno;
  103.             printf("Nome: \n");
  104.             printf("%d",dados.nome);
  105.             printf("Turma: \n");
  106.             printf("%d",dados.turma);
  107.             printf("Media: \n");
  108.             printf("%d",dados.media);
  109.             fwrite( &dados,sizeof(dados),1,fx );
  110.             c++;
  111.         }
  112.     }
  113.     if(c==0){
  114.         printf("----------Aluno Nao Encontrado-----------\n");  
  115.     }
  116.     fclose(fx);
  117. }
  118.  
  119. void exportar(){
  120.     char nomeFicheiro[20],turma[6];
  121.     printf("Nome do Ficheiro:");
  122.     scanf("%s",nomeFicheiro);
  123.     if( fopen( nomeFicheiro,"r")==NULL ){
  124.         fn=fopen( nomeFicheiro ,"w");
  125.         fclose(fn);
  126.     }
  127.     printf("Turma a exportar");
  128.     scanf("%s",turma);
  129.     fx = fopen( "aluno.dat","r" );
  130.     fn = fopen( nomeFicheiro ,"a+");
  131.     fread(&dados,sizeof(dados),1,fx);
  132.     while ( !feof(fx) ){
  133.         if( strcmp( turma,dados.turma )==0 ){
  134.             fwrite ( &dados,sizeof(dados),1,fn );
  135.         }
  136.         fread(&dados,sizeof(dados),1,fx);
  137.     }
  138.     fclose(fn);
  139.     fclose(fx);
  140. }
  141.  
  142. void importar(){
  143.     char nomeFicheiro[30];
  144.     printf("Ficheiro a importar:");
  145.     scanf("%s",nomeFicheiro);
  146.     fn = fopen(nomeFicheiro,"r");
  147.     fx = fopen("dados.dat","a+");
  148.     fread(&dados,sizeof(dados),1,fn);
  149.     while(!feof( fn )){
  150.         fwrite(&dados,sizeof(dados),1,fx);
  151.         fread(&dados,sizeof(dados),1,fn);
  152.     }
  153. }
  154.  
  155. void limpa(){
  156.     fx=fopen("aluno.dat","w");
  157.     fclose(fx);
  158.     printf("----------- Limpeza concluida -----------\n");
  159. }
  160.  
  161. int main() {
  162.     int op;
  163.     if(fopen("aluno.dat","r")==NULL){
  164.         fx=fopen("aluno.dat","w");
  165.         fclose(fx);
  166.     }
  167.     do{
  168.         printf("1-Inserir dados\n");
  169.         printf("2-Consulta Global c/ media\n");
  170.         printf("3-Pesquisa por numero do aluno\n");
  171.         printf("4-Consulta de alunos de uma turma c/ media \n");
  172.         printf("5-Pesquisa por numero do aluno c/ alteracao \n");
  173.         printf("6-Exportar ficheiro \n");
  174.         printf("7-Importar ficheiro \n");
  175.         printf("8-Limpeza do ficheiro\n");
  176.         printf("9-Sair\n");
  177.         printf("Escolha do utilizador:\n");
  178.         scanf("%d",&op);
  179.         switch(op){
  180.             case 1: insere();
  181.                     break;
  182.             case 2: lista();
  183.                     break;
  184.             case 3: pesquisa();
  185.                     break;
  186.             case 4: consulta();
  187.                     break;
  188.             case 5: pesquisaa();
  189.                     break;
  190.             case 6: exportar();
  191.                     break;
  192.             case 7: importar();
  193.                     break;
  194.             case 8: limpa();
  195.                     break;
  196.         }
  197.     }while (op!=9);
  198.    
  199.    
  200.     system("pause");
  201.     return 0;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement