Jump to content
Fórum Script Brasil
  • 0

Ajuda com Aquivo Binario


GustavoMunhoz
 Share

Question

Boa Noite Pessoal

sou novo no forum e estou cursando o segundo semestre em analise e desenvolvimento de sistemas minha professora pediu para fazermos um programa do seguinte modo:

Cada grupo deve determinar os campos, tipos e tamanhos dos registros que serão utilizados na manipulação dos arquivos “Esportes.dat” e “Atletas.dat” (conforme instruções a seguir), bem como criar um programa em C para manter e consultar seus cadastros.

Arquivos e registros:

 Esportes: arquivo destinado a armazenar modalidades esportivas; deve conter:

 código;

 nome da modalidade;

 campo “excluído”, com valores “0” ou “1”;

 e mais 2 (dois) campos (no mínimo).

 Atletas: deve conter:

 código;

 nome;

 código da modalidade a que se dedica;

 campo “excluído”, com valores “0” ou “1”;

 e mais 5 (cinco) campos (no mínimo).

 O campo “excluído” deve ser utilizado para realizar a exclusão lógica do arquivo (quando “excluído” for 1, o registro deve ser desconsiderado em consultas).

Opções:

1. Inclusão de esporte (código não deve repetir)

2. Alteração de esporte pelo código

 buscar o código do esporte no arquivo

 exibir um a um (exceto o código), todos os dados do esporte, permitindo que o usuário possa alterá-lo

 após percorrer todos os campos, solicitar confirmação das alterações

 emitir mensagem final

3. Exclusão de esporte (somente se não houver atletas para o esporte)

 buscar o código do esporte no arquivo

 exibir dados do esporte

 solicitar confirmação da exclusão

 realizar a exclusão lógica – campo “excluído”

 emitir mensagem final

4. Inclusão de atleta (código não deve repetir)

 código do esporte deve existir no arquivo “Esportes.dat”

5. Alteração de atleta

 mesmo funcionamento da opção “2”

 se o código de esporte for alterado, deve existir no arquivo “Esportes.dat”

6. Exclusão de atleta( mesmo funcionamento da opção “3”)

7. Consulta de atletas por esporte

8. Encerramento do programa

eu e meu amigo desenvolvemos o seguinte codigo:

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct regESPORTE{

int cod_mod;

int camp_exc;

int num_atletas;

char nome_mod[50];

char ambiente[50];

};

struct regATLETA{

int cod_atle;

int cod_mod_atle;

int camp_exc_atle;

char nome_atle[50];

char nacionalidade[50];

int idade;

float peso;

float altura;

char posicao[50];

};

main(){

regESPORTE esporte;

regATLETA atleta;

FILE *arq;

FILE *arq2;

int x,sair;

int opcao=0,consulta=0,aux=0,posicao=0,achou=0, cont = 0;

char opcao2;

do{//[1]

do{//[2]

printf("Banco de dados de cadastro de modalidade e Atletas\n\n\n");

printf("Escolha opcao:\n\n1) Incluir esporte \n2) Alterar esporte pelo codigo \n3) Excluir esporte \n4) Incluir atleta");

printf("\n5) Alterar atleta \n6) Excluir atleta \n7) Consultar atleta por esporte \n8) Encerrar programa\n\n");

scanf("%d",&opcao);fflush(stdin);

system("cls");

}while(opcao<1||opcao>8);//[2]

switch(opcao){//[3]

case 1:

arq=fopen("C:\\Esporte.dat", "a+b");

printf("Digite o codigo do esporte: ");

scanf("%d",&esporte.cod_mod); fflush(stdin);

consulta=esporte.cod_mod;

if(arq==NULL){//[4]

printf("\nErro na abertura do arquivo\n");

consulta=0;

}//[4]

else{//[9]

x=fread(&esporte,sizeof(esporte),1,arq);

while (feof(arq)==0){//[6]

if(x!=1){//[5]

printf("\nErro no arquivo\n");

consulta=0;

}//[5]

else{//[7]

if(esporte.cod_mod==consulta){//[8]

printf("\nEsporte já cadastrado com este codigo!\n");

consulta=0;

}//[8]

}//[7]

x=fread(&esporte,sizeof(esporte),1,arq);

}//[6]

}//[9]

fclose(arq);

arq=fopen("c:\\Esporte.dat","ab");

if (esporte.cod_mod!=0&&consulta!=0){//[10]

esporte.cod_mod=consulta;

printf("Digite o nome da modalidade: ");

gets(esporte.nome_mod);

printf("Digites o numero de atletas que compoem um equipe dessa modalidade: ");

scanf("%d", &esporte.num_atletas); fflush(stdin);

printf("Digite o ambiente onde essa modalidade e praticada: ");

gets(esporte.ambiente);

esporte.camp_exc=0;

x=fwrite(&esporte,sizeof(esporte),1,arq);

system("cls");

if(x!=1) printf("\nErro na gravacao do esporte!");

fclose(arq);

} //[10]

break;

case 2:

printf("Digite o codigo do esporte: ");

scanf("%d",&consulta); fflush(stdin);

arq=fopen("c:\\Esporte.dat","rb");

if(arq==NULL) printf("\nErro na abertura do arquivo!\n");

else{ //[11]

x=fread(&esporte,sizeof(esporte),1,arq);

while(feof(arq) == 0){//[14]

if(x != 1){//[12]

printf("\nErro no arquivo\n");

}//[12]

else{

if(consulta==esporte.cod_mod){//[13]

system("cls");

printf("\n===DADOS ATUAIS===\n\n");

printf("Nome da modalidade: %s\n", esporte.nome_mod);

printf("Numero de atletas de uma equipe: %d\n", esporte.num_atletas);

printf("Ambiente onde a modalide é praticada: %s\n",esporte.ambiente);

cont = 1;

aux = ftell(arq); //

} //[13]

}//[14]

x = fread(&esporte, sizeof(esporte), 1, arq);

}//[11]

if(cont < 1){//[15]

system("cls");

printf("Codigo não encontrado!!");

getchar();

system("cls");

break;

}//[15]

// menssagem de erro caso não encontrou

fclose(arq);

arq=fopen("c:\\Esporte.dat","r+b");

if(arq== NULL){//[16]

printf("\nErro na abertura do arquivo!\n");

}//[16]

else{//[17]

printf("\n===PREENCHA A ALTERACAO===\n\n");

printf("Digite o nome da modalidade: ");

gets(esporte.nome_mod);

printf("Digite o numero de atletas de uma equipe dessa modalidade: ");

scanf("%d",&esporte.num_atletas); fflush(stdin);

printf("Digite o nome do ambiente da modalidade: ");

gets(esporte.ambiente);

printf("Deseja salvar as alteracoes? S/N ");

scanf("%c",&opcao2); fflush(stdin);

if(opcao2=='s'||opcao2=='S'&&x==1){//[18]

fseek(arq,(aux-sizeof(esporte)),SEEK_SET); //

//fseek = aux -(sizeof(esporte)

x=fwrite(&esporte,sizeof(esporte),1,arq);

system("cls");

printf("Dados da modalide alterados!\n");

}//[18]

else{//[19]

system("cls");

printf("Dados da modalide não alterados!\n");

}//[19]

fclose(arq);

system("cls");

}//[17]

break;

case 3:

printf("Digite o codigo do esporte: ");

scanf("%d",&consulta); fflush(stdin);

arq=fopen("c:\\Esporte.dat","rb");

if(arq==NULL) printf("\nErro na abertura do arquivo!\n");

else{ //[20]

x=fread(&esporte,sizeof(esporte),1,arq);

while(feof(arq) == 0){//[21]

if(x != 1) printf("\nErro no arquivo\n");

else{//[22]

if((consulta==esporte.cod_mod)&&(esporte.camp_exc == 0)){//[23]

system("cls");

printf("\n===DADOS ATUAIS===\n\n");

printf("Nome da modalidade: %s\n", esporte.nome_mod);

printf("Numero de atletas de uma equipe: %d\n", esporte.num_atletas);

printf("Ambiente onde a modalide é praticada: %s\n",esporte.ambiente);

cont = 1;

aux = ftell(arq); //

}/*[23]*/

}//[22]

x = fread(&esporte, sizeof(esporte), 1, arq);

}//[21]

if(cont < 1){//[24]

system("cls");

printf("Codigo não encontrado!!");

getchar();

system("cls");

break;

}//[24]

// menssagem de erro caso não encontrou

}//[20]

fclose(arq);

cont=0;

arq2=fopen("c:\\Atleta.dat","rb");

if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");

else{//[25]

x=fread(&atleta,sizeof(atleta),1,arq2);

while(feof(arq2)==0){//[26]

if(x!=1) printf("\nErro no arquivo\n");

else{//[27]

if(consulta==atleta.cod_mod_atle) cont = 1;

}//[27]

x = fread(&atleta,sizeof(atleta),1,arq2);

}//[26]

if(cont > 0){//[28]

system("cls");

printf("não é possivel excluir, pois existem atletas cadastrados!!");

getchar();

system("cls");

break;

}//[28]

} //[25]

fclose(arq2);

arq=fopen("c:\\Esporte.dat","r+b");

if(arq== NULL) printf("\nErro na abertura do arquivo!\n");

else{//[29]

printf("Deseja salvar as alteracoes? S/N ");

scanf("%c",&opcao2); fflush(stdin);

esporte.camp_exc = 1;

if((opcao2=='s')||(opcao2=='S')){//[30]

fseek(arq,(aux-sizeof(esporte)),SEEK_SET); //

//fseek = aux -(sizeof(esporte)

x=fwrite(&esporte,sizeof(esporte),1,arq);

if (x == 1){//[31]

system("cls");

printf("Esporte excluido com sucesso!\n");

}//[31]

else{//[32]

printf("Erro na exclusao do produto!");

}//[32]

}//[30]

else{//[33]

system("cls");

printf("Esporte não exluido!\n");

system("cls");

}//[33]

}//[29]

fclose(arq);

break;

case 4:

arq2=fopen("C:\\Atleta.dat", "a+b");

printf("Digite o codigo do atleta: ");

scanf("%d",&atleta.cod_atle); fflush(stdin);

consulta=atleta.cod_atle;

if(arq2==NULL){//[34]

printf("\nErro na abertura do arquivo\n");

consulta=0;

}//[34]

else{//[35]

x=fread(&atleta,sizeof(atleta),1,arq2);

while (feof(arq2)==0){//[36]

if(x!=1){//[37]

printf("\nErro no arquivo\n");

consulta=0;

}//[37]

else{//[38]

if(atleta.cod_atle==consulta){//[39]

printf("\nAtleta já cadastrado com este codigo!\n");

consulta=0;

}//[39]

}//[38]

x=fread(&atleta,sizeof(atleta),1,arq2);

}//[36]

}//[35]

fclose(arq2);

arq2=fopen("c:\\Atleta.dat","ab");

if (atleta.cod_atle!=0&&consulta!=0){//[40]

atleta.cod_atle=consulta;

printf("Digite o nome do atleta: ");

gets(atleta.nome_atle);

printf("Digite o codigo da modalidade do atleta: ");

scanf("%d", &atleta.cod_mod_atle); fflush(stdin);

printf("qual a nacionalidade do atleta?: ");

gets(atleta.nacionalidade);

printf("Qual a peso do atleta?: ");

scanf("%f", &atleta.peso); fflush(stdin);

printf("Qual a altura do atleta?: ");

scanf("%f", &atleta.altura); fflush(stdin);

printf("Qual a posicao do atleta em seu esporte?: ");

scanf("%s", &atleta.posicao); fflush(stdin);

atleta.camp_exc_atle=0;

x=fwrite(&atleta, sizeof(atleta), 1, arq2);

system("cls");

if(x!=1) printf("\nErro na gravacao do atleta!");

}//[40]

fclose(arq2);

break;

case 5:

printf("Digite o codigo do atleta: ");

scanf("%d",&consulta); fflush(stdin);

arq=fopen("c:\\Atleta.dat","rb");

if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");

else{//[41]

x=fread(&atleta,sizeof(atleta),1,arq2);

while(feof(arq2) == 0){//[42]

if(x != 1) printf("\nErro no arquivo\n");

else{//[43]

if(consulta==atleta.cod_atle){

system("cls");

printf("====DADOS ATUAIS=====");

printf("Codigo do Atleta: %d\n", atleta.cod_atle);

printf("Codigo da modalidade : %d\n",atleta.cod_mod_atle);

printf("Nome: %s\n",atleta.nome_atle);

printf("Nacionalidade: %s\n",atleta.nacionalidade);

printf("idade: %d\n",atleta.idade);

printf("peso: %f\n",atleta.peso);

printf("Altura: %f\n",atleta.altura);

printf("Posicao : %s\n",atleta.posicao);

cont = 1;

aux = ftell(arq);

}//[43]

}//[42]

x = fread(&atleta, sizeof(atleta), 1, arq2);

}//[41]

if(cont < 1){//[44]

system("cls");

printf("Codigo não encontrado!!");

getchar();

system("cls");

break;

} //[44]

fclose(arq);

arq2=fopen("c:\\Atleta.dat","r+b");

if(arq== NULL) printf("\nErro na abertura do arquivo!\n");

else{//[45]

printf("\n===PREENCHA A ALTERACAO===\n\n");

printf("Digite o nome do atleta: ");

gets(atleta.nome_atle);

printf("Digite o codigo da modalidade do atleta: ");

scanf("%d",&atleta.cod_mod_atle);fflush(stdin);

printf("qual a nacionalidade do atleta?: ");

gets(atleta.nacionalidade);

printf("Qual a peso do atleta?: ");

scanf("%d",&atleta.peso);fflush(stdin);

printf("Qual a altura do atleta?: ");

scanf("%d",&atleta.altura);fflush(stdin);

printf("Qual a idade do atleta?: ");

scanf("%d",&atleta.idade);fflush(stdin);

printf("Qual a posicao do atleta em seu esporte?: ");

gets(atleta.posicao);

printf("Deseja salvar as alteracoes? S/N ");

scanf("%c",&opcao2); fflush(stdin);

if(opcao2=='s'||opcao2=='S'&&x==1){//[46]

x=fwrite(&atleta,sizeof(atleta),1,arq2);

system("cls");

printf("Dados do atleta alterados!\n");

}//[46]

else{//[47]

system("cls");

printf("Dados do atleta não alterados!\n");

fclose(arq);

}//[47]

}//[45]

break;

case 6:

printf("Digite o codigo do atleta: ");

scanf("%d",&consulta); fflush(stdin);

arq2=fopen("c:\\Atleta.dat","rb");

if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");

else{ //[20]

x=fread(&atleta,sizeof(atleta),1,arq2);

while(feof(arq2) == 0){//[21]

if(x != 1) printf("\nErro no arquivo\n");

else{//[22]

if((consulta==atleta.cod_mod_atle)&&(atleta.camp_exc_atle == 0)){//[23]

system("cls");

printf("\n===DADOS ATUAIS===\n\n");

printf("Nome do atleta: %s\n", atleta.nome_atle);

printf("Codigo da modalidade do atleta: %d\n", atleta.cod_mod_atle);

printf("Nacionalidade do atleta: %s\n", atleta.nacionalidade);

printf("Idade do atleta: %d\n", atleta.idade);

printf("Peso do atleta: %f\n", atleta.peso);

printf("Altura do atleta: %f\n", atleta.altura);

printf("Posicao do atleta: %s\n", atleta.posicao);

cont = 1;

aux = ftell(arq2); //

}/*[23]*/

}//[22]

x = fread(&esporte, sizeof(atleta), 1, arq2);

}//[21]

if(cont < 1){//[24]

system("cls");

printf("Codigo não encontrado!!");

getchar();

system("cls");

break;

}//[24]

// menssagem de erro caso não encontrou

}//[20]

fclose(arq2);

arq2=fopen("c:\\Atleta.dat","r+b");

if(arq2== NULL) printf("\nErro na abertura do arquivo!\n");

else{//[29]

printf("Deseja excluir esse atleta? S/N ");

scanf("%c",&opcao2); fflush(stdin);

atleta.camp_exc_atle = 1;

if((opcao2=='s')||(opcao2=='S')){//[30]

fseek(arq2,(aux-sizeof(atleta)),SEEK_SET); //

//fseek = aux -(sizeof(esporte)

x=fwrite(&esporte,sizeof(atleta),1,arq2);

if (x == 1){//[31]

system("cls");

printf("Esporte excluido com sucesso!\n");

}//[31]

else{//[32]

printf("Erro na exclusao do produto!");

}//[32]

}//[30]

else{//[33]

system("cls");

printf("Esporte não exluido!\n");

system("cls");

}//[33]

}//[29]

fclose(arq2);

break;

case 7:

printf("Digite o codigo do esporte para saber quais atletas a praticam: ");

scanf("%d",&consulta); fflush(stdin);

arq=fopen("c:\\Esporte.dat","rb");

if(arq==NULL) printf("\nErro na abertura do arquivo!\n");

else{//[48]

x=fread(&esporte,sizeof(esporte),1,arq);

while(feof(arq)==0){//[49]

if(x != 1) printf("\nErro no arquivo\n");

else{//[50]

if((consulta==esporte.cod_mod)&&(esporte.camp_exc == 0)){//[51]

system("cls");

printf("Modalidade: %s\n\n",esporte.nome_mod);

}/*[51]*/

if(esporte.camp_exc == 1){

printf("não existe essa modalidade ou modalidade excluida!!");

getchar();

system("cls");

break;

}

}//[50]

x = fread(&esporte, sizeof(esporte), 1, arq);

}//[49]

}//[48]

fclose(arq);

arq2=fopen("c:\\Atleta.dat","rb");

if(arq2==NULL)

printf("\nErro na abertura do arquivo!\n");

else{//[52]

x=fread(&atleta,sizeof(atleta),1,arq2);

while(feof(arq2)==0){//[53]

if(x!=1)

printf("\nErro no arquivo\n");

else{//[54]

if(esporte.camp_exc = 1)

{

break;

}else {

if((consulta==atleta.cod_mod_atle)&&(atleta.camp_exc_atle == 0)){

printf("Atleta: %s\n\n",atleta.nome_atle);

cont = 1;

}

}

}//[54]

x = fread(&atleta,sizeof(atleta),1,arq2);

}//[53]

}//[52]

getchar();

system("cls");

fclose(arq2);

break;

case 8:

exit(1);

}

}

}//[3]

}while(opcao!=8);//[1]

}

