Ir ao conteúdo

Camila Martinho de Oliveira

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. @arfneto Obrigado pelas dicas. Mas hoje esse irá ficar dessa forma, os outros tendo seguir como você sugeriu . Os 2 arquivos que cito são o Livro.dat e o Categorias.dat. Preciso fazer um relatório listando os dados dos livros, mas no arquivo Livro.dat eu tenho apenas o código da categoria, preciso de alguma forma na função, citada no post principal, conseguir atrelar o código inserido no item livro.codigoCategoria no Livro.dat com a categoria.descricao na Categoria.dat e depois replicarei com alterações nos outros itens que preciso.
  2. Boa tarde tenho um código de um trabalho de faculdade, onde preciso fazer uma busca em um segundo arquivo. O código é para gerenciar uma livraria e a função que estou empacado é a de listarLivros(), onde no cadastro de livros eu tenho o código da categoria, editora e autores, eu precisava trazer a descrição e nome deles e não os códigos e não estou sabendo montar. segue a função em questão e em seguida o código completo. void listarLivros(){ FILE *fpLivro; FILE *fpCategorias; FILE *fpEditoras; FILE *fpAutores; struct c_livro livro; struct c_categorias categoria; int n, chave; char desc[30], c; fpLivro = fopen(LIVROS,"rb"); fpCategorias = fopen(CATEGORIAS,"rb"); printf("\n * * * Relatorio de Todos os Livros * * *\n"); printf("\n--------------------------------------"); printf("\nCodigo Titulo "); printf("\n--------------------------------------"); while (fread(&livro,sizeof(livro),1,fpLivro)==1){ printf("\n%-6i | %-30s | %-5i",livro.codigo,livro.titulo,livro.codigoCategoria); } fclose(fpLivro); fclose(fpCategorias); printf("\n\n\n\n"); system("pause"); } Aqui em baixo segue o código completo: #include <stdlib.h> #include <stdio.h> #include <string.h> #define LIVROS "Livros.dat" #define AUTORES "Autores.dat" #define CATEGORIAS "Categorias.dat" #define EDITORAS "Editoras.dat" struct c_livro{ int codigo; char titulo [30]; float preco; int codigoAutor1; int codigoAutor2; int codigoAutor3; int codigoAutor4; int codigoCategoria; int codigoEditora; int edicao; int anoPublicacao; int quantidadeEstoque; }; struct c_autores{ int codigo; char sobrenome [30]; char nome [30]; }; struct c_categorias{ int codigo; char descricao [30]; }; struct c_editoras{ int codigo; char nome [30]; char contato [10]; char telefone [10]; char email [10]; }; void cadLivros(){ FILE *fpLivro; struct c_livro livro; char opc; int q=0,i=0; printf("\n--*-*-*- Cadastro de Livro -*-*-*--\n"); printf("\nInforme o Codigo ou digite 0 para retornar: "); fflush(stdin); scanf("%i",&livro.codigo); i = livro.codigo; if (i==0){ system("cls"); return; } printf("Informe o Titulo: "); fflush(stdin); gets(livro.titulo); printf("Informe o Preco: "); fflush(stdin); scanf("%f",&livro.preco); printf("Quantos autores sera cadastrados? (1 a 4): "); scanf("%i",&q); if (q==1){ printf("Informe o codigo do Autor 1: "); fflush(stdin); scanf("%i",&livro.codigoAutor1); } else if (q==2){ printf("Informe o codigo do Autor 1: "); fflush(stdin); scanf("%i",&livro.codigoAutor1); printf("Informe o codigo do Autor 2: "); fflush(stdin); scanf("%i",&livro.codigoAutor2); } else if (q==3){ printf("Informe o codigo do Autor 1: "); fflush(stdin); scanf("%i",&livro.codigoAutor1); printf("Informe o codigo do Autor 2: "); fflush(stdin); scanf("%i",&livro.codigoAutor2); printf("Informe o codigo do Autor 3: "); fflush(stdin); scanf("%i",&livro.codigoAutor3); } else if (q==4){ printf("Informe o codigo do Autor 1: "); fflush(stdin); scanf("%i",&livro.codigoAutor1); printf("Informe o codigo do Autor 2: "); fflush(stdin); scanf("%i",&livro.codigoAutor2); printf("Informe o codigo do Autor 3: "); fflush(stdin); scanf("%i",&livro.codigoAutor3); printf("Informe o codigo do Autor 4: "); fflush(stdin); scanf("%i",&livro.codigoAutor4); } printf("Informe o codigo da categoria: "); fflush(stdin); scanf("%i",&livro.codigoCategoria); printf("Informe o codigo da editora: "); fflush(stdin); scanf("%i",&livro.codigoEditora); printf("Informe a edicao: "); fflush(stdin); scanf("%i",&livro.edicao); printf("Informe o ano de publicacao (AAAA): "); fflush(stdin); scanf("%i",&livro.anoPublicacao); printf("Informe a quantidade em estoque: "); fflush(stdin); scanf("%i",&livro.quantidadeEstoque); printf("\nSalvar?(S/N) "); fflush(stdin); scanf("%c",&opc); if ((opc!='S')&&(opc!='s')){ printf("\nOperacao Cancelada!"); return; } fpLivro = fopen("Livros.dat","ab"); fwrite(&livro,sizeof(livro),1,fpLivro); fclose(fpLivro); printf("\nLivro cadastrado com sucesso."); system("cls"); } void cadAutores(){ FILE *fpAutores; struct c_autores autor; char opc; int i; printf("\n--*-*-*- Cadastro de Autores -*-*-*--\n"); printf("\nInforme o Codigo ou digite 0 para retornar: "); fflush(stdin); scanf("%i",&autor.codigo); i = autor.codigo; if (i==0){ system("cls"); return; } printf("Informe o nome: "); fflush(stdin); gets(autor.nome); printf("Informe o sobrenome: "); fflush(stdin); gets(autor.sobrenome); printf("\nSalvar?(S/N) "); fflush(stdin); scanf("%c",&opc); if ((opc!='S')&&(opc!='s')){ printf("\nOperacao Cancelada!"); return; } fpAutores = fopen("Autores.dat","ab"); fwrite(&autor,sizeof(autor),1,fpAutores); fclose(fpAutores); printf("\nAutor cadastrado com sucesso."); system("cls"); } void cadCategorias(){ FILE *fpCategorias; struct c_categorias categoria; char opc; int i; printf("\n--*-*-*- Cadastro de Categorias -*-*-*--\n"); printf("\nInforme o Codigo ou digite 0 para retornar: "); fflush(stdin); scanf("%i",&categoria.codigo); i = categoria.codigo; if (i==0){ system("cls"); return; } printf("Informe a descricao: "); fflush(stdin); gets(categoria.descricao); printf("\nSalvar?(S/N) "); fflush(stdin); scanf("%c",&opc); if ((opc!='S')&&(opc!='s')){ printf("\nOperacao Cancelada!"); return; } fpCategorias = fopen("Categorias.dat","ab"); fwrite(&categoria,sizeof(categoria),1,fpCategorias); fclose(fpCategorias); printf("\nCategoria cadastrada com sucesso."); system("cls"); } void cadEditoras(){ FILE *fpEditoras; struct c_editoras editora; char opc; int i; printf("\n--*-*-*- Cadastro de Editoras -*-*-*--\n"); printf("\nInforme o Codigo ou digite 0 para retornar: "); fflush(stdin); scanf("%i",&editora.codigo); i = editora.codigo; if (i==0){ system("cls"); return; } printf("Informe o nome: "); fflush(stdin); gets(editora.nome); printf("Informe o contato: "); fflush(stdin); gets(editora.contato); printf("Informe o telefone: "); fflush(stdin); gets(editora.telefone); printf("Informe o email: "); fflush(stdin); gets(editora.email); printf("\nSalvar?(S/N) "); fflush(stdin); scanf("%c",&opc); if ((opc!='S')&&(opc!='s')){ printf("\nOperacao Cancelada!"); return; } fpEditoras = fopen("Editoras.dat","ab"); fwrite(&editora,sizeof(editora),1,fpEditoras); fclose(fpEditoras); printf("\nEditora cadastrada com sucesso."); system("cls"); } void listarLivros(){ FILE *fpLivro; FILE *fpCategorias; FILE *fpEditoras; FILE *fpAutores; struct c_livro livro; struct c_categorias categoria; int n, chave; char desc[30], c; fpLivro = fopen(LIVROS,"rb"); fpCategorias = fopen(CATEGORIAS,"rb"); printf("\n * * * Relatorio de Todos os Livros * * *\n"); printf("\n--------------------------------------"); printf("\nCodigo Titulo "); printf("\n--------------------------------------"); while (fread(&livro,sizeof(livro),1,fpLivro)==1){ printf("\n%-6i | %-30s | %-5i",livro.codigo,livro.titulo,livro.codigoCategoria); } fclose(fpLivro); fclose(fpCategorias); printf("\n\n\n\n"); system("pause"); } void listarCategorias(){ FILE *fpCategoria; struct c_categorias categoria; fpCategoria = fopen(CATEGORIAS,"rb"); printf("\n * * * Relatorio de Todos as Categorias * * *\n"); printf("\n--------------------------------------"); printf("\nCodigo Descricao "); printf("\n--------------------------------------"); while (fread(&categoria,sizeof(categoria),1,fpCategoria)==1){ printf("\n%-6i | %-30s",categoria.codigo ,categoria.descricao); } fclose(fpCategoria); printf("\n\n\n\n"); system("pause"); } void listarAutores(){ FILE *fpAutores; struct c_autores autor; fpAutores = fopen(AUTORES,"rb"); printf("\n * * * Relatorio de Todos os Autores * * *\n"); printf("\n--------------------------------------"); printf("\nCodigo Sobrenome ,Nome"); printf("\n--------------------------------------"); while (fread(&autor,sizeof(autor),1,fpAutores)==1){ printf("\n%-6i | %-10s, %s",autor.codigo,autor.sobrenome,autor.nome); } fclose(fpAutores); printf("\n\n\n\n"); system("pause"); } void listarEditoras(){ FILE *fpEditoras; struct c_editoras editora; fpEditoras = fopen(EDITORAS,"rb"); printf("\n * * * Relatorio de Todos as Editoras * * *\n"); printf("\n-------------------------------------------------"); printf("\nCodigo nome Contato"); printf("\n-------------------------------------------------"); while (fread(&editora,sizeof(editora),1,fpEditoras)==1){ printf("\n%-6i | %-30s %s",editora.codigo,editora.nome,editora.contato); } fclose(fpEditoras); printf("\n\n\n\n"); system("pause"); } void excluirCategoria(){ FILE *fpCategorias, *fpCategoriasTemp; struct c_categorias categoria; int cod, achou=0, i; char opc; printf("\nDigite o Codigo da categoria a ser EXCLUIDA ou 0 para retornar: "); fflush(stdin); scanf("%i",&cod); i = cod; if (i==0){ system("cls"); return; } fpCategorias = fopen(CATEGORIAS,"rb"); while ((achou==0)&&(fread(&categoria,sizeof(categoria),1,fpCategorias)==1)){ if (categoria.codigo == cod){ printf("\nCodigo: %i",categoria.codigo); printf("\nDescricao: %s",categoria.descricao); achou=1; } } fclose(fpCategorias); if (!achou){ printf("\n Categoria não Localizada!!"); return; } printf("\nConfirma Exclusao?(S/N) "); fflush(stdin); scanf("%c",&opc); if ((opc!='S')&&(opc!='s')){ printf("\nEXCLUSAO Cancelada."); return; } fpCategorias = fopen(CATEGORIAS,"rb"); fpCategoriasTemp = fopen("CategoriasTemp.dat","wb"); while(fread(&categoria,sizeof(categoria),1,fpCategorias)==1){ if (categoria.codigo!=cod) fwrite(&categoria,sizeof(categoria),1,fpCategoriasTemp); } fclose(fpCategorias); fclose(fpCategoriasTemp); system("del Categorias.dat"); system("ren CategoriasTemp.dat Categorias.dat"); printf("\nCategoria Excluida com Sucesso."); } void consTituloPChave(){ FILE *fplivro; struct c_livro livro; char palavra[30]; int achou=0, i; printf("\nDigite a Palavra-Chave ou 0 para retornar: "); fflush(stdin); gets(palavra); i = livro.codigo; if (i==0){ system("cls"); return; } fplivro = fopen(LIVROS,"rb"); while (fread(&livro,sizeof(livro),1,fplivro)==1){ if (strstr(livro.titulo,palavra)!=NULL){ achou++; if (achou==1){ printf("\nCodigo Titulo"); } printf("\n%-6i %-30s",livro.codigo,livro.titulo); } } if (achou==0){ printf("\nNenhum Livro Encontrado com a palavra %s no Titulo.",palavra); } fclose(fplivro); printf("\n\n\n\n"); system("pause"); } void consAutor(){ FILE *fpAutores; struct c_autores autor; int achou=0,i; char nom[50], temp[50]; printf("\nConsulta de Autor\n\n\n "); printf("\nDigite o nome ou inicio do nome do autor a ser Localizado: "); fflush(stdin); gets(nom); fpAutores = fopen(AUTORES,"rb"); while ((achou==0)&&(fread(&autor,sizeof(autor),1,fpAutores)==1)){ if (strstr(autor.nome,nom)!=NULL){ printf("\nNome: %s",autor.nome); printf("\nSobrenome: %s",autor.sobrenome); achou=1; } } if (!achou){ printf("\n Autor não Localizado!!\n\n\n\n\n\n\n"); } fclose(fpAutores); printf("\n\n\n\n"); system("pause"); system("cls"); } main(){ int op; do{ printf("\n\n # # # Livraria # # # \n"); printf("\n-------------------------------------------------------"); printf("\n\n # # # MENU PRINCIPAL # # # \n"); printf("\n---------------------------------"); printf("\n CADASTROS "); printf("\n---------------------------------"); printf("\n 1 --> Cadastro de Livros"); printf("\n 2 --> Cadastro de Autores"); printf("\n 3 --> Cadastro de Categorias"); printf("\n 4 --> Cadastro de Editoras"); printf("\n----------------------------------"); printf("\n RELATORIOS "); printf("\n----------------------------------"); printf("\n 5 --> Listar todos os Livros"); printf("\n 6 --> Listar todos os Autores"); printf("\n 7 --> Listar todos as Categorias"); printf("\n 8 --> Listar todos as Editoras"); printf("\n--------------------------------"); printf("\n EXCLUSAO "); printf("\n--------------------------------"); printf("\n 9 --> Excluir Categoria"); printf("\n---------------------------------"); printf("\n CONSULTAS "); printf("\n---------------------------------"); printf("\n 10 --> Consultar Livro por Palavra-Chave no Titulo"); printf("\n 11 --> Consultar autor por inicial do nome"); printf("\n\n------------SAIR------------"); printf("\n\n 0 --> Sair"); printf("\n\n opcao --> "); fflush(stdin); scanf("%i",&op); switch(op){ case 1: system("cls"); cadLivros(); break; case 2: system("cls"); cadAutores(); break; case 3: system("cls"); cadCategorias(); break; case 4: system("cls"); cadEditoras(); break; case 5: system("cls"); listarLivros(); break; case 6: system("cls"); listarAutores(); break; case 7: system("cls"); listarCategorias(); break; case 8: system("cls"); listarEditoras(); break; case 9: system("cls"); excluirCategoria(); break; case 10: system("cls"); consTituloPChave(); break; case 11: system("cls"); consAutor(); break; } }while(op!=0); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!