• Nenhum resultado encontrado

Aperfeiçoamento do sistema de caixa eletrônico

N/A
N/A
Protected

Academic year: 2021

Share "Aperfeiçoamento do sistema de caixa eletrônico"

Copied!
87
0
0

Texto

(1)

UNIVERSIDADE FEDERAL FLUMINENSE

JOICE DA SILVA VIEIRA

APERFEIÇOAMENTO DO SISTEMA DE CAIXA ELETRÔNICO

Niterói

2016

(2)

APERFEIÇOAMENTO DO SISTEMA DE CAIXA ELETRÔNICO

Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.

Orientador:

João Gabriel Felipe Machado Gazolla

NITERÓI

(3)

Ficha Catalográfica elaborada pela Biblioteca da Escola de Engenharia e Instituto de Computação da UFF

V658 Vieira, Joice da Silva

Aperfeiçoamento do sistema de caixa eletrônico / Joice da Silva Vieira. – Niterói, RJ : [s.n.], 2016.

85 f.

Projeto Final (Tecnólogo em Sistemas de Computação) – Universidade Federal Fluminense, 2016.

Orientador: João Gabriel Felipe Machado Gazolla. 1. Automação bancária. 2. Caixa eletrônico. 3. Sistema de computador. I. Título.

(4)

APERFEIÇOAMENTO DO SISTEMA DE CAIXA ELETRÔNICO

Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.

Niterói, 01 de Junho de 2016.

Banca Examinadora:

_________________________________________ Prof. João Gabriel Machado Gazolla, MSc. – Orientador

UFF – Universidade Federal Fluminense

_________________________________________ Prof. Daniel Luiz Alves Madeira, DSc. – Avaliador UFSJ – Universidade Federal de São João del-Rei

(5)

meus irmãos José Sérgio, Josie e Luíz Fernando.

(6)

A Deus, que sempre iluminou a minha caminhada.

A meu Orientador João Gabriel Felipe Machado Gazolla pelo estímulo e atenção que me concedeu durante o curso.

Aos Colegas de curso pelo incentivo e troca de experiências.

A todos os meus familiares e amigos pelo apoio e colaboração.

(7)
(8)

O objetivo deste trabalho é introduzir uma contextualização e histórico da informatização do setor bancário no Brasil e no mundo, apresentando um projeto completo de um sistema de otimização dos sistemas atuais dos caixas eletrônicos (ATMs) que utiliza um algoritmo de solução, possibilitando ao usuário final uma melhor alternativa no momento do saque, obtendo o seu dinheiro de forma adequada à sua necessidade. Ao final do trabalho, é apresentado o desenvolvimento da implementação do sistema e exibido seu funcionamento.

(9)

The objective of this work is to introduce a context and history of the automation of the banking sector in Brazil and in the world, with a complete design of a system opti-mization of current ATMs using a solution algorithm, enabling the client a better alter-native during the withdrawal, getting exactly the money bills he needs. At the end of this work, we present the development of the system implementation and show its operation.

(10)

Figura 1: Dispensador de notas [7]...22

Figura 2: Placa Controladora [8]...23

Figura 3: Caixa eletrônico...25

Figura 4: Diagrama de casos de uso...29

Figura 5: Diagrama de atividade do caso de uso realizar saque...33

Figura 6: Diagrama de atividade do caso de uso abastecer ATM...34

Figura 7: Diagrama de classes...35

Figura 8: Diagrama de sequência do caso de uso realizar saque ...35

Figura 9: Diagrama de sequência do caso de uso abastecer ATM...36

Figura 10: Esboço da tela para digitar o valor...36

Figura 11: Esboço da tela para escolha do valor...37

Figura 12: Esboço do abastecimento dos slots...38

Figura 13:Esboço da inserção da quantidade de cédulas no slot...38

Figura 14: Tela para informar o valor do saque...48

Figura 15:Tela para selecionar quantidade de notas...48

Figura 16:Tela de seleção das notas para abastecimento...49

Figura 17:Tela para informar a quantidade de cédulas que inseridas no slot...49

Figura 18:Tela de conclusão ou não no processo de abastecimento...50

Figura 19:Tela inicial...51

Figura 20:Tela das opções...51

Figura 21:Tela indicando que a opção inteiro foi escolhida...52

Figura 22:Tela para o valor trocado...52

Figura 23:Tela para o valor acima do saldo...53

Figura 24:Tela indicando a condição do saldo...53

Figura 25:Tela exibindo um valor não múltiplo...54

(11)

Tabela 1: Representação do algoritmo "ATM_Bancário"...39 Tabela 2: Tabela de quebrar inteiro em trocado...45

(12)

ABNT- NBR – Associação Brasileira de Normas Técnicas. ATM – Automatic Teller Machine.

COMIND - Banco de Comércio e Indústria do Estado de São Paulo. DDA - Débito Direto Autorizado.

FEBRABAN – Federação Brasileira de Bancos. GB – GigaBye.

KB – KiloByte.

MySQL - Structured Query Language. MMD - Multimedia Machine Dispenser.

NP-completos - Nondeterministic Polynomial time. PHP – Hypertext Preprocessor.

PIN - Personal Identification Number. SPB - Sistema de Pagamento Brasileiro. TECBAN – Tecnologia Bancária S.A. USB - Universal Serial Bus.

(13)

Resumo...7 Abstract...8 Lista de Ilustrações...9 Lista de Tabelas...10 Lista de Abreviaturas...11 1 Introdução...14 1.1 Motivação...15 1.2 Objetivo...15 1.3 Organização...15

2 Histórico – Uma visão geral sobre a informatização do sistema bancário no mundo e a evolução dos caixas eletrônicos...17

3 Fundamentação Teórica...21

3.1 Caixas Eletrônicos...21

3.1.1 Componentes dos Caixas eletrônicos...21

3.1.2 Características apresentadas pelo ATMs bancários...24

3.1.3 Características externas dos ATMs...24

4 Sistema Proposto...27 4.1 Definição do Problema...27 4.2 Especificação...27 4.2.1 Requisitos...27 4.2.1.1 Requisitos Funcionais...27 4.2.1.2 Requisitos Não-Funcionais...28

4.2.1.3 Requisitos dos Usuários...28

4.2.2 Diagramas de Caso de Uso...28

4.2.3 Descrições dos Casos de Uso...29

4.2.4 Diagrama de atividade...32

4.2.5 Modelagem de Dados...34

4.2.5.1 Diagrama de Classes...34

4.2.5.2 Diagrama de Sequência...35

4.2.6 Projeto da Interface do Software...36

4.3 Algoritmo Proposto...39

5 Implementação do sistema...46

5.1 Visão Geral do Software...46

5.2 Ambiente de Desenvolvimento e Linguagens Utilizadas...46

5.2.1 Aplicação da linguagem PHP...47

5.3 Interface gráfica...47

5.4 Limitações...50

6 Resultados e Testes do Software...51

6.1 Experimento 01...51

6.1.1 Cenário 01...51

(14)

6.2.2 Resultado 02...53

6.3 Experimento 03...53

6.3.1 Cenário 03...53

6.3.2 Resultado 03...54

7 Conclusão e Trabalhos Futuros...56

8 Referências Bibliográficas...57

(15)

1 INTRODUÇÃO

A automação bancária no Brasil começou a surgir em meados dos anos 60 com a instalação dos primeiros computadores nos bancos, pois a princípio o foco do setor bancário era adquirir os equipamentos para otimizar as operações das instituições financeiras, este período dá origem a primeira geração on-line, dando continuidade nos anos subsequente que teve sua fase compreendida entre 1965 e 1975. Assim como relata Schmitz; Mahl [1, p.72]:

A grande revolução nesse período foi a implementação dos sistemas on

line, que possuem a capacidade de interligação de dados entre centrais e

agências simultaneamente. O desejo de automatizar os serviços

administrativos motivou a capacitação do sistema de telecomunicações e a aquisição de modernos equipamentos de informática.

Devido a informatização dos bancos houve uma facilidade para as vidas das pessoas que usam os sistemas de autoatendimento, pois as possibilitaram possuir um banco a sua disposição 24 horas por dia, onde elas podem realizar saques, depósitos, pagamento de contas e a cada ano surgem novas funções para facilitar a vida dos seus usuários.

