Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivo de registro


AlineI

Pergunta

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

Editado por kuroi
Adicionar 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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...