sábado, 27 de dezembro de 2014

[Programação em C] - Locadora de filmes

Olá pessoal, nesse post irei disponibilizar um código que implementa uma "Locadora de Filmes". Esse programa utiliza arquivos e pode ser usado como base para fazer outros programinhas que rodam no prompt/terminal.

Esse programa utiliza arquivos, ele está todo comentado para facilitar o entendimento do código.

Quanto a utilização de arquivos, muito se discute se é melhor carregar tudo do arquivo e depois salvar tudo ou atualizar o arquivo a cada modificação. A abordagem que utilizei foi atualizar o arquivo a cada modificação. Obviamente isso deve trazer perca de velocidade, pois estamos acessando algo no disco ao invés de acessar algo da memória, mas optei por essa abordagem para que o arquivo ficasse sempre atualizado.

Imagine que você está utilizando o programa a um tempão fazendo modificações (cadastro de clientes etc.) e falta energia! E agora? Se você carrega tudo pra memória e grava tudo no arquivo só depois que sai, então você perderá tudo. Caso você queira utilizar essa abordagem de trazer tudo pra memória e depois gravar só quando encerrar o programa, é bom ter algum artifício para proteger os dados como por exemplo utilizar threads que fica salvando de tempos em tempos.

Enfim, utilizei a abordagem de sempre atualizar o arquivo quando há modificação/atualização dos dados.

Outra coisa utilizada no programa é geração de ID's automáticos tanto para os clientes quanto para os filmes. Não é interessante o usuário digitar o ID, é bom que ele seja gerado automaticamente. Isso também diminui código pois você não precisará criar uma função para verificar se o ID existe já que você garante na geração um ID único.

Foram feitas várias validações de dados, NÃO utilizem "gets" ou "fflush" por favor, isso pode trazer comportamentos indefinidos para seus programas. Veja a forma como utilizei o "scanf", é bem mais prático.

Outra coisa bem interessante foi dá um "fseek" na stdin, isso substitui o "fflush", é uma forma de "limpar" o buffer, o programa fica consistente.

O programa não foi muito testado, pode ter bugs, mas demonstra bastante a utilização de arquivos utilizando a linguagem C. Pode ser um pouco trabalhoso, mas é importante que você realmente saiba trabalhar com arquivos.

Logo no início do programa é verificado se o sistema é Windows, isso é feito porque o comando "cls" (comando que limpa a tela) só funciona no Windows, no Linux é o comando "clear", se não fizesse essa verificação, o programa perderia portabilidade.

Enfim, quaisquer dúvidas deixem nos comentários, o programa está todo comentado, espero que ele ajude em seus estudos.

Atualização por Francimar Alves:

O código foi atualizado, o uso de fseek no stdin NÃO foi recomendado embora foi mantido. Para um preço de filme flutuante, caso o usuário queira digitar por exemplo 49,50, terá que digitar 4950. Outro exemplo: para um preço 19 reais, terá que digitar 1900.

Clique aqui para fazer o download do código

ou veja o código:



Nenhum comentário: