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

wellingtonbalbo@gmail.com

Publicado em 06/09/2010, em .NET, C#, SQL Server e marcado como , , , . Adicione o link aos favoritos. 19 Comentários.

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

  2. 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!

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

  4. Parabéns!!

    Muito bons seus artigos!!!

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

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

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

  8. Quando envio um Email para vc esta retornando a menssagem dizendo que não existe esse email.

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

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

  11. Conseguiu fazer o download é só clicar no link

  1. Pingback: Estatísticas do Blog – 2010 « Programando .NET

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 551 other followers