C# - Programa para locadora de veículos
Hoje apresento um singelo programa feito na linguagem C# usando o Visual Studio 2012 Express for dekstop. |
Juntando a prática com a teoria temos neste programa para locadora de veículos um exemplo de como usar os recursos da linguagem C# tais como: classes, coleções, serialização, impressão; bem como o uso dos controles de formulário como picturebox, textbox, label, listview, button.
Neste exemplo específico estamos usando a classe Dictionary.
A classe Dictionary representa uma coleção de chaves e valores. É uma coleção do tipo chave/valor e implementa a interface IDictionary que possui duas coleções no seu interior uma para guardar a chave e outra para guardar o valor.
A aplicação não utiliza um banco de dados relacional. Os dados são persistidos em arquivos texto através da serialização.
á ouviu falar em serialização ? O que é serializar ? Como podemos fazer isto na plataforma .NET ?
De forma genérica a serialização é uma técnica usada para persistir objetos , ou seja : gravar objetos em disco , fazer a transmissão remota de objetos via rede , armazenar os objetos em um banco de dados e/ou arquivos (binários , xml, etc.)
Serializar nada mais é do que colocar os valores que o objeto está utilizando juntamente com suas propriedades de uma forma que fique em série (sequencial) . Fazendo isto estamos tornando o objeto Serializable, e, tornando um objeto Serializable, estamos atribuindo essa qualidade a ele, e dando privilégios para que o mesmo possa ser gravado em disco ou enviado por rede.
A serialização é o processo de armazenar um objeto , incluindo todos os atributos públicos e privados para um stream.
Se você faz a serialização naturalmente vai querer fazer o processo inverso - desserialização , que seria restaurar os atributos de um objeto gravado em um stream. (Este stream pode ser um arquivo binário , xml , etc.)
Nota: Tradução de stream - fluxo (no caso de dados) . Melhor deixar
stream mesmo.
Por que você iria querer usar a serialização ?
Primeiro por que nem tudo se pode armazenar em um banco de dados . As vezes a natureza da sua aplicação não exige um banco de dados ou usar um banco de dados pode ficar muito caro para o tamanho dos dados que se quer guardar ou ainda você pode também querer gravar os dados em disco para posterior recuperação. Enfim , se você não quer usar um banco de dados , e quer persistir seus objetos pode fazer isto de diversas maneiras mas o trabalho exigirá mais código , mais trabalho e mais tempo.
As informações da aplicação exemplo são armazenadas em uma pasta criada automaticamente pela aplicação usando o código a seguir:
FileStream stnCarros = null;
BinaryFormatter bfmCarros = new BinaryFormatter();
Directory.CreateDirectory(@"C:\JcmSoft_Carros");
string strNomeArquivo = @"C:\JcmSoft_Carros\Carros.crs";
O programa esta criando a pasta JcmSoft_Carros no drive C:\ da máquina local:
Os arquivos criados e usados para armazenar as informações são:
Carros.crs
Clientes.crc
Empregados.cre
PedidoLocacao.cro
As informações são serializadas nos arquivos através dos objetos criados conforme mostra o código abaixo:
// Cria um carro
Carro veiculo = new
Carro();
veiculo.Fabricante = txtFabricante.Text;
veiculo.Modelo = txtModelo.Text;
veiculo.Ano =
int.Parse(txtAno.Text);veiculo.Categoria = cbxCategorias.Text;
veiculo.TemCDPlayer = chkCDPlayer.Checked;
veiculo.TemDVDPlayer = chkDVDPlayer.Checked;
veiculo.EstaDisponivel = chkDisponivel.Checked;
// Chama o método Add da coleção para adicionar o carro
listaCarros.Add(txtTagNumber.Text, veiculo);
// salva a lista
stnCarros =
new FileStream(strNomeArquivo, FileMode.Create, FileAccess.Write, FileShare.Write);
Quando do registro de pedido de locação, ao informar o número da carteira de motorista (CNH) na caixa de texto, é feita uma busca nos arquivos e a informação é recuperada e exibida nos controles de formulário conforme mostra o código abaixo:
Nota: Observe que estamos usando o evento Leave da caixa de texto
private void txtNumeroRegistroCNH_Leave(object sender, EventArgs e) { Cliente locador = null; string strNumeroCNH = txtNumeroRegistroCNH.Text; if (strNumeroCNH.Length == 0) { MessageBox.Show("Informe o número de registro da carteira de habilitação do Cliente."); txtNumeroRegistroCNH.Focus(); return; } Dictionary<string, Cliente> listaClientes = new Dictionary<string, Cliente>(); BinaryFormatter bfmClientes = new BinaryFormatter(); string strNomeArquivo = @"C:\JcmSoft_Carros\Clientes.crc"; if (File.Exists(strNomeArquivo)) { FileStream stmClientes = new FileStream(strNomeArquivo, FileMode.Open, FileAccess.Read, FileShare.Read); try { // retorna uma lista de clientes listaClientes = (Dictionary<string, Cliente>) bfmClientes.Deserialize(stmClientes); if (listaClientes.ContainsKey(strNumeroCNH) == true) { foreach (KeyValuePair<string, Cliente> cli in listaClientes) { if (cli.Key == strNumeroCNH) { locador = cli.Value; txtNomeCliente.Text = locador.Nome; txtEnderecoCliente.Text = locador.Endereco; txtCidadeCliente.Text = locador.Cidade; cboClientesEstados.Text = locador.Estado; txtCepCliente.Text = locador.CodigoPostal; } } } else { txtNomeCliente.Text = ""; txtEnderecoCliente.Text = ""; txtCidadeCliente.Text = ""; cboClientesEstados.Text = ""; txtCepCliente.Text = ""; MessageBox.Show("Não existe cliente com o registro de " + " CNH informado no banco de dados"); return; } } finally { stmClientes.Close(); } } }
|
A seguir vemos os principais formulários do projeto:
1- O formulário Central apresentando as opções do sistema. Primeiro devemos cadastrar os veículos, depois os empregados e a seguir os clientes. A opção de locação deve ser usada após esses cadastramentos.
2- O formulário para editar/cadastrar veículos
3- O formulário para cadastrar/editar empregados
4- O formulário para cadastro de clientes
5- O formulário para registrar os pedidos de locações.
Basta informar o número do empregado, o número da CNH do cliente e o número do veículo que os dados serão recuperados e exibidos nos controles de formulário.
A seguir basta definir a data de início e fim da locação. Os dias serão calculados automaticamente.
No botão Taxas é aberto o formulário com as taxas definidas conforme a categoria do veículo locado.
Informando a taxa, basta clicar no botão Calcular para obter os valores.
O botão Salvar persiste as informações da locação realizada no disco rígido. Para recuperar uma locação feita basta informar o número de registro e clicar no botão Abrir.
A seguir o relatório gerado pela aplicação com os dados da locação.
O sistema foi criado com o objetivo do mostrar a utilização das classes, coleções e da serialização usando a linguagem C#.
O programa não tem a pretensão de ser usado para gerenciar as locações de veículos. Você pode melhorar o programa ou se basear nele para criar o seu próprio sistema com mais recursos.
Pegue o projeto completo aqui: LocadoraCarros.zip
No Super DVD .NET existem mais de 100 programas como este com o código fonte aberto para estudo.
Veja os
Destaques e novidades do SUPER DVD VB
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Veja também o Curso Básico de VB .NET em vídeo aulas : Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. Veja também o Curso Básico de C# em vídeo aulas : |
Mat 6:25 Por isso vos digo: Não estejais ansiosos quanto à vossa vida, pelo que haveis de comer, ou pelo que haveis de beber; nem, quanto ao vosso corpo, pelo que haveis de vestir. Não é a vida mais do que o alimento, e o corpo mais do que o vestuário?
Mat 6:26 Olhai para as aves do céu, que não semeiam, nem ceifam, nem ajuntam em celeiros; e vosso Pai celestial as alimenta. Não valeis vós muito mais do que elas?
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Cadastro de Clientes com Entity Framework em ... - Macoratti.net