Segundo costa Filho [2, p.3] o sucesso dos autoatendimentos é motivado por uma questão de habito adquirido pelo usuário, que avalia os benefícios trazidos para suas vidas tais como: acessá-lo a qualquer hora do dia e da semana e também em qualquer lugar do mundo. Apesar de toda a comodidade oferecida pelas tecnologias adotadas atualmente como o internet banking e o crescimento do mobile banking. A identificação de um problema motivou o desenvolvimento deste trabalho. A dificuldade em obter o dinheiro da forma em que convém ao cliente no momento do saque nos caixas eletrônicos.

Este trabalho consiste no desenvolvimento de um sistema de otimização para os caixas eletrônicos atuais, com o objetivo de facilitar a vida do usuário, permitindo uma flexibilidade no momento do saque.

Será apresentado um breve histórico exibindo a evolução do tema proposto as suas características físicas, lógicas, seus pontos fortes e fracos. A ideia principal consiste em elaborar um algoritmo que resolva o problema. A implementação do código se dará pela linguagem Hypertext Preprocessor (PHP), posto isso, uma análise exibirá os resultados dos experimentos dentro de cada cenário.

(16)

1.1 MOTIVAÇÃO

O crescimento tecnológico bancário é notório a cada ano, como mostra uma pesquisa realizada [3, p.9] pela Federação Brasileira de Bancos(FEBRABAN) de tecnologia bancária que constatou no último ano de 2014 o aumento de R$ 21,5 bilhões em investimentos e o mobile banking é um exemplo, um aplicativo de celular usado via Internet no acesso as agências, permitindo aos clientes os mesmos serviços que ele teria se fosse pessoalmente a um banco.

Apesar dos investimentos do setor bancário em melhorias e aperfeiçoamento dos sistemas, nota-se que ainda há muito a ser feito principalmente no sentido de disponibilizar opção de notas disponíveis para saque. Observando esta opção, apresentada por alguns terminais de autoatendimento notou-se um problema. No momento do saque as notas disponíveis são apresentadas no visor do terminal, porém isso não garante ao usuário o recebimento do seu dinheiro de forma trocada, pois esta funcionalidade não é garantida pelo sistema atual, já que o programa contido nos Automatic Teller Machine (ATMs) tem preferência a notas de maior valor no momento do saque. Esta característica motiva o desenvolvimento do trabalho, pois apesar dos avanços tecnológicos, a funcionalidade de saque ainda precisa ser melhorada para melhor atender aos clientes.

1.2 OBJETIVO

O objetivo deste trabalho é projetar e desenvolver um sistema para os caixas eletrônicos que possibilite ao usuário escolher como receber seu dinheiro no momento do saque, tendo as opções de recebê-lo de forma inteira ou trocada, permitindo ao cliente uma maior autonomia e um atendimento personalizado ao utilizar a função de saque.

1.3 ORGANIZAÇÃO

O trabalho foi organizado em sete capítulos. O Capítulo 2 apresenta o histórico com uma visão geral sobre a informatização do sistema bancário no mundo e a evolução dos caixas eletrônicos. O Capítulo 3 trata da fundamentação teórica

(17)

que terá uma parte destinada a falar sobre os ATMs e seus componentes e características. No Capítulo 4 o sistema proposto, enquanto que o Capítulo 5 trata da implementação do sistema proposto. O Capítulo 6 apresenta os resultados e testes do software realizados e, finalmente, o Capítulo 7 apresenta as conclusões juntamente com as indicações para os trabalhos futuros.

(18)

2.

Histórico – Uma visão geral sobre a informatização do

sistema bancário no mundo e a evolução dos caixas

eletrônicos

Ao longo da história os caixas eletrônicos passaram por muitas transformações desde do seu surgimento em 27 de junho de 1967. Criado por John Shepherd-Barron, o primeiro terminal ATM foi instalado em uma agência do Barclays em Enfield, norte de Londres. O seu inventor buscou como base de inspiração uma máquina de chocolate que retornava as barras após a inserção de uma moeda, pois notou a importância de ter acesso ao seu dinheiro em qualquer parte do mundo e isso possibilitou um avanço para a sociedade da época e também para as de hoje.

Ao serem incorporados pelas agências bancárias os terminais eletrônicos buscaram trazer aos usuários uma comodidade maior para as suas movimentações bancárias e isso exigiu por parte dos bancos um investimento em melhoramento, segurança dos equipamentos e capacitação dos funcionários, todos esses investimentos foram pensados no intuito de proporcionar um melhor atendimento aos clientes, com qualidade e eficiência.

O processo de automação dos bancos no Brasil se deu no começo dos anos 60, com a participação de alguns profissionais, homens e mulheres que ajudaram na instalação dos primeiros computadores, os 1401 da IBM com memória de 8 KB. Estes contribuíram para avanços no setor bancário, trazendo inicialmente a participação de fornecedores de tecnologias e levando-as para as empresas como Bolsa de Valores, Tecnologia Bancária S.A. (Tecban) e Banco de Comércio e Indústria do Estado de São Paulo (COMIND).

Segundo Alcir Augustinho Calliari [4, p.26] este período da informatização do país pode ser considerado como uma das melhores experiências tecnológicas já vividas e tendo o seu reconhecimento em todo o mundo.

Para que o país obtivesse sucesso neste processo tecnológico, o mesmo teve que superar o período de inflação e a restrição ao uso de equipamentos estrangeiros, a chamada Lei da Informática, esta medida obrigou os trabalhadores da área tecnológica a trabalharem em busca de outras alternativas a essa proibição.

(19)

No ano de 1967 foi adquirido um novo computador o IBM/360 com uma memória de 64 Kilobytes, tendo a capacidade de processar mais de um programa em paralelo e sendo para a época uma grande revolução.

Segundo Antônio Geraldo Toledo de Moraes [4, p.30] a aquisição deste novo computador com um poder maior de processamento foi um grande avanço tecnológico.

Em 1970 chegam aos principais bancos brasileiros o primeiro sistema de autoatendimento que era acionado por um cartão perfurado, onde continha um valor fixo utilizado pela máquina. O cartão ficava retido na agência e o cliente só podia buscá-lo no dia seguinte.

Os períodos compreendidos pelas décadas de 80 e 90 passaram por uma fase de transição tecnológica.

Assim como relata Alcir Augustinho Calliari [4, p.29]:

A inflação endêmica no Brasil obrigava os bancos a trabalhar otimizando o

1floating. Essa realidade exigiu sistemas velozes, que nos obrigaram a olhar

com muita racionalidade e retirar das rotinas tudo o que não fosse essencial. Acho que isso foi fundamental porque nos deu ideia do que era realmente importante dentro do sistema. Além disso, simplificamos controles e métodos de trabalho, desenvolvendo tecnologia.

O banco eletrônico ganha mais destaque e isto implicou para o setor um maior investimento em segurança dos equipamentos. Outro fator relevante foi a migração do software básico usado anteriormente pelas agências, por um sistema operacional mais sofisticado da Microsoft, o Windows NT.

Como relata Wilson Ruggiero [4, p.220] apesar dessa operação ter sido bastante arriscada, possibilitou a abertura das portas da automação bancária. Dando um salto significativo para as novas tecnologias.

O banco eletrônico ganha mais destaque, isto ocasionou para o setor um maior investimento em segurança dos equipamentos. Levando ao surgimento do sistema de home banking que aproxima o banco dos seus clientes. O objetivo do home banking era possibilitar maior transação e comodidade, porém ele possuía um desafio na parte tecnológica, o seu funcionamento se dava pelo uso do disquete. O cliente para fazer uso do serviço recebia da agência um disquete e o inseria em seu computador para acessar as informações.

1 Floating recursos transitoriamente mantidos ou depositados em bancos, geralmente sem

(20)

No final dos anos 90, com a chegada da internet o home banking começa a perder força, ocasionando a sua extinção, em seu lugar surge o internet banking.

Segundo Antônio Carlos Barbosa de Oliveira [4, p.232] no internet banking o seu acesso é feito por uma senha escolhida pelo cliente.

