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]
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.