INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE - CAMPUS AVANÇADO SOMBRIO RAQUEL FERREIRA PEREIRA GEF: GERENCIADOR FINANCEIRO Sombrio (SC) 2014 2 RAQUEL FERREIRA PEREIRA GEF: Gerenciador Financeiro Trabalho de Conclusão de Curso apresentado como requisito para a obtenção do título de Técnico em Informática Integrado ao Ensino Médio, no Curso de Técnico em Informática Integrado ao Ensino Médio, do Instituto Federal de Educação, Ciência e Tecnologia Catarinense – Campus Avançado Sombrio. Orientador: Prof. Me. Iuri Sônego Cardoso Sombrio (SC) 2014 3 RAQUEL FERREIRA PEREIRA GEF: Gerenciador Financeiro Esta Produção Técnico-Científica foi julgada adequada para obtenção do título de Técnico em Informática Integrado ao Ensino Médio e aprovada pelo Curso de Técnico de Informática Integrado ao Ensino Médio do Instituto Federal de Educação, Ciência e Tecnologia Catarinense – Campus Avançado Sombrio. Área de Softwares Concentração: Desenvolvimento de Sombrio, 01 de dezembro de 2014. Prof. Me. Iuri Sônego Cardoso Instituto Federal Catarinense – Campus Avançado Sombrio Orientador Prof. Cristina Amboni da Silva Instituto Federal Catarinense – Campus Avançado Sombrio Membro Prof. Me. Marleide Coan Cardoso Instituto Federal Catarinense – Campus Avançado Sombrio Membro 4 DEDICATÓRIA Dedico este trabalho a meus amigos, que transformaram minha vida e me ajudaram a amadurecer. 5 AGRADECIMENTOS Agradeço primeiramente ao professor e orientador Iuri Sônego Cardoso, que acreditou em mim e me ajudou com a maior paciência. Também agradeço aos amigos e a família que acreditaram em mim, quando nem mesmo eu acreditava. 6 EPÍGRAFE “Um dos momentos mais assustadores da vida é quando você percebe que a única pessoa que pode te salvar é você mesma” Demi Lovato 7 RESUMO Este trabalho apresenta a elaboração do projeto e o desenvolvimento do software GeF: Um programa voltado para o registro de finanças de uso pessoal. Contém registrado os principais passos para desenvolver um software, desde o levantamento de requisitos até os resultados finais. No desenvolvimento deste trabalho foram utilizadas aplicações de técnicas estudadas durante o curso técnico, como a programação de computadores, a modelagem e implementação de banco de dados, projetos de softwares e metodologia. Palavras-chave: Software. Requisitos. Banco de dados. 8 ABSTRACT This work presents the development of the project and the development of GeF software: a program for the registration of finance for personal use. Contains recorded the major steps to develop a software, since the lifting of requirements until the final results. In the development of this work were used applications of techniques studied during the course, as the computer programming, modeling, and implementation of database, projects of software and methodology. Keywords: Software. Requirements. Database. 9 LISTA DE FIGURAS Figura 1: Exemplos de cálculo em Algoritmos ...................................................................................... 16 Figura 2: Exemplo de código Java ........................................................................................................ 18 Figura 3: Exemplo de Modelo ER ......................................................................................................... 19 Figura 4: Exemplo de Modelo Conceitual ............................................................................................. 20 Figura 5: Exemplo SQL ......................................................................................................................... 20 Figura 6: Diagrama ER .......................................................................................................................... 23 Figura 7: Strutured Query Language..................................................................................................... 24 Figura 8: Painel de exibição das contas ............................................................................................... 26 Figura 9: Tela de Cadastro de Contas .................................................................................................. 27 Figura 10: Tela de Detalhes da Conta .................................................................................................. 28 Figura 11: Painel de exibição dos Bancos ............................................................................................ 29 Figura 12: Tela de Cadastro de Banco ................................................................................................. 29 Figura 13: Painel de exibição de Categorias para transações ............................................................. 30 Figura 14: Tela de Cadastro de Categoria ............................................................................................ 31 Figura 15: Painel de exibição dos favorecidos ...................................................................................... 32 Figura 16: Tela de Cadastro de Favorecido .......................................................................................... 32 Figura 17: Painel de exibição das Movimentações financeiras ............................................................ 34 Figura 18: Tela de Cadastro de Movimentação .................................................................................... 35 Figura 19: Painel de exibição de Relatórios de movimentações das contas ........................................ 35 10 LISTA DE SIGLAS GEF: Gerenciador Financeiro BD: Banco de Dados SGBD: Sistema Gerenciador de Banco de Dados SQL: Linguagem de Consulta Estruturada (Strutured Query Language) ER: Entidade-Relacionamento DER: Diagrama Entidade-Relacionamento DDL: Linguagem de Definição de Dados (Data Definition Language) DML: Linguagem de Manipulação de Dados (Data Manipulation Language) IDE: Ambiente Integrado de Desenvolvimento (Integrated Development Environment) GUI: Interface Gráfica do Usuário (Graphical User Interface) 11 Sumário 1. INTRODUÇÃO ...................................................................................................... 13 2. OBJETIVOS.......................................................................................................... 14 2.1. Objetivo Geral ..................................................................................................... 14 2.2. Objetivos Específicos .......................................................................................... 14 3. REFERENCIAL TEÓRICO ................................................................................... 15 3.1. Levantamento de Requisitos............................................................................... 15 3.1.1.Requisitos Funcionais ...................................................................................... 15 3.1.2.Requisitos Não funcionais ................................................................................ 15 3.2. Programação de Computadores ......................................................................... 16 3.2.1.Algoritmos ........................................................................................................ 16 3.2.2.Linguagens de Programação ........................................................................... 17 3.2.3.Java .................................................................................................................. 17 3.3. Banco de Dados ................................................................................................. 18 3.3.1.Modelo Entidade-Relacionamento ................................................................... 18 3.3.2.Modelo Relacional ............................................................................................ 19 3.3.3.Strutured Query Language (SQL) .................................................................... 20 3.3.4.Sistema Gerenciador de Banco de Dados (SGBD) .......................................... 21 4. MATERIAIS E MÉTODOS .................................................................................... 22 4.1. Materiais ............................................................................................................. 22 4.1.1.NetBeans IDE 8.0 ............................................................................................. 22 4.1.2.MySQL Workbench 6.1 .................................................................................... 22 4.1.3.BrModelo .......................................................................................................... 22 4.2. Métodos .............................................................................................................. 23 4.2.1.Definição de requisitos ..................................................................................... 23 4.2.2.Modelagem do Banco de Dados ...................................................................... 23 4.2.3.Desenvolvimento e Testes do Sistema ............................................................ 25 5. RESULTADOS E DISCUSSÕES.......................................................................... 26 5.1. Tela principal/ Painel Contas .............................................................................. 26 5.2. Cadastro de Contas/ Editar Contas .................................................................... 27 5.3. Detalhes da conta ............................................................................................... 28 5.4. Painel Bancos ..................................................................................................... 28 5.5. Cadastro de Banco/ Editar Bancos ..................................................................... 29 5.6. Painel Categorias ................................................................................................ 30 5.7. Cadastro de Categorias/ Editar Categoria .......................................................... 31 12 5.8. Painel Favorecidos ............................................................................................. 31 5.9. Cadastrar Favorecidos/Editar Favorecidos ......................................................... 32 5.10. Painel Movimentações ..................................................................................... 33 5.11. Nova Movimentação/ Editar Movimentação ..................................................... 34 5.12. ainel Relatório de Movimentações ................................................................... 35 6. CONSIDERAÇOES FINAIS .................................................................................. 36 REFERÊNCIAS ................................................................................................................... 37 13 1. INTRODUÇÃO Para este trabalho foi desenvolvido o software GeF, um programa voltado para a área de finanças pessoais, que busca o registro de movimentações de dinheiro em uma determinada conta. O gerenciador financeiro registra movimentações e com elas é possível visualizar alguns relatórios financeiros, como listas que exibem as transações por meio de filtros. Este tema foi escolhido pelo fato de que, mesmo já havendo software semelhante no mercado, este seria na sua forma gratuita, limitado quanto ao número de contas que podem ser registradas e com algumas utilidades desnecessárias ou complexas demais para uso trivial, como taxas de câmbio e investimentos. A partir destas considerações, optou-se neste projeto pela criação de um software mais simples sem limites na quantidade de contas cadastradas. 14 2. OBJETIVOS Neste capitulo são apresentados os objetivos deste trabalho. 2.1. Objetivo Geral Desenvolver um software para controle de finanças pessoais, aplicando conhecimentos em diversas áreas estudadas durante o curso, como programação de computadores, banco de dados, projeto de software e metodologia. 2.2. Objetivos Específicos Definir os requisitos do software. Aplicar programação na linguagem Java para: Registrar contas bancarias, movimentações de deposito ou retirada, exibir relatórios de movimentações. Projetar um banco de dados: Modelo-o por meio de diagramas, implementando-o para ser capaz de armazenar e buscar os dados necessários para o software. 15 3. REFERENCIAL TEÓRICO Este capítulo aborda a pesquisa bibliográfica feita para o trabalho. Nela encontra-se o conhecimento que auxilia no melhor entendimento de como foi feito o projeto e desenvolvimento do software. 3.1. Levantamento de Requisitos O levantamento de requisitos é a primeira parte no desenvolvimento de um software, nele são levantadas questões como: quais funcionalidades deve ter, o que ele deve fazer, aparência desejada, entre outras características. Geralmente o levantamento de requisitos é feito através de entrevistas com o cliente, ou no caso de não haver um cliente através de pesquisa de mercado. Após o levantamento de requisitos estes são definidos como funcionais e não funcionais. (BEZERRA, 2007) 3.1.1. Requisitos Funcionais Os requisitos funcionais são declarações de como o software deve reagir a determinadas entradas e como deve se comportar em certas situações. Ele também pode explicitar o que o software não deve fazer. (SOMMERVILLE, 2011) Exemplos: “O software deve cadastrar notas dos alunos”; “O software deve calcular a média aritmética das notas por aluno”; 3.1.2. Requisitos Não funcionais Os requisitos não funcionais são limitações ou funções do software. Incluem restrições no processo de desenvolvimento e restrições impostas por normas. Eles aplicam-se ao software como um todo. (SOMMERVILLE, 2011) Exemplos: “O sistema deve ser em Java”; “O sistema deve rodar em tela cheia”; 16 3.2. Programação de Computadores O desenvolvimento de um programa necessita de três etapas: a análise, que neste trabalho estaria ligado ao levantamento de requisitos citado anteriormente, e também o algoritmo e a programação que serão apresentados neste tópico. (ASCENCIO, 2007) 3.2.1. Algoritmos Algoritmos são sequencias de comandos que devem ser executados, resultando em determinada ação. Nesses comandos tem de ser definidos exatamente o que deve, e como deve ser feito. Existem várias formas de representação de algoritmos, sendo as mais utilizadas: descrição narrativa, fluxograma e pseudocódigo. (ASCENCIO, 2007) A descrição narrativa consiste em escrever os algoritmos em texto, utilizando uma linguagem natural (por exemplo, língua portuguesa). O Fluxograma consiste em escrever os algoritmos com símbolos gráficos pré-definidos, seu entendimento é mais fácil que a descrição narrativa. O pseudocódigo consiste em escrever o algoritmo por meios de regras pré-definidas, ele é o mais fácil de passar para a linguagem de programação. (ASCENCIO, 2007) Figura 1: Exemplos de cálculo em Algoritmos (B) (A) Pegue a primeira nota; Pegue a segunda nota; Some as notas; Divida o resultado por dois; Mostre o resultado; Fonte: A autora, 2014. Algoritmo “Nota_semestral” Var Nota1, nota2, Media: real Inicio Escreva (“Digite a primeira nota: ”) Leia (nota1) Escreva (“Digite a segunda nota: ”) Leia (nota2) Media <= (nota1 + nota2) /2 Escreva (“A media é ”, media) fimalgoritmo (C) Inicio Nota1, Nota2 Media = (Nota1+Nota2) /2 “A media é ” Media Fim 17 O exemplo que aparece na Figuras 1, A, B e C, descreve como deve ser feita a média de duas notas, e apresentar o resultado. 3.2.2. Linguagens de Programação Linguagem de programação são instruções que fazem a comunicação entre usuário e computador. Estas instruções são interpretadas pela máquina de forma binária, ou seja, zero e um. Atualmente é possível dividir as linguagens de programação em dois níveis: as de baixo nível e as de alto nível. (DEITEL, 2010) Linguagens de baixo nível são linguagens interpretadas diretamente pelo computador, sendo mais rápida, porém com maior dificuldade de compreensão para o programador. Exemplos destas linguagens são a linguagem de máquina (ou binária), que consiste em códigos formados por zeros e uns, e a assembly, que era composta por abreviações do inglês que representam as operações e são convertidos em linguagem binária por programas tradutores chamados assemblers. (DEITEL, 2010) Já as linguagens de alto nível são de mais fácil utilização dos programadores, por ser formada por instruções parecidas com o inglês cotidiano e ainda possuir conotações matemáticas comuns. As preferidas pelos profissionais são o C, C++ e a mais utilizada de todas, o Java. Essas linguagens são traduzidas para linguagem de máquina por programas compiladores. (DEITEL, 2010) 3.2.3. Java É uma linguagem de alto nível, criada em 1991, baseada em C++. Mas somente chamou a atenção quando resolveram utilizá-la para adicionar conteúdo dinâmico à internet, em 1995. É usada atualmente para programas de grande porte, aplicativos móveis, aplicativos e funcionalidades da web. (DEITEL, 2010. p.6) Possui como características a simplicidade, orientação a objetos, portabilidade e segurança. (ASCENCIO,2007. p.10) O código do exemplo na Figura 4, é equivalente ao exemplo de algoritmo. 18 Figura 2: Exemplo de código Java import java.util.Scanner; public class calculoMedia { public static void main(String[] args) { float nota1, nota2, media; Scanner teclado = new Scanner(System.in); System.out.println(“Digite a primeira nota: “); nota1 = teclado.nextInt(); System.out.println(“Digite a segunda nota: ”); nota2 = teclado.nextInt(); media = (nota1+nota2)/2); System.out.println(“A media é “+ media); } } Fonte: A autora, 2014. 3.3. Banco de Dados O banco de dados é uma base de armazenamento de dados, ou informações que podem ser coletadas em um ambiente, por exemplo: a altura de uma pessoa é uma informação dela. Ou seja, o banco de dados guarda em registros as informações que são coletadas no programa para um uso futuro (ANGELOTTI, 2010). 3.3.1. Modelo Entidade-Relacionamento Também chamado de modelo ER (Entidade-Relacionamento), o modelo entidade-relacionamento preocupa-se em estar graficamente o mais próximo possível da visão do usuário. Ele pode ser utilizado para modelagem conceitual, que segundo Heuser (2009, p.25) registra os dados que podem aparecer no banco de dados, mas não registra como estão armazenados no SGBD (Sistema Gerenciador de Banco de Dados), e tem por objetivos descrever os dados que serão armazenados e a quais outros dados ou tabelas estão relacionados. Toda essa representação gráfica é chamada de Diagrama de Entidade e Relacionamento (DER). (ANGELOTTI, 2010) 19 O DER é constituído por entidades, atributos e relacionamentos. Uma entidade representa um objeto sobre o qual se quer armazenar dados (exemplo: funcionário). O atributo é uma propriedade ou característica da entidade, um dado que a descreve. Em uma entidade chamada Funcionário, seus atributos poderiam ser: nome, CPF, RG, endereço, entre outros. Relacionamentos são as ligações entre entidades. Como demostra a Figura 5: a entidade Funcionário tem um relacionamento chamado Pertence com a entidade Setor. (ANGELOTTI, 2010) Figura 3: Exemplo de Modelo ER Funcionário (0,n) Pertence código nome (1,1) Setor codigoSetor nome caracteristica Fonte: A autora, 2014. 3.3.2. Modelo Relacional O Modelo Relacional é utilizado para criar um modelo lógico de banco de dados. Ele preocupa-se em como os dados devem ser armazenados, também é definido os tipos de dados para cada atributo. Este modelo tem como objetivo representar os dados como uma coleção de tabelas, que devem apresentar atributos (colunas), seguidos do tipo de atributo e referências. (ANGELOTTI, 2010) Dois importantes atributos em uma tabela são a chave primaria (primary key) e a chave estrangeira (foreign key). A chave primaria será um elemento único na tabela, não podendo repetir valores, sendo estes obrigatórios (não nulos). A chave primária é responsável pela identificação dos registros (linhas) armazenados na tabela. A chave estrangeira é um atributo que fará referência à chave primária de outra tabela, fazendo assim uma relação entre tabelas. (ANGELOTTI, 2010) No exemplo da Figura 6, a tabela Funcionário possui chave primária código, o atributo nome, e uma chave estrangeira chamada Setor_códigoSetor, que faz referência a chave primária da tabela Setor. 20 Figura 4: Exemplo de Modelo Conceitual Fonte: A autora, 2014. 3.3.3. Strutured Query Language (SQL) Linguagem de consulta estruturada ou SQL (Strutured Query Language), é a linguagem padrão para banco de dados relacional. Embora “consulta” faça parte do nome, ela inclui operações de definição (DDL) e manipulação (DML) de dados. O conjunto de comandos DDL contém os comandos de definição e criação de uma base de dados, comandos estes que servem para criar, alterar e excluir objetos no banco (exemplo tabelas), e possui também comandos para especificação de direitos de acesso e para a criação de restrições de integridade. Já a DML possui comandos para consultar, inserir, alterar e excluir somente dados do banco de dados. (DATE, 2004) Figura 5: Exemplo SQL CREATE DATABASE Empresa; USE Empresa; CREATE TABLE Setor ( CodigoSetor INT, Nome VARCHAR(45), Categoria VARCHAR(20), PRIMARY KEY (CodigoSetor) ); CREATE TABLE Funcionario ( Codigo INT, Nome VARCHAR(45), CodigoSetor INT, PRIMARY KEY (Codigo), FOREING KEY (CodigoSetor) REFERENCES Setor (CodigoSetor) ); Fonte: A autora, 2014. 21 O exemplo da Figura 7 demonstra a criação do Banco de Dados chamado Empresa, e após selecioná-lo, são criadas as tabelas Setor e Funcionário, com seus atributos e seus respectivos tipos de variáveis. 3.3.4. Sistema Gerenciador de Banco de Dados (SGBD) O SGBD é uma ferramenta usada para melhor controle ao acesso e manutenção de dados armazenados em um banco. Tem como funções a definição e a manipulação de dados. Ele deve incluir um processador ou compilador DDL (Data Definition Language) para entender o formato dos dados e convertê-los para o apropriado. Também deve incluir um processador ou compilador DML (Data Manipulation Language) para poder buscar, atualizar, excluir ou acrescentar dados no banco de acordo com as necessidades do usuário. (ANGELOTTI, 2010) Ele possui como principais características o Acesso Concorrente, o Gerenciamento de Transações, a aplicação de regras de Segurança e regras para a garantia de Integridade da base de dados. O Acesso Concorrente permite que mais de uma pessoa possa acessar o banco de dados ao mesmo tempo, sem que haja interferência. O Gerenciamento de Transações cuida das transações no banco de dados. Estas são divididas em várias operações, e em caso de erro em alguma dessas operações, desfaz a transação afim de manter integridade do banco. A Segurança é feita por mecanismos do SGBD para a criação de regras. Estas podem abranger definição de login e senha para os usuários, de permissões de acesso ao SGBD, o que cada usuário pode fazer – só ler ou também alterar os dados – ou quais dados ele pode ou não ter acesso. As regras de Integridade são feitas para verificar se os dados que estão sendo adicionados ao banco de dados estão corretos, protegendo assim o usuário de si mesmo impedindo que aconteçam erros. (DATE, 2004) 22 4. MATERIAIS E MÉTODOS Este capítulo apresenta os materiais e os métodos utilizados no desenvolvimento do projeto. Esta é a parte do projeto em que aplica-se o que foi estudado durante o curso. 4.1. Materiais Esta seção apresenta um breve resumo sobre os softwares usados para o desenvolvimento do projeto. 4.1.1. NetBeans IDE 8.0 O NetBeans IDE1 é um ambiente de desenvolvimento que trabalha com várias linguagens, como: Java, HTML, JavaScript, e CSS. Neste projeto ele foi utilizado para a programação na linguagem Java. Ele foi escolhido para o trabalho por ser um software gratuito, e por ser o programa que é utilizado no curso para as aulas de programação. 4.1.2. MySQL Workbench 6.1 O MySQL Workbench2 é uma ferramenta usada para a modelagem de dados, que trabalha com diagramas ER e scripts SQL. Foi utilizado para a maior parte do desenvolvimento do Banco de Dados. Ele é gratuito e de fácil utilização, por isso foi escolhido para o desenvolvimento deste trabalho. 4.1.3. BrModelo O BrModelo3 é um programa para a criação de modelos relacionais de forma visual. Ele foi usado no início do desenvolvimento do Banco de Dados. Foi escolhido por ser simples, de fácil utilização e portátil. Além de ser um software gratuito que foi utilizado no curso. 1 IDE Recursos do Netbeans. Disponível em: <https://netbeans.org/features/index.html>. Acesso em 17 de dezembro de 2014. 2 XAVIER, Andressa. MySQL Workbench. Disponível em: <http://www.baixaki.com.br/download/mysqlworkbench.htm>. Acesso em: 17 de dezembro de 2014. 3 MARTINS, Elaine. brModelo. Disponível em: <http://www.baixaki.com.br/download/brmodelo.htm>. Acesso em: 17 de dezembro de 2014. 23 4.2. Métodos Neste trabalho foram utilizadas as metodologias de Pesquisa Bibliográfica (Referencial Teórico) e Pesquisa Descritiva que emprega a elaboração e desenvolvimento do projeto, neste trabalho ela é apresentada nesta seção que relata o desenvolvimento do projeto, com as seguintes etapas: definição dos requisitos, modelagem do banco de dados, desenvolvimento e testes do sistema. 4.2.1. Definição de requisitos Os requisitos do software foram definidos em reuniões com o orientador, pois o software não é voltado para um cliente específico. Com as reuniões foi definido que o software deveria: exibir relatórios das movimentações, podendo estes serem filtrados por alguma característica em comum; fazer registros de contas, bancos, categorias, favorecidos, e as próprias movimentações; calcular os saldos totais das movimentações por conta ou outro ponto em comum entre as transações. 4.2.2. Modelagem do Banco de Dados Com os requisitos definidos foi criado o diagrama ER, que está na Figura 8, utilizando o BrModelo, para um entendimento de quais dados seriam armazenados no banco de dados. Figura 6: Diagrama ER Fonte: A autora, 2014. 24 Após as entidades possuírem seus atributos e os relacionamentos serem definidos no diagrama ER, isso foi implementado em SQL, utilizando o MySQL Workbench 6.1, como mostra a Figura 9. Figura 7: Strutured Query Language CREATE DATABASE GeF; USE GeF; CREATE TABLE Banco ( codbanco INT AUTO_INCREMENT, nome VARCHAR(50), fone INT, site VARCHAR(70), PRIMARY KEY (codbanco)); CREATE TABLE Conta ( codconta INT AUTO_INCREMENT, num_agencia VARCHAR(8)NOT NULL, num_conta VARCHAR(8) NOT NULL, codbanco INT, nome VARCHAR(50) NOT NULL, tipoConta VARCHAR(30), CONSTRAINT fk_banco_cod FOREIGN KEY (codbanco) REFERENCES Banco (codbanco), PRIMARY KEY (codconta), UNIQUE INDEX id_conta (num_agencia,num_conta,codbanco)); CREATE TABLE Categoria ( codcategoria INT AUTO_INCREMENT, nome VARCHAR(50) NOT NULL, PRIMARY KEY (codcategoria)); CREATE TABLE Favorecidos ( codfavorecido INT AUTO_INCREMENT, fone INT, nome VARCHAR(50) NOT NULL, email VARCHAR(70), PRIMARY KEY (codfavorecido)); CREATE TABLE Movimentacao ( codmovimentacao INT AUTO_INCREMENT, data DATE NOT NULL, tipo VARCHAR(30) NOT NULL, valor DOUBLE NOT NULL, codcategoria INT, codfavorecido INT, codconta INT, PRIMARY KEY (codmovimentacao), CONSTRAINT fk_categoria_cod FOREIGN KEY (codcategoria) REFERENCES Categoria (codcategoria), CONSTRAINT fk_favorito_cod FOREIGN KEY (codfavorecido) REFERENCES Favorecidos (codfavorecido), CONSTRAINT fk_conta_cod FOREIGN KEY (codconta) REFERENCES Conta (codconta) ON DELETE CASCADE); Fonte: A autora, 2014. 25 4.2.3. Desenvolvimento e Testes do Sistema Com o banco de dados criado, foi utilizado o IDE NetBeans 8.0 para a programação Java. Usando componentes Graphical User Interface (GUI), que já vem pré-instalados no programa, foram criadas, antes de tudo, as telas do software, sem programação alguma, para ter uma organização do que fazer, como quais funções seriam feitas e qual a ordem que seriam feitas. Depois das janelas prontas a parte de programação e conexão com o banco de dados foi iniciada. A programação foi dividida em partes, com a parte visual pronta, foram feitas primeiro as ligações entre a tela principal e os painéis, que permite que a janela principal seja única, porém diferentes painéis com conteúdo distinto são exibidos nela dependendo do botão selecionado no menu principal. Então as funcionalidades do software começaram a serem programadas fazendo conexões ao banco de dados, para o programa poder criar, excluir e buscar dados. Todas as funções de cadastrar, de excluir, visualizar, pesquisar e editar foram feitas em uma única etapa, uma após a outra. 26 5. RESULTADOS E DISCUSSÕES Este tópico apresenta o resultado do trabalho, com uma explicação de como funciona cada tela do programa. 5.1. Tela principal/ Painel Contas Figura 8: Painel de exibição das contas Fonte: A autora, 2014. A tela principal do programa possui um menu principal, com o qual é possível escolher qual painel deverá ser apresentado. Isto funciona como um sistema de guias, cada item do menu muda o conteúdo da janela. O programa inicia com o painel Contas, ele possui uma tabela, posicionada no centro da tela, que serve para exibir nomes das contas que estão cadastradas e a soma dos seus respectivos saldos. Esta tabela é atualizada automaticamente sempre que a janela é aberta ou quando alguma mudança no banco de dados é feita. No lado direito da tela, encontra-se os botões de criação, edição, exclusão e consulta das informações no banco de dados. Ao clicar no botão Nova Conta, é 27 aberta uma pequena janela sobreposta à principal para o cadastro de uma nova conta. O botão Editar Conta abre uma janela semelhante à de cadastro de contas, mas para isto primeiramente deve estar selecionado uma conta na tabela. Com o botão Excluir Conta, uma janela de confirmação é aberta para ter certeza de que deseja excluir permanentemente a conta selecionada na tabela do banco de dados. O botão Detalhes abre uma janela, sobreposta à principal, para exibição das informações da conta selecionada na tabela. 5.2. Cadastro de Contas/ Editar Contas Figura 9: Tela de Cadastro de Contas Fonte: A autora, 2014. A janela de Cadastro de Contas possui campos de preenchimento para o nome, o número da conta e o número da agência bancária, a qual a conta pertence. Ela também possui duas listas de seleções: uma para a escolha de um banco já cadastrado; e outra para escolha do tipo de conta que será, Conta Poupança ou Conta Corrente. A tela Editar Conta é uma janela semelhante a Cadastro de Contas, mas que ao ser aberta, os campos são preenchidos automaticamente com os dados que a conta selecionada antes de abrir a janela possui. 28 O botão Cancelar nas duas janelas serve para fechar a tela aberta. Já o Salvar, em Cadastro de Contas, tem função de adicionar as informações no banco de dados, enquanto em Editar Contas, tem função de modificar as informações da conta já cadastrada. 5.3. Detalhes da conta Figura 10: Tela de Detalhes da Conta Fonte: A autora, 2014. A janela Detalhes da Conta é uma tela estática que apenas exibe os dados da conta que está selecionada na tabela da janela Contas. Ela faz uma consulta no BD automaticamente ao abri-la, para que o usuário do programa possa olhar os dados que inseriu ao cadastrar a conta, já que a tabela só apresenta nome e o saldo. 5.4. Painel Bancos O painel Bancos possui uma tabela para exibição de informações cadastradas dos bancos, como: o nome, o telefone e o site. Ele possui também três botões para criar, alterar e excluir dados. O botão Novo Banco abre a janela Cadastro de Banco, onde é possível adicionar novas informações no BD (Banco de Dados). Enquanto o botão Editar Banco abre uma janela semelhante à de cadastros, porém, preenchida com os dados do banco que estiver selecionado na tabela de Bancos para modificação. O botão Excluir Conta pede uma confirmação para excluir do registro o banco que estiver selecionado na tabela. 29 Figura 11: Painel de exibição dos Bancos Fonte: A autora, 2014. 5.5. Cadastro de Banco/ Editar Bancos Figura 12: Tela de Cadastro de Banco Fonte: A autora, 2014. A janela Cadastro de Banco possui três campos, um para escrever o nome, um para escrever o site e outro para escrever o telefone do banco a ser cadastrado. Os campos Site e Telefone não são obrigatórios para o cadastramento do banco. A 30 janela Editar Banco é semelhante à de cadastro, porém ela já é preenchida ao abrir com os dados do banco que estiver selecionado na tabela em Bancos. O botão Cancelar, das duas janelas, fecha a janela aberta. Já o botão Salvar, na janela de cadastro, adiciona o novo Banco no banco de dados, enquanto que na janela de edição, modifica e/ou adiciona novos dados do Banco aos que já estiverem cadastrados. 5.6. Painel Categorias Figura 13: Painel de exibição de Categorias para transações Fonte: A autora, 2014. O painel Categorias possui uma tabela que lista os nomes das categorias cadastradas. Ele possui também os botões: Nova Categoria, Editar Categoria e Excluir Categoria. O botão Nova Categoria abre uma janela para o cadastro de uma nova categoria. Os botões de editar e excluir necessitam que alguma categoria esteja selecionada na tabela, pois será esta categoria selecionada que receberá modificação; no caso do botão excluir, será o registro que pedirá confirmação para exclusão, e no caso do botão editar, será o registro que preencherá o campo da janela. 31 5.7. Cadastro de Categorias/ Editar Categoria Figura 14: Tela de Cadastro de Categoria Fonte: A autora, 2014. A janela Cadastro de Categoria possui apenas um campo, pois somente o nome é preciso. A tela Editar Categoria é semelhante à de cadastro porém quando é aberta, ela é carregada automaticamente com o nome que está selecionado na tabela do painel Categorias. O botão Cancelar fecha a janela aberta, e o Salvar adiciona ou modifica o dado no banco de dados, dependendo de qual das duas está aberta. 5.8. Painel Favorecidos O Favorecido é a pessoa ou empresa que está relacionada a transação bancária. Pode ser uma pessoa com quem foi gasto ou quem forneceu o dinheiro. No caso de uma empresa pode ser um supermercado ou uma clínica médica em que é gasto com alimentos e consultas. O painel Favorecidos (apresentado na Figura 17) possui uma tabela de leitura que exibe os favorecidos cadastrados no BD, com seus respectivos telefone e e-mail de contato. Ele também possui botões ao lado direito da tela, onde é possível cadastrar novos favorecidos, atualizar e excluir registros mais antigos. O botão Novo Favorecido e Editar Favorecido abrem, respectivamente, uma janela sobreposta a primeira para o cadastro ou edição de um registro. O botão Excluir Favorecido abre uma janela de confirmação, para então excluir o favorecido do BD permanentemente. Os botões Editar e Excluir são habilitados somente se houver algum favorecido selecionado na tabela. 32 Figura 15: Painel de exibição dos favorecidos Fonte: A autora, 2014. 5.9. Cadastrar Favorecidos/Editar Favorecidos Figura 16: Tela de Cadastro de Favorecido Fonte: A autora, 2014. A janela Cadastro de Favorecido (apresentado pela Figura 18) tem três campos: Nome, Telefone (para registrar um contato de ligação para transações) e E- 33 mail. Os campos para o telefone e e-mail não são obrigatórios, somente o nome precisa estar preenchido para que o registro possa ser feito. A tela também possui dois botões: Cancelar para fechar a janela, e Salvar que efetua o registro no BD. A janela Editar Favorecido é semelhante a de cadastro, porém, ao abrir é preenchida automaticamente com os dados do favorecido que estiver selecionado na tabela do Painel Favorecidos. O botão Salvar, nesta janela, atualiza no BD, o dado que foi editado no campo. O botão Cancelar possui a mesma função do seu equivalente da janela de cadastro. 5.10. Painel Movimentações O painel Movimentações possui em seu interior uma tabela, que exibe todas as movimentações registradas para uma determinada conta selecionada, com os respectivos dados: o número da movimentação, que é gerado automaticamente pelo banco de dados ao cadastrá-la, a data em que foi registrada, categoria, favorecido, o tipo de movimentação e o valor da transação. A tabela deste painel difere das outras tabelas do programa por ter como filtro uma lista de seleção com o nome das contas, assim, a tabela exibe somente as movimentações da conta selecionada. Abaixo da tabela é exibido o saldo total das transações que estão na tabela, este saldo é atualizado toda vez que uma modificação for feita no banco, ou seja, um novo registro ou a exclusão de um antigo, ela também muda de acordo com a conta selecionada na lista selecionável. O painel ainda possui botões que possibilitam alterações no banco, como: criar, alterar e excluir uma transação. O botão Nova Movimentação abre a janela de mesmo nome, para a criação de um novo registro de transação. O botão Editar Movimentação abre a janela de mesmo nome, permitindo que algo possa ser alterado em uma movimentação cadastrada. O botão Excluir abre uma caixa de diálogo que pede confirmação para excluir um registro. Para que os botões Editar e Excluir funcionem, uma movimentação deve estar selecionada na tabela. 34 Figura 17: Painel de exibição das Movimentações financeiras Fonte: A autora, 2014. 5.11. Nova Movimentação/ Editar Movimentação A janela Nova Movimentação é uma das telas mais importantes para este programa, que tem por objetivo registrar movimentações feitas em determinada conta. Para que este registro possa ser feito, a tela possui: campo de data formatado com as barras, para que somente números sejam colocados, campo para o valor da transação, listas de seleção de contas, favorecidos e categorias, e possui também botões de seleção Retirada e Depósito, para marcar se o dinheiro está sendo retirado ou colocado na conta. Se o botão Retirada estiver selecionado o número inserido no campo valor será convertido e armazenado no Banco de Dados como negativo. O botão Cancelar fecha a janela e o botão Salvar adiciona o registro ao banco de dados. A janela Editar Movimentação é semelhante à tela de cadastro, porém quando é aberta todos os campos estão preenchidos com o que foi cadastrado anteriormente. Todos os campos são obrigatórios, portanto, ao clicar em Salvar, 35 tanto na janela de Cadastro como na janela Editar, ele informará qual campo não está preenchido, para só então modificar ou criar o registro. Figura 18: Tela de Cadastro de Movimentação Fonte: A autora, 2014. 5.12. Painel Relatório de Movimentações Figura 19: Painel de exibição de Relatórios de movimentações das contas Fonte: A autora, 2014. 36 O painel Relatório tem por objetivo a visualização das movimentações registradas, todas juntas ou filtradas por uma característica em comum, em uma tabela. Ele também exibe, abaixo da tabela, o saldo total das transações apresentadas na tabela, que se atualiza sempre que um filtro é utilizado. Os filtros são compostos por um campo de data, para buscar por movimentações feitas no mesmo dia, e pelas listas de seleção: Conta, Categoria e Favorecido. Os botões OK fazem uma busca no banco de dados, de acordo com o campo ou a lista que está ao seu lado. 6. CONSIDERAÇOES FINAIS Este trabalho permitiu o levantamento de requisitos, que foi feito com o orientador, a criação de um banco de dados, que foi modelado e depois implementado, e o desenvolvimento de um programa que realizasse o cadastro de contas, de movimentações feitas nestas contas e as exibisse num relatório que pudesse utilizar filtros. O programa final realiza o cadastro também de categorias, favorecido e banco que são informações importantes para o cadastro da conta e das movimentações. O relatório pode utilizar quatro filtros diferentes e exibir um saldo. As maiores dificuldades do trabalho foram: o tempo, alguns problemas técnicos como travamentos e complicações com o uso do editor de texto e outros programas utilizados, e também o fato de ter sido feito por uma única pessoa, que não possuía muitos conhecimentos no assunto, o que resultou em um programa simples. Como trabalhos futuros, sugere-se: complementar o software com um login com senha, para dar mais segurança às informações, uma função que importe arquivos de extrato de banco para o programa, trocar o banco de dados por armazenamento em arquivos, para que não seja necessário ter um Sistema Gerenciador de Banco de Dados (SGBD) instalado, e que os relatórios possam ser agrupados por categoria ao invés de filtrados. 37 REFERÊNCIAS ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. Fundamentos da programação de computadores: Algoritmos, Pascal, C/C++ e Java. 2ª ed. São Paulo: Pearson Prentice Hall, 2007. DEITEL, Harvey M; DEITEL, Paul J. Java como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010. DATE, C. J. Introdução a sistemas de bancos de dados. 8. ed. Rio de Janeiro: Elservier, 2004. HEUSER, Carlos A. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman, 2009. ANGELOTTI, Elaini S. Banco de Dados. Curitiba: Livro Técnico, 2010. SOMMERVILLE, Iam. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. 2. ed. Rio de Janeiro: Elsevier, Campus, 2007. IDE Recursos do Netbeans. Disponível em: <https://netbeans.org/features/index.html>. Acessado em 17 de dezembro de 2014. XAVIER, Andressa. MySQL Workbench. Disponível em: <http://www.baixaki.com.br/download/mysql-workbench.htm>. Acessado em: 17 de dezembro de 2014. MARTINS, Elaine. brModelo. Disponível em: <http://www.baixaki.com.br/download/brmodelo.htm>. Acessado em: 17 de dezembro de 2014.