O sistema bancário brasileiro inovou ao integrar todos os canais de acesso do usuário com o banco em um sistema online. Isto permitiu que um único programa fosse comum ao da agência, do internet banking e das redes de caixas eletrônicos. As transações feitas em qualquer um desses canais podem ser acompanhadas, pelos clientes em tempo real.

No início dos anos 2000 o aparelho celular é visto pelos bancos como uma nova alternativa, para oferecer os seus serviços aos clientes. Para que isso fosse possível um aplicativo foi desenvolvido o mobile banking. Este dispositivo começou a oferecer os primeiros serviços em 2001, mas no início foi preciso superar as dificuldades, pois não era possível realizar transações pelo celular, devido ao fato das informações não trafegarem usando criptografia, sendo apenas permitindo realizar consultas.

Em 2002 é implementado o novo Sistema de Pagamento Brasileiro (SPB) em substituição ao antigo Sistema de Pagamento Brasileiro, que traziam riscos para o setor financeiro devido a sua forma de utilização. Para que isso fosse corrigido foi elaborado esse novo sistema, as transferências passaram a ser realizadas de maneira on-line, os lançamentos são feitos agora de forma imediata. Está reestruturação permitiu o fortalecimento do sistema financeiro brasileiro.

Segundo Joaquim Kavakama [4, p.292] está iniciativa tomada pelo Brasil gerou uma surpresa, pois o país conseguiu elaborar um modelo de cobrança eletrônica, tendo a colaboração de todos os bancos praticamente.

A padronização do boleto de pagamento facilitou as operações internacionais representando um grande avanço e com isto houve um grande aumento em sua utilização que foi registrada entre os anos de 2006 e 2009. Ocasionando grandes gastos para produzi-lo, então em 2009 com o amadurecimento do sistema financeiro nacional é criado o Débito Direto Autorizado (DDA) para solucionar este problema, pois o boleto passa a ser eletrônico e não mais de papel, estando disponível seu pagamento pela internet.

(21)

Em 2010 foi realizado o Fórum “Visão de Futuro” que projetou o comportamento da população nos próximos cinco, dez e vinte anos em relação aos avanços tecnológicos bancários, tendo como base os conceitos da Geração Y, a mobilidade, o papel do Brasil no Cenário Mundial, a regulamentação, a segurança e biometria, a sustentabilidade e as tecnologias disruptivas. Esses temas têm como objetivo conhecer melhor o perfil das pessoas e assim prever suas reações mediante aos avanços tecnológicos.

Segundo uma pesquisa realizada [3, p.9] pela FEBRABAN em 2014, atualmente o internet banking e o mobile banking são os canais que mais recebem investimentos dos bancos, os dois juntos já totalizam 52% do total das movimentações.

Uma justificativa para o significativo crescimento de 209% do mobile banking foi o resultado de um relatório [5] divulgado no inicio de 2015 pela renomada agência global de pesquisa wearesocial, essa pesquisa versa sobre o uso da internet no Brasil, ela apontou que o número de conexões moveis 276 milhões, superou o número de habitantes do país 204 milhões.

(22)

3.

Fundamentação Teórica

Neste capítulo será descrito o caixa eletrônico com suas características internas e externas.

3.1

Caixas Eletrônicos

Segundo Aguiar [6, p.2] o caixa eletrônico também conhecido por terminal de autoatendimento bancário é um dispositivo eletrônico e ao mesmo tempo mecânico, o Multimedia Machine Dispenser (MMD), constituído pelos seguintes componentes operacionais: Dispensador, Presenter e a Placa Controladora. Ele realizar operações bancárias de uma maneira mais independente sem a presença de um atendente.

3.1.1

Componentes dos caixas eletrônicos

Os sistemas de autoatendimento têm como funções básicas proporcionar a realização de saque, depósito, transferência de dinheiro e em alguns casos realizar pagamento de contas.

Para um melhor entendimento das funcionalidades deste sistema, será descrito abaixo um pouco a respeito sobre os dispositivos eletrônicos que o compõe e na figura 1 a especificação desses dispositivos.

(23)

Figura 1: Dispensador de notas [7].

A figura 1 apresenta a localização dos dispositivos que compõe o dispensador de notas.

O Presenter é uma interface, um módulo operacional apresentado ao usuário formado por subcomponentes. Através dele é realizado a operação de saque das cédulas já contadas. Para que possa se efetivar esta operação ele faz uso dos seguintes subcomponentes: Cam, Push Plate, Shutter, Sensores e Correias.  A Cam desempenha a função de empilhar, transportar e entregar as notas contadas. O controlamento desse componente mecânico se faz eletronicamente;

 O Push Plate é o caminho por onde as cédulas passam até o local de saída;

 O Shutter é a porta por onde as notas são liberadas quando ele é acionado;

 No subcomponente sensor encontramos dois sensores um que controla a passagem das cédulas no Presenter e um segundo sensor é acionado para checar se as notas foram entregues;

(24)

 As Correias, assim também como o Push Plate e o Cam fazem em conjunto o transporte das cédulas até o usuário.

Ao solicitar as notas em um caixa eletrônico no momento do saque o Dispensador é acionado, liberando as cédulas já contadas. Para o seu funcionamento é usado os seguintes componentes físicos: Alimentador, Correias, Cassetes e Sensores.

 Alimentador - É o canal físico responsável pelo encaixe do cassete;

 Correias - Transportam as notas até o Presenter;

Cassete - É um compartimento que tem como função receber e armazenar as cédulas a serem entregues ao cliente;

Sensores - Analisam e fazem a contagem das notas dos cassetes. E em cada alimentador há um sensor.

Placa Controladora é uma placa de circuito impresso que controla o funcionamento do Multimedia Machine Dispenser (MMD). Ela se encontra conectada a um microcomputador instalado no interior da ATM. Sua função é realizar o controle dos caixas eletrônicos. A figura 2 abaixo mostra um modelo de uma Placa Controladora.

(25)

3.1.2

Características apresentadas pelos ATMs bancários

As características dos terminais de autoatendimento são determinadas de acordo com as funções que ele desempenha. Algumas delas comuns entre eles são aqui apresentadas.

 Painel Frontal - É todo o corpo do caixa eletrônico, confeccionado sem separações ou partes destacadas;

 Gabinete - Nele se encontram os componentes eletrônicos;

 Cofre - Compartimento responsável no armazenamento das notas;  Microcomputador - Local do processamento das informações,

permitindo a interação com o usuário.

3.1.3

Características externas dos ATMs

Todo caixa eletrônico possui em seu exterior alguns componentes que auxiliam os clientes no momento do uso, como também na segurança dos mesmos. A figura 3 exibe uma imagem de um caixa eletrônico de uma agência do banco Itaú. Seus componentes foram respectivamente numerados. Segue abaixo seus nomes e as suas características:

(26)

Figura 3: Caixa eletrônico.

1. Câmeras frontais - São usadas para auxiliar na identificação dos usuários no momento do uso;

2. Monitor de vídeo - Tem como função apresentar ao cliente as opções básicas de saque, depósito e transferência mais também podendo possuir outras funcionalidades exibidas em sua tela;

3. Dispensador de envelopes - É o compartimento responsável pelo fornecimento dos envelopes para depósito;

4. Saída de comprovantes - É uma pequena abertura destinada a emitir todo os comprovantes gerados pelo ATM, tendo como exemplo o extrato;

5. Leitor biométrico - Mecanismo que permite a identificação do usuário por comando de voz, impressão digital e leitura da íris, esse método de identificação é aplicado para identificar o usuário e permitir o acesso as funcionalidades do caixa eletrônico;

(27)

6. Botões de volumes - Localizados próximo ao conector para fones de ouvido, eles permitem ajustar o volume, se adequando as necessidades do usuário e do ambiente;

7. Leitor de cartão - Local reservado para realizar a leitura dos dados pessoais contidos no cartão magnético. Após essa leitura o caixa eletrônico é liberado para uso;

8. Conector para fones de ouvido - Equipamento que permite ao cliente conectar o fone de ouvido de uso pessoal ao ATM e assim ouvir as instruções sonoramente. E segundo a ABNT- NBR 15250:2005, ele precisa seguir o modelo P2(mini-jack); 9. Leitor de código de barras - Mecanismo que efetua a leitura do código de barras, possibilitando o pagamento de contas;

