Bom, tenho que colocar um programa já pronto, mas sem arquivo, em um arquivo... a professora de algoritmos deu ele sem arquivos pra fazer, fiz... e agora o prof de programação quer ele com arquivos, mas ele mal explicou e já mandou fazer esse... nem treinamos, só aprendemos a abrir 'malemal'... e tals, tenho a mínima idéia de como colocaria dentro do arquivo, se é registro por registro, ou como que é...
O programa consiste em cadastro de livros, de usuarios, emprestimo de livro, devolução e exibição do extrato do usuário (codigos dos livros que ele tem emprestado);
Alguma dica?
Aqui está o código sem arquivos:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
LEMBRAR de inicializar todos campos do registro. todos livros.disponivel devem
ser = 1, pois estao disponiveis.
Todos livros do usuario, devem receber -1, pra dizer que estao vazios.
*/
typedef struct//usuarios
{
char nome[30]; //nome do usuario
int codigo; //codigo usuario
char endereco[40]; //endereço
char dataNasc; //data de nascimento
int telefone; //telefone
char categoria[10]; //categoria /aluno ou professor/
int livros[3]; //3 livros por usuario;
} usr;
typedef usr usuario;
usuario usuarios[30]; //cria um vetor de usuario
typedef struct //livros
{
int codigo; //codigo livros
char titulo[30];
char autor[30];
char assunto[30];
char editora[10];
int ano;
int edicao;
int disponivel;
}liv;
typedef liv livro;
livro livros[100]; //cria um vetor de livros...
void inicializa()
{
int i=0;
for(i=0;i<50;i++)
{
usuarios[i].livros[0]=-1;
usuarios[i].livros[1]=-1;
usuarios[i].livros[2]=-1;
}
for(i=0;i<100;i++)
{
livros[i].disponivel=1;//de começo todos livros estao disponiveis!
}
}
int buscaUsuario(usuario usuarios[],int numeroUsuarios,int codigoUsuario)
//passa como parametro o vetor dos usuarios, o numero de usuarios cadastrados
//e o codigo do usuario a ser procurado.
{
int i=0;
for(i=0;i<numeroUsuarios;i++)
{
if(usuarios[i].codigo==codigoUsuario)
return i;
}
return -1;
//busca o usuario, se achar retorna o indice dele no vetor;
//se não achar, retorna -1...
}
int cadastrarUsuarios(usuario usuarios[])
{
printf("\n\n*** CADASTRO DE USUARIOS ***\n\n");
int numeroUsuarios=0;
int i=0;
printf("\nInforme o numero de usuarios a serem cadastrados: ");
scanf("%d",&numeroUsuarios);
for(i=0;i<numeroUsuarios;i++)
{
printf("\nNome: ");
scanf("%s",&usuarios[i].nome);
fflush(stdin);
printf("\nCodigo: ");
scanf("%d",&usuarios[i].codigo);
fflush(stdin);
printf("\nEndereco: ");
scanf("%d",&usuarios[i].endereco);
fflush(stdin);
printf("\nData de Nascimento: ");
scanf("%d",&usuarios[i].dataNasc);
fflush(stdin);
printf("\nTelefone: ");
scanf("%d",&usuarios[i].telefone);
fflush(stdin);
printf("\nCategoria: ");
scanf("%d",&usuarios[i].categoria);
fflush(stdin);
}
}
int locaLivro(livro livros[], int nLivros,int codigoLivro)
{
int i=0;
for(i=0; i<nLivros;i++)
{
if(livros[i].codigo==codigoLivro )
{
if(livros[i].disponivel==1)//não tava verificando a disponibilidade do livro,
//sempre que alguém queria pegar, podia...
{ //se o livro existir, e se for disponivel retorna seu codigo....
livros[i].disponivel=0;
return (livros[i].codigo);
}
else
{
printf("\nO Livro não esta disponivel!");
return -1;//senao retorna -1!
}
}
}
return -1;
//Vai chamar pro usuario, ai atribui o resultado numa posicao do vetor do
//usuario.
}
int devolve(livro livros[],int nLivros,int codigo)
{
int i=0;
for(i=0;i<nLivros;i++)
{
if(livros[i].codigo==codigo)
{
livros[i].disponivel=1;
return -1;
}
}
return -1;
}
int cadastraLivro(livro livros[])
{
printf("\n\n*** CADASTRO DE LIVROS ***\n\n");
int i=0;
int numeroLivros;
printf("Quantidade de livros: ");
scanf("%d",&numeroLivros);
for(i=0;i<numeroLivros;i++)
{
printf("\nTitulo: ");
scanf("%s",&livros[i].titulo);
fflush(stdin);
printf("\nCodigo: ");
scanf("%d",&livros[i].codigo);
fflush(stdin);
printf("\nAutor: ");
scanf("%s",&livros[i].autor);
fflush(stdin);
printf("\nAssunto: ");
scanf("%s",&livros[i].assunto);
fflush(stdin);
printf("\nEditora: ");
scanf("%s",&livros[i].editora);
fflush(stdin);
printf("\nAno: ");
scanf("%s",&livros[i].ano);
fflush(stdin);
printf("\nEdicao: ");
scanf("%s",&livros[i].edicao);
fflush(stdin);
}
return numeroLivros;//vai retornar a quantidade de livros que tem,
//que ficara salva como variavel global para ser
//acessada por outras funções.
}
void ConsultaLivro(livro livros[])
{
int i=0;
char tOUa[15]; //titulo ou autor;
printf("\n\n*** CONSULTA DE LIVRO ***\n\n");
printf("\n\nInforme o titulo ou o autor do livro que deseja consultar: ");
scanf("%s", &tOUa);
fflush(stdin);
if ((strcmp(tOUa,livros[i].titulo)== 0 ) || (strcmp(tOUa,livros[i].autor)== 0))
{
printf("\nTitulo: %s", livros[i].titulo);
printf("\nCodigo: %d", livros[i].codigo);
printf("\nAssunto: %s", livros[i].assunto);
printf("\nAutor: %s", livros[i].autor);
printf("\nEditora: %s", livros[i].editora);
printf("\nAno %d", livros[i].ano);
printf("\nEdicao: %d", livros[i].edicao);
}
if (livros[i].disponivel == 1)
{
printf("\n\nEste livro esta disponivel\n\n");
}
else if (livros[i].disponivel == 0)
{
printf("\n\nEste livro não esta disponivel\n\n");
}
}
void Extrato (livro livros[], usuario usuarios[], int numeroUsuarios)
{
printf("\n\n*** EXTRATO DO USUARIO ***\n\n");
int i=0;
int codUsuario=0;
printf("Informe seu codigo de usuario: ");
scanf("%d", &codUsuario);
int pos = buscaUsuario(usuarios, numeroUsuarios, codUsuario);
if(usuarios[pos].livros[0]!=-1)
printf("Livro 1 : %d", livros[i].codigo);
if(usuarios[pos].livros[1]!=-1)
printf("Livro 2 : %d", livros[i].codigo);
if(usuarios[pos].livros[2]!=-1)
printf("Livro 3 : %d\n\n", livros[i].codigo);
if ((usuarios[pos].livros[0] == -1) && (usuarios[pos].livros[1] == -1) && (usuarios[pos].livros[2] == -1))
printf("Este usuario não tem livros em seu extrato/locados");
}
int main()
{
printf("*ATENCAO: AO INICIAR O PROGRAMA, CADASTRE LIVRO(S) E USUARIO(S) PRIMEIRAMENTE*\n\n");
int numeroLivros=0;
//inicializa com 0, senao na busca da pau!
int opcao=0;
int codigoUsuario=0;
int codigoLivro=0;
int numeroUsuarios=0;
inicializa(); //zera os livros dos usuarios;
do
{
printf("\n*** MENU ***\n\n");
printf("Opcoes:\n");
printf("\n1 - Cadastrar livros");
printf("\n2 - Cadastrar usuarios");
printf("\n3 - Consultar Livros");
printf("\n4 - Locar livro");
printf("\n5 - Devolver Livro");
printf("\n6 - Extrato Usuario");
printf("\n7 - Sair do programa\n\n");
printf("Informe a opcao: ");
scanf("%d",&opcao);
switch(opcao)
{
case 1:
{
numeroLivros=cadastraLivro(livros);
break;
}
case 2:
{
numeroUsuarios=cadastrarUsuarios(usuarios);
break;
}
case 3:
{
if(numeroLivros>0)
{
ConsultaLivro(livros);
}
else
printf("\nNenhum livro no acervo!\n");
break;
}
case 4:
{
printf("\n\n*** EMPRESTIMO DE LIVROS ***\n\n");
printf("\nCodigo do usuario: ");
scanf("%d",&codigoUsuario);//le o codigo do usuario que vai locar o livro...
printf("\nCodigo do livro: ");
scanf("%d",&codigoLivro);
//se o codigo do usuario existe, [pos] guardara sua posicao no vetor;
//procura a primeira posicao vazia!
//lembrar de verificar se tem usuarios cadastrados e tals...
int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario);
if(usuarios[pos].livros[0]==-1)
usuarios[pos].livros[0]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else if(usuarios[pos].livros[1]==-1)
usuarios[pos].livros[1]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else if(usuarios[pos].livros[2]==-1)
usuarios[pos].livros[2]=locaLivro(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi emprestado!\n\n");
else
printf("\nNao foi possivel locar o livro\n");
break;
}
case 5:
{
printf("\n\n*** DEVOLUCAO DE LIVROS ***\n\n");
printf("\nCodigo do usuario: ");
scanf("%d",&codigoUsuario);
printf("\nCodigo do livro: ");
scanf("%d",&codigoLivro);
int pos = buscaUsuario(usuarios,numeroUsuarios,codigoUsuario);
if(usuarios[pos].livros[0]==codigoLivro)
usuarios[pos].livros[0]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else if(usuarios[pos].livros[1]==codigoLivro)
usuarios[pos].livros[1]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else if(usuarios[pos].livros[2]==codigoLivro)
usuarios[pos].livros[2]=devolve(livros,numeroLivros,codigoLivro);
printf("\nO Livro foi devolvido!\n\n");
else
printf("\nNao foi possivel entregar o livro");
break;
}
case 6:
{
Extrato(livros, usuarios, numeroUsuarios);
break;
}
case 7:
{
exit(0);//chama uma funcao da stdlib.h, que sai do programa, passando como
//parametro 0: uma antiga convenção para dizer que saiu por vontade da
//programadora, e não por um erro do sistema.
break;
}
default:
{
printf("\nEntre com uma opcao valida!\n");
break;
}
}
}while(1);//vai repitir até escolher a opcao 7.
}
Pergunta
AlineI
Bom, tenho que colocar um programa já pronto, mas sem arquivo, em um arquivo... a professora de algoritmos deu ele sem arquivos pra fazer, fiz... e agora o prof de programação quer ele com arquivos, mas ele mal explicou e já mandou fazer esse... nem treinamos, só aprendemos a abrir 'malemal'... e tals, tenho a mínima idéia de como colocaria dentro do arquivo, se é registro por registro, ou como que é...
O programa consiste em cadastro de livros, de usuarios, emprestimo de livro, devolução e exibição do extrato do usuário (codigos dos livros que ele tem emprestado);
Alguma dica?
Aqui está o código sem arquivos:
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
3 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.