ESCOLA PROFISSIONAL DE CHAVES
Curso Técnico de Gestão e Programação de Sistemas Informáticos
da Prova de Aptidão Profissional
Márcio Alexandre Borges Oliveira
1905
SUMÁRIO
Introdução. 7
1 - Análise do problema. 8
1.1- Ferramentas Case. 8
1.2- Apresentação do problema. 12
1.3- Propostas para cartão de leitor da EPC.. 15
1.4- Interface da aplicação. 17
2 - Base de dados. 22
2.1- Abordagem teórica. 22
2.2- Modelo relacional 24
2.3- Tabelas do projecto. 27
2.4- Tabelas relacionadas. 32
3 - Manual do programador 33
3.1-Criação da base de dados no Visual Studio 2008. 33
3.2-Formulário Principal 34
3.3-Formulários para registar “Tabelas” 36
3.4-Formulários consultar 42
4 - Manual de Utilizador 44
4.1-Login. 44
4.2-Formulário Principal 46
4.3-Menu Tabelas. 46
4.3.1-Formulário Leitores. 47
4.3.2-Formulário Livros. 48
4.3.3-Formulários Simples. 48
4.4-Menu Consultas. 49
4.4.1-Formulário Consultar leitores. 50
4.4.2-Formulário Consultar Livro. 50
4.4.3-Formulário Consultar movimentações. 51
4.5-Menu movimentos. 51
4.5.1-Formulário empréstimos. 52
4.5.2-Formulário Devoluções. 54
4.6-Menu apoios. 54
4.6.1-Formulário Internet 55
4.6.2-Formulário E-mails. 55
4.6.3-Formulário Contactos. 56
4.7-Formulário Novo utilizador 56
4.8-Encerrar 56
Considerações Finais. 57
Bibliografia. 58
Anexo A – Visual Basic. 59
Sumário de figuras
Fig.1- Diagrama caso de uso perante requisição de um livro escolar 10
Fig.2- Diagrama de caso de uso do responsável pela biblioteca. 11
Fig.3- Local de material de informação exposto para os alunos. 12
Fig.4- Posicionamento de livros nas estantes, distribuídos por categorias. 13
Fig.5- Local de acesso para os alunos fazerem pesquisas. 13
Fig.6- Estantes de livros divididas em categorias. 14
Fig.7- Talão de requisição. 14
Fig.8- Tipos de leitor 15
Fig.9- Proposta do cartão de leitor para a biblioteca - A.. 16
Fig.10- Proposta do cartão de leitor para a biblioteca - B.. 16
Fig.11- Campos pertencentes ao registo de um leitor para a biblioteca. 17
Fig.12- Divisão do menu Tabelas. 17
Fig.13- Tipo de géneros de leitores. 18
Fig.14-Menu consultas e seus submenus. 20
Fig.15-Menu movimentações e submenus. 20
Fig.16-Definição de linhas e colunas. 24
Fig.17-Registos para afirmar chaves (primárias, estrangeiras) 25
Fig.18- Relacionamento de 1:N.. 27
Fig.19- Tabelas relacionadas. 32
Fig.20-Server Explorer 33
Fig.21-Atribuição do nome a base de dados. 33
Fig.22-Adicionar uma tabela a base de dados. 34
Fig.23-Tabela autor criada. 34
Fig.24- Formulário Principal 35
Fig.25- Alteração de algumas propriedades do ToolStrip. 35
Fig.26- Divisão dos submenus do menu Tabelas. 36
Fig.27- Caminho para abrir formulário “Tabela Género Leitor” 36
Fig.28- Formulário “Tabela Género Leitor” 37
Fig.29- Descrição dos componentes do formulários. 37
Fig.30-Formulário Login. 44
Fig.31- Mensagem de erro de dados incorrectos. 44
Fig.32-Mensagem de erro de falta de preenchimento de dados. 45
Fig.33-Mensagem de erro de falta de preenchimento da palavra-chave. 45
Fig.34-Mensagem de dados correctos. 45
Fig.35-Formulário Principal 46
Fig.36-Divisão do menu Tabelas. 46
Fig.37-Formulário leitores. 47
Fig.38-Formulário livros. 48
Fig.39-Vista de dados do formulário editora. 48
Fig.40-Vista da grelha do formulário editora. 49
Fig.41-Vista da consulta do formulário editora. 49
Fig.42-Menu Consultas. 49
Fig.43-Formulário consultar leitores. 50
Fig.44-Formulário Consultar Livro. 50
Fig.45-Formulário consultar movimentações. 51
Fig.46-Menu movimentos. 51
Fig.47-Formulário empréstimos. 52
Fig.48-Requisição passo1. 52
Fig.49- Requisição passo2. 52
Fig.50-Requisição passo3. 53
Fig.51-Listagem das requisições. 53
Fig.52-Formulário devoluções. 54
Fig.53-Menu Apoios. 54
Fig.54-Formulário Internet 55
Fig.55-Formulário Listagem dos e-mails. 55
Fig.56-Formulário contactos. 56
Fig.57-Formulário novo utilizador 56
Sumário de Tabelas
Tabela 1- Exemplo de uma tabela não normalizada. 25
Tabela 2- Exemplo de uma tabela normalizada. 25
Tabela 3- Tabela autor 27
Tabela 4- Tabela Editoras. 27
Tabela 5-Tabela género de leitor 27
Tabela 6- Tabela género de material 27
Tabela 7- Tabela área/estante. 28
Tabela 8- Tabela cursos. 28
Tabela 9- Tabela leitor 29
Tabela 10- Tabela Livro. 30
Tabela 11- Tabela Empréstimos2. 30
Tabela 12- Tabela controlo. 31
Introdução
Após o culminar de três anos de formação como Técnico de Gestão e Programação de Sistemas Informáticos é chegada a hora da apresentação do trabalho final – a Prova de Aptidão Professional.
Confesso que senti algumas dificuldades na obtenção de informação para o tratamento da temática em questão - “Software Biblioteca-EPC”. Contudo com algum esforço e dedicação fui superando algumas dificuldades que iam surgindo.
Como trabalho prévio, apresentei um estudo a biblioteca da E.P.C onde delineei alguns objectivos para a concretização deste trabalho final, tais como, elementos que constituem um livro, como se efectua uma requisição, entre outros.
Este meu trabalho subdivide-se, então, em quatro capítulos. Numa primeira fase apresentarei a análise do problema, onde será tratada essa informação recolhida, elaborando assim um retrato de como irá ser construída esta aplicação. Numa segunda fase abordarei o conceito de base de dados, construindo assim a base de dados com as respectivas tabelas do meu projecto. Já numa terceira fase, explicarei a construção do meu projecto no Visual Studio 2008, desde a construção da base de dados até a definição do código. Terminarei assim com a quarta fase que corresponde o manual de utilizador, que permitirá dar a conhecer o funcionamento deste software. Este estudo de caso será mais aprofundado no momento da defesa oral desta prova, permitindo um contacto directo com todos os factos e informações aqui apresentadas.
Espero, com este trabalho, demonstrar as minhas competências e todo o empenho a que ele esteve subjacente. Desde já peço desculpa por alguma incongruência que se verificar.
1 - Análise do problema
Neste capítulo vão ser abordados conceitos teóricos sobre as várias fases que constituem a elaboração de um projecto informático. Será dada especial importância à fase de análise onde se definem todos os pré-requisitos da aplicação a desenvolver. No final deste capítulo será orientado o estudo da análise para o projecto ”Software Biblioteca-EPC”.
A fase da análise define os requisitos do sistema, melhor dizendo, define o problema que o programador está a tentar resolver. O resultado desta fase é um documento de requisito, ou seja, um documento que indica de forma clara e precisa o que está a ser construído, definindo metas, objectivos a que se pretende chegar. Portanto nesta fase o grande objectivo consiste em realizar estudos de processos a fim de encontrar o melhor caminho racional para que a informação possa ser processada. A pessoa responsável por efectuar a análise de um projecto é o chamado analista de sistemas. Ele estuda os diversos sistemas existentes entre hardwares (equipamentos), software (programas) e o utilizador final.
1.1- Ferramentas Case
As ferramentas case Software são um conjunto de técnicas que auxiliam o engenheiro do software no desenvolvimento de aplicações. Exemplos destas ferramentas são por exemplo o UML, JUDE, etc.
Estas ferramentas permitem criar diferentes tipos de diagramas:
ü Diagrama de fluxo de dados;
ü Diagrama de sequência;
ü Diagrama de classes;
ü Diagrama de casos de uso.
Relativamente para a construção do meu projecto resolvi abordar este estudo através de diagramas de casos de uso. Um diagrama de caso de uso possui os seguintes símbolos, não esquecendo que cada símbolo define-se por uma função do sistema:
Este símbolo representa o actor, melhor dizendo, o actor pode se visto como um entidade que executa determinadas funções no sistema.
O símbolo representa os casos de uso, também designados como casos de utilização.
A nível dos relacionamentos entre casos de uso podemos encontrar os seguintes:
· Entre actor e caso de uso, verificando-se uma associação, ou seja, define uma funcionalidade do sistema do ponto de vista do utilizador como podemos evidenciar na figura abaixo.
· Entre actores existindo a generalização.
Neste caso de podemos verificar que os casos de uso do actor B são também casos de uso do actor A. No entanto o actor A pode ter os seus próprios casos de uso.
· Entre casos de uso:
O include é uma das formas de interacção, um dado caso de uso pode incluir outro, ou seja, incluir é uma relação directa entre dois casos de usos, implicando que o comportamento do caso de uso incluído é inserido no comportamento do caso de uso incluso. Esta relação indica uma obrigatoriedade do caso de uso incluir a funcionalidade do outro caso de uso incluído.
Um relacionamento include de um caso de uso A para um caso de uso B é essencial para o comportamento de A, ou seja, pode dizer-se que B é uma parte de A.
O extend é outra forma de interacção, ou seja, um caso de uso pode estender a outro. Esta relação implica a existência que um caso de uso pode ser incluído ou não noutro caso de uso.
Um relacionamento extend de um caso de uso B para um caso de uso A, indica que o caso B não é essencial a descrever o comportamento de algo.
Por exemplo no meu caso quando uma pessoa pretende requisitar um livro na biblioteca vai acontecer o seguinte caso:
Ø O aluno requisita um livro;
Ø O aluno devolve o livro;
Ø O bibliotecário regista o aluno;
Ø O bibliotecário regista novos livros.
Apresenta-se de seguida o caso de uso destas quatro situações.
Fig.1- Diagrama caso de uso perante requisição de um livro escolar
De seguida apresenta-se o seguinte caso de uso do funcionamento por parte do responsável pelo utilizador.
Fig.2- Diagrama de caso de uso do responsável pela biblioteca
Como podemos evidenciar no diagrama de caso de uso anterior, podemos afirmar que o responsável pela biblioteca pode registar (novos leitores, novos livros, novos cursos, novos géneros de material, etc.).
Também poderá listar, até mesmo consultar os dados introduzidos no sistema, chegando mesmo poder imprimir relatórios que permitiram um maior controlo na gestão da biblioteca. Temos como exemplo, se o utilizador pretender imprimir um relatório no final de um ano lectivo com os dados relativamente de todos os livros da biblioteca, isto permite-a ao responsável pelo sistema um maior controlo não só em suporte digital, como também em papel. Outra das operações que o responsável da biblioteca terá é de poder adicionar utilizadores, para ajudar no controlo da biblioteca. Este também poderá restringir várias operações que um utilizador poderá ter, melhor dizendo, este define se o utilizador só terá permissões de inserção, visualização, actualização, entre outras.
Relativamente à biblioteca da EPC, proceder-se-á ao estudo do seu funcionamento, das normas de requisições e das devoluções de material.
1.2- Apresentação do problema
Após uma investigação preliminar, constata-se o seguinte: a biblioteca da EPC, é uma biblioteca constituída por uma única sala, mas esta sala é utilizada por mais que uma entidade (aluno, professor, funcionários e/ou ex-alunos). A sala é constituída por diversas partes, uma em que contém os manuais escolares, enciclopédias, revistas e todos os dossiers disponibilizados para os alunos, e a outra parte é constituída por alguns computadores de acesso aos alunos. Cada aluno pode ter acesso a vários manuais escolares, enciclopédias, ou outro material exposto ali no momento. Relativamente aos computadores, um computador pode ser utilizado por um ou mais alunos, bastando para tal efectuar um registo. Quanto a requisições do material escolar, este pode ser dividido em duas partes: requisição interna (para alunos, professores, funcionários) e requisição externa (para ex-alunos). Cada aluno pode requisitar apenas três livros no máximo, destacando que para cada requisição de cada manual é obrigatoriamente feito um registo de requisição. Divulga-se que o prazo máximo de devolução de qualquer manual escolar, entre outros, deverá ser feito numa data limite de três dias após a data de requisição. Caso a data limite da devolução do material exceda os três dias, o aluno deverá ser multado com uma multa de cinquenta cêntimos por dia. Excepcionalmente quando exista mais de que um manual duplicado na biblioteca, este prazo pode-se estender até aos quinze dias.
M 1
Neste modelo temos o seguinte caso de ligação entre duas entidades, o aluno e a biblioteca da EPC. Este caso de uso quer dizer: um aluno frequenta a biblioteca EPC, mas a biblioteca pode ser frequentada por vários alunos.
Em baixo podemos encontrar algumas imagens do espaço da biblioteca da EPC.
Fig.3- Local de material de informação exposto para os alunos
Fig.4- Posicionamento de livros nas estantes, distribuídos por categorias
Estas categorias encontram-se divididas por áreas, por disciplina e também por género de livro (enciclopédia, obra, etc. …)
Fig.5- Local de acesso para os alunos fazerem pesquisas
Estes computadores que se encontram dentro da biblioteca estão a inteira disponibilidade para os alunos da EPC, podendo usufruir de internet e de uma impressora que se encontra na mesma, cujo o(a) responsável pela biblioteca tem a função de zelar por esse material, ou seja, se algum aluno não possuir os respectivos cuidados com o material acabando por danificar, estragar poderá responder por esses actos junto direcção da escola. O aluno para poder aceder a estes computadores, basta fazer um preenchimento numa folha que se encontra exposta em cima da mesa do responsável da biblioteca.
Fig.6- Estantes de livros divididas em categorias
Assim sendo, se o requisitante pretender levar um manual escolar para leitura domiciliária terá de dirigir-se ao funcionário com o manual. O funcionário procederá seguidamente ao preenchimento de um talão de requisição, com duplicado, cujo original será entregue ao aluno e o duplicado ficará na posse do funcionário. Apresenta-se a seguir a figura correspondente ao talão em causa.
REQUISIÇÃO N-º
BIBLIOTECA
LEITURA DOMICILIÁRIA Data da Devolução________/_______________200__
Autor__________________________________________________________________
Título _________________________________________________________________
______________________________________________________________________
Requisitante ___________________________________________________________
Curso ________________________________________________________________
N-º Registo __________________________ Data da Requisição ____/______/200__
Assinatura do Requisitante
______________________________
Fig.7- Talão de requisição
Face à requisição do material quer no modo interno quer no modo externo, identifiquei que o registo que se fazia sobre a requisição era insuficiente, ou seja, não possuía informação suficiente acerca de quem requisitava os manuais, ou outro material disponibilizado na biblioteca da EPC. Por isso, proponho uma alteração ao talão da biblioteca, que deveria conter um campo chamado “tipo de requisitante”, onde teria 4 opções de escolha (Alunos, Funcionários, Professores e Outros). Caso o responsável pela biblioteca escolhesse a opção Alunos, deverá proceder ao preenchimento do ano do aluno, do número e do curso.
X |
Alunos |
|
Funcionários |
|
Professores |
|
Outros |
Fig.8- Tipos de leitor
Como podemos identificar nas figuras anteriores, devemos destacar que ao responsável pela biblioteca cabe a função de executar um registo de um requisitante, esse registo vai ser feito por tipo. Cada tipo de registo contém um formulário específico (com dados mais concretos), e a cada registo vai ser atribuído um cartão de leitor. Só é permitido um cartão de leitor por registo, ou seja, cada pessoa só poderá possuir um cartão de leitor.
1.3- Propostas para cartão de leitor da EPC
O cartão EPC-Biblioteca terá um número atribuído, melhor dizendo, este cartão vai ajudar o responsável pela biblioteca a fazer as requisições. Basta ao responsável da biblioteca colocar o código atribuído no cartão de leitor no formulário da requisição, e automaticamente o programa vai buscar os dados relativamente ao leitor e introdu-los no formulário. Este cartão tem o benefício de ajudar o responsável pela biblioteca, tornando mais rápido, eficiente o processo de registo das requisições. Mas deixando bem claro que o responsável pela biblioteca tem a função de conferir os dados, a cada requisição feita. Caso o responsável pela biblioteca confira os dados, estes se encontrem correctos, pode prosseguir, executando a requisição. Caso o responsável identifique alguma anomalia, erro nos dados do leitor, terá um botão no formulário que lhe permitirá alterar, modificar os dados do leitor. Um exemplo desta situação se um leitor mudar de morada, ou de número de telemóvel, etc.
Em baixo encontram-se duas propostas do cartão para a biblioteca que pretendo apresentar a Direcção pedagógica.
Cartão Biblioteca
Número do Leitor_____ Ano do Leitor____Nº do Aluno_______________________
Nome_____________________________________________________________
Fig.9- Proposta do cartão de leitor para a biblioteca - A
Cartão de Leitor
Número de Leitor: _________________________________
Ano do Leitor: ________ Número de aluno: ____________
Assinatura do Leitor: _____________________________________________ |
Fig.10- Proposta do cartão de leitor para a biblioteca - B
Para cada aluno teremos informação que pode ser dividida em dois grandes grupos:
Fig.11- Campos pertencentes ao registo de um leitor para a biblioteca
Como podemos identificar no esquema anteriormente referido, muitos dos dados que aqui são pedidos são de carácter obrigatório. Podemos dar como exemplos os campos:
v Data de Nascimento.
v Nome do leitor
Mas outros dos campos não são de carácter obrigatório, servem só para uma melhor contextualização do leitor, ou seja, o campo Encarregado de Educação, e-mail, número de telefone, servem para que o responsável da biblioteca possa contactar o respectivo leitor, quando este, não respeite as normas estipuladas pela Biblioteca. Relativamente ao contacto como já evidenciei anteriormente, pode ser feito de várias maneiras. Pode ser feito via e-mail, contacto telefónico ou CTT.
1.4- Interface da aplicação
Relativamente à construção do projecto, este deverá conter uma opção no menu chamada de “Tabelas” que terá as seguintes opções:
Fig.12- Divisão do menu Tabelas
Estas opções anteriormente vistas, tem como objectivo de o responsável pela biblioteca possa introduzir todos os dados em determinadas tabelas de modo que esses dados fiquem disponibilizados para um fácil acesso. No caso do registo de um leitor teremos de definir o género de leitor a que pertence.
O género de leitor estará subdividido em quatro escolhas:
Fig.13- Tipo de géneros de leitores
Assim, podemos evidenciar que o menu Tabelas vai-se subdividir em vários submenus. Então partindo do princípio, vamos construir um formulário chamado Géneros de leitores que permitira todos os géneros (“alunos”, leitores “professores”, leitores “funcionários” e leitores “outros”).
Como podemos verificar o processo (caminho) que o utilizador vai percorrer é o seguinte:
Terá que clicar no menu a opção “Tabelas”, aí irá abrir vários submenus tendo que escolher o “Género de leitor”, nesse formulário vai se poder alterar, eliminar e inserir dados. Nesse formulário vamos registar os vários géneros de leitores que vão existir (Aluno/ Professor/ Funcionários/ Outros).
Assim, procederemos do mesmo modo para registar os autores, as editoras, as áreas (estante), género de material e cursos.
Neste menu “Tabelas”, teremos também dois formulários que nos permitiram registar os leitores e os livros. Essas duas tabelas estarão directamente relacionadas com as outras (autores, editoras, áreas, género de material, género de leitor e cursos).
Estes formulários vão conter alguns campos que são carácter obrigatório e outros de carácter não obrigatório, para que se possa facilitar a inserção de todo o material, não só abrangendo livros, mas permitindo também o registo de revistas, jornais, etc.
De seguida vou descrever alguns aspectos que são muito importantes no registo de um livro. Os dados que são encontrados num livro podem-se dividir em quatro grupos:
1. Dados gerais;
2. Identificação;
3. Informação descritiva;
4. Outros.
O primeiro e segundo grupo são compostos por um único dado. O primeiro grupo é constituído pelo dado ano de publicação do livro. E o segundo grupo é composto o ISBN (International Standard Book Number), ou seja, esse ISBN é um elemento essencial para as encomendas no comércio livreiro e para o mercado das bibliotecas a nível nacional e internacional. O terceiro grupo contém dados como:
ü Titulo;
ü Autor;
ü Editora;
ü Local de edição;
ü CDU
ü Cota
O CDU (Classificação Decimal Universal) é um esquema internacional de classificação de documentos. Baseia-se no conceito de que todo o conhecimento pode ser dividido em 10 classes principais, e estas podem ser infinitamente divididas numa hierarquia decimal. É o esquema de classificação utilizado na nossa biblioteca, enquadrado numa divisão física por áreas departamentais (Engenharias Alimentar, Civil, Mecânica e Electrónica) e por áreas comuns (Informática, Metodologia, Ciências Sociais e Matemática).
Por fim, o ultimo grupo, que é composto por:
ü Número de exemplares;
ü Volume;
ü Edição;
ü Colecção.
Quanto as áreas que se podem encontrar na biblioteca, como são diversas, o melhor é introduzir um formulário em que o responsável pela biblioteca possa introduzir todas as áreas (estantes).
A aplicação também deverá possuir um menu para fazer consultas que irão desde consultar os leitores, os livros e todas as movimentações (empréstimos e devoluções).
Então de seguida irei apresentar a constituição do menu “Consultas”, não esquecendo que deverei colocar filtros para uma melhor consulta mais personalizada.
Fig.14-Menu consultas e seus submenus
Possuirá também o menu “Movimentações” que será dividido em “Empréstimos” e “Devoluções”. Neste menu vai ser onde se irá registar todas as requisições e devoluções do material da biblioteca.
Fig.15-Menu movimentações e submenus
Outros menus que constituirão o meu projecto são: o menu “Apoios” e “Ferramentas”. O menu ferramentas permitirá ao utilizador adicionar novos utilizadores para aceder ao projecto. Quanto ao menu “Apoios” este subdividir-se-á em três, um formulário para aceder a internet através do software quando devidamente conectado a internet. Outro para ver os contactos de todos os leitores que tenham dado esse dados. Por fim, outro formulário, mas em vez de ver os contactos, este destina-se particularmente aos e-mails.
Basicamente, esta será mais ao menos a construção que terá o meu projecto, alterando algumas coisas (melhorias).
2 - Base de dados
Neste capítulo abordar-se-á toda a teoria de base de dados. Será também aqui mostrada a elaboração de base de dados do meu projecto, mostrando as tabelas que a constituem, bem como todos os relacionamentos entre elas.
2.1- Abordagem teórica
Uma Base de Dados é um simples local onde se armazena um conjunto de informação relacionado com determinado assunto ou finalidade, ou seja, é uma colecção de dados de informação estruturados de uma determinada forma que permita a consulta, actualização, ou outros tipos de operações da mesma. Uma base de dados serve assim para gerir um conjunto vasto de informação de modo a facilitar a organização, manutenção e pesquisa dos dados.
Uma base de dados para ser completa deve passar por seis fases:
· Planeamento - Levantamento das necessidades (informações), organizar e planear;
· Recolha de requisitos - Elaboração de um documento com os objectivos que o projecto visa atingir;
· Desenho da base de dados – Nesta fase é desenhada a base de dados, para um óptimo a nível da estruturação, esta fase é subdividida em três:
§ Desenho conceptual: Consiste na construção do modelo conceptual de dados, que reflecte o entendimento que os utilizadores têm dos dados, sendo independente de qualquer implementação física. Aqui a abordagem mais utilizada são os diagramas E-R (Entidades e Relacionamentos).
§ Desenho lógico: Corresponde à transformação do desenho conceptual em estruturas de dados que são implementáveis no sistema de gestão da base de dados. O modelo mais utilizado neste tipo de desenho é o modelo relacional, este modelo destaca-se como um dos mais utilizados na construção de modelos lógicos de dados.
§ Desenho físico: Passa pela definição dos detalhes físicos que serão considerados na implementação do modelo lógico, e que serão específicos no sistema de gestão da base de dados.
· Construção - Aqui é onde toda a base de dados é construída e testada;
· Implementação - Esta fase é definida pela instalação e funcionamento da base de dados na aplicação;
· Manutenção – Fase onde se resolve situações de anomalias ou erros quer ao nível da aplicação, quer ao nível da base de dados.
As bases de dados têm inúmeras vantagens, das quais podemos destacar:
ü Utilização de pouco espaço físico;
ü Eliminação da redundância de utilização;
ü Facilidade e rapidez na manipulação da informação armazenada.
Abaixo citam-se algumas ferramentas disponíveis no mercado que nos permitem informatizar uma base de dados.
§ Microsoft Access;
§ Microsoft SQL;
§ FileMaker;
§ Oracle;
§ DB2;
§ Mysql;
§ Etc.
Estes são alguns produtos que permitem criar e manter bases de dados.
Para construir uma Base de dados temos de abordar diversos aspectos que vão desde a escolha do tema da base de dados, fazer perguntas tipo “Quantos…”, “Quais…”, “Que…”, “Desde quando…”. Devemos também começar por definir as nossas tabelas, destacando a melhor forma de guardarmos a nossa informação.
Os modelos para a criação de bases de dados são vários, mas apenas será aqui abordado o modelo relacional.
Uma base de dados tem de ser composta por entidades e atributos.
Entidade: Abstracção de objectos ou conceitos do mundo real acerca dos quais queremos guardar informação. Graficamente uma entidade representa-se por um rectângulo.
Atributos de uma entidade: Características comuns aos objectos ou conceitos representados pela entidade. Os atributos graficamente representam-se por um circulo.
Como podemos evidenciar, temos uma entidade “Livro” que possui o atributo “Livro”.
Podemos encontrar quatro tipos de atributos:
Ø Atributos Simples (Exemplo: BI);
Ø Atributos Compostos (Exemplo: Nome);
Um atributo composto pode ser considerado simples, dependendo da situação que se trata.
Quando os atributos básicos são tratados separadamente, um atributo composto entra na entidade com todos os seus atributos básicos (Funcionário: BI, Npróprio, Apelido, Sexo).
Ø Atributos Derivados (Exemplo: Tempo_actividade) estes atributos devem ser identificados na análise mas não devem fazer parte da entidade pois podem ser calculados;
Ø Atributo Multivalor (Exemplo: Localizações) para cada atributo multivalor cria-se uma nova entidade exemplo (Loc_Dep: Número, Localização).
2.2- Modelo relacional
Fig.16-Definição de linhas e colunas |
No modelo relacional, cada entidade dá origem a uma tabela. Numa tabela as linhas são os registos e as colunas são os campos.
Como podemos ver na figura anterior, esta tabela desenvolvida no Microsoft Access 2007 possui vários registos. Esta tabela tem cinco campos (colunas) que são: (ID REGISTO, ISBN, TITULO, AUTOR, EDITORA) e dois registos.
Dados – elementos que caracterizam uma entidade (pessoa, objecto ou organização);
Campo – característica ou atributo individual, tipicamente representado em colunas de uma tabela;
Registo – linha de uma tabela com a informação de cada elemento de uma entidade;
Tabela – elemento de suporte de dados, que se estrutura segundo campos e registos;
Associação – processo pelo qual se ligam tabelas através de valores de dados relacionados.
Chave primária e chaves estrangeiras
Chave ou Identificador de uma entidade: Atributo ou conjunto de atributos que permitem identificar univocamente uma instância de uma entidade.
Chave primária: Corresponde a uma das chaves possíveis e possui as seguintes características:
o Unívocas - os atributos da chave primária têm um valor unívoco para qualquer instância; não redundantes - se algum dos atributos que formam a chave primária for retirado, os restantes atributos deixam de ser unívocos não nulos - nenhum dos atributos que formam a chave primária poderá ter um valor nulo.
Chave candidata: Atributo ou conjunto de atributos que podem ser usados como chave primária de uma entidade.
Fig.17-Registos para afirmar chaves (primárias, estrangeiras) |
Como podemos ver neste exemplo anterior, o “ISBN” pode ser a chave primária, pois este campo trata-se de um valor único o que permite dizer que se trata de uma chave unívoca. Esta tabela possui duas chaves estrangeiras (são chaves primárias de outras tabelas), que são os campos “AUTOR” e “EDITORA”.
A maior parte do trabalho realizado no processo de desenho de uma base de dados consiste na sua normalização até um determinado nível.
A teoria da normalização é baseada no conceito de forma normal, onde existem regras a qual a estrutura de informação deve obedecer para que possa afirmar qual o nível de normalização da estrutura. A essas regras dá-se o nome de “Formas Normais”.
ü Primeira Forma Normal (1FN);
ü Segunda Forma Normal (2FN);
ü Terceira Forma Normal (3FN);
ü Forma Normal de Boyce-Codd (FNBC);
ü Quarta Forma Normal (4FN);
ü Quinta Forma Normal (5FN).
O objectivo da normalização é permitir criar um conjunto de tabelas numa base de dados livre de informação redundante e que possa ser modificado de forma correcta e consistente. Objectivos da normalização:
o Minimizar ou eliminar a redundância da informação;
o Melhorar a performance do sistema;
o Permitir a integridade referencial entre entidades.
Uma relação diz-se que esta na primeira forma normal quando esta não contém atributos multivalor e não contém grupos repetidos.
Titulo |
Autor |
OS MAIAS |
ANA, LUIS |
Tabela 1- Exemplo de uma tabela não normalizada
Para normalizarmos essa tabela deveríamos ter em conta os nomes do autor. De seguida apresenta-se a tabela normalizada na 1FN.
Titulo |
Autor |
OS MAIAS |
ANA |
OS MAIAS |
Luís |
Tabela 2- Exemplo de uma tabela normalizada
Uma relação encontra-se na segunda forma normal, quando esta relação se encontra na 1FN, e todos os atributos não dependem funcionalmente da totalidade da chave.
Descobre-se que uma relação está na terceira forma normal quando esta se encontra na 2FN e todos os atributos não chave não dependem apenas e só da chave.
Os relacionamentos entre tabelas podem ser de três tipos:
Ø 1:1 (um para um);
Ø 1:N (um para muitos);
Ø M:N (muitos para muitos).
Fig.18- Relacionamento de 1:N
Em cima, pode se observar um exemplo de um relacionamento do tipo 1:N. Isto significa que o mesmo realizador pode realizar vários filmes, mas um filme só pode ter um realizador, o que quase sempre acontece.
2.3- Tabelas do projecto
A seguir apresenta-se a construção das tabelas da base de dados do projecto, os tipos de dados e se poderão conter valores nulos ou não e as respectivas chaves que se mostram (chaves primarias (PK) e chaves estrangeiras (FK)).
Vou começar pela construção da tabela “autores”, esta tabela tem com objectivo guardar todos os autores que o utilizador insira nela.
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id autor |
Int (numeração automática) |
Não |
PK |
Nome do autor |
Varchar (50) |
Não |
|
Tabela 3- Tabela autor
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id editora |
Int (numeração automática) |
Não |
PK |
Nome da editora |
Varchar (50) |
Não |
|
|
|
|
|
|
Tabela 4- Tabela Editoras
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id género de leitor |
Int (numeração automática) |
Não |
PK |
Nome género de leitor |
Varchar (50) |
Não |
|
Tabela 5-Tabela género de leitor
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id género de material |
Int (numeração automática) |
Não |
PK |
Nome género de material |
Varchar (50) |
Não |
|
Tabela 6- Tabela género de material
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id área/estante |
Int (numeração automatica) |
Não |
PK |
Nome área/estante |
Varchar (50) |
Não |
|
Tabela 7- Tabela área/estante
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id curso |
Int (numeração automatica) |
Não |
PK |
Nome do curso |
Varchar (50) |
Não |
|
Tabela 8- Tabela cursos
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
ID leitor |
Int (numeração automatica) |
Não |
PK |
Nome do leitor |
Varchar (50) |
Não |
|
Id género de leitor |
Int |
Não |
FK |
Número de contribuinte |
Int |
Sim |
|
Número de B.I |
Int |
Sim |
|
Data de nascimento |
Date |
Não |
|
Data de registo |
Date |
Não |
|
Sexo |
Char |
Sim |
|
Contacto |
Int |
Sim |
|
E-mail |
Varchar (30) |
Sim |
|
Id curso |
Int |
Sim |
FK |
Número do aluno |
Int |
Sim |
|
Distrito |
Varchar (30) |
Sim |
|
Concelho |
Varchar (30) |
Sim |
|
Freguesia |
Varchar (30) |
Sim |
|
Código postal |
Varchar (8) |
Não |
|
Localidade |
Varchar (30) |
Não |
|
Rua/bairro |
Varchar (30) |
Sim |
|
Observações |
Varchar (100) |
Sim |
|
Tabela 9- Tabela leitor
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id registo |
Int (numeração automática) |
Não |
PK |
ISBN |
Varchar(30) |
Não |
|
Titulo |
Varchar (50) |
Não |
|
Id autor |
int |
Não |
FK |
Id editora |
Int |
Não |
FK |
Local de edição |
Varchar (50) |
Sim |
|
Ano de publicação |
Int |
Sim |
|
Número de exemplares |
Int |
Sim |
|
Volume |
Int |
Sim |
|
Edição |
Int |
Sim |
|
Colecção |
Varchar (50) |
Sim |
|
Id género de material |
int |
Não |
FK |
Id área/estante |
Int |
Não |
FK |
Tabela 10- Tabela Livro
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id registo |
Int (numeração automatica) |
Não |
PK |
Id livro |
int |
Não |
FK |
Id leitor |
int |
Não |
FK |
Data da requisição |
date |
Não |
|
Data de devolução |
date |
Não |
|
N de renovações |
int |
Não |
|
Inf |
Varchar(1) |
Não |
|
Tabela 11- Tabela Empréstimos2
Nome do campo |
Tipo de dados |
Valores nulos |
Chave |
Id utilizador |
Int (numeração automatica) |
Não |
PK |
Utilizador |
Varchar(30) |
Não |
|
Nome completo |
Varchar(50) |
Não |
|
Palavra-chave |
Varchar(30) |
Não |
|
Permissão |
Varchar(3) |
Não |
|
Tabela 12- Tabela controlo
2.4- Tabelas relacionadas
O modelo relacional consiste num modelo subjacente de um sistema de gestão de base de dados, melhor dizendo baseia-se no princípio em que todos os dados são guardados em tabelas. Estas por sua vez podem estar relacionadas com outras tabelas, ou seja, podem partilhar determinados dados com uma tabela.
Fig.19- Tabelas relacionadas
3 - Manual do programador
Neste capítulo irão ser explicados aspectos relacionados com a programação de todo o projecto. Deve-se referir que todo o projecto foi desenvolvido em Visual Studio 2008, cujo ambiente de trabalho pode ser consultado no anexo A.
3.1-Criação da base de dados no Visual Studio 2008
Para a criarmos uma base de dados devemos dar um clique sobre o menu “View”, e de seguida abrir-nos-á o “Server Explorer”. O próximo passo será dar um clique sobre o ícone destacado como podemos ver na seguinte figura que permite a criação de uma base de dados.
Fig.20-Server Explorer
Escolhemos com que tipo de base de dados vai trabalhar, e atribuímos o nome a nossa base de dados. Neste caso vamos trabalhar com o SQL SERVER.
Fig.21-Atribuição do nome a base de dados
Então, de seguida aparecerá uma mensagem a informar se a base de dados existe ou não. Caso não exista, surgirá uma mensagem a perguntar se a deseja criar.
Como podemos evidenciar na figura, segue-se o próximo passo, que será criarmos as nossas tabelas. Para isso basta clicarmos em “Tables” com o botão direito do rato “Add New Table”. Como o processo se executa sempre da mesma forma, vou simplesmente abordar a tabela “Autores”.
Fig.22-Adicionar uma tabela a base de dados
Surgirá então aberta uma tabela, onde temos que definir os campos que a tabela vai ter, o tipo de dados (int, varchar, datetime, etc) e se pode permitir valores nulos ou não.
Fig.23-Tabela autor criada
Por fim, basta guardarmos a tabela atribuindo-lhes o nome que desejamos. Depois é só prosseguir com a construção das restantes tabelas.
3.2-Formulário Principal
Esta aplicação é constituída por um formulário denominado “PAI” que contém um menu a partir do qual serão chamados os formulários “filhos”.
Para definir um formulário como “PAI” é necessário ir à propriedade ISMDICONTAINER e coloca-se a propriedade a TRUE. Como o gosto pelo tamanho das janelas pode ser variado, pode-se maximizar, minimizar ou até mesmo manter no tamanho normal do formulário “pai” na propriedade windowState. Para abrir cada um dos formulários “filhos” são necessárias as instruções:
Nome do formulário filho. MDIPARENT = ME
Nome do formulário filho. Show () |
Conforme os gostos do programador, este pode personalizar o formulário principal, neste caso adicionou-se um “ToolStrip” que irá servir de menu para a aplicação. Ao arrastarmos o “ToolStrip” o formulário, devemos editar as propriedades “DisplayStyle” de maneira a poder introduzir imagem e texto.
Fig.24- Formulário Principal
A imagem pode ser posicionada conforme o programador preferir através da propriedade “ImageAlign” (centro, topo, etc.).
Fig.25- Alteração de algumas propriedades do ToolStrip
Como podemos visualizar na imagem anterior podemos alterar algumas propriedades do ToolStrip fazendo um click em cima com o botão direito do rato. Algumas propriedades que podemos alterar por aqui são o alinhamento (direita, esquerda) e a introdução da imagem no menu.
Fig.26- Divisão dos submenus do menu Tabelas
Este menu “Tabelas” é composto por vários submenus. Estes submenus encontram-se diferenciados por separadores. Por exemplo o submenu Curso encontra-se separado por um separador, para informar que o conteúdo que esse formulário, tem a ver especificamente com a escola (cursos) e não com a biblioteca. Os submenus “Leitor” e “Livro” encontram-se destacados devido a se tratarem dos mais importantes.
3.3-Formulários para registar “Tabelas”
O menu “Tabelas” é composto por vários submenus. Vou começar por exemplificar o formulário “Género_leitor” uma vez que os meios são muito similares aos restantes deste submenu.. Os formulários são: Tabelas (Autor, Editora, Área/Estante, Género Material, Género Leitor e Cursos, Livro, Leitor).
Fig.27- Caminho para abrir formulário “Tabela Género Leitor”
De seguida vai abrir o formulário Tabela Género Leitor. Esse formulário apresenta-se de seguida.
Fig.28- Formulário “Tabela Género Leitor”
Este formulário é composto por um “TabControl” (Dados, Grelha, Consulta), três caixas de texto, labels, e diversos botões.
Fig.29- Descrição dos componentes do formulários
O quadrado preto apresenta-nos um TabControl, o quadrado roxo é uma caixa de texto, temos a zona que é um rectângulo de bordos arredondados, a que chamo botões de navegação, ou seja, esses botões servem para que o utilizador navegue perante registos anteriormente introduzidos. Por fim, temos um quadrado azul que se estende na horizontal que nos indica os botões de controlo. A seguir apresenta-se o código que constitui o respectivo formulário.
Como estamos a ligar-nos ao “SQL SERVER” devemos escrever antes da classe publica o seguinte:
Imports System.Data.SqlClient |
A classe é composta por diversos procedimentos , um dos procedimentos é o Load() que corresponde ao procedimento que será executado quando se carrega o formulario na aplicação.
Como a maior parte do código é muito similar decidi abordar um único formulário destacando particularmente aspectos de programação como o INSERT, UPDATE, DELETE, MAX, MIN, etc.
Button6.Visible = False
Button5.Visible = False
Button11.Visible = False |
Torna os botões invisiveis, para que o utilizador não os possa ver.
Dim myConnectionStringes As String = "Data Source=.SQLEXPRESS;AttachDbFilename='C:UsersmarcioDocumentsVisual Studio 2008ProjectsSOFTWARE BIBLIOTECASOFTWARE BIBLIOTECAPAP.mdf';Integrated Security=True;User Instance=True" |
Aqui, cria-se uma variavel do tipo string que irá guardar o caminho da base de dados. Como podemos evidenciar, a base de dados encontra-se dentro da pasta “Software Biblioteca-EPC”.
Dim SQL As String = "SELECT * FROM genero_leitor "
Dim connection As New SqlConnection(myConnectionStringes)
Dim command As New SqlCommand(SQL, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
If reader.HasRows Then
While reader.Read()
Debug.WriteLine(reader.Item("id_genleitor"))
TextBox1.Text = (reader.Item("id_genleitor"))
Debug.WriteLine(reader.Item("nome_genleitor"))
TextBox2.Text = (reader.Item("nome_genleitor"))
End While
End If
connection.Close()
connection = Nothing
command = Nothing
|
Neste código mando visualizar todos os campos da tabela genero_leitor, depois criei um comando que vai executar o metodo , abre-se a conexão, cria-se uma variavel de leitura. Então depois verifica se existe linhas, se existir linhas vai percorrer a tabela até ao fim, atribuindo esse último registo as caixas de texto. Assim a caixa de texto “TextBox1” vai tomar o valor do campo (último registo campo id_genleitor na tabela) como a “TextBox2” vai tomar o valor do campo. Por fim, fecha-se a ligação e mando limpar as variaveis.
While readert.Read()
Debug.WriteLine(readert.Item("id_genleitor"))
codigoA = (readert.Item("id_genleitor"))
Debug.WriteLine(readert.Item("nome_genleitor"))
nomeA = (readert.Item("nome_genleitor"))
Dim bb As New ListViewItem.ListViewSubItem
Dim xx As New ListViewItem
xx.Text = codigoA
bb.Text = nomeA
xx.SubItems.Add(bb)
ListView1.Items.Add(xx)
End While |
Neste bocado de código mando percorrer a tabela até ao fim, passando esses valores para as variaveis (codigoA, nomeA), para depois serem passadas para a listview .
If Not readert.HasRows Then
MessageBox.Show("Não existem registos de qualquer leitor!", _
"Software Biblioteca-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If |
Aqui temos uma mensagem de erro a informar-nos que aquela tabela se encontra vazia.
Arrastou-se para o formulário um TabControl que possui três TabPages.Para arrastar basta ir a ToolBox e arrastar-lo para cima do formulário.
Tab3.SelectedTab = TabPage1
|
Permite mudar a Tabpage em que o TabControl “Tab3” se encontra, e colocar na TabPage1.
TextBox2.Enabled = TrueàDeixa mexer no conteudo
TextBox2.Enabled = Falseànão deixa mexer no conteudo da caixa de texto
|
Para colocar o cursor numa caixa de texto que pretende-mos fazemos o seguinte:
Nome da caixa de texto.Focus()
|
Quando se quer limpar uma ListView ou uma ComboBox basta apenas escrever o seguinte:
Nome da ListView.Items.Clear()
Nome da ComboBox.Items.Clear()
|
No caso de querer limpar uma TextBox:
Nome da TextBox.Text=””
Nome da TextBox.Clear()
|
Para registar dados numa tabela temos de utilizar o INSERT
Dim myConnectionStringes As String = "Data Source=.SQLEXPRESS;AttachDbFilename='C:UsersmarcioDocumentsVisual Studio 2008ProjectsSOFTWARE BIBLIOTECASOFTWARE BIBLIOTECAPAP.mdf';Integrated Security=True;User Instance=True"
Dim SQLz As String = "INSERT INTO genero_leitor([nome_genleitor]) VALUES (@nome_genleitor);"
Dim connectione As New SqlConnection(myConnectionStringes)
Dim commande As New SqlCommand(SQLz, connectione)
commande.Parameters.Add("@nome_genleitor", SqlDbType.VarChar).Value = TextBox2.Text.ToUpper
connectione.Open()
Dim x As Integer = commande.ExecuteNonQuery()
If x < 1 Then
MessageBox.Show(" OPERAÇÃO efectuada não retomou qualquer resultado,contacte responsavel pelo software.", _
"Software Biblioteca-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
Else
MessageBox.Show("Novo género de leitor registado com sucesso!", _
"Software Biblioteca-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
connectione.Close()
connectione = Nothing
commande = Nothing |
Como podemos ver, definimos a nossa”MyConnectionStringes” e fazemos um inserir, isto é, vai guardando o valor que está na caixa de texto, e guarda-la na tabela género leitor em maiúsculas, apresentando uma mensagem de erro a comprovar se o leitor foi registado com sucesso. No fim fecha a ligação e liberta as variáveis.
Dim myConnectionStringa As String = "Data Source=.SQLEXPRESS;AttachDbFilename='C:UsersmarcioDocumentsVisual Studio 2008ProjectsSOFTWARE BIBLIOTECASOFTWARE BIBLIOTECAPAP.mdf';Integrated Security=True;User Instance=True"
Dim id As Integer
id = CInt(TextBox1.Text)
If MessageBox.Show("Tem a certeza que pretende eliminar o tipo de leitor " & oo & " seleccionado?", "Biblioteca-EPC", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim SQLx As String = "DELETE FROM genero_leitor WHERE [id_genleitor] = " & id & ""
Dim connectionx As New SqlConnection(myConnectionStringa)
Dim commandr As New SqlCommand(SQLx, connectionx)
commandr.Parameters.Add("@id_genleitor", SqlDbType.Int).Value = TextBox1.Text
commandr.Parameters.Add("@nome_genleitor", SqlDbType.VarChar).Value = TextBox2.Text
connectionx.Open()
Dim h As Integer = commandr.ExecuteNonQuery()
If h < 1 Then
MessageBox.Show("A operação efectuada não retomou qualquer resultado.", _
"Software Bibliote-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Else
MessageBox.Show("Genero de leitor eliminado!", _
"Software Bibliote-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
connectionx.Close()
connectionx = Nothing
commandr = Nothing
MessageBox.Show("Operação cancelada!", _
"Software Bibliote-EPC", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
ListView1.Items.Clear()
|
O objectivo do código anterior é de eliminar um género de leitor da tabela género de leitor cujo id_genleitor é igual ao conteúdo da TextBox1. O utilizador neste caso poderá cancelar a eliminação do género de leitor se assim o desejar.
Dim myConnectionStrin As String = "Data Source=.SQLEXPRESS;AttachDbFilename='C:UsersmarcioDocumentsVisual Studio 2008ProjectsSOFTWARE BIBLIOTECASOFTWARE BIBLIOTECAPAP.mdf';Integrated Security=True;User Instance=True"
Dim SQL As String = " SELECT MIN(id_genleitor) FROM genero_leitor"
Dim connection As New SqlConnection(myConnectionStrin)
Dim command As New SqlCommand(SQL, connection)
connection.Open()
Dim total As Integer = command.ExecuteScalar()
'Debug.WriteLine("primeiro registo inserido = " + total.ToString)
Dim xx As Integer
xx = total
connection.Close()
connection = Nothing
command = Nothing
|
Neste código, faz-se uma visualização do primeiro registo da tabela, melhor dizendo, vai buscar a tabela o valor a variavel total.
A diferença do ExecuteScalar para o ExecuteReader: é que o ExecuteScalar só consegue guardar um único valor, enquanto o ExecuteReader consegue armazenar quantos quizermos.
O mesmo processo se realizará para calcular o MAXminimo do campo id_genleitor atribuindo esse valor,
Dim SQL As String = " SELECT MAX(id_genleitor) FROM genero_leitor"
|
Devemos tambem referir o evento Keypress da caixa de texto que não permite a introdução de caracteres:
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
If Char.IsNumber(e.KeyChar) Then
e.Handled = True
End If
End Sub |
Podemos também adicionarmos ToolTips para uma aparencia mais acolhedora do software. Para adicionar um ToolTip basta ir ao “ToolBox” e transportar para cima do formulario. Clicando nas propriedades “ToolTip on ToolTip1” de algum objecto(Button, TextBox), definimos o texto que á de aparecer. Se dermos um clique no ToolTip temos uma propriedade chamada IsBalloon que teremos de alterar para true.
Podemos limitar o número de caracteres numa caixa de texto através da propriedade: MaxLength
Para fazer um actualizar, alterarar dados a uma tabela fazemos um UPDATE como podemos ver a seguir.
Dim SQLj As String = "UPDATE editora SET [nome_editora] = @nome_editora WHERE [id_editora] = @id_editora" |
3.4-Formulários consultar
Antes de começar a falar da programação, resolvi que deveria começar por fazer uma abordagem teórica do que irei fazer nestes tipos de formulários.
No evento Load () da classe vou começar por fazer um select a base de dados e depois irei mandar escrever esses dados numa ListView. Adicionarei de seguida vários radioButtons que quando seleccionados tornarão visíveis certos componentes (TextBox ou ComboBox). O utilizador terá de digitar o parâmetro nessa caixa de texto e então será feito um select onde terá várias condições através da clausura “Where” como podemos visualizar num exemplo em baixo.
Dim SQLx As String = "SELECT id_regist,titulo FROM livro WHERE [id_regist]=" & passagem & "" |
Como podemos visualizar no pedaço de código, aí vamos ver o campo id_regist e o titulo da tabela livro cujo o campo id_registo é igual a uma variável.
Deixo bem claro que podemos ter vários tipos de variáveis, algumas que serão globais outras privadas. Quanto as classes também podem existir classes públicas a privadas. A diferença é que as classes públicas poderão ser acedidas ao longo de todos os formulários.
Face a precisar de definir variáveis globais para a construção do projecto adicionei um module ao projecto.
Public passagem As Integer
|
Call Movimentos_Load(Nothing, e) |
Se tornarmos um evento público podemos aceder a esse evento através de outro.
Aqui mandamos chamar o evento “Movimentos_Load” que esta definido como publico.
4 - Manual de Utilizador
Aqui irá ser explicado ao leitor como deverá utilizar o software.
Este software é composto por um programa em visual Basic e por uma base de dados chamada “PAP.
4.1-Login
O login tem como função proteger o acesso a este software. O login é constituído por uma caixa de texto onde terá de digitar o nome do utilizador, e por outra onde terá de introduzir a respectiva palavra-chave (password).
Fig.30-Formulário Login
Aqui o utilizador terá de inserir o nome de utilizador e a palavra-chave, quando estes dados não se encontrarem introduzidos correctamente surgirá a seguinte mensagem de erro.
Fig.31- Mensagem de erro de dados incorrectos
Quando o utilizador não inserir nada no campo do nome de utilizador, aparecerá uma mensagem a informar que o utilizador deverá preencher a caixa de texto com o nome de utilizador.
Fig.32-Mensagem de erro de falta de preenchimento de dados
O mesmo se irá acontecer cujo a falta do preenchimento da palavra-chave se verificar. Apenas o aviso será diferente.
Fig.33-Mensagem de erro de falta de preenchimento da palavra-chave
Quando ambos os dados estejam introduzidos correctamente então que surgirá uma mensagem a informar o utilizador que os dados estão correctos.
Fig.34-Mensagem de dados correctos
4.2-Formulário Principal
Este formulário é constituído por um menu que se subdivide e cinco (Tabelas, Consultas, Movimentos, Apoios, Ferramentas)
Fig.35-Formulário Principal
Para acedermos as nossas tabelas teremos de clicar em “Tabelas” e logo surgira-nos as seguintes divisões.
4.3-Menu Tabelas
Como podemos visualizar na seguinte imagem que se apresenta o menu “Tabelas” subdivide-se em várias opções.
Fig.36-Divisão do menu Tabelas
Para acedermos basta dar um clique em cima da tabela que pretendemos abrir, e logo surgirá o formulário pretendido.
4.3.1-Formulário Leitores
Fig.37-Formulário leitores
Este formulário serve para registar todos os leitores que pretendam requisitar material da biblioteca. Devemos destacar que o utilizador poderá registar, editar, apagar e visualizar todos os leitores. Este formulário possui também outras vertentes que o utilizador deve conhecer, desde ao clicar num registo esse registo será automaticamente passado para as caixas de texto. Ao carregar num número, os registos são visualizados, seleccionados se começarem por esse número. Outro destaque são os botões de navegação que permitem percorrer os dados de um em um ou então ir mesmo para o primeiro ou ultimo registo.
4.3.2-Formulário Livros
Fig.38-Formulário livros
O formulário livro serve para registar todos os livros, ou outro material informativo. Este formulário dispõe das mesmas particularidades do formulário leitores a nível do funcionamento.
4.3.3-Formulários Simples
Este conceito de formulários simples, vem do facto de determinados formulários terem o mesmo funcionamento e o mesmo desenho gráfico. Os formulários que se enquadram dentro deste grupo são: Autor, Editora, Área/Estante, Género de Material, Género de leitor e Cursos. Vou então proceder ao funcionamento destes formulários simples pegando como exemplo o formulário Tabela Editora.
Fig.39-Vista de dados do formulário editora
Como podemos visualizar este possui botões que permitem adicionar, eliminar, editar como os formulários anteriormente vistos (Leitor, Livro). Realça-se também o aparecimento de um botão que permitirá consultar dados sobre a temática da tabela (Editoras). Outra particularidade que estes formulários possuem, é o facto de poderem listar todos os dados numa grelha.
Fig.40-Vista da grelha do formulário editora
Ao clicar, sobre uma editora o formulário automaticamente vai passar para a vista dados copiando para lá os dados relativos a editora.
Fig.41-Vista da consulta do formulário editora
A vista de consultas serve para verificar se uma determinada editora se encontra registada na tabela.
4.4-Menu Consultas
Fig.42-Menu Consultas
Este menu designado “Consultas” permite fazer consultas sobre os leitores, os livros e todas as movimentações da biblioteca (Empréstimos, Devoluções)
4.4.1-Formulário Consultar leitores
Fig.43-Formulário consultar leitores
Este formulário como o próprio nome indica serve para consultar todos os leitores registados no sistema. O utilizador para além de poder visualizar todos os leitores, também poderá consultar esses dados por nome, género de leitor, número de B.I, data de nascimento, curso. Não O utilizador poderá eliminar a partir daqui um determinado leitor que se encontre registado.
4.4.2-Formulário Consultar Livro
Fig.44-Formulário Consultar Livro
Este formulário transporta a mesma funcionalidade que o formulário anterior (consultar leitor), isto é, permite fazer consultas através de parâmetros a determinados materiais registados no sistema. Neste caso desde livros, revistas, enciclopédias.
4.4.3-Formulário Consultar movimentações
Fig.45-Formulário consultar movimentações
Este formulário permite visualizar todas as movimentações executadas na biblioteca. As movimentações podem ser desde empréstimos ou devoluções. Os empréstimos estarão marcados com um “R” e as devoluções com um “D” na ultima coluna do formulário.
4.5-Menu movimentos
Fig.46-Menu movimentos
Como podemos identificar na figura acima, o menu “Movimentos “ subdivide-se em dois, “Empréstimos” e “Devolução”.
4.5.1-Formulário empréstimos
Fig.47-Formulário empréstimos
Este formulário permite registar empréstimos de livros por parte de um determinado leitor. Para se executar um novo registo o utilizador deverá proceder da seguinte forma:
Clicar no botão “+” que permitirá fazer um novo registo. De seguida o formulário vai obter o seguinte aspecto.
Fig.48-Requisição passo1
O utilizador terá de clicar no botão para transferir os dados do livro, e da mesma forma procederá para os leitores. Podemos assim visualizar essa fase na seguinte figura que corresponde a introdução do livro.
Fig.49- Requisição passo2
O utilizador terá de dar um duplo clique em cima da lista, e esse registo desse livro será transferido automaticamente para as caixas de texto.
Fig.50-Requisição passo3
De seguida, o utilizador só terá de guardar o registo. O utilizador poderá visualizar todas as requisições ao clicar em “Listar”. Surge então essa listagem na seguinte figura.
Fig.51-Listagem das requisições
Aqui o utilizador poderá eliminar um registo quando ele se encontre seleccionado. Renovar a data de devolução, e a função principal que será atribuir um registo como devolvido.
4.5.2-Formulário Devoluções
Fig.52-Formulário devoluções
Este formulário serve de uso exclusivo para lista as devoluções, tendo mais uma única opção que é eliminar um registo seleccionado.
4.6-Menu apoios
Fig.53-Menu Apoios
O menu “Apoios” divide-se em três opções, “Internet”, “E-Mails”, “Contactos leitores”
4.6.1-Formulário Internet
Fig.54-Formulário Internet
Este formulário permite que o utilizador possa aceder a internet sem sair da aplicação quando devidamente conectado a internet
4.6.2-Formulário E-mails
Fig.55-Formulário Listagem dos e-mails
Este formulário permite visualizar todos os e-mails dos leitores introduzidos no sistema.
4.6.3-Formulário Contactos
Fig.56-Formulário contactos
Este formulário permite ver todos os contactos dos leitores introduzidos caso tenham definido o seu contacto.
4.7-Formulário Novo utilizador
Fig.57-Formulário novo utilizador
Este formulário permite adicionar um utilizador para depois poder aceder através de um login e palavra-chave.
4.8-Encerrar
Este botão serve para sair da aplicação.
Considerações Finais
Quanto a elaboração do meu projecto, acho que a construção deste projecto contribuiu para adquirir mais conhecimento face ao Visual Studio 2008.
Confesso que a realização deste trabalho foi uma espécie de teste não só as minhas capacidades, mas também ao meu empenho e dedicação que nem sempre foi ao longo dos três anos de formação. Tenho plena consciência que este podia estar muito mais enriquecido e aprofundado se o tivesse iniciado muito mais atempadamente.
Apesar de nunca ter antes abordado a ligação do Visual Studio 2008 com a base de dados SQL Server, e o facto de encontrar muita dificuldade. Acho que consegui ultrapassar as barreiras por cima e concretizar o projecto com sucesso. Uma vez mais, peço desculpa por alguma incongruência que se verificar.
Bibliografia
Portugal-a-Programar, SA, 2008 [Site]. Acesso: http://www.portugal-a-programar.org
LOUREIRO, HENRIQUE - Visual Basic 2008 – Desenvolvimento de Aplicações. 1ª Edição. Lisboa: FCA, 2008.
Visual Basic .NET. Wikimedia Foundation, Inc..,2010. [Site]. Acesso: http://en.wikipedia.org/wiki/Visual_Basic_.NET
Loureiro, Henrique - Visual Basic 2008 Curso Completo. 2.ª Edição. Lisboa: FCA, 2009.
Anexo A – Visual Basic
O Visual Basic surgiu já há algum tempo, marcando o ponto de partida da carreira de Bill Gates, quando deixou a faculdade e com um amigo fundou a Microsoft. Em duas semanas fez um interpretador para o Basic, o primeiro produto a ser comercializado pela Microsoft. Por essa construção conseguiu uma permissão da IBM para fazer o sistema operacional desse computador, o MS-DOS, que marcou o início do monopólio da Microsoft.
Quando o Windows se tornou padrão, pensava-se que a programação para este ambiente só seria possível com linguagens como C, sendo impossível alguma pessoa com pouca experiência fazer um programa por mais simples que fosse. Foi aí que surgiu o Visual Basic, como um novo BASIC, deixando de ser confuso como o anterior. Passou a ser estruturado e mais potente. Tornou-se a linguagem mais utilizada em todo o mundo, sendo considerada uma das causas do sucesso do Windows. A título de curiosidade, em 1998, havia cerca de 3 milhões de programadores em Visual Basic.
Fazendo assim uma retrospectiva:
Ano |
Versão |
1987 |
Quick BASIC deu origem ao Visual Basic |
1991 |
1.0 |
Outubro de 1991 |
2.0 |
Janeiro de 1996 |
5.0 |
2005 |
6.0 |
2008 |
Visual Basic 2008.net |
O Visual Basic então é uma linguagem de programação, sendo parte integrante do pacote Microsoft Visual Studio. Como vimos anteriormente, a versão mais recente faz parte do pacote Visual Studio.NET, direccionada para aplicações. Net, embora ainda actualmente se utilize muito a versão anterior (Microsoft Visual Studio 6.0).
A linguagem é dirigida por eventos (event driven), e possui também um ambiente de desenvolvimento integrado (IDE - Integrated Development Environment) totalmente gráfico, facilitando muito a construção da interface das aplicações (GUI - Graphical User Interface), daí o nome "Visual". Nas suas primeiras versões, o Visual Basic não permitia acesso a base de dados, sendo portanto voltado apenas para iniciantes, mas devido ao sucesso entre as empresas, a linguagem adoptou tecnologias como DAO, RDO, e ADO, também da Microsoft, permitindo fácil acesso a bases de dados. Mais tarde, foi adicionada também a possibilidade de criação de controles ActiveX, e, com a chegada do Visual Studio.NET, o Visual Basic tornou-se uma linguagem totalmente orientada a objectos
Verificaram-se algumas mudanças que devem ser aqui salientadas. A partir de 2002 (a primeira versão da plataforma.Net) a linguagem Visual Basic mudou em vários aspectos, ganhando muitos recursos anteriormente utilizados noutras linguagens como Java e C++ (herança, polimorfismo, etc.). Porém, continuou com a mesma sintaxe, mas por ser orientado a objectos, as suas funções e os métodos foram agrupados em namespaces e classes.
Outra das grandes melhorias com a plataforma.Net que consolidaram a linguagem foi a possibilidade de programação para WEB (ASP.Net), dispositivos móveis, Windows Forms e mais recentemente Silverlight. O acesso a dados, que sempre foi um dos principais recursos, foi melhorado com o ADO.Net (baseado em XML). Assim, permite um acesso separado da base de dados.
O ambiente gráfico do visual Basic é constituído por: (Principal, Toolbox, projecto, propriedades e formulários) sendo estas exibidas por defeito.
Toolbox – (A) Possui um conjunto de ferramentas em que o utilizador as usa durante o projecto para introduzir controlos dentro do Form (que é a janela da interface com o usuário).
Menu - (B) Mostra os controlos utilizados para construir a aplicação.
Form – (C) É o formulário no qual se constrói o interface da aplicação. No Form, o utilizador adiciona controlos, gráficos, figuras que irão dar a aparência final da sua aplicação.
Project Windows – (D) Lista os Forms e os módulos de código
Properties Window – (E) Exibe as propriedades existentes para um Form ou outro controlo seleccionado. Uma property (Propriedade) é um valor ou característica associada a um objecto tal como o seu tamanho, caption, cor, entre outras.