10. Receptor de envelopes - Fenda por onde é feito o depósito, por meio de um envelope contendo as notas ou cheque;

11. Teclado personal identification number (PIN) - É o conjunto formado por dois teclados um numérico que contém apenas números e um outro de funções que possui as opções de cancelar, corrigir e entrar;

12. Dispensador de notas - Local destinado ao recebimento das notas no instante do saque.

(28)

4

Sistema Proposto

Desenvolver um sistema que distribua as notas no momento do saque de forma homogênea e que também permita ao cliente optar por receber seu dinheiro inteiro, ou seja, utilizando a menor quantidade de notas ou então trocado.

.

4 1 Definição do Problema

Alguns caixas eletrônicos atuais, possuem um sistema de distribuição de notas que dá preferência as cédulas de maior valor no instante do saque, mesmo tendo a opção de notas de menor valor apresentada em seu visor. Esse método de escolha empregado pelos sistemas de autoatendimento nem sempre atende de maneira satisfatória quem faz uso do mesmo. A partir dessa análise foi notado um problema, os terminais de autoatendimento não permitem que os clientes façam a escolha de como receber essas notas. Será descrita no decorrer deste capítulo, uma possível solução para o problema em aberto.

4.2

Especificação

Nesta parte do capítulo são abordados em detalhes uma apresentação do sistema, com os requisitos funcionais e não funcionais, requisitos dos usuários, diagramas de caso de uso, descrições dos casos de uso, diagrama de atividade, modelagem de dados, diagrama de classes, diagrama de sequência e projeto da interface do software.

4.2.1

Requisitos

Nesta seção os requisitos do sistema são apresentados, tendo os funcionais que descrevem os serviços e funcionalidades do sistema, documentando as reações do sistema. Os não funcionais que tratam das restrições do sistema e suas propriedades.

4.2.1.1 Requisitos Funcionais

(29)

 O sistema terá que retornar ao usuário as opções de como ele pode sacar as notas;

 O sistema deverá ser capaz de retornar as notas conforme a solicitação do usuário.

 O sistema deverá permitir a escolha das notas de forma dinâmica a distribuição das cédulas dentro dos slots para liberação.

4.2.1.2 Requisitos Não-Funcionais

É demostrado a seguir os requisitos não-funcionais do sistema:  O sistema deverá ser desenvolvimento pela linguagem PHP;

 O computador no qual o sistema será instalado deverá possuir um navegador instalado.

 O computador no qual o sistema será instalado deverá possuir no mínimo 3 Gb de memória RAM.

4.2.1.3 Requisitos dos Usuários

As principais características que os usuários esperam que o sistema apresente:

Quanto ao Equipamento ATM – Dar ao cliente a alternativa de escolher como receber seu dinheiro.

Quanto ao Banco – Atender as necessidades do cliente, na utilização do caixa eletrônico.

Quanto ao Cliente – Possuir o poder da escolha no instante do saque.

4.2.2

Diagramas de Caso de Uso

A representação do diagrama e descrição do caso de uso é feita através da modelagem de requisitos que descrevem as funcionalidades do sistema de maneira a tornar sua compreensão mais simples.

A utilização dos casos de uso tem como característica descrever a interação dos usuários com o sistema, dando um panorama externo do sistema, mostrando a sua funcionalidade e comportamento para o cliente. Um outro ponto

(30)

importante em relação aos casos de uso é que eles descrevem o que o sistema deve realizar, porém não é especificado os caminhos necessários para alcançar o seu objetivo final.

Para a representação gráfica do caso de uso é necessário a implementação de um diagrama que exibirá os seus atores, os casos de uso, os relacionamentos e a fronteira do sistema.

 Atores do sistema: Cliente e Técnico de suporte.  Casos de Uso: Realizar saque, abastecer ATM.

4.2.3

Descrições dos Casos de Uso

Pela inserção do cartão magnético no caixa eletrônico e após o seu reconhecimento pela máquina, o acesso é liberado e o cliente pode realizar as operações básicas de saque, depósito e transferência.

1. Saque – Para executar esta operação o usuário terá que possuir uma conta na agência bancária e também ter previamente digitado um valor de saque e ter um saldo suficiente.

2. Abastecer ATM – Para realizar esta operação o técnico de suporte terá que prestar serviços para o banco e possuir autorização para isso.

3.

Diagrama de Casos de Uso:

Figura 4: Diagrama

de casos de uso.

(31)

NOME

Realizar saque

DESCRIÇÃO SUCINTA

Cliente realiza um ou mais saques no caixa eletrônico. ATORES

1. Cliente PRÉ-CONDIÇÕES

1. Ser cliente do banco com conta ativa FLUXO BÁSICO

1. O cliente insere o cartão no leitor óptico do caixa eletrônico;

2. O terminal eletrônico exibe em seu monitor uma mensagem solicitando a digitação da senha pelo usuário;

3. O cliente digita a senha; 4. O terminal autentica o cliente.

5. O terminal de autoatendimento apresenta um menu de opções; 6. O usuário escolhe a opção “saque”;

7. O usuário digita o valor do saque;

8. O caixa eletrônico verifica se o cliente possui saldo suficiente.

9. O caixa eletrônico exibe as opções de saque trocado ou não trocado de acordo com a disponibilidade de notas;

10. O cliente seleciona a sua alternativa;

11. O dispensador faz as contagens das notas; 12. O dinheiro é liberado para o cliente;

13. O cliente retira as notas do terminal;

14. No visor da tela é mostrado se o cliente deseja realizar mais alguma operação;

15. A operação é encerrada. FLUXOS ALTERNATIVOS

(A1) Alternativa ao Passo 3 – Cliente digita a senha errada

1.a O sistema exibe mensagem relatando que senha foi digitada incorretamente;

1.b O sistema solicita novamente a senha do cliente; 1.c O cliente digita novamente a senha.

(32)

1.d O sistema retorna ao Passo 3.

(A2) Alternativa ao Passo 8 – Cliente não possui saldo

2.a O sistema exibe mensagem relatando que não há saldo suficiente. 2.b O sistema retorna ao Passo 14.

(A3) Alternativa ao Passo 7 – Cliente seleciona valor não múltiplo das notas do caixa.

3.a O sistema exibe mensagem informando valor inválido.

3.b O sistema pede para o cliente digitar um novo valor múltiplo das notas disponíveis.

3.c O sistema retorna ao Passo 7.

(A4) Alternativa ao Passo 7 – Cliente seleciona valor acima do limite contido no caixa eletrônico.

4.a O sistema exibe mensagem informando valor superior ao limite do caixa eletrônico.

4.b O sistema solicita a digitação de um novo valor. 4.c O sistema retorna ao Passo 7.

(A5) Alternativa ao Passo 7 – Cliente seleciona valor acima do seu limite diário de operação.

5.a O sistema exibe mensagem informando valor superior ao limite diário de operação.

5.b O sistema solicita a digitação de um novo valor. 5.c O sistema retorna ao Passo 7.

Abastecer ATM – caso de uso NOME

Abastecer ATM

DESCRIÇÃO SUCINTA Abastecer o caixa eletrônico ATORES

1. Técnico de suporte PRÉ-CONDIÇÕES

1. Ser funcionário do banco e qualificado para o serviço FLUXO BÁSICO

(33)

1. O técnico de suporte se identifica para ter acesso ao caixa eletrônico

2. O terminal autentica o Técnico de suporte.

3. O terminal de autoatendimento apresenta um menu de opções. 4. O técnico de suporte escolhe a opção “abastecer”.

5. O terminal eletrônico libera o acesso aos seus slots. 6. O técnico de suporte abastece os slots.

7. O terminal exibe a quantidades de notas inseridas.

8. No visor da tela é mostrado se o técnico de suporte deseja realizar mais alguma operação.

9. A operação é encerrada pelo Técnico de suporte. FLUXO ALTERNATIVOS

(A1) Alternativa ao Passo 4 – Há notas suficientes no caixa. 1.a O sistema informa que não é preciso abastecer.

1.b O sistema retorna ao Passo 9.

