bakasam Posted August 29, 2011 Report Share Posted August 29, 2011 Fazer um programa em C para controlar os empréstimos de livros de uma Biblioteca. O programadeverá conter: 2 arquivos: um para cadastro de Livros e outro para Alunos. Os dados do Livro que devem serguardados são: código(tombo), título, autor, assunto, editora, edição, Ano de publicação esituação. O campo situação deverá armazenar o código do aluno que retirou o livro ou apalavra LIVRE se o livro estiver disponível). Os dados do Aluno são: código, nome,endereço(rua e número da casa), telefone, e-mail.· O programa deverá implementar as seguintes tarefas básicas: Cadastro de Livros; Cadastro de Alunos; Exclusão de Livros e Alunos (Remoção Física do registro); Retirada; Devolução; Consulta de Livro pelo código; Consulta de Aluno pela parte inicial do nome Consulta de Livro pela parte inicial do Título; Relatório de Livros (todos); Relatório de Livros por assunto; Relatório de Livros por autor (listar todos os livros de um autor); Relatório de Alunos (todos).· Na consulta de Livro pelo código, devem ser mostrados os dados do Livro e, caso o Livro jáesteja emprestado, exibir o código, nome e telefone do Aluno;· Na consulta de Aluno pela parte inicial do nome, deve-se entrar com a parte inicial do nomedo Aluno e o sistema mostrará os dados do Aluno e os Livros por ele retirados;· No relatório de Livros(todos) deverão ser listados todos os Livros;· No relatório de Livros por assunto, deverão ser listados somente os Livros de umdeterminado Assunto.· Exclusão de Livros/Alunos: nesta opção, o sistema deve solicitar o código do Livro/Alunoa ser excluído; procurar o Livro/Aluno no arquivo de Livros/Alunos; exibir os dados doLivro/Aluno; se o aluno possui Livros retirados, avisar ao usuário e pedir confirmação paraexclusão.alguém pode me ajudar ai porfavor ate agora eu fiz isso.#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h>struct reg_livro { int codigo,edicao,ano_publi; char titulo[30],autor[30],assunto[30],editora[30]; float preço;};void cadastrarLivro(){ struct reg_livro livro; FILE *fplivro; char op; printf("\n Cadastro de Livro:"); printf("\n Digite o Codigo: "); fflush(stdin); scanf("%i", &livro.codigo); printf("\n Digite o Ediçao: "); fflush(stdin); scanf("%i", &livro.edicao); printf("\n Digite o ano da publicação: "); fflush(stdin); scanf("%i", &livro.ano_publi); printf(" Digite o Titulo: "); fflush(stdin); gets(livro.titulo); printf(" Digite o Autor: "); fflush(stdin); gets(livro.autor); printf(" Digite o Assunto: "); fflush(stdin); gets(livro.assunto); printf(" Digite o Editora: "); fflush(stdin); gets(livro.editora); printf(" Digite o preço: "); fflush(stdin); scanf("%f", &livro.preço); printf("\n Gravar Dados(S/N)?"); fflush(stdin); scanf("%c", &op); if ((op=='S') || (op=='s')){ if ((fplivro=fopen("D:\\livros.dat","ab+"))==NULL){ printf("\n Erro na Abertura do arquivo livros.dat"); getch(); } fwrite(&livro,sizeof(livro),1,fplivro); fclose(fplivro); printf("\n Gravacao Realizada com Sucesso!"); } else printf("\n Operacao Cancelada!"); printf("\n Pressione uma Tecla."); getch();}//Fim cadastrarLivro()void listarLivros(){ struct reg_livro livro; FILE *fplivro; fplivro = fopen("D:\\livros.dat","rb"); printf("\n\t\t = = = Listagem de Livros = = = "); printf("\nCodigo\t Titulo\t\t\t preço"); while (fread(&livro,sizeof(livro),1,fplivro)==1) printf("\n %i\t%s\t\t%5.2f",livro.codigo,livro.edicao,livro.ano_publi, livro.titulo, livro.autor, clivro.assunto, lcivro.editora, livro.preço); fclose(fplivro); printf("\n Pressione uma Tecla."); getch();}//Fim listarLivros()void consultarCodigo(){ struct reg_livro livro; FILE *fplivro; int cod, achou; printf("\n Consulta Livro pelo Codigo:"); printf("\n Digite o Codigo: "); fflush(stdin); scanf("%i", &cod); fplivro = fopen("D:\\livros.dat","rb"); achou=0; while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1)) if (livro.codigo==cod){ printf("\n Codigo: %i", livro.codigo); printf("\n Edicao: %i", livro.edicao); printf("\n Ano_publi: %i", livro.ano_publi); printf("\n Titulo: %s", livro.titulo); printf("\n Autor: %s", livro.autor); printf("\n Assunto: %s", livro.assunto); printf("\n Editora: %s", livro.editora); printf("\n preço.: %5.2f", livro.preço); achou=1; } fclose(fplivro); if (achou==0) printf("\n Livro não Encontrado!"); printf("\n Pressione uma tecla."); getch();}//consultarCodigovoid acessarAleatorio(){ struct reg_livro livro; FILE *fplivro; int nroreg, ret; printf("\n Digite o nro. do registro: "); fflush(stdin); scanf("%i", &nroreg); fplivro = fopen("D:\\livros.dat","rb"); ret = fseek(fplivro,(nroreg-1)*sizeof(livro),0); printf("\n Valor retornado pela fseek: %i", ret); if (fread(&livro,sizeof(livro),1,fplivro)==1){ printf("\n Codigo: %i", livro.codigo); printf("\n Edicao: %i", livro.edicao); printf("\n Ano_publi: %i", livro.ano_publi); printf("\n Titulo: %s", livro.titulo); printf("\n Autor: %s", livro.autor); printf("\n Assunto: %s", livro.assunto); printf("\n Editora: %s", livro.editora); printf("\n preço.: %5.2f", livro.preço); }else printf("\n Registro não Encontrado!"); printf("\n Pressione uma tecla."); getch();}//Fim acessarAleatorio()void alterarLivro(){ struct reg_livro livro; FILE *fplivro; int cod, achou; char op; printf("\n Digite o codigo: "); fflush(stdin); scanf("%i", &cod); fplivro = fopen("D:\\livros.dat","rb+"); achou=0; while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1)) if (livro.codigo==cod){ printf("\n Codigo: %i", livro.codigo); printf("\n Titulo: %s", livro.titulo); printf("\n preço.: %5.2f", livro.preço); achou=1; } if (achou==0) printf("\n Livro não Encontrado"); else { printf(" Digite o novo Titulo: "); fflush(stdin); gets(livro.titulo); printf(" Digite o novo preço: "); fflush(stdin); scanf("%f", &livro.preço); printf("\n Gravar Dados(S/N)?"); fflush(stdin); scanf("%c", &op); if ((op=='S') || (op=='s')){ fseek(fplivro,-sizeof(livro),1); fwrite(&livro,sizeof(livro),1,fplivro); printf("\n Dados Alterados com Sucesso."); }else printf("\n Operacao Cancelada!"); } fclose(fplivro); printf("\n Pressione uma tecla."); getch();}//Fim alterarLivro()void removerLivro(){ struct reg_livro livro; FILE *fplivro, *fplivro2; char op; int cod, achou; printf("\n Digite o codigo do Livro a ser removido: "); fflush(stdin); scanf("%i", &cod); fplivro = fopen("D:\\livros.dat","rb"); achou=0; while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1)) if (livro.codigo==cod){ printf("\n Codigo: %i", livro.codigo); printf("\n Titulo: %s", livro.titulo); printf("\n preço.: %5.2f", livro.preço); achou=1; } fclose(fplivro); if (achou==0) printf("\n Livro não Encontrado"); else {//Achou o Livro printf("\n Confirma remocao(s/n)?"); fflush(stdin); scanf("%c", &op); if ((op=='S') || (op=='s')){ fplivro = fopen("D:\\livros.dat","rb"); fplivro2 = fopen("D:\\livros2.dat","wb"); while (fread(&livro, sizeof(livro),1,fplivro)==1) if(livro.codigo!=cod) fwrite(&livro,sizeof(livro),1,fplivro2); fclose(fplivro); fclose(fplivro2); system("DEL D:\\livros.dat"); //Remove o arquivo original system("RENAME D:\\livros2.dat livros.dat"); //Renomeia o arquivo auxiliar printf("\n Livro removido com sucesso."); }else printf("\n Operacao Cancelada!"); } printf("\n Pressione uma tecla."); getch();}//Fim removerLivro()main(){ int op; do { printf("\n *** L i v r a r i a - M e n u ***"); printf("\n 1- Cadastrar Livro"); printf("\n 2- Listagem Livros"); printf("\n 3- Consultar pelo Codigo"); printf("\n 4- Acesso Aletorio"); printf("\n 5- Alterar dados do Livro"); printf("\n 6- Remover um Livro"); printf("\n 0- Sair"); printf("\n Opcao-> "); fflush(stdin); scanf("%i", &op); switch (op) { case 1: cadastrarLivro(); break; case 2: listarLivros(); break; case 3: consultarCodigo(); break; case 4: acessarAleatorio(); break; case 5: alterarLivro(); break; case 6: removerLivro(); break; }//Fim switch }while (op!=0);}//Fim main() Quote Link to comment Share on other sites More sharing options...
Question
bakasam
Fazer um programa em C para controlar os empréstimos de livros de uma Biblioteca. O programa
deverá conter:
2 arquivos: um para cadastro de Livros e outro para Alunos. Os dados do Livro que devem ser
guardados são: código(tombo), título, autor, assunto, editora, edição, Ano de publicação e
situação. O campo situação deverá armazenar o código do aluno que retirou o livro ou a
palavra LIVRE se o livro estiver disponível). Os dados do Aluno são: código, nome,
endereço(rua e número da casa), telefone, e-mail.
· O programa deverá implementar as seguintes tarefas básicas:
Cadastro de Livros;
Cadastro de Alunos;
Exclusão de Livros e Alunos (Remoção Física do registro);
Retirada;
Devolução;
Consulta de Livro pelo código;
Consulta de Aluno pela parte inicial do nome
Consulta de Livro pela parte inicial do Título;
Relatório de Livros (todos);
Relatório de Livros por assunto;
Relatório de Livros por autor (listar todos os livros de um autor);
Relatório de Alunos (todos).
· Na consulta de Livro pelo código, devem ser mostrados os dados do Livro e, caso o Livro já
esteja emprestado, exibir o código, nome e telefone do Aluno;
· Na consulta de Aluno pela parte inicial do nome, deve-se entrar com a parte inicial do nome
do Aluno e o sistema mostrará os dados do Aluno e os Livros por ele retirados;
· No relatório de Livros(todos) deverão ser listados todos os Livros;
· No relatório de Livros por assunto, deverão ser listados somente os Livros de um
determinado Assunto.
· Exclusão de Livros/Alunos: nesta opção, o sistema deve solicitar o código do Livro/Aluno
a ser excluído; procurar o Livro/Aluno no arquivo de Livros/Alunos; exibir os dados do
Livro/Aluno; se o aluno possui Livros retirados, avisar ao usuário e pedir confirmação para
exclusão.
alguém pode me ajudar ai porfavor ate agora eu fiz isso.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct reg_livro {
int codigo,edicao,ano_publi;
char titulo[30],autor[30],assunto[30],editora[30];
float preço;
};
void cadastrarLivro(){
struct reg_livro livro;
FILE *fplivro;
char op;
printf("\n Cadastro de Livro:");
printf("\n Digite o Codigo: ");
fflush(stdin); scanf("%i", &livro.codigo);
printf("\n Digite o Ediçao: ");
fflush(stdin); scanf("%i", &livro.edicao);
printf("\n Digite o ano da publicação: ");
fflush(stdin); scanf("%i", &livro.ano_publi);
printf(" Digite o Titulo: ");
fflush(stdin); gets(livro.titulo);
printf(" Digite o Autor: ");
fflush(stdin); gets(livro.autor);
printf(" Digite o Assunto: ");
fflush(stdin); gets(livro.assunto);
printf(" Digite o Editora: ");
fflush(stdin); gets(livro.editora);
printf(" Digite o preço: ");
fflush(stdin); scanf("%f", &livro.preço);
printf("\n Gravar Dados(S/N)?");
fflush(stdin); scanf("%c", &op);
if ((op=='S') || (op=='s')){
if ((fplivro=fopen("D:\\livros.dat","ab+"))==NULL){
printf("\n Erro na Abertura do arquivo livros.dat");
getch();
}
fwrite(&livro,sizeof(livro),1,fplivro);
fclose(fplivro);
printf("\n Gravacao Realizada com Sucesso!");
}
else
printf("\n Operacao Cancelada!");
printf("\n Pressione uma Tecla.");
getch();
}//Fim cadastrarLivro()
void listarLivros(){
struct reg_livro livro;
FILE *fplivro;
fplivro = fopen("D:\\livros.dat","rb");
printf("\n\t\t = = = Listagem de Livros = = = ");
printf("\nCodigo\t Titulo\t\t\t preço");
while (fread(&livro,sizeof(livro),1,fplivro)==1)
printf("\n %i\t%s\t\t%5.2f",livro.codigo,livro.edicao,livro.ano_publi, livro.titulo, livro.autor, clivro.assunto, lcivro.editora, livro.preço);
fclose(fplivro);
printf("\n Pressione uma Tecla.");
getch();
}//Fim listarLivros()
void consultarCodigo(){
struct reg_livro livro;
FILE *fplivro;
int cod, achou;
printf("\n Consulta Livro pelo Codigo:");
printf("\n Digite o Codigo: ");
fflush(stdin); scanf("%i", &cod);
fplivro = fopen("D:\\livros.dat","rb");
achou=0;
while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1))
if (livro.codigo==cod){
printf("\n Codigo: %i", livro.codigo);
printf("\n Edicao: %i", livro.edicao);
printf("\n Ano_publi: %i", livro.ano_publi);
printf("\n Titulo: %s", livro.titulo);
printf("\n Autor: %s", livro.autor);
printf("\n Assunto: %s", livro.assunto);
printf("\n Editora: %s", livro.editora);
printf("\n preço.: %5.2f", livro.preço);
achou=1;
}
fclose(fplivro);
if (achou==0)
printf("\n Livro não Encontrado!");
printf("\n Pressione uma tecla.");
getch();
}//consultarCodigo
void acessarAleatorio(){
struct reg_livro livro;
FILE *fplivro;
int nroreg, ret;
printf("\n Digite o nro. do registro: ");
fflush(stdin); scanf("%i", &nroreg);
fplivro = fopen("D:\\livros.dat","rb");
ret = fseek(fplivro,(nroreg-1)*sizeof(livro),0);
printf("\n Valor retornado pela fseek: %i", ret);
if (fread(&livro,sizeof(livro),1,fplivro)==1){
printf("\n Codigo: %i", livro.codigo);
printf("\n Edicao: %i", livro.edicao);
printf("\n Ano_publi: %i", livro.ano_publi);
printf("\n Titulo: %s", livro.titulo);
printf("\n Autor: %s", livro.autor);
printf("\n Assunto: %s", livro.assunto);
printf("\n Editora: %s", livro.editora);
printf("\n preço.: %5.2f", livro.preço);
}else
printf("\n Registro não Encontrado!");
printf("\n Pressione uma tecla.");
getch();
}//Fim acessarAleatorio()
void alterarLivro(){
struct reg_livro livro;
FILE *fplivro;
int cod, achou;
char op;
printf("\n Digite o codigo: ");
fflush(stdin); scanf("%i", &cod);
fplivro = fopen("D:\\livros.dat","rb+");
achou=0;
while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1))
if (livro.codigo==cod){
printf("\n Codigo: %i", livro.codigo);
printf("\n Titulo: %s", livro.titulo);
printf("\n preço.: %5.2f", livro.preço);
achou=1;
}
if (achou==0)
printf("\n Livro não Encontrado");
else {
printf(" Digite o novo Titulo: ");
fflush(stdin); gets(livro.titulo);
printf(" Digite o novo preço: ");
fflush(stdin); scanf("%f", &livro.preço);
printf("\n Gravar Dados(S/N)?");
fflush(stdin); scanf("%c", &op);
if ((op=='S') || (op=='s')){
fseek(fplivro,-sizeof(livro),1);
fwrite(&livro,sizeof(livro),1,fplivro);
printf("\n Dados Alterados com Sucesso.");
}else
printf("\n Operacao Cancelada!");
}
fclose(fplivro);
printf("\n Pressione uma tecla.");
getch();
}//Fim alterarLivro()
void removerLivro(){
struct reg_livro livro;
FILE *fplivro, *fplivro2;
char op;
int cod, achou;
printf("\n Digite o codigo do Livro a ser removido: ");
fflush(stdin); scanf("%i", &cod);
fplivro = fopen("D:\\livros.dat","rb");
achou=0;
while ((achou==0) && (fread(&livro,sizeof(livro),1,fplivro)==1))
if (livro.codigo==cod){
printf("\n Codigo: %i", livro.codigo);
printf("\n Titulo: %s", livro.titulo);
printf("\n preço.: %5.2f", livro.preço);
achou=1;
}
fclose(fplivro);
if (achou==0)
printf("\n Livro não Encontrado");
else {//Achou o Livro
printf("\n Confirma remocao(s/n)?");
fflush(stdin); scanf("%c", &op);
if ((op=='S') || (op=='s')){
fplivro = fopen("D:\\livros.dat","rb");
fplivro2 = fopen("D:\\livros2.dat","wb");
while (fread(&livro, sizeof(livro),1,fplivro)==1)
if(livro.codigo!=cod)
fwrite(&livro,sizeof(livro),1,fplivro2);
fclose(fplivro);
fclose(fplivro2);
system("DEL D:\\livros.dat"); //Remove o arquivo original
system("RENAME D:\\livros2.dat livros.dat"); //Renomeia o arquivo auxiliar
printf("\n Livro removido com sucesso.");
}else
printf("\n Operacao Cancelada!");
}
printf("\n Pressione uma tecla.");
getch();
}//Fim removerLivro()
main(){
int op;
do {
printf("\n *** L i v r a r i a - M e n u ***");
printf("\n 1- Cadastrar Livro");
printf("\n 2- Listagem Livros");
printf("\n 3- Consultar pelo Codigo");
printf("\n 4- Acesso Aletorio");
printf("\n 5- Alterar dados do Livro");
printf("\n 6- Remover um Livro");
printf("\n 0- Sair");
printf("\n Opcao-> ");
fflush(stdin); scanf("%i", &op);
switch (op) {
case 1: cadastrarLivro();
break;
case 2: listarLivros();
break;
case 3: consultarCodigo();
break;
case 4: acessarAleatorio();
break;
case 5: alterarLivro();
break;
case 6: removerLivro();
break;
}//Fim switch
}while (op!=0);
}//Fim main()
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.