só que ele esta com uns erros nas opções 5 e 7 que não estou conseguindo solucionar

teria como alguém me ajudar?

ou me dar alguma visão do erro?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

passei a madruga tentando arruma e parace que deu uma arrumada

segue o codigo:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct regESPORTE{
          int cod_mod;
          int camp_exc;
          int num_atletas;
          char nome_mod[50];
          char ambiente[50];
};
struct regATLETA{
          int cod_atle;
          int cod_mod_atle;
          int camp_exc_atle;
          char nome_atle[50];
          char nacionalidade[50];
          int idade;
          float peso;
          float altura;
          char posicao[50];
};
main(){
       regESPORTE esporte;
       regATLETA atleta;
       FILE *arq;
       FILE *arq2;
       int x,sair;
       int opcao=0,consulta=0,aux=0,posicao=0,achou=0, cont = 0;
       char opcao2;
       do{//[1]
           do{//[2]
              printf("Banco de dados de cadastro de modalidade e Atletas\n\n\n");
              printf("Escolha opcao:\n\n1) Incluir esporte \n2) Alterar esporte pelo codigo \n3) Excluir esporte \n4) Incluir atleta");
              printf("\n5) Alterar atleta \n6) Excluir atleta \n7) Consultar atleta por esporte \n8) Encerrar programa\n\n");
              scanf("%d",&opcao);fflush(stdin);
              system("cls");
           }while(opcao<1||opcao>8);//[2]
           switch(opcao){//[3]
                  case 1:
                             arq=fopen("C:\\Esporte.dat", "a+b");
                             printf("Digite o codigo do esporte: ");
                             scanf("%d",&esporte.cod_mod); fflush(stdin);
                             consulta=esporte.cod_mod;
                             if(arq==NULL){//[4]
                                printf("\nErro na abertura do arquivo\n");
                                consulta=0;
                             }//[4]
                             else{//[9]
                                  x=fread(&esporte,sizeof(esporte),1,arq);
                                  while (feof(arq)==0){//[6]
                                         if(x!=1){//[5]
                                            printf("\nErro no arquivo\n");
                                            consulta=0;
                                            }//[5]
                                            else{//[7]
                                                 if(esporte.cod_mod==consulta){//[8]
                                                 printf("\nEsporte já cadastrado com este codigo!\n");
                                                 consulta=0;
                                                 }//[8]
                                            }//[7]
                                         x=fread(&esporte,sizeof(esporte),1,arq);
                                 }//[6]
                             }//[9]
                             fclose(arq);
                             arq=fopen("c:\\Esporte.dat","ab");
                             if (esporte.cod_mod!=0&&consulta!=0){//[10]
                                 esporte.cod_mod=consulta;
                                 printf("Digite o nome da modalidade: ");
                                 gets(esporte.nome_mod);
                                 printf("Digites o numero de atletas que compoem um equipe dessa modalidade: ");
                                 scanf("%d", &esporte.num_atletas); fflush(stdin);
                                 printf("Digite o ambiente onde essa modalidade e praticada: ");
                                 gets(esporte.ambiente);
                                 esporte.camp_exc=0;
                                 x=fwrite(&esporte,sizeof(esporte),1,arq);
                                 system("cls");
                                 if(x!=1) printf("\nErro na gravacao do esporte!");
                                 
                                 fclose(arq);
                                 }    //[10]            
                         break;
                  case 2:
                             printf("Digite o codigo do esporte: ");
                             scanf("%d",&consulta); fflush(stdin);
                             arq=fopen("c:\\Esporte.dat","rb");
                             if(arq==NULL) printf("\nErro na abertura do arquivo!\n");
                             else{     //[11]                         
                                  x=fread(&esporte,sizeof(esporte),1,arq);
                                  while(feof(arq) == 0){//[14]
                                                  if(x != 1){//[12]
                                                     printf("\nErro no arquivo\n");
                                                     }//[12]
                                                     else{
                                                       if(consulta==esporte.cod_mod){//[13]
                                                         system("cls");
                                                         printf("\n===DADOS ATUAIS===\n\n");
                                                         printf("Nome da modalidade: %s\n", esporte.nome_mod);
                                                         printf("Numero de atletas de uma equipe: %d\n", esporte.num_atletas);
                                                         printf("Ambiente onde a modalide é praticada: %s\n",esporte.ambiente);
                                                         cont = 1;
                                                         aux = ftell(arq);    //                       
                                                         }  //[13]                      
                                                      }//[14]
                                                  x = fread(&esporte, sizeof(esporte), 1, arq);
                                  }//[11]
                                  
                                  if(cont < 1){//[15]
                                  system("cls");
                                  printf("Codigo não encontrado!!");
                                  getchar();
                                  system("cls");
                                  break;
                                  }//[15]
                               // menssagem de erro caso não encontrou
       
                             fclose(arq);
                             
                             arq=fopen("c:\\Esporte.dat","r+b");
                             if(arq== NULL){//[16]
                                printf("\nErro na abertura do arquivo!\n");
                             }//[16]
                             else{//[17]
                                
                             printf("\n===PREENCHA A ALTERACAO===\n\n");
                             printf("Digite o nome da modalidade: ");
                             gets(esporte.nome_mod);
                             printf("Digite o numero de atletas de uma equipe dessa modalidade: ");
                             scanf("%d",&esporte.num_atletas); fflush(stdin);
                             printf("Digite o nome do ambiente da modalidade: ");
                             gets(esporte.ambiente);
                             printf("Deseja salvar as alteracoes? S/N  ");
                             scanf("%c",&opcao2); fflush(stdin);
                             if(opcao2=='s'||opcao2=='S'&&x==1){//[18]
                                fseek(arq,(aux-sizeof(esporte)),SEEK_SET); //
                                //fseek = aux -(sizeof(esporte)      
                                x=fwrite(&esporte,sizeof(esporte),1,arq);
                                system("cls");
                                printf("Dados da modalide alterados!\n");
                                }//[18]
                                  else{//[19]
                                       system("cls");
                                       printf("Dados da modalide não alterados!\n");             
                                       }//[19]
                             fclose(arq);
                             system("cls");
                             }//[17]
                                                                                                      
                         break;
                  case 3:
                         

                         printf("Digite o codigo do esporte: ");
                             scanf("%d",&consulta); fflush(stdin);
                             arq=fopen("c:\\Esporte.dat","rb");
                             if(arq==NULL) printf("\nErro na abertura do arquivo!\n");
                             else{ //[20]                             
                                  x=fread(&esporte,sizeof(esporte),1,arq);
                                  while(feof(arq) == 0){//[21]
                                                  if(x != 1) printf("\nErro no arquivo\n");
                                                            
                                                  else{//[22]
                                                       if((consulta==esporte.cod_mod)&&(esporte.camp_exc == 0)){//[23]
                                                         system("cls");
                                                         printf("\n===DADOS ATUAIS===\n\n");
                                                         printf("Nome da modalidade: %s\n", esporte.nome_mod);
                                                         printf("Numero de atletas de uma equipe: %d\n", esporte.num_atletas);
                                                         printf("Ambiente onde a modalide é praticada: %s\n",esporte.ambiente);
                                                         cont = 1;
                                                         aux = ftell(arq);    //                       
                                                         }/*[23]*/             
                                                      }//[22]
                                                  x = fread(&esporte, sizeof(esporte), 1, arq);
                                  }//[21]
                                  
                                  if(cont < 1){//[24]
                                  system("cls");
                                  printf("Codigo não encontrado!!");
                                  getchar();
                                  system("cls");
                                  break;
                                  }//[24]
                               // menssagem de erro caso não encontrou
                             }//[20]
                             fclose(arq);
                             cont=0;
                             arq2=fopen("c:\\Atleta.dat","rb");
                             if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");
                             else{//[25]                       
                                  x=fread(&atleta,sizeof(atleta),1,arq2);
                                  while(feof(arq2)==0){//[26]
                                        if(x!=1) printf("\nErro no arquivo\n");

                                        else{//[27]
                                             if(consulta==atleta.cod_mod_atle) cont = 1;
                                             }//[27]
                                        
                                        x = fread(&atleta,sizeof(atleta),1,arq2);
                                  }//[26]
                                  if(cont > 0){//[28]
                                  system("cls");
                                  printf("não é possivel excluir, pois existem atletas cadastrados!!");
                                  getchar();
                                  system("cls");
                                  break;
                                  }//[28]
                             } //[25]
                              fclose(arq2);
                             
                             arq=fopen("c:\\Esporte.dat","r+b");
                             if(arq== NULL) printf("\nErro na abertura do arquivo!\n");
                             else{//[29]
                                  printf("Deseja salvar as alteracoes? S/N  ");
                                  scanf("%c",&opcao2); fflush(stdin);
                                  esporte.camp_exc = 1;
                                  if((opcao2=='s')||(opcao2=='S')){//[30]
                                     fseek(arq,(aux-sizeof(esporte)),SEEK_SET); //
                                     //fseek = aux -(sizeof(esporte)      
                                     x=fwrite(&esporte,sizeof(esporte),1,arq);
                                     
                                                                if (x == 1){//[31]
                                                                system("cls");
                                                                printf("Esporte excluido com sucesso!\n");
                                                                }//[31]
                                                                else{//[32]
                                                                printf("Erro na exclusao do produto!");
                                                                }//[32]
                                  }//[30]
                            
                              else{//[33]
                                   system("cls");
                                   printf("Esporte não exluido!\n");             
                                   system("cls");
                              }//[33]
                              }//[29] 
                              fclose(arq); 

                         break;   
                  case 4:
                       
                       arq2=fopen("C:\\Atleta.dat", "a+b");
                             printf("Digite o codigo do atleta: ");
                             scanf("%d",&atleta.cod_atle); fflush(stdin);
                             consulta=atleta.cod_atle;
                             if(arq2==NULL){//[34]
                                printf("\nErro na abertura do arquivo\n");
                                consulta=0;
                             }//[34]
                             else{//[35]
                                  x=fread(&atleta,sizeof(atleta),1,arq2);
                                  while (feof(arq2)==0){//[36]
                                                              if(x!=1){//[37]
                                                              printf("\nErro no arquivo\n");
                                                              consulta=0;
                                                              }//[37]
                                         else{//[38]
                                              if(atleta.cod_atle==consulta){//[39]
                                                 printf("\nAtleta já cadastrado com este codigo!\n");
                                                 consulta=0;
                                              }//[39]
                                         }//[38]
                                         x=fread(&atleta,sizeof(atleta),1,arq2);
                                 }//[36]
                             }//[35]
                             fclose(arq2);
                             arq2=fopen("c:\\Atleta.dat","ab");
                             if (atleta.cod_atle!=0&&consulta!=0){//[40]
                                 atleta.cod_atle=consulta;
                                 printf("Digite o nome do atleta: ");
                                 gets(atleta.nome_atle);
                                 printf("Digite o codigo da modalidade do atleta: ");
                                 scanf("%d", &atleta.cod_mod_atle); fflush(stdin);
                                 printf("qual a nacionalidade do atleta?: ");
                                 gets(atleta.nacionalidade);
                                 printf("Qual a peso do atleta?: ");
                                 scanf("%f", &atleta.peso); fflush(stdin);
                                 printf("Qual a altura do atleta?: ");
                                 scanf("%f", &atleta.altura); fflush(stdin);
                                 printf("Qual a posicao do atleta em seu esporte?: ");
                                 scanf("%s", &atleta.posicao); fflush(stdin);
                                 atleta.camp_exc_atle=0;
                                 x=fwrite(&atleta, sizeof(atleta), 1, arq2);
                                 system("cls");
                                 if(x!=1) printf("\nErro na gravacao do atleta!");
                                 
                             }//[40]
                             fclose(arq2);
                                              
                         break;

                  case 5:
                       printf("Digite o codigo do atleta: ");
                             scanf("%d",&consulta); fflush(stdin);
                             arq2=fopen("c:\\Atleta.dat","rb");
                             if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");
                             else{//[41]                  
                                  x=fread(&atleta,sizeof(atleta),1,arq2);
                                  while(feof(arq2) == 0){//[42]
                                                   if(x != 1) printf("\nErro no arquivo\n");

                                                        else{//[43]
                                                                   if(consulta==atleta.cod_atle){
                                                                   system("cls");
                                                                   printf("====DADOS ATUAIS=====\n");
                                                                   printf("Codigo da modalidade : %d\n",atleta.cod_mod_atle);
                                                                   printf("Nome: %s\n",atleta.nome_atle);
                                                                   printf("Nacionalidade: %s\n",atleta.nacionalidade);
                                                                   printf("idade: %d\n",atleta.idade);
                                                                   printf("peso: %.2f\n",atleta.peso);
                                                                   printf("Altura: %.2f\n",atleta.altura);
                                                                   printf("Posicao : %s\n",atleta.posicao);
                                                                   cont = 1;
                                                                   aux = ftell(arq2);
                                                        }//[43]
                                                    }//[42]
                                        x = fread(&atleta, sizeof(atleta), 1, arq2);
                                  }//[41]
                                  if(cont < 1){//[44]
                                  system("cls");
                                  printf("Codigo não encontrado!!");
                                  getchar();
                                  system("cls");
                                  break;
                             } //[44]

                             fclose(arq2);
                             arq2=fopen("c:\\Atleta.dat","r+b");
                             if(arq2== NULL) printf("\nErro na abertura do arquivo!\n");

                             else{//[45]
                                  
                                  printf("\n===PREENCHA A ALTERACAO===\n\n");    
                                  printf("Digite o nome do atleta: ");
                                  gets(atleta.nome_atle);
                                  printf("Digite o codigo da modalidade do atleta: ");
                                  scanf("%d",&atleta.cod_mod_atle);fflush(stdin);
                                  printf("qual a nacionalidade do atleta?: ");
                                  gets(atleta.nacionalidade);
                                  printf("Qual a peso do atleta?: ");
                                  scanf("%f",&atleta.peso);fflush(stdin);
                                  printf("Qual a altura do atleta?: ");
                                  scanf("%f",&atleta.altura);fflush(stdin);
                                  printf("Qual a idade do atleta?: ");
                                  scanf("%d",&atleta.idade);fflush(stdin);
                                  printf("Qual a posicao do atleta em seu esporte?: ");
                                  gets(atleta.posicao);
                                  printf("Deseja salvar as alteracoes? S/N  ");
                                  scanf("%c",&opcao2); fflush(stdin);
                                  if((opcao2=='s')||(opcao2=='S')){//[46]
                                                                           fseek(arq2,(aux-sizeof(atleta)),SEEK_SET);
                                                                           x=fwrite(&atleta,sizeof(atleta),1,arq2);
                                                                           system("cls");
                                                                          printf("Dados do atleta alterados!\n");
                                   }//[46]
                                   else{//[47]
                                   system("cls");
                                   printf("Dados do atleta não alterados!\n");             
                                   }//[47]
                             }//[45]
                             getchar();
                             system("cls");
                             fclose(arq2); 
                       
                       break;
                       
                  case 6:
                       
                       printf("Digite o codigo do atleta: ");
                             scanf("%d",&consulta); fflush(stdin);
                             arq2=fopen("c:\\Atleta.dat","rb");
                             if(arq2==NULL) printf("\nErro na abertura do arquivo!\n");
                             else{ //[20]                             
                                  x=fread(&atleta,sizeof(atleta),1,arq2);
                                  while(feof(arq2) == 0){//[21]
                                                  if(x != 1) printf("\nErro no arquivo\n");
                                                            
                                                  else{//[22]
                                                       if((consulta==atleta.cod_mod_atle)&&(atleta.camp_exc_atle == 0)){//[23]
                                                         system("cls");
                                                         printf("\n===DADOS ATUAIS===\n\n");
                                                         printf("Nome do atleta: %s\n", atleta.nome_atle);
                                                         printf("Codigo da modalidade do atleta: %d\n", atleta.cod_mod_atle);
                                                         printf("Nacionalidade do atleta: %s\n", atleta.nacionalidade);
                                                         printf("Idade do atleta: %d\n", atleta.idade);
                                                         printf("Peso do atleta: %f\n", atleta.peso);
                                                         printf("Altura do atleta: %f\n", atleta.altura);
                                                         printf("Posicao do atleta: %s\n", atleta.posicao);
                                                         cont = 1;
                                                         aux = ftell(arq2);    //                       
                                                         }/*[23]*/             
                                                      }//[22]
                                                  x = fread(&esporte, sizeof(atleta), 1, arq2);
                                  }//[21]
                                  
                                  if(atleta.camp_exc_atle == 1){//[24]
                                  system("cls");
                                  printf("Codigo não encontrado!!");
                                  getchar();
                                  system("cls");
                                  break;
                                  }//[24]
                               // menssagem de erro caso não encontrou
                             }//[20]
                             fclose(arq2);
                             arq2=fopen("c:\\Atleta.dat","r+b");
                             if(arq2== NULL) printf("\nErro na abertura do arquivo!\n");
                             else{//[29]
                                  printf("Deseja excluir esse atleta? S/N  ");
                                  scanf("%c",&opcao2); fflush(stdin);
                                  atleta.camp_exc_atle = 1;
                                  if((opcao2=='s')||(opcao2=='S')){//[30]
                                     fseek(arq2,(aux-sizeof(atleta)),SEEK_SET); //
                                     //fseek = aux -(sizeof(esporte)      
                                     x=fwrite(&esporte,sizeof(atleta),1,arq2);
                                     
                                                                if (x == 1){//[31]
                                                                system("cls");
                                                                printf("Atleta excluido com sucesso!\n");
                                                                }//[31]
                                                                else{//[32]
                                                                printf("Erro na exclusao do Atleta!");
                                                                }//[32]
                                  }//[30]
                            
                              else{//[33]
                                   system("cls");
                                   printf("Esporte não exluido!\n");             
                                   system("cls");
                              }//[33]
                              }//[29] 
                              fclose(arq2); 

                         break;
                       
                  case 7:
                       cont = 0;
                         printf("Digite o codigo do esporte para saber quais atletas a praticam: ");
                             scanf("%d",&consulta); fflush(stdin);
                             arq=fopen("c:\\Esporte.dat","rb");
                             if(arq==NULL)
                                printf("\nErro na abertura do arquivo!\n");
                             else{                              
                                  x=fread(&esporte,sizeof(esporte),1,arq);
                                  while(feof(arq)==0){
                                        if(x != 1){
                                           printf("\nErro no arquivo\n");
                                        }
                                        else{
                                             if((consulta==esporte.cod_mod)&&(esporte.camp_exc == 0)){
                                                system("cls");
                                                printf("Modalidade: %s\n\n",esporte.nome_mod);
                                             }else {
                                                   if((consulta==esporte.cod_mod)&&(esporte.camp_exc == 1)) 
                                                   {
                                                   cont = 1;
                                                   system("cls");
                                                   printf("esporte deletado ou não cadastrado\n");
                                                   }
                                                   }
                                        }
                                        x = fread(&esporte, sizeof(esporte), 1, arq);
                                  }
                             } 
                         
                             
                             arq2=fopen("c:\\Atleta.dat","rb");
                             if(arq2==NULL)
                                printf("\nErro na abertura do arquivo!\n");
                             else{                              
                                  x=fread(&atleta,sizeof(atleta),1,arq2);
                                  while(feof(arq2)==0){
                                        if(x!=1){
                                           printf("\nErro no arquivo\n");
                                        }
                                        else{
                                             if((consulta==atleta.cod_mod_atle)&&(atleta.camp_exc_atle == 0)&&(cont = 1)){
                                                printf("Atleta: %s\n\n",atleta.nome_atle);
                                             }
                                        }
                                        x = fread(&atleta,sizeof(atleta),1,arq2);
                                  }
                             } 
                             getchar();
                             system("cls");
                              fclose(arq2);
                              fclose(arq);
                       
                       break;
                  case 8:
                         exit(1);
          }
          }
          
          }//[3]
       }while(opcao!=8);//[1]
       
}

ainda assim alguém tem alguma sugestao o q posso melhorar?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...