(A2) Alternativa ao Passo 4 – Não há notas suficientes no caixa. 2.a O sistema informa que é preciso reabastecer o caixa. 2.b O sistema exibe as notas que estão em falta.

3.c O sistema retorna ao Passo 5.

4.2.4

Diagrama de atividade

O diagrama de atividade é uma representação gráfica, usada para modelar de forma dinâmica um sistema. Para a criação desse diagrama faz -se uso dos nós, dos vértices, das ações, dos objetos e dos fluxos.

A seguir apresento os diagramas para os casos de uso realizar saque e abastecer ATM respectivamente.

(34)

Figura 5: Diagrama de atividade do caso de uso realizar saque.

Na figura 5 são demostrados as ações efetuadas pelo cliente para possuir acesso ao sistema de autoatendimento.

(35)

Figura 6: Diagrama de atividade do caso de uso abastecer ATM.

Na figura 6 o técnico de suporte segue essas ações para executar a operação de abastecimento do caixa eletrônico.

4.2.5

Modelagem de Dados

A modelagem de dados é a representação abstrata de um modelo que descreve toda a informação contida no sistema. Essas informações são necessárias para a execução do sistema.

4.2.5.1 Diagrama de Classes

O diagrama de classes é a representação da interação das classes entre si, onde servem de molde para a criação dos objetos. Na figura 7 temos a representação dessa interação mostrando as classes do sistema.

(36)

Figura 7: Diagrama de classes.

4.2.5.2 Diagrama de Sequência

O diagrama de sequência é criado em um sistema para realizar a interação entre os objetos. A seguir nas figuras 8 e 9 são apresentadas essas interações entre os objetos do caso de uso realizar saque e o abastecer ATM respectivamente.

(37)

Figura 9: Diagrama de sequência do caso de uso abastecer ATM.

4.2.6

Projeto da Interface do Software

Nesta parte do trabalho será apresentado um esboço do projeto da interface onde a cada interação realizada pelo cliente no caixa eletrônico são exibidos os passos a serem seguidos e um deles será digitar o valor de saque e a forma de recebimento como demostrado nas figuras 10 e 11.

(38)

Na figura 10, uma tela será aberta no visor do terminal pedindo para o usuário a digitação do valor desejado de saque. Já na figura 11 é exibida uma segunda tela quando o cliente clicar no botão confirmar, essa tela pedirá para o usuário escolher a forma de recebimento do dinheiro.

Figura 11: Esboço da tela para escolha do valor.

Ao se clicar em qualquer uma das opções de um dos botões as notas são distribuídas conforme a escolha e assim recebidas pelo cliente.

Nas figuras 12 e 13 a seguir é apresentado um esboço de como será a representação do sistema funcionando, quando for preciso realizar o abastecimento dos slot.

(39)

Figura 12: Esboço do abastecimento dos slots.

(40)

4.3

Algoritmo Proposto

Nesta parte do trabalho é demostrado a descrição do algoritmo proposto. O algoritmo analisará os valores das notas, de acordo com a escolha das opções inteiro ou trocado. Após essa análise as notas são selecionadas e retornadas ao cliente até somar o total do saque como detalhado no algoritmo “ATM_Bancário” na tabela 1 a seguir e na tabela 2 é exibido a tabela de equivalência preenchida, que representa como o valor de uma determinada nota pode ser distribuído dentre as cédulas existentes e assim possibilitar a combinação das mesmas para formar o valor do saque.

Tabela 1: Representação do algoritmo "ATM_Bancário".

Algoritmo "ATM_Bancário"

Procedimento verifica_valor_multiplo(saque:real) //Verifica se o valor digitado é múltiplo dos valores armazenados no terminal. Saque parâmetro de entrada/saída.

Var

multiplo:booleano

vet_indice_multiplo[]:inteiro //Receberá os índices dos slots com os tipos de notas armazenadas”.

inicio

multiplo<-falso

Enquanto(multiplo=falso)faça Para i<-0 ate 5 faça

Se(saque/vet_notas[i] =0) E (vet_quant[i]<>0) faça multiplo<-verdadeiro

Pare Fim Se

Se(multiplo=falso) faça //Informa ao cliente os valores múltiplos que podem ser solicitados.

(41)

escreva(“Valor digitado não é multiplo das notas armazenadas neste terminal!”)

Para j:=0 ate 5 faça

se (vet_quant[j]<>0) faça vet_indice_multiplo[j]:=j Fim Se

Fim Para

