Olá pessoal, neste artigo irei criar um sistema simples para uma Biblioteca. Nele, irei usar as operações básicas de CRUD para fazer o cadastro, exclusão, atualização e a consulta de livros, funcionários e clientes. Não farei o mesmo em três camadas, já que o foco deste artigo não é este e, como já disse antes, será algo simples.
Para este artigo usarei o banco SQL Server 2008 Express, em conjunto com o Visual Studio 2008 Professional SP1.
Nesta parte vamos modelar o banco de dados e começar a criar as telas. Para isso, abra o SQL Server 2008 (ou 2005) para criarmos as tabelas referentes à nossa Biblioteca. Neste exemplo teremos as seguintes tabelas:
- Livros, que terá os seguintes campos: ID, NOME, AUTOR, ANO, GENERO, EDITORA, PAGINAS e STATUS (que será um char de uma posição, podendo conter o valor “D”, de disponível ou “I”, de indisponível). Use o seguinte script:
CREATE TABLE Livros
(
Id_Livro INT IDENTITY(1,1) PRIMARY KEY,
Nome_Livro VARCHAR(100) NOT NULL,
Autor_Livro VARCHAR(50) NOT NULL,
Ano_Livro SMALLINT NOT NULL,
Genero_Livro VARCHAR(50) NOT NULL,
Editora_Livro VARCHAR(50) NOT NULL,
Paginas_Livro SMALLINT NULL,
Status_Livro CHAR(1) NOT NULL
)
- Funcionários, que terá os seguintes campos: ID, NOME, ENDERECO, CIDADE, ESTADO, TELEFONE, CARGO, DATA_ADMISSAO e DATA_DEMISSAO (que será uma coluna que aceita valores nulos). Use o script abaixo:
CREATE TABLE Funcionarios
(
Id_Funcionario INT IDENTITY(1,1) PRIMARY KEY,
Nome_Funcionario VARCHAR(100) NOT NULL,
Endereco_Funcionario VARCHAR(50) NOT NULL,
Cidade_Funcionario VARCHAR(50) NOT NULL,
Estado_Funcionario VARCHAR(30) NOT NULL,
Telefone_Funcionario VARCHAR(20) NULL,
Cargo_Funcionario VARCHAR(30) NOT NULL,
Data_Admissao_Funcionario SMALLDATETIME NOT NULL,
Data_Demissao_Funcionario SMALLDATETIME NULL
)
- Clientes, que terá os seguintes campos: ID, NOME, ENDERECO, CIDADE, ESTADO, TELEFONE e STATUS (que será um char de uma posição, podendo conter o valor “A”, de ativo ou “I”, de inativo). Use o script a seguir:
CREATE TABLE Clientes
(
Id_Cliente INT IDENTITY(1,1) PRIMARY KEY,
Nome_Cliente VARCHAR(100) NOT NULL,
Endereco_Cliente VARCHAR(50) NOT NULL,
Cidade_Cliente VARCHAR(50) NOT NULL,
Estado_Cliente VARCHAR(30) NOT NULL,
Telefone_Cliente VARCHAR(20) NULL,
Status_Cliente CHAR(1) NOT NULL
)
Poderíamos criar muito mais tabelas para armazenar os autores, editoras, etc. Mais vamos nos manter nessas três tabelas.
Use os scripts acima para criar as respectivas tabelas. Crie primeiro a de Livros para que contenha as seguintes colunas (ao final deste artigo irei disponibilizar o link para download dos scripts das tabelas criadas):
Agora veja as colunas da tabela de Funcionários:
Finalizando com as colunas da tabela de Clientes:
Pronto, nosso modelo de dados está completo. Perceba que não usamos relacionamentos entre as tabelas (só usamos chaves primárias), já que o objetivo aqui é que cada tabela seja única (seguindo esta idéia mais adiante criaremos formulários únicos para estas tabelas) dando a idéia de que uma tabela seja totalmente independente da outra.
Agora abra o Visual Studio 2008 (ou 2010) e crie um novo projeto do tipo Windows Form, dando a ele o nome de LibrarySystem (altere o nome se quiser):
O form que aparece será nosso form Principal, que terá os botões para acessarmos os outros forms e os forms vinculados à eles. Inclua nesse form 1 controle ToolStrip, nele adicione 3 Buttons, clique com o botão direito neles e clique em Set Image para adicionar imagens aos botões. Clique com o botão direito em cima das imagens, clique em DisplayStyle e clique em Image and Text, assim irá aparecer em seu form a imagem e seu texto, definido pela propriedade Text. Neste exemplo estou usando imagens com tamanho de 48x48.
Obs:Todas as imagens usadas neste projeto foram baixadas gratuitamente deste site.
Adicione outro ToolStrip para ficar no rodapé e um Button com o texto Sair. Após adicionar as imagens aos botões não se esqueça de alterar a propriedade ImageScaling para None, assim sua imagem terá o tamanho original no form.
Altere as propriedades do form: MaximizeBox para False, FormBorderStyle para FixedSingle, StartPosition para CenterScreen e digite um nome na propriedade Text. Seu form deverá ficar desta forma:
Os ID’s para os botões são os seguintes: tsbtnClientes, tsbtnFuncionarios, tsbtnLivros e tsbtnSair.
Com o form inicial criado, comece a criação dos outros. Abra a Solution Explorer, clique com o botão direito em seu projeto, clique em Add > Windows Forms e dê o nome de frmClientes. Nele, altere as seguintes propriedades: MaximizeBox para False, FormBorderStyle para FixedSingle, IsMdiContainer para True, Size para 650;500 StartPosition para CenterScreen e digite um nome na propriedade Text.
Nos formulários criados a partir de agora usarei o conceito de MDI, assim criaremos formulários filhos que serão chamados a partir dos formulários Pais, que no nosso caso serão estes três, de Clientes, Funcionários e Livros.
Para entender melhor os conceitos sobre formulários MDI, veja este artigo.
Em nosso formulário de Clientes, recém-criado, vamos criar 4 botões que serão responsáveis por chamar os formulários filhos de Cadastro, Atualização/Exclusão e Consulta e 1 botão para Voltar ao form principal. Então, adicione o controle ToolStrip, inclua 4 botões, adicione as imagens e altere as propriedades (da mesma forma que foi feito na parte 1 de nosso artigo). Nosso form deverá ficar dessa forma:
Adicione também um ToolStrip no rodapé (só alterar a propriedade Dock para Bottom) para Sair do sistema. Altere a propriedade Modifiers dos 5 botões para Public, assim podemos ter acesso a estes botões de outros forms.
O ID dos botões são esses: tsbtnAlterarExcluir, tsbtnCadastrar, tsbtnConsultar, tsbtnVoltar e tsbtnSair.
Abra a Solution Explorer, clique com o botão direito em seu projeto, clique em Add > Windows Forms e dê o nome de frmFuncionarios. Para manter a padronização, altere neste form as mesmas propriedades que forma alteradas no frmClientes.
Como anteriormente, crie 4 botões que serão responsáveis por chamar os formulários filhos de Cadastro, Atualização/Exclusão e Consulta e 1 botão para Voltar ao form principal. Crie também o botão para Sair do sistema. Nosso form deverá ficar igual ao anterior:
Os ID’s dos botões são os mesmos do form anterior. Perceba que na verdade só alterei as imagens de Alterar/Excluir e de Cadastrar. Não se esqueça de alterar a propriedade Modifiers dos botões para Public Farei o mesmo no próximo form.
Finalizando a criação dos formulários pais, adicione um novo Windows Forms dando o nome a ele de frmLivros. Altere as mesmas propriedades e insira os mesmos botões (com algumas imagens diferentes) para que o form fique como a imagem abaixo nos mostra:
Volte ao formulário Principal para criarmos as chamadas aos formulários pais que acabamos de criar. Nele, dê dois cliques em cada um dos botões para ir à página de códigos e chamar o evento click de cada. O que faremos é somente instanciar os formulários e chamá-los pelo método ShowDialog. Dito isto, no botão Clientes insira o código abaixo:
private void tsbtnClientes_Click(object sender, EventArgs e)
{
frmClientes objFrmClientes = new frmClientes();
objFrmClientes.ShowDialog();
}
No botão Funcionarios, faça o mesmo:
private void tsbtnFuncionarios_Click(object sender, EventArgs e)
{
frmFuncionarios objFrmFuncionarios = new frmFuncionarios();
objFrmFuncionarios.ShowDialog();
}
E no botão Livros:
private void tsbtnLivros_Click(object sender, EventArgs e)
{
frmLivros objFrmLivros = new frmLivros();
objFrmLivros.ShowDialog();
}
Dê dois cliques também no botão Sair, faça uma verificação se o usuário realmente deseja sair e chame o método Application.Exit(), que irá fechar nosso sistema:
private void tsbtnSair_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Você tem certeza que deseja sair do sistema?", "Mensagem do Sistema",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Application.Exit();
}
}
Faça essa mesma chamada do botão Sair nos formulários pais.
No botão Voltar apenas feche seu formulário que o form principal aparecerá novamente:
private void tsbtnVoltar_Click(object sender, EventArgs e)
{
this.Close();
}
Para quem se interessar em baixar o script das tabelas, baixe neste post
Assim finalizo o artigo. Na próxima parte vamos criar os formulários filhos que compõem nosso projeto, para partirmos para a codificação das operações de Inclusão, Deleção, Consulta e Atualização dos dados. Aguarde!
Um abraço, e até o próximo artigo
Wellington Balbo de Camargo