Sistema Simples de uma Biblioteca – Parte 1
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 48×48.
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();
}
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
Publicado em 06/09/2010, em .NET, C#, SQL Server e marcado como biblioteca, formulários, modelando dados, windows forms. Adicione o link aos favoritos. 19 Comentários.











Também este é muito bom, Mas insisto em perguntar: se fosse preciso normalizar como seria o código? pqu estou tendo problemas neste aspecto.
Obrigado
Cara, respondi seu email, veja lá.
Abraços.
cara estou a cada dia mais focado nos seus posts e artigos sempre acompanho (apesar de não ser fã de c# e .net, rs), porém estou aprendendo muito sobra SQL Server
seria bom se você fizesse mais ambientes de duvidas referente a SQL somente, pois estou muito interessado em aprender mais sobre relacionamento no SQL
Muito Obrigado pela compreensão
abração
Cara, valeu pelo feedback!
Tento dividir artigos entre C# com Windows Forms, C# pra ASP.NET e SQL Server, mais confesso que o conteúdo de SQL é escasso, só mesmo o curso básico que estou terminando e espero publicar a parte 10 até o fim do ano.
Sobrando mais tempo espero aumentar o número de posts sobre SQL Server, até porque preciso também estudar mais sobre ele.
Abraços!
Olá Amigo Ótimo seus posts, acompanho a maioria. e esse sobre a biblioteca surpreendente… e as outras partes? Seria ótimo se continuasse… mais desde ja grato pelo seu empenho.
Cara, veja as 3 partes no link abaixo:
http://programandodotnet.wordpress.com/tag/biblioteca/
Abraços.
Parabéns!!
Muito bons seus artigos!!!
Muito obrigado Pri, eu que agradeço.
Abraços.
cara gostei mto do seu post sobre a biblioteca era justamente o q eu qria fazer pro meu projeto(baseado em uma biblioteca comunitária) qria saber se baseado em seus códigos dá pra mim fazer pra reservar livros?? é como se fosse o cliente reservar, daí no sistema mostrar q tá reservado algo do tipo….
é pq tava pesquisando como montar um sistema pra biblioteca seria necessário usar um formato “Mark 21″ q é próprio para transformar dados do livro para o sistema é bem complicado… e o seu achei bem simples e mto massa, esse que vc fez cadastra os livros na boa??? desculpa te perguntar isso, mas é q é mto importante pra mim ^^
Cara, você pode implementar esta biblioteca, criando um Cadastro de Clientes para ela, e um Cadastro de Reservas, podendo gerenciar assim melhor sua Biblioteca.
Baixe o código-fonte e estude ele, você vai ver como tudo está bem simples.
Qualquer dúvida envie um email para wellingtonbalbo@gmail.com.
Abraços.
Ola quando vou tentar Adicionar o Banco dados no Visual Studio aparece uma messagem Dizendo que o visual Studio não tem permição para abrir o Arquivo. vc pode esta me dando uma Ajuda ?
Estou utilizando o Visual Studio 2010, C#, SQL Server 2008
Email: rodrigomaciel_as@hotmail.com
Mensagem estranha Rodrigo, como você está tentando adicionar o banco?
Está indo pelo Server Explorer, achando o servidor e procurando o Database?
Abraços.
Ola consegui de outra forma aqui vc pode esta me acompanhando na primeira parte aqui?
preciso de seu email para eu mandar o script, estou tentando aqui e não estou conseguindo. Abraços
Quando envio um Email para vc esta retornando a menssagem dizendo que não existe esse email.
Manda pro cara certo hehe.
Manda para wellingtonbalbo@gmail.com.
Abs.
sim estou emviando para esse email mesmo ai esta voltando esta menssagem
This is an automatically generated Delivery Status Notification.
Delivery to the following recipients failed.
wellingtonbalbo@gmail.com
Ola tentei de todas as maneiras fazer te enviar o email mais não vai então eu coloquei o Codigo aqui nesse site: http://www.rodrigomacielsobreira.com/CadastroADV.rar
O que não estou conseguindo:
*quando cadastro esta aparecendo que foi cadastrado com sucesso mais não esta ficando no banco de dados,
* tentei de várias forma excluir e ageitar o formulario de excluir e editar Cadastro e não consigo.
dar uma olhadinha e me ajuda por favor ? isso é para o meu TCC.
te colocarei nas apresentação e agradecimento do tal..
Abraços…
rodrigomaciel_as@hotmail.com
Conseguiu fazer o download é só clicar no link
Pingback: Estatísticas do Blog – 2010 « Programando .NET