escreva(“Digite um novo valor múltiplo de:”, escreve_vetor(vet_indice_multiplo) leia (saque) Fim Se Fim Enquanto Fim_Procedimento var

vet_notas[1..6]: inteiro // Receberá as notas de 2, 5, 10, 20, 50 e 100.

vet_quant[1..6]: inteiro // Receberá a quantidade de notas nos slots.

vet_quant_temp_inteiro[1..6]: inteiro // Receberá temporariamente o decremento da quantidade de notas inteiras consumida nos slots.

vet_quant_temp_trocado[1..6]: inteiro// Receberá temporariamente o decremento da quantidade de notas trocadas consumidas nos slots.

vet_indice_inteiro[]: inteiro // Receberá os índices das notas que serão usadas na “opção inteiro”.

vet_indice_trocado[]: inteiro // Receberá os índices das notas que serão usadas na “opção trocado”.

Vet_quant_notas_trocadas[]:inteiro // Receberá a quantidade de notas que serão consumidas para cada indice de “vet_indice_trocado”.

(42)

tamanho,l,m,n,i, j, soma: inteiro

limiteMinimo , limiteDiário, saque, saldo: real multiplo:booleano

inicio

tabela<-Dados//Tabela recebendo os valores de equivalência de inteiro para trocado. Nesta, o “m” representa o valor inteiro a ser trocado e o “n” a nota selecionada para fazer a substituição. Observar referência [1] no fim do algoritmo.

soma:<-0 j<-0 i<-6

vet_notas[]<-{ 2, 5, 10, 20, 50 e 100}

vet_quant[]<-{100,100,100,100,100,100} //Partindo do princípio que cada o slot foi abastecido com 100 cédulas.

limiteMinimo<-3 limiteDiário<-1400

vet_quant_temp_inteiro<- vet_Quant vet_quant_temp_trocado<-vet_Quant multiplo<-falso

escreva(“Digite o valor do saque!”) leia (saque)

verifica_valor_multiplo(saque)

Enquanto (saque > saldo) OU (saque > limiteDiário) OU (saque<=limiteMinimo) Faça

Se (saque > saldo) faça

(43)

escreva(“Digite um novo valor!”) leia (saque)

verifica_valor_multiplo(saque) Fim Se

Se (saque > limiteDiário) Faça

escreva(“Valor acima do limite diário!”) escreva(“Digite um novo valor!”)

leia (saque)

verifica_valor_multiplo(saque) Fim Se;

Se (saque <= limiteMinimo) faça

escreva(“Valor abaixo do limite mínimo”) escreva(“Digite um novo valor!”)

leia (saque)

verifica_valor_multiplo(saque) Fim Se;

Fim Enquanto

Enquanto (soma <> saque) Faça //Esse enquanto faz a seleção da quantidade mínima possível de notas para atender ao saque.”Opção inteiro”

Enquanto(vet_quant_temp_inteiro[i]=0)faça //Verifica se o slot pode fornecer cédulas

i<- i – 1 Fim Enquanto

soma <-soma + vet_Notas[i]

(44)

vet_indice_inteiro[ j ]:= i j<-j+1

Se ( soma > saque) Faça

soma<-soma – vet_notas[i] vet_quant_temp_inteiro[i]:=vet_quant_temp_inteiro[[i]+1 i<- i – 1 j<- j – 1 Fim Se Fim Enquanto

escreva(“Opções de notas inteiro:”, escreve_vetor(vet_indice_inteiro[j])) // “escreve_vetor()” Função qualquer escreve o conteúdo do vetor.

//Abaixo segue o código que será utilizado para quebra a opção inteiro em opção trocado.

Tamanho<- size(vet_indice_inteiro) // “size” Função qualquer que retorne o tamanho do vetor

Para l<- 0 ate tamanho faça m<- vet_indice_inteiro[l]

n<-pegar_indice_do_proxima_maior_valor_do_vetor(vet_Quant)

//Função que salva o índice do slot com maior quantidade de cédulas, pois terá prioridade para ser esvaziado.

vet_indice_trocado[l]<-n

Vet_quant_notas_trocadas[l]<-tabela[m,n]// vet_quant_notas_trocadas recebe a quantidade de notas do tipo “n” que serão consumidas.

vet_quant_temp_trocado[n]<- vet_quant_temp_trocado[[n]-Vet_quant_notas_trocadas[l]

(45)

n<-pegar_indice_do_proximo_maior_valor_do_vetor(vet_Quant) Vet_quant_notas_trocadas[l]<-tabela[m,n] vet_indice_trocado[l]<-n Fim Enquanto Fim Para

escreva(“Opções de notas trocadas:”,

escreve_vetor(vet_indice_trocado,vet_quant_notas_trocadas)) leia (opção)

Se (opção = “inteiro”) Faça

escreva(“Saque realizado com sucesso!”) escreva(“Retire as notas no dispensador!”) vet_quant<- vet_Quant_temp_inteiro Senão

escreva(“Saque realizado com sucesso!”) escreva(“Retire as notas no dispensador!”) vet_quant<- Vet_quant_notas_trocadas Fim Se

(46)

Tabela 2: Tabela de quebrar inteiro em trocado. 0 1 2 3 4 5 0 1 - - - - -1 - 1 - - - -2 5 2 1 - - -3 10 4 2 1 - -4 25 10 5 - 1 -5 50 20 10 5 2 1

A primeira linha da tabela que se encontra numerada de 0 a 5, retrata o valor das notas vigentes do nosso país que no total são seis. Já na primeira coluna da tabela que também está enumerada de 0 a 5, representa a quantidade que determinada cédula pode ser dividida pelo valor das notas e assim descobrir por exemplo quais notas podem ser utilizadas para formar o valor de cinquenta reais.

(47)

5

Implementação do sistema

A base para a implementação do sistema consistiu na utilização do algoritmo “ATM_Bancário” exibido na tabela 1, este foi adaptado para a linguagem de programação PHP, o que propiciou o desenvolvimento de um sistema real que será instalado no ATM para resolver o problema da escolha das notas pelo terminal. A característica principal do PHP está no fato de ser gratuito e com código aberto, embutido no HTML e também por ser multiplataforma.

5 .1 Visão Geral do Software

O algoritmo base do sistema, apresentado no capítulo 4, funciona escolhendo as notas no instante do saque. Ele será aplicado no sistema de autoatendimento da seguinte forma: Cada nota será avaliada pelo algoritmo que fará uma busca das notas armazenadas no terminal, analisando sempre duas variáveis principais: o valor da nota e a quantidade de notas deste valor naquele instante.

O software efetuará também duas análises, uma para quando a alternativa for por dinheiro trocado e a outra quando for por dinheiro inteiro, exibindo as opções de cédulas disponíveis para os dois casos. Ele efetuará uma comparação entre todas as notas, a fim de encontra a melhor forma de dispor o dinheiro ao cliente atendendo à sua necessidade, executando a saída das notas no dispensador de forma homogênea dando prioridade ao consumo das notas em maior quantidade no terminal afim que os 2slots se esvaziem ao mesmo tempo, facilitando assim o seu

reabastecimento.

5.2 Ambiente de Desenvolvimento e Linguagens Utilizadas

Nesta etapa do trabalho será descrito o ambiente de desenvolvimento e a linguagem utilizada no desenvolvimento do sistema.

2

(48)

 PHP - É uma linguagem que permite a interação como o usuário por meio de formulários, links dentre outros. O código PHP é executado no servidor. Essa linguagem também interage com bancos de dados e aplicações contidas no servidor, sem que o código-fonte seja exibido, o que facilita quando há uso de senhas ou alguma informação sigilosa. Uma das usas principais características mais importantes é sua capacidade de suportar um grande número de banco de dados.

 Apache - É o responsável por processar solicitações dos protocolos da internet, sendo compatível com diversas plataformas, tem uma excelente performance e segurança. O apache é um software livre possui seu código-fonte aberto, permitindo que qualquer pessoa que tenha algum conhecimento da linguagem possa alterá-lo e assim contribuir em sua melhoria.

 EasyPHP – É um programa que reúne um pacote contendo o apache, o MySQL (Structured Query Language) que é o banco de dados e o php. Sua instalação no sistema operacional é bem simples podendo ser feita por uma chave USB (Universal Serial Bus), cartão de memória, ou uma unidade flash USB.

5.2.1 Aplicação da linguagem PHP

O PHP por ser uma linguagem voltada para a web e pela sua facilidade de interação com o mundo da internet, permite um maior dinamismo e praticidade das páginas estáticas dos websites, ela também permite a criação de scripts do lado servidor na web.

Esta linguagem será aplicada na construção do software para criar a interface gráfica que será exibida aos usuários no visor dos sistemas de autoatendimento e na criação do código do sistema.

5.3 Interface gráfica

A seguir são exibidas as interfaces que foram desenvolvidas para o sistema. Na figura 14 é exibida a primeira interface que será apresentada ao

(49)

usuário, com as opções de cédulas disponíveis, a opção de saque e a digitação do valor desejado para o saque.

Figura 14: Tela para informar o valor do saque.

A tela da figura 15 a seguir, será aberta após o cliente confirmar o valor do saque. As alternativas expostas nesta figura concedem ao usuário optar pela quantidade de cédulas a receber.

(50)

A figura 16 a seguir representa a tela onde o técnico de suporte faz a seleção do slot que deseja abastecer.

Figura 16: Tela de seleção das notas para abastecimento.

A figura 17 a seguir exibe a tela onde o técnico de suporte digita a quantidade de notas que serão inseridas no respectivo slot.

Figura 17: Tela para informar a quantidade de cédulas que serão inseridas no slot.

Na figura 18 a seguir mostra a tela onde o técnico de suporte tem que optar por continuar abastecendo o sistema ou sair.

(51)

Figura 18: Tela de conclusão ou não no processo de abastecimento.

5.3 Limitações

O sistema desenvolvido se concentra no calculo das notas trocadas, a identificação do usuário e a autenticação da senha não é o foco deste trabalho. Para que seu funcionamento ocorra adequadamente, assumimos que todas as etapas anteriores foram cumpridas até a chegada onde será solicitado a escolha do saque.

(52)

6.

Resultados e Testes do Software

Nesta etapa do trabalho será exibido os testes e os resultados obtidos que demostram as funcionalidades das implementações. A fase de teste será demostrada através de 3 experimentos.

6.1 Experimento 01

Inicialmente os testes realizados foram para avaliar o caso de sucesso para a opção de saque inteiro e trocado.

6.1.1 Cenário 01

O cenário 01 apresenta a ocorrência de um saque, onde o valor digitado é válido, múltiplo das notas disponíveis, tendo saldo suficiente e o valor fornecido está dentro do limite diário. A figura 19 exibe a tela inicial, onde é mostrado as opções de cédulas disponíveis e o espaço para digitação do valor do saque.

Figura 19: Tela inicial.

A figura 20 a seguir exibe o valor do saque digitado pelo usuário, apresentando logo abaixo as possibilidades de distribuição das cédulas tanto para a opção inteiro, quanto para a opção trocado.

(53)

A figura 21 exibe a tela de conclusão do saque com a seleção da “opção inteiro”. Após efetuar a transação, o cliente clica em “ok” e será redirecionado para a tela inicial, apresentada na figura 19.

Figura 21: Tela indicando que a opção inteiro foi escolhida.

Tanto para o caso de “opção inteiro”, quanto para a “opção trocado”, os passos e as telas são análogos até a figura 20, onde o cliente pode selecionar a “opção trocado”. Uma vez selecionada esta, a figura 22 apresenta a tela de conclusão de saque “opção trocado”.

Figura 22: Tela para o valor trocado.

6.1.2 Resultado 01

O resultado obtido para esse primeiro cenário foi o funcionamento correto do sistema atendendo a escolha do usuário em obter seu dinheiro da forma inteira ou trocada.

6.3 Experimento 02

O experimento 02 tratará do caso em que o usuário não possui saldo suficiente para realizar a operação de saque.

(54)

6.3.2 Cenário 02

O cenário 02 retrata uma situação em que o valor fornecido é válido, múltiplo das cédulas disponíveis, dentro do limite diário e limite mínimo, porém o cliente não possui saldo suficiente para efetuar o saque. A figura 23 a seguir exibe a tela inicial com o valor.

Figura 23: Tela para o valor acima do saldo.

A figura 24 a seguir apresenta a tela com a mensagem informativa em relação ao saldo do cliente e ao clicar em “ok” o cliente retorna a tela inicial figura 19.

Figura 24: Tela informando a condição do saldo.

6.3.2 Resultado 02

O resultado encontrado para esse segundo experimento foi a impossibilidade da realização do saque devido ao fato de não possuir saldo suficiente na conta.

6.3 Experimento 03

O experimento 03 tratará do caso em que o usuário digitou um valor não múltiplo para realizar a operação de saque.

(55)

O cenário 03 trata a ocorrência de um valor digitado não múltiplo das cédulas disponíveis. A figura 25 a seguir exibe a tela inicial com o valor fornecido de R$11,00 como sendo o saque escolhido pelo cliente, caso todos os slots estejam cheios teoricamente essa quantia poderia ser sacada através de uma combinação das notas de R$2,00 e R$5,00, porém na metodologia aplicada no desenvolvimento deste trabalho, todos os possíveis valores não múltiplos das notas armazenadas no terminal são considerados inválidos. Uma solução para este novo problema será abordada no capítulo 7.

Figura 25: Tela exibindo um valor não múltiplo.

A figura 26 a seguir mostra a tela em que o cliente é alertado por uma mensagem que o valor não é múltiplo. Ao clicar em “ok” o usuário é redirecionado para a tela inicial figura 19.

Figura 26: Tela de mensagem pedindo um novo valor.

6.3.2 Resultado 03

O resultado encontrado para esse terceiro experimento foi a verificação da ocorrência de um valor não múltiplo digitado pelo cliente que ocasionou o

(56)

acontecimento de um caso de exceção e a não conclusão do saque. O sistema atende ao que foi proposto não permitindo a realização de um saque com valor inválido.

(57)

7. CONCLUSÕES E TRABALHOS FUTUROS

A informatização do sistema bancário no mundo conforme relatado no capítulo 2 desse trabalho, nos mostra a importância dos investimentos nesta área, seus benefícios para a sociedade e como cada etapa de seu desenvolvimento foi conquistado até a chegada das conquistas atuais.

O estudo aqui exposto para solucionar o problema da distribuição das notas de alguns caixas eletrônicos através da criação do sistema ATM, trás em si uma possibilidade de melhor atendimento aos usuários dos sistemas de autoatendimento e grandes benefícios para os mesmos.

No desenvolvimento desse projeto foi possível aprender um pouco mais sobre o funcionamento dos ATMs, conhecer seus principais componentes internos e externos e também conhecer seus avanços ao longo dos anos. O trabalho em si também permitiu outros aprendizados e um deles que pode ser citado foi o conhecimento na área de engenharia de software, esse aprendizado foi de grande valia para a criação do projeto.

Para trabalhos futuros busca-se um melhor aperfeiçoamento do sistema com o objetivo de aprofundamento do trabalho, pretendendo otimizar o algoritmo apresentado de forma que ele possa prover ao cliente a possibilidade de digitar e consequentemente sacar qualquer valor dentro dos limites reais impostos pelo sistema, inclusive valores impares, se todos os slots estiverem cheios o algoritmo efetuará uma combinação válida que permitirá ao cliente o saque dos valores desejados. Trata-se de um problema complexo de análise combinatória que pode ser modelado utilizando por base o algoritmo proposto neste trabalho.

(58)

8. REFERÊNCIAS BIBLIOGRÁFICAS

1. SCHMITZ, A; MAHL, A. A Reestruturação e automação bancária versus emprego: Um balanço ao final dos anos 90. Teor. Evid. Econ. Passo Fundo, v.8, n.15, p.67-82, novembro 2000.

2. FILHO, B. A. C.; PIRES, P. J.; HERNANDEZ, J. M. C. TAM aplicado aos automated teller machines. Revista de Administração e Inovação. v. 4, n. 1, p. 40-56, 2007.

3. PESQUISA FEBRABAN DE TECNOLOGIA BANCÁRIA 2014. São Paulo: FEBRABAN, setembro 2013.

4. FONSECA, C. E. C.; MEIRELLES, F. S.; DINIZ, E. H. Tecnologia Bancária no Brasil: Uma história de conquistas, uma visão de futuro. 1. ed. São Paulo: FGVRAE, abril 2010.

5. AGÊNCIA global de pesquisa wearesocial. Finsbury Square, 2015. Disponível em:<http://wearesocial.com/uk/special-reports/digital-social-mobile-worldwide-2015>. Acesso em 30 março 2016.

6. CONGRESSO IBEROAMERICANO DE SENSORES. 5. 2006. Montevideu.Detecção e Diagnóstico Preditivos de Falhas em Equipamentos de Automação Bancária Utilizando Redes de Sensores. Montevideu: Meio digital, setembro 2006.

7. EMPRESA datameg automação. Sergipe, 2016. Disponível em : <http://www.acertenamidia.com.br/datameg/conteudo.php?

tipo=Noticias&acao=servicos&filtro=Unico&codnoticia=268&data=false> Acesso em 08 abril 2016.

8. EMPRESA nautilus hyosung. Seul, 2011. Disponível em : <http://www.nhatm.com/front/product/partsList.do?id=NH1800SE> Acesso em 08 abril 2016.

(59)

9. APÊNDICE A – Código Fonte

vetores.php

Esta página contém a maioria dos arrays e variáveis utilizadas na implementação do sistema.

<?php

//Esta página contém a maioria absoluta dos arrays e variáveis utilizadas na imple-mentação do sistema. Simula um banco de dados para o sistema.

$vet_notas=array(2,5,10,20,50,100);//Array que armazena os tipos de notas contidas no terminal.

$vet_quant=array(200,100,100,100,100,100);//Array que armazena a quantidade das respectivas notas contidas no terminal.

$vet_indice_inteiro=array();//Array que armazena os indices de notas($vet_notas) que serão consumidas para a "opção inteiro".

$vet_indice_trocado=array();//Array que armazena os indices de notas($vet_notas) que serão consumidas para a "opção trocado".

$vet_quant_temp_inteiro=$vet_quant;//Array cópia temporária de $vet_quant. $vet_quant_temp_trocado=$vet_quant;//Array cópia temporária de $vet_quant. $vet_quant_notas_trocadas=array();//Array que armazena a quantidade de notas trocadas que serão consumidas para a "opção trocado".

$vet_soma_quant_notas_trocadas=array();//Array que armazena a quantidade total de notas consumidas para cada valor de "$vet_indice_trocado[$i]".

$tamanho=0;//Descrição no código. $trocado="";//Descrição no código. $soma=0;//Descrição no código. $j=0;//Descrição no código. $i=0;//Descrição no código. $k=1;//Descrição no código. $conte=1;//Descrição no código.

$v="";//Esta variável receberá uma concatenação da quantidade e valor(2x100) consumidas para cada índice "$vet_indice_inteiro".

$m=0;//Descrição no código. $n=0;//Descrição no código.

(60)

$limite_minimo=3;//Limite mínimo para saque. $limite_diario=1000;//Limite máximo para saque. $saldo=1000;//Saldo do cliente.

$multiplo=false;//Descrição no código. $excedeu=false;//Descrição no código.

$valida_pega_maior=true;//Descrição no código. $sair=false;//Descrição no código.

$tabela[0][0]=1;//Implementação da tabela(Tabela 2: Tabela de quebrar inteiro em trocado.) apresentada na seção 4.3 Algoritmo Proposto deste trabalho.

$tabela[1][1]=1; $tabela[2][0]=5; $tabela[2][1]=2; $tabela[2][2]=1; $tabela[3][0]=10; $tabela[3][1]=4; $tabela[3][2]=2; $tabela[3][3]=1; $tabela[4][0]=25; $tabela[4][1]=10; $tabela[4][2]=5; $tabela[4][4]=1; $tabela[5][0]=50; $tabela[5][1]=20; $tabela[5][2]=10; $tabela[5][3]=5; $tabela[5][4]=2; $tabela[5][5]=1; ?> multiplo.php

Esta página armazena a função “verifica_multiplo” que verifica se o valor do saque digitado pelo cliente é múltiplo das notas contidas no terminal no instante da solicitação.

(61)

<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php function verifica_multiplo($notas,$quant_notas,&$valor_saque)

//Função que verifica se o valor digitado pelo cliente é multiplo das notas armazenadas no terminal.

{

$multiplo=false;

while($multiplo==false) {

for ($i=0; $i<=5; $i++) { if(($valor_saque%$notas[$i]==0)&&($quant_notas[$i]!=0)) { $multiplo=true; break; } } if($multiplo==false) {

echo '<form action=index.php method=POST>

<table border = 2 bgcolor="#66FFFF" SIZE=15 ALIGN=MIDDLE WIDTH=300><tr>

<TD ALIGN=MIDDLE WIDTH=200>

(62)

armazenadas neste terminal!</p>

<p>Clique em OK e digite um valor multiplo das notas disponivies!</p>

<input type="submit" name="OK" value="OK" STYLE="color:#FFFFFF; background-color:#FF0000"/> </tr></td> </table> </form>'; //exit; exit; } } } ?> </body> </html> pega_maior.php

Esta página armazena a função “pega_maior” que captura o índice do maior elemento dentro do array de armazena a quantidade de notas no terminal.

<?php function pega_maior($quant_notas,$m) { global $valida_pega_maior; $inicio=0; $fim=0; $maior=0; $valor=0;

(63)

if($m==5) { $inicio=2; $fim=4; $valor=$quant_notas[$inicio]; } if($m==4) { $inicio=1; $fim=2; $valor=$quant_notas[$inicio]; } if($m==3) { $inicio=0; $fim=3; $valor=$quant_notas[$inicio]; } if($m==2) { $inicio=0; $fim=2; $valor=$quant_notas[$inicio]; } if($m==1) {

(64)

$inicio=1; $fim=1; $valor=$quant_notas[$inicio]; } if($m==0) { $inicio=0; $fim=0; $valor=$quant_notas[$inicio]; }

for ($i=$inicio; $i<=$fim; $i++) { if(($quant_notas[$i])>=($valor)) { $maior=$i; $valor=$quant_notas[$i]; } }

//Este if impede que a opção trocado seja exibida na tela, se o slot selecionado pelo algoritmo, estiver vazio.

if($quant_notas[$maior]==0) { $valida_pega_maior=false; } return $maior; }

(65)

?>

index.php

Esta é a primeira página apresentada pelo sistema, nela serão exibidas as opções de notas disponíveis, caso o terminal não esteja vazio, e o campo onde o cliente deve digitar um possível valor de saque.

<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title></title> </head> <body>

<form action="principal.php" method="POST">

<table border = 2 bgcolor="#66FFFF" SIZE=15 ALIGN=MIDDLE WIDTH=300><tr> <TD ALIGN=MIDDLE WIDTH=200>

<center><br>Op&ccedil&atildeo Saque:<br></center> <center><br>Notas Dispon&iacuteveis:

<?php

//Este formulário é a tela inicial do sistema. Nele o cliente irá digitar o valor do saque que deseja.

$vazio=true; $cont=0;

include 'vetores.php';

for ($i=0; $i<=5; $i++)

//Verifica e exibe na tela quais os slots podem fornecer cédulas(notas disponiveis)

{

if(($vet_quant[$i])!=0) {

(66)

echo " R$",$vet_notas[$vet_nota_disponivel[$i]]; $vazio=false;

} }

if($vazio==false)

//Este if omite os botões confirmar e cancela, no caso de terminal vazio. {

$a='<br></center>

<br>valor <input type="text" name="valor"/><br>

<center><br> <input name="Cancelar" type="submit" value="Cancelar" STYLE="color:#FFFFFF; background-color:#FF0000"/>

<input type="submit" name ="Confirmar" value="Confirmar" STYLE="color:#FFFFFF; background-color:#006400"/></center>

</form>'; echo $a; exit; }

for ($i=0; $i<=5; $i++)

//Verifica se todos os slots estão vazios(notas disponiveis=vazio) {

if(empty($vet_quant[$i])) {

$cont++;

//Em uma implementação real, neste ponto rodará um script que solicitará um abastecimento para o respectivo slot.

}

if($cont==5) {

(67)

echo "<p>Dirija-se a outro terminal!</p>"; } } ?> </tr></td> </table> </body> </html> principal.php

Esta página recebe o valor do saque digitado pelo cliente no index.php, verifica e valida esse valor. Se o valor for válido é apresentado na tela dois botões que exibem respectivamente as opções de notas inteiras e trocadas. Caso contrário, serão mostradas as telas de exceções direcionadas para cada situação exposta no código. <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php

//Este formulário é o nucleo do sistema, ele efetua a maioria do processamento. $saque = $_POST['valor'];

include 'vetores.php'; include 'multiplo.php'; include 'pega_maior.php';

(68)

if ($saque=="") //Autoexplicativo

{

echo '<form action=index.php method=POST>

<table border = 2 bgcolor="#66FFFF" SIZE=15 ALIGN=MIDDLE WIDTH=300><tr>

<TD ALIGN=MIDDLE WIDTH=200>

<p>Digite um valor para efetuar o saque!</p> <p>Clique em OK e para reiniciar a transa&ccedil&atildeo!</p>

<input type="submit" name="OK" value="OK" STYLE="color:#FFFFFF; background-color:#FF0000"/> </tr></td> </table> </form>'; exit; } if ($saque<=0) //Autoexplicativo {

echo '<form action=index.php method=POST>

<table border = 2 bgcolor="#66FFFF" SIZE=15 ALIGN=MIDDLE WIDTH=300><tr>

<TD ALIGN=MIDDLE WIDTH=200> <p>Valor invalido!</p>

<p>Digite um valor valido!</p>

<input type="submit" name="OK" value="OK" STYLE="color:#FFFFFF; background-color:#FF0000"/>

</tr></td> </table>

(69)

</form>'; exit; } if ($saque<=$limite_minimo) //Autoexplicativo {

echo '<form action=index.php method=POST>

<table border = 2 bgcolor="#66FFFF" SIZE=15 ALIGN=MIDDLE WIDTH=300><tr>

<TD ALIGN=MIDDLE WIDTH=200> <p>Valor abaixo do limite minimo!</p>

<p>Digite um novo valor acima do limite minimo!! </p>

<input type="submit" name="OK" value="OK" STYLE="color:#FFFFFF; background-color:#FF0000"/> </tr></td> </table> </form>'; exit; }

verifica_multiplo($vet_notas,$vet_quant,$saque);//Função que verifica se o valor digitado pelo cliente é multiplo das notas armazenadas no terminal.

while(($saque>$saldo) || ($saque>$limite_diario) || ($saque<$limite_minimo)) //Este enquanto verifica a validade do valor do saque.

{

if ($saque>$limite_diario) //Autoexplicativo

{

Referências

Documentos relacionados

5 “A Teoria Pura do Direito é uma teoria do Direito positivo – do Direito positivo em geral, não de uma ordem jurídica especial” (KELSEN, Teoria pura do direito, p..

A tem á tica dos jornais mudou com o progresso social e é cada vez maior a variação de assuntos con- sumidos pelo homem, o que conduz também à especialização dos jor- nais,

O score de Framingham que estima o risco absoluto de um indivíduo desenvolver em dez anos DAC primária, clinicamente manifesta, utiliza variáveis clínicas e laboratoriais

Excluindo as operações de Santos, os demais terminais da Ultracargo apresentaram EBITDA de R$ 15 milhões, redução de 30% e 40% em relação ao 4T14 e ao 3T15,

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

Apart from the two nuclear energy companies that were strongly hit by the earthquake effects (the Tokyo and Tohoku electric power companies), the remaining nine recorded a

Este era um estágio para o qual tinha grandes expetativas, não só pelo interesse que desenvolvi ao longo do curso pelas especialidades cirúrgicas por onde

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,