Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- typedef struct livro{
- char nome[10];
- char autor[20];
- char ano[5];
- char descricao[20];
- char palavrachave[10];
- }livro;
- typedef struct sBiblioteca{
- livro l;
- struct sBiblioteca *seguinte;
- }*Biblioteca, Nodobiblioteca;
- Biblioteca inserir (Biblioteca b, char *nome,char* ano, char* descricao, char* palavrachave, char*autor){
- Biblioteca novonodo = (Biblioteca) malloc(sizeof(Nodobiblioteca));
- livro novolivro;
- strcpy(novolivro.nome,nome);
- strcpy(novolivro.autor,autor);
- strcpy(novolivro.palavrachave,palavrachave);
- strcpy(novolivro.descricao,descricao);
- strcpy(novolivro.ano,ano);
- novonodo->l = novolivro;
- novonodo->seguinte = b;
- return novonodo;
- }
- Biblioteca remover (Biblioteca b, char *nome){
- Biblioteca x,y;
- if (x){
- if(!strcmp(x->l.nome,nome)){
- y = x;
- free (y);
- return x->seguinte;}
- for(x=b;!x->seguinte;x=x->seguinte){
- if(!strcmp(x->seguinte->l.nome,nome)){
- y = x->seguinte;
- x->seguinte = x->seguinte->seguinte;
- free(y);
- return b;
- }
- }
- printf("ERRO, Livro Não Encontrado\n");
- return b;
- }
- void ListarLivros (Biblioteca b){
- if(!b)
- printf("Não existem livros");
- else
- while (b){
- printf("%s,%s",b->l.nome, b->l.autor);
- b=b->seguinte;
- }
- }
- void Lista_Livro (Biblioteca b, char *nome){
- if(!b) printf("Erro. Não existe o livro não Encontrado");
- if(!strcmp(b->l.nome, nome))
- printf("%s,%s,%s,%s,%s",b->l.nome, b->l.autor, b->l.ano, b->l.descricao, b->l.palavrachave);
- else
- Lista_Livro(b->seguinte, nome);
- }
- Biblioteca altera (Biblioteca b, char *nome){
- if(b)
- {
- if(!strcmp(b->l.nome, nome))
- b->l = alteraLivro(b->l);
- else
- b->seguinte = altera (b->seguinte, nome);
- return b;
- }
- printf("Erro, não existe esse livro\n");
- return NULL;
- }
- livro alteraLivro (livro l){
- char nome[10];
- char autor[20];
- char ano[5];
- char descricao[20];
- char palavrachave[10];
- printf("Digite o nome do livro\n");
- scanf("%s",nome);
- strcpy(l.nome,nome);
- printf("Digite o nome do autor\n");
- scanf("%s",autor);
- strcpy(l.autor,autor);
- printf("Digite o ano\n");
- scanf("%s",ano);
- strcpy(l.ano,ano);
- printf("Digite uma descrição\n");
- scanf("%s",descricao);
- strcpy(l.descricao,descricao);
- printf("Digite uma palavra-chave");
- scanf("%s",palavrachave);
- strcpy(l.palavrachave,palavrachave);
- return l;
- }
- int main(){
- int x = -1;
- Biblioteca b = NULL;
- Biblioteca z;
- char nome[10];
- char autor[20];
- char ano[5];
- char descricao[20] ;
- char palavrachave[10];
- FILE *ficheiro;
- ficheiro = fopen("biblio.dat", "rw");
- if (ficheiro == NULL) {
- printf("Ficheiro não disponivel\n");
- return 0;
- }
- while(! feof(ficheiro))
- {
- fscanf(ficheiro, "%s , %s , %s , %s , %s\n", nome,autor,ano,descricao,palavrachave);
- b = inserir (b,nome,ano,descricao,palavrachave,autor);
- }
- while (x!=0){
- printf("Insira a opção:\n1-Inserir\n2-Remover\n3-Alterar\n4-Listar Geral\5-Listar Único\n0-Sair");
- scanf("%d\n",&x);
- switch(x){
- case(1):{
- printf("Nome ?\n");
- scanf("%s",nome);
- printf("Autor ?\n");
- scanf("%s",autor);
- printf("Ano ?\n");
- scanf("%s",ano);
- printf("Descricao ?\n");
- scanf("%s",descricao);
- printf("Palavrachave ?\n");
- scanf("%s",palavrachave);
- b = inserir (b,nome,ano,descricao,palavrachave,autor);
- break;}
- case(2):{
- printf("Nome ?\n");
- scanf("%s",nome);
- b = remover(b,nome);
- break;}
- case(3):{
- printf("Nome ?\n");
- scanf("%s",nome);
- b = altera (b,nome);
- break;}
- case(4):{
- ListarLivros (b);
- break;}
- case(5):{
- printf("Nome ?\n");
- scanf("%s",nome);
- Lista_Livro (b,nome);
- break;}
- case(0):{
- for (z=b;!z;z=z->seguinte)
- fprintf(ficheiro, "%s , %s , %s , %s , %s\n",z->l.nome,z->l.autor,z->l.ano,z->l.descricao,z->l.palavrachave);
- fclose(ficheiro);
- break;}
- default:{
- printf("Opção Incorrecta\n");
- break;}
- }
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment