Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Aquivo Binario


GustavoMunhoz

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...