Meu professor passou um trabalho, aonde eles pede as seguintes funções:
Exibir o seguinte menu:
Escolha a opção:
1 - Cadastrar (minimo 5 campos)
2 - Listar
3 - Pesquisar
4 - Excluir todos
5 - Excluir Item
6 - Alterar
7 - Confirmar
0 - Sair
=====================
PS: o Arquivo tem que ser em formato.dat
1 - Preencher dados de um item do seu assunto (formato Registro) gravar um arquivo (sem excluir outros registros). OK
2 - Ler todos os registros cadastrados OK
Ler registro
Exibir dados do registro
Caso não tenha registro, exibir que não possui registros
3 - Pesquisar usando um dos campos OK
Se encontrou: Exibir dados
Caso contrário: Exibir não encontrado
4 - Excluir apenas um Registro
Se encontrado o registro: Exibir dados e perguntar se realmente deseja excluir
Caso contrario: Exibir não encontrado
5 - Excluir todos os dados do arquivo. OK
6 - Alterar (modificar alguma informação já salva) OK
7 - Confirgurar (Alterar o nome do arquivo.)
0- sair OK
Estou fazendo um programa de locadora de dvd e blu-ray e tendo muitos problemas para fazer 2 funções: a 4 e a 7 que é Excluir um registro e Renomear o arquivo(aonde todos os registros estão salvos), não posso usar ponteiros, e devo usar struct, a linguagem usada é C e o compilador Dev C++, vou postar o codigo do que eu fiz, tentei ao máximo fazer sozinho, mas infelizmente não consegui, fiz besteira em não pedir ajuda antes, já que a entrega é pra amanhã, caso alguém possa me dar uma ajuda ficarei muito grato.
Codigo:[\b]
#include<stdio.h>
#include<conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int menu;
//Estrutura do Registro
struct pad_video
{
char genero[50],nome[50],tipo[50],codigo[50],anolancamento[50];
};
//FUNÇÃO CADASTRAR
int cadastrar()
{
struct pad_video midia;
FILE * arq;
arq = fopen("registro.dat","a+");
printf("\nDigite o nome: ");
gets(midia.nome);
printf("Digite o genero do filme: ");
gets(midia.genero);
printf("Digite o tipo de midia [DVD | Bluray] : ");
gets(midia.tipo);
printf("Digite o ano de Lancamento: ");
gets(midia.anolancamento);
printf("Digite o codigo: ");
gets(midia.codigo);
fwrite(&midia,sizeof(struct pad_video),1,arq);
fclose (arq);
}
// FIM DA FUNÇÃO CADASTRAR
//FUNÇÃO LISTAR
int listar()
{
int retorno,cont=0;
struct pad_video midia;
FILE * arq;
if ((arq = fopen("registro.dat","r+b")) == NULL)
{
printf(" \n Registro não existe !");
getch();
}
retorno = fread(&midia,sizeof(struct pad_video),1,arq);
while ( retorno == 1)
{
cont++;
printf("\n Nome: %s",midia.nome);
printf("\n Genero: %s",midia.genero);
printf("\n Tipo: %s",midia.tipo);
printf("\n Ano de Lacamento: %s",midia.anolancamento);
printf("\n Codigo: %s\n",midia.codigo);
retorno = fread(&midia,sizeof(struct pad_video),1,arq);
}
printf("\n FILMES CADASTRADOS: %d",cont);
fclose (arq);
}
//FIM DA FUNÇÃO LISTAR
//FUNÇÃO BUSCAR
int busca()
{
int achou=-1, posicao=0;
char nomep[40];
struct pad_video midia;
FILE * arq;
arq = fopen("registro.dat","r+b");
printf("\nDigite [nome] para ser pesquisado :");
gets(nomep);
rewind(arq);
while ((!feof(arq)) && (achou==-1))
{
fread(&midia,sizeof(struct pad_video),1,arq);
if(!feof(arq)){
if(strcmp(nomep,midia.nome)==0){
achou=1;
}
else
posicao++;
}
else
posicao=-1;
}
fclose(arq);
return(posicao);
}
//FIM DA FUNÇÃO BUSCAR
// FUNÇÃO EXIBIR RESULTADO DA BUSCA
int pesquisar()
{
struct pad_video midia;
FILE * arq;
arq = fopen("registro.dat","r+b");
int pos;
pos=busca();
if(pos==-1){
printf("\nNao Encontrado!");
getchar();
}
else{
if(pos==-2)
{
printf("\nNome excluido do arquivo!");
getchar();
}
else{
fseek(arq,pos*sizeof(struct pad_video),SEEK_SET);
fread(&midia,sizeof(struct pad_video),1,arq);
printf("Posicao do Filme Cadastrado: %d ", pos);
printf("\nResultado da Pesquisa: ");
printf("\n\n Nome: %s",midia.nome);
printf("\n Genero: %s",midia.genero);
printf("\n Tipo: %s",midia.tipo);
printf("\n Ano de Lancamento: %s",midia.anolancamento);
printf("\n Codigo: %s",midia.codigo);
}
fclose(arq);
}
}
// FIM FUNÇÃO EXIBIR RESULTADO DA BUSCA
//FUNÇÃO EXCLUIR SOMENTE UM REGISTRO
//NÃO CONSEGUI FAZER
// FUNÇÃO PARA EXCLUIR TODOS
int excluirtodos()
{
int op;
printf("Deseja Realmente excluir todos?\n [1-Sim ou 2-não]: ");
scanf("%d",&op);
if (op == 1){
struct pad_video midia;
FILE * arq;
arq = fopen("registro.dat","w");
printf("Todos excluidos com Exito!");
fclose(arq);
}
getch();
}
//FIM FUNÇÃO EXCLUIR TODOS
// FUNÇÃO ALTERAR REGISTROS
int alterar()
{
struct pad_video midia;
FILE * arq;
arq = fopen("registro.dat","rb+");
int pos;
pos=busca();
if(pos==-1){
printf("\n Não encontrado! ");
getch();
}
else{
if(pos==-2){
printf("\nNome excluido do arquivo!");
}
else{
fseek(arq,pos*sizeof(struct pad_video),SEEK_CUR);
fread(&midia,sizeof(struct pad_video),1,arq);
printf("Posicao do Filme Cadastrado: %d ", pos);
printf("\nResultado da Pesquisa: ");
printf("\n\n Nome: %s",midia.nome);
printf("\n Genero: %s",midia.genero);
printf("\n Tipo: %s",midia.tipo);
printf("\n Ano de Lancamento: %s",midia.anolancamento);
printf("\n Codigo: %s",midia.codigo);
}
printf("\n\nAlterar o nome para: ");
gets(midia.nome);
printf("Alterar o genero do filme para: ");
gets(midia.genero);
printf("Alterar o tipo de midia [DVD | Bluray] para: ");
gets(midia.tipo);
printf("Alterar o ano de Lancamento para: ");
scanf("%d",&midia.anolancamento);
printf("Alterar o codigo para: ");
scanf("%d",&midia.codigo);
fseek(arq,pos*sizeof(struct pad_video),SEEK_SET);
if(fwrite(&midia,sizeof(struct pad_video),1,arq)!=1)
{
printf("Erro na gravacao!");
}
else{
printf("\nAlterado com sucesso!");
}
fclose(arq);
}
}
//FIM DA FUNÇÃO ALTERAR REGISTROS
//FUNÇÃO ALTERAR O NOME DO ARUIVO (AONDE TODOS OS REGISTROS ESTÃO SALVOS)
//NÃO CONSEGUI FAZER
main()
{
do{
printf("\n\n\n====================================\n");
printf("1 - Cadastrar\n");
printf("2 - Listar\n");
printf("3 - Pesquisar\n");
printf("4 - Excluir\n");
printf("5 - Excluit Todos\n");
printf("6 - Alterar\n");
printf("0 - Sair\n");
printf("====================================");
printf("\nDigite a alternativa desejada: ");
scanf("%d",&menu);
if(menu==1)
{
cadastrar();
}
if(menu==2)
{
listar();
}
if(menu==3)
{
pesquisar();
}
if(menu==4)
{
pesquisar(); //LOCAL DA FUNÇÃO EXCLUIR UM UNICO REGISTRO COLOQUEI PESQUISAR SOMENTE PARA TESTAR
}
if(menu==5)
{
excluirtodos();
}
if(menu==6)
{
alterar();
}
if(menu==7)
{
pesquisar();// LOCAL DA FUNÇÃO RENOMEAR O NOME DO ARQUIVO (que salva todos os registro)
}
}
while(menu!=0);
getch();
}
Pergunta
Carlos Telles
Meu professor passou um trabalho, aonde eles pede as seguintes funções:
Exibir o seguinte menu:
Escolha a opção:
1 - Cadastrar (minimo 5 campos)
2 - Listar
3 - Pesquisar
4 - Excluir todos
5 - Excluir Item
6 - Alterar
7 - Confirmar
0 - Sair
=====================
PS: o Arquivo tem que ser em formato.dat
1 - Preencher dados de um item do seu assunto (formato Registro) gravar um arquivo (sem excluir outros registros). OK
2 - Ler todos os registros cadastrados OK
Ler registro
Exibir dados do registro
Caso não tenha registro, exibir que não possui registros
3 - Pesquisar usando um dos campos OK
Se encontrou: Exibir dados
Caso contrário: Exibir não encontrado
4 - Excluir apenas um Registro
Se encontrado o registro: Exibir dados e perguntar se realmente deseja excluir
Caso contrario: Exibir não encontrado
5 - Excluir todos os dados do arquivo. OK
6 - Alterar (modificar alguma informação já salva) OK
7 - Confirgurar (Alterar o nome do arquivo.)
0- sair OK
Estou fazendo um programa de locadora de dvd e blu-ray e tendo muitos problemas para fazer 2 funções: a 4 e a 7 que é Excluir um registro e Renomear o arquivo(aonde todos os registros estão salvos), não posso usar ponteiros, e devo usar struct, a linguagem usada é C e o compilador Dev C++, vou postar o codigo do que eu fiz, tentei ao máximo fazer sozinho, mas infelizmente não consegui, fiz besteira em não pedir ajuda antes, já que a entrega é pra amanhã, caso alguém possa me dar uma ajuda ficarei muito grato.
Codigo:[\b]
#include<stdio.h> #include<conio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int menu; //Estrutura do Registro struct pad_video { char genero[50],nome[50],tipo[50],codigo[50],anolancamento[50]; }; //FUNÇÃO CADASTRAR int cadastrar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","a+"); printf("\nDigite o nome: "); gets(midia.nome); printf("Digite o genero do filme: "); gets(midia.genero); printf("Digite o tipo de midia [DVD | Bluray] : "); gets(midia.tipo); printf("Digite o ano de Lancamento: "); gets(midia.anolancamento); printf("Digite o codigo: "); gets(midia.codigo); fwrite(&midia,sizeof(struct pad_video),1,arq); fclose (arq); } // FIM DA FUNÇÃO CADASTRAR //FUNÇÃO LISTAR int listar() { int retorno,cont=0; struct pad_video midia; FILE * arq; if ((arq = fopen("registro.dat","r+b")) == NULL) { printf(" \n Registro não existe !"); getch(); } retorno = fread(&midia,sizeof(struct pad_video),1,arq); while ( retorno == 1) { cont++; printf("\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lacamento: %s",midia.anolancamento); printf("\n Codigo: %s\n",midia.codigo); retorno = fread(&midia,sizeof(struct pad_video),1,arq); } printf("\n FILMES CADASTRADOS: %d",cont); fclose (arq); } //FIM DA FUNÇÃO LISTAR //FUNÇÃO BUSCAR int busca() { int achou=-1, posicao=0; char nomep[40]; struct pad_video midia; FILE * arq; arq = fopen("registro.dat","r+b"); printf("\nDigite [nome] para ser pesquisado :"); gets(nomep); rewind(arq); while ((!feof(arq)) && (achou==-1)) { fread(&midia,sizeof(struct pad_video),1,arq); if(!feof(arq)){ if(strcmp(nomep,midia.nome)==0){ achou=1; } else posicao++; } else posicao=-1; } fclose(arq); return(posicao); } //FIM DA FUNÇÃO BUSCAR // FUNÇÃO EXIBIR RESULTADO DA BUSCA int pesquisar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","r+b"); int pos; pos=busca(); if(pos==-1){ printf("\nNao Encontrado!"); getchar(); } else{ if(pos==-2) { printf("\nNome excluido do arquivo!"); getchar(); } else{ fseek(arq,pos*sizeof(struct pad_video),SEEK_SET); fread(&midia,sizeof(struct pad_video),1,arq); printf("Posicao do Filme Cadastrado: %d ", pos); printf("\nResultado da Pesquisa: "); printf("\n\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lancamento: %s",midia.anolancamento); printf("\n Codigo: %s",midia.codigo); } fclose(arq); } } // FIM FUNÇÃO EXIBIR RESULTADO DA BUSCA //FUNÇÃO EXCLUIR SOMENTE UM REGISTRO //NÃO CONSEGUI FAZER // FUNÇÃO PARA EXCLUIR TODOS int excluirtodos() { int op; printf("Deseja Realmente excluir todos?\n [1-Sim ou 2-não]: "); scanf("%d",&op); if (op == 1){ struct pad_video midia; FILE * arq; arq = fopen("registro.dat","w"); printf("Todos excluidos com Exito!"); fclose(arq); } getch(); } //FIM FUNÇÃO EXCLUIR TODOS // FUNÇÃO ALTERAR REGISTROS int alterar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","rb+"); int pos; pos=busca(); if(pos==-1){ printf("\n Não encontrado! "); getch(); } else{ if(pos==-2){ printf("\nNome excluido do arquivo!"); } else{ fseek(arq,pos*sizeof(struct pad_video),SEEK_CUR); fread(&midia,sizeof(struct pad_video),1,arq); printf("Posicao do Filme Cadastrado: %d ", pos); printf("\nResultado da Pesquisa: "); printf("\n\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lancamento: %s",midia.anolancamento); printf("\n Codigo: %s",midia.codigo); } printf("\n\nAlterar o nome para: "); gets(midia.nome); printf("Alterar o genero do filme para: "); gets(midia.genero); printf("Alterar o tipo de midia [DVD | Bluray] para: "); gets(midia.tipo); printf("Alterar o ano de Lancamento para: "); scanf("%d",&midia.anolancamento); printf("Alterar o codigo para: "); scanf("%d",&midia.codigo); fseek(arq,pos*sizeof(struct pad_video),SEEK_SET); if(fwrite(&midia,sizeof(struct pad_video),1,arq)!=1) { printf("Erro na gravacao!"); } else{ printf("\nAlterado com sucesso!"); } fclose(arq); } } //FIM DA FUNÇÃO ALTERAR REGISTROS //FUNÇÃO ALTERAR O NOME DO ARUIVO (AONDE TODOS OS REGISTROS ESTÃO SALVOS) //NÃO CONSEGUI FAZER main() { do{ printf("\n\n\n====================================\n"); printf("1 - Cadastrar\n"); printf("2 - Listar\n"); printf("3 - Pesquisar\n"); printf("4 - Excluir\n"); printf("5 - Excluit Todos\n"); printf("6 - Alterar\n"); printf("0 - Sair\n"); printf("===================================="); printf("\nDigite a alternativa desejada: "); scanf("%d",&menu); if(menu==1) { cadastrar(); } if(menu==2) { listar(); } if(menu==3) { pesquisar(); } if(menu==4) { pesquisar(); //LOCAL DA FUNÇÃO EXCLUIR UM UNICO REGISTRO COLOQUEI PESQUISAR SOMENTE PARA TESTAR } if(menu==5) { excluirtodos(); } if(menu==6) { alterar(); } if(menu==7) { pesquisar();// LOCAL DA FUNÇÃO RENOMEAR O NOME DO ARQUIVO (que salva todos os registro) } } while(menu!=0); getch(); }Editado por Carlos TellesLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
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.