Análise e Projeto de Sistemas

   Professor(a) : Willians


Regras de negócio da casa bancária

RN-01: Os usuários desse sistema são aposentados, pensionistas ou funcionários públicos.


RN-02:Para aprovar o emprestimo deve fazer o cálculo de 30% do salário líquido (já descontando as parcelas de outros financiamentos).


RN-03:Calcular o valor máximo do empréstimo aceitável de forma que o valor da prestação seja igual ou inferior aos 30% calculados acima. Usando as fórmulas de PMT e consultando as tabelas financeiras para uma taxa pré-fixada..


1- Requisitos Funcionais



Nome Descrição
RF1 Cadastro do Cliente O cadastro deve possuir as seguintes informações: CPF, salário líquido que consta no contra cheque, nome do cliente e seu tipo (funcionário público, aposentado ou pensionista).
RF2 Opções de mundanças O sistema deve ter as opções de inserir, apagar, alterar e recuperar os dados dos clientes.
RF3 Salário Líquido O sistema deve fazer o cálculo de 30% do salário líquido informado (já descontando as parcelas de outros financiamentos).
RF4 Valor Máximo do Empréstimo Calcular o valor máximo do empréstimo aceitável de forma que o valor da prestação seja igual ou inferior aos 30% calculados acima. Usando as fórmulas de PMT e consultando as tabelas financeiras para uma taxa pré-fixada.
RF5 Possibilidades de Empréstimos O software deverá mostrar várias possibilidades de empréstimos com vários prazos distintos.
RF6 Valor Ultrapassado O sistema não poderá realizar a simulação do financiamento, caso o valor da parcela ultrapassar o valor da margem permitido(tantos digitos ou valor R$).




Descrição das Classes

Classe Empréstimo

Descrição: Manipula os dados do empréstimo.
Atributos

tipo Atributo Descrição
Double pmt Recebe o valor da parcela.
Double si Recebe o saldo inicial do empréstimo no período.
Double sf Recebe o saldo final do empréstimo no período.
Double amort Double amort Recebe a amortização referente ao empréstimo
Int periodo Recebe o período da parcela do emprestimo
Double juros Recebe o valor dos juros do empréstimo no período

Métodos

Get para ptm, si, sf, amort, período, juros.


Classe Cliente

Descrição: Manipula os dados do cliente.
Atributos

tipo Atributo Descrição
String nome Recebe o nome do cliente.
String cpf Recebe o cpf do cliente
String tipo Recebe o tipo do cliente(Aposentado, pensionista, funcionário público).
Double salarioLiqui Recebe o salário líquido do cliente.

Métodos

Get para nome, cpf, tipo, salarioLiqui.


Classe TelaContratar

Descrição: Faz fronteira com o usuário no CAD002, permite fazer contrato de empréstimo informando o valor desejado, o período e a taxa, mostra o resultado do empréstimo de acordo com tabela Sac e Price.
Atributos

tipo Atributo Descrição
Double pv Recebe o valor do empréstimo que o usuário quer.
Double i Recebe a taxa que o cliente digitar
Int n Recebe a quantidade de meses que o cliente quer.
ArrayList arrEmp Array do tipo double, guarda os empréstimos já feitos pelo cliente.
JButton bntInserir Botão inserir da tela.
JButton bntCalcular Botão calcular da tela.
JButton btnPrice Botão Price.
JButton btnSac Botão Sac.
CAD002_Ctrl objCtrl Instancia da classe CAD002_Ctrl, usada para validar o cpf, validar o empréstimo, imprimir mensagem de erro e preencher as tabelas.

Métodos

• btnInserirActionPerformed(java.awt.event.ActionEvent : evt) : void Pega o clique do usuário no botão e adiciona o valor do empréstimo digitado no array arrEmp.

• btnCalcularActionPerformed(java.awt.event.ActionEvent : evt) : void Pega o clique do usuário no botão, verifica se os campos da tela estão preenchidos, se não informar CPF e se os campos correspondentes ao pv, i e n estiverem vazios mostra mensagem ‘Campos vazios’, se os campos estiverem preenchidos chama métodos da classe CAD002_Ctrl para validar números, usuário e depois calcular sac e price, no fim imprime a classe TelaResultados com os resultados.


Classe CAD002_Ctrl

Descrição:Controla o fluxo de dados no CAD002 do sistema.
Atributos

tipo Atributo Descrição
ArrayList arrSac Guarda objetos do tipo Emprestimo.
ArrayList arrPrice Guarda objetos do tipo Emprestimo.
Double salario Recebe o salario do usuário caso ele exista no banco de dados.

Métodos

• calcular(): Recebe por parâmetro o valor do pv, i e n informados pelo usuário, cria instancia da classe CalculoSac_Price, passa os valores recebidos para a cria instancia da classe CalculoSac_Price, pega o array sac dela e passa para seu array sac e pega o array price dela e passa para seu array price.
• validaUser(): Recebe cpf do cliente por parâmetro, cria instancia da classe Cliente_BD e chama o método listar da classe, compara o cpf informado com o atributo cpf dos objetos cliente do array dessa instancia, se algum for igual, retorna true e adiciona o valor do atributo salarioLiqui desse objeto no atributo da salario da classe CAD002_Ctrl, se não retorna false.
• msnError(): Imprime mensagem ‘CPF invalido’.
• validaEmp(): Recebe por parâmetro os atributos arrEmp da classe TelaContratar, subtrai do salário informado todos os valores do arrEmp, faz o cálculo de 30% do resultado dessa subtração e compara com o atributo pmt do primeiro objeto do arrSac e arrPrice, se o atributo pmt for menor ou igual, permite retorna true, se não, retorna false e imprime mensagem ‘Valor acima do limite, tente um valor menor’.
• validaNumero(): Recebe o que o usuário digitou por parâmetro, cria instancia da classe ValidaNumero, se o valor não for constiduido apenas de números ou se número estiver fora do padrão retorna false, se for um número ou se estiver dentro do padrão retorna true.
• enviaDados(): Receve o pv e o i digitados pelo usuário, cria instancia da classe FormaNumero, chama seu método formatar passando seus arrays sac e price, envia os arrays da classe FormaNumeroe, arrSac, arrPrice, o pv e o i recebidos para a TelaResultados, mostra a TelaResultados e chama seus métodos para listar price e sac.


Classe Cliente_BD

Descrição:Faz fronteira com entre o banco de dados e o software quando é necessário inserir clientes no banco de dados, alterar, deletar ou listar clientes do banco de dados.
Atributos

tipo Atributo Descrição
Conexao_BD objCon É usado para conectar no banco de dados.
ArrayList arrCliente Guarda objetos do tipo cliente.

Métodos

• inserir(): Recebe o nome, tipo, salario liquido e CPF do cliente, verifica se o arquivo de conexão existe, se não mostra tela de configuração de conexão com o banco de dados para o usuário, se sim, usa instancia da classe Conexao_BD para se conectar do banco de dados chama método validar e se retornar false insere os dados recebidos na tabela cliente, pois não tem cpf igaul.
• listar(): Verifica se o arquivo de conexão existe, se não mostra tela de configuração de conexão com o banco de dados para o usuário, se sim, Lista todos os dados da tabela cliente do banco, criando um objeto cliente com os dados e inserindo dentro do arrCliente, e retorna seu array list.
• deletar(): Rebe por parâmetro o CPF do cliente que será excluído, verifica se o arquivo de conexão existe, se não mostra tela de configuração de conexão com o banco de dados para o usuário, se sim, usa instancia da classe Conexao_BD para se conectar do banco de dados, chama método validar e se retornar true exclui o cliente da tabela cliente onde o cpf é igual ao informado.
• alterar(): Rebe por parâmetro o nome, tipo, salario liquido e CPF do cliente que será alterado, verifica se o arquivo de conexão existe, se não mostra tela de configuração de conexão com o banco de dados para o usuário, se sim, usa instancia da classe Conexao_BD para se conectar no banco de dados chama método validar e se retornar true altera os dados do cliente da tabela cliente onde o cpf é igual ao informado. • validar(): Recebe o cpf por pametro, chama método listar, preenche o arry, e confere se o cpf já esta no array, se sim retorna true, se não retorna false.

Classe Conexão_BD

Descrição: Cria conexão entre a aplicação java e o banco de dados.
Atributos

tipo Atributo Descrição
ArrayList arrDados Guarda os dados usados para fazer a conexão com o banco de dados.

Métodos

• conectar(): Lê arquivo com os dados excolhidos para a conexão, cria instancia da classe Connection passando por parâmetro os dados do arquivo, e retorna a variável de conexão.
• verificaArquivo(): Recebe o nome do arquivo por parâmetro, verifica se o arquivo exite, se sim retorna true se não false.
• ler(): Recebe o nome do arquivo por parâmetro, le o o arquivo e guarda em uma Strings esse dado e o retorna essa String.
• escrever(): Recebe o nome do arquivo e o que sera gravado nele por parâmetro, e escreve nele o que foi passado.
• limpar(): Recebe o nome do arquivo que sera limpo por parâmetro e apaga seus dados.

Classe TelaGerenciarClientes

Descrição:Permite usuário inserir seus dados no sistema.
Referência de Classes:CAD001_Ctrl, Cliente_BD.
Atributos

tipo Atributo Descrição
jButton btnInserir Botão inserir.
jButton btnDeletar Botão deletar.
jButton btnAlterar Botão alterar.
jButton btnListar Botão listar.
DecimalFormat df Formata os salários do usuário.
Default val Instancia da classe DefaultTableModel, usada para preencher as tabelas sac e price.

Métodos

• btnInserirActionPerformed(java.awt.event.ActionEvent : evt) : void Captura ação do usuário ao clicar no botão, chama o método inserir da classe CAD001_Ctrl passando os dados informados pelo usuário por parâmetro.
• btnDeletarActionPerformed(java.awt.event.ActionEvent : evt) : void Captura ação do usuário ao clicar no botão, chama o método deletar da classe CAD001_Ctrl passando o CPF informado pelo usuário por parâmetro.
• btnAlterarActionPerformed(java.awt.event.ActionEvent : evt) : void Captura ação do usuário ao clicar no botão, chama o método alterar da classe CAD001_Ctrl passando o CPF informado pelo usuário por parâmetro.
• btnListarActionPerformed(java.awt.event.ActionEvent : evt) : void Captura ação do usuário ao clicar no botão, chama o método listar da classe CAD001_Ctrl.

Classe CAD001_Ctrl

Descrição:Controla o fluxo de dados no CAD001 do sistema.
Referência de Classes:Cliente_BD.
Atributos

tipo Atributo Descrição
ArrayList arrCliente Armazena objetos do tipo cliente.

Métodos

• inserir(): Recebe os dados informados pelo usuário por parâmetro, cria instancia da classe Cliente_BD, cria instancia da classe ValidaNumero, verifica se o numero está no formato correto ou se é um número, se sim chama seu método inserir de Cliente_BD passando os dados que recebeu por parâmetro.
• deletar(): Recebe por parâmetro o CPF do cliente que será excluído, cria instancia da classe Cliente_BD, e chama seu método deletar passando o CPF que recebeu por parâmetro.
• alterar():Recebe por parâmetro o CPF, nome, tipo e salarioLiqui do cliente que será excluído, cria instancia da classe Cliente_BD, cria instancia da classe ValidaNumero, verifica se o numero está no formato correto ou se é um número, se sim e chama seu método alterar passando os dados que recebeu por parâmetro.
• listar(): Chama método listar da classe Cliente_BD, recebe em seu array os objetos do arry de objetos Cliente dessa insatancia da classe Cliente_BD e lista os dados de seus objetos na tabela da tela.

Classe ValidaNumero

Descrição:Valida o número digitado pelo usuário.
Métodos

• validar(): Recebe por parâmetro uma string que sera validada, dizendo se é um número ou se é um número dentro do padrão, e retorna true para sim e false para não valido. Padrão: 000.000.000-00
• validarNum(): Recebe por parâmetro uma string que sera validada, dizendo se é um número , e retorna true para sim e false para não valido.

Classe FormaNumero

Descrição:Formata o número para ser impresso na tabela sac e price.
Atributos

tipo Atributo Descrição
ArrayList arrSacFormatado Guarda objetos da classe NumeroModelo, com os valores do sac formatados.
ArrayList arrPriceFormatado Guarda objetos da classe NumeroModelo, com os valores do Price formatados.

Métodos

• formatar(): Recebe por parâmetro os arrays com valores do sistema sac e price, formata no padrão 00,000.00, cria objetos NumeroModelo e guarda nos arrays arrSacFormatado e arrPriceFormatado

Classe NumeroModelo

Descrição:Manipula os dados do sistema price e sac formatados para serem impressos na tabela.
Atributos

tipo Atributo Descrição
String n Recebe o período da parcela.
String si Saldo inicial da parcela
String juros Juros da parcela.
String amort Amortização da parcela.
String pmt Valor da prestação na parcela.
String sf Saldo Final.

Métodos

• Método assessor get para todos os atributos da classe.

Classe TelaResultados

Descrição:Mostra o resultado do calculo de empréstimo do cliente, refaz o calculo com novo período.
Atributos

Tipo Atributo Descrição
ArrayList arrSacFormatado Recebe os dados do calculo do sac formatados pela classe FormaNumero ( Objetos do tipo NumeroModelo).
ArrayList arrPriceFormatado Recebe os dados do calculo do sistema price formatados pela classe FormaNumero ( Objetos do tipo NumeroModelo).
Double pv Recebe o valor desejado que foi informado pelo usuário.
Double i Recebe o juros que foi informado pelo usuário.
Int n Recebe o novo período que o usuário deseja.
ArrayList arrSac Recebe os cálculos da tabela sac da classe CAD002_Ctrl.
ArrayList arrPrice Recebe os cálculos da tabela price da classe CAD002_Ctrl.
jButton btnCalcular Botão calcular da tela.
jButton btnSac Botão sac da tela.
jButton btnPrice Botão price da tela.
DefaultTableModel val Instancia da classe DefaultTableModel, usada para preencher as tabelas sac e price.

Métodos

• listarDadosSac(): Lista os dados do array sac na tabela sac.
• listarDadosPrice(): Lista os dados do array price na tabela price.
• Métodos assessores Set para os quatro arrays, e para atributos pv e atributo i.
• btnCalcularActionPerformed(java.awt.event.ActionEvent : evt) : void : Captura clique do usuário no botão calcular, cria instancia da classe CAD004_Ctrl para chamar o método recalcular passando o pv e i já setados pela classe CAD002_Ctrl e o novo período de meses(n) digitado pelo usuário, e depois chama os métodos da classe corrente listarDadosSac e listarDadosPrice para listar os valores nas tabelas.
• btnSacActionPerformed(java.awt.event.ActionEvent : evt) : void : Captura clique do usuário no botão sac, limpa as tabelas da tela e mostra mensagem ‘Operação realizada com sucesso! Empréstimo contratado no sistema Sac.
• btnPriceActionPerformed(java.awt.event.ActionEvent : evt) : void : Captura clique do usuário no botão price, limpa as tabelas da tela e mostra mensagem ‘Operação realizada com sucesso! Empréstimo contratado no sistema Price.

Classe CAD004_Ctrl

Descrição:Refaz o calculo das parcelas e controla o fluxo de dados no caso de uso 4.
Referencia de classes: CAD002_Ctrl, usada para refazer o calculo.
Atributos

Tipo Atributo Descrição
CalculoSac_Price objCal Instancia da classe CalculoSac_Price que faz o calculo do price e sac.
ArrayList arrSac Armazena os dados do sistema sac recalculados.
ArrayList arrPrice Armazena os dados do sistema sac recalculados.
ArrayList arrFormSac Armazena os dados do sistema Sac formatados pela classe FormaNumero.
ArrayList arrFormPrice Armazena os dados do sistema price formatados pela classe FormaNumero

Métodos

• recalcular(): Recebe o pv, o i e n envia para a instancia da classe CalculoSac_Price que refaz o calculo e preenche os arrays arrSac e arrPrice, pega esses arrays já preenchidos, cria instancia da classe FormaNumero, chama método formatar passando o arrSac e arrPrice por parâmetro para esse método. Armazena os valores do arrSac e arrPrice da instancia da classe CalculoSac_Price nos seus arrays arrSac e arrPrice, e pega os arrays da classe FormaNumero e armazena em seus arrays arrFormSac arrFormSac.
• validar(): Cria instancia da classe ValidaNumero e chama seu método validar passando o novo período informado pelo usuário, se for verdadeiro retorna true e o método recalcular() é executado, se não, imprimi erro.
• validaEmp(): Recebe o valor limite do empréstimo da classe TelaResultados, compara com a primeira parcela do array Sac e Price, se o limite for maior ou igual retorna true, se não retorna false.
• erro(): Imprime mensagem O valor da parcela está acima do limite.

Classe CalculoSac_Price

Descrição:Responsavel por fazer os cálculos do sistema sac e price.
Atributos

Tipo Atributo Descrição
ArrayList arrSac Armazena objetos do tipo Emprestimo do algoritmo sac.
ArrayList arrPrice Armazena objetos do tipo Emprestimo do algoritmo price.

Métodos

• calculaPrice(): Recebe o valor dos atributos pv, i e n informados pelo usuário através de parâmetro, faz o calculo da tabela Price e vai preenchendo o arrPrice gerando objetos do tipo Emprestimo de acordo com a linha da tabela.
• calculaSac(): Recebe o valor dos atributos pv, i e n informados pelo usuário através de parâmetro, faz o calculo da tabela Sac e vai preenchendo o arrSac gerando objetos do tipo Emprestimo de acordo com a linha da tabela.

Casos de Uso

Cadastro do Cliente (DCU-CAD001)
Descrição: Permite inserir, alterar, deletar e listar clientes.
Usuários: De acordo com a RN-01.
Pré-condições: De acordo com a RN-01.
Tela Inserir
Fluxo principal

1- Usuário informa:
2- Nome
3- CPF
4- Salario liquido
5- E tipo (aposentado, pensionista, funcionário público).
6- Clica no botão cadastrar.

Fluxo alternativo

7- Se o usuário inserir um CPF que já existe, mostra mensagem de erro ‘CPF já existe!’.
8- Se inserir outros caracteres que não sejam números no campo salário líquido imprimira uma mensagem de erro ‘Por favor, digite somente numeros no formato 000.00’.
9- Se não informar todos os dados necessários para o cadastro será exibida a mensagem Informe todos os dados!
10- Se o usuário não tiver informado os dados para conexão com o banco de dados aparecerá a tela do caso de uso 005.

Tela Deletar
Fluxo principal

1- Digitar cpf do cliente que deseja excluir
2- Clicar no botão deletar

Fluxo alternativo

1-Se digitar um cpf que não existe imprimirá mensagem CPF não existe.
2-Se o usuário não tiver informado os dados para a conexão com o banco de dados, irá aparecer a tela do caso de uso 005.

Tela Alterar
Fluxo principal

1- Usuário informa:
2- CPF do cliente que deseja alterar
3- Novo nome
4- Novo salario liquido
5- Novo tipo (aposentado, pensionista, funcionário público).
6- Clica no botão alterar.

Fluxo alternativo

1- Se digitar um cpf que não existe imprimira mensagem CPF não existe.
2- Se inserir outros caracteres que não sejam números no campo salário líquido imprimira uma mensagem de erro ‘Por favor, digite somente numeros no formato 000.00’.
3-Se não informar todos os dados necessários para o cadastro será exibida a mensagem Informe todos os dados!
2- Se o usuário não tiver informado os dados para a conexão com o banco de dados, irá aparecer a tela do caso de uso 005.

Tela Listar
Fluxo principal

1- Clicar no botão listar

Fluxo Alternativo

1- Se o usuário não tiver informado os dados para a conexão com o banco de dados, irá aparecer a tela do caso de uso 005.

Regras de negócio: RN-01 do documento de regras de negócio do sistema.

Calcular empréstimo (DCU-CAD002)
Descrição: Permite usuário contratar empréstimo, no período, taxa de juros e quantidade de parcelas desejados. Onde também informa o valor das parcelas de outros empréstimos já contratados.
Usuários: De acordo com a RN-01.
Pré-condições: Estar cadastrado no sistema, com nome, CPF, tipo e salário líquido.
Tela
Fluxo principal

1- Usuário informa
2- CPF
3- Valor do empréstimo
4- Período, que é a quantidade de meses que deseja parcelar
5- Taxa de juros para o tipo de cliente
6- Informa o valor da parcela de um empréstimo anterior caso possua
7- Clica no botão inserir
8- Repete passos 6 e 7 caso possua mais de um empréstimo ou mais de uma parcela.
9- Clica no botão calcular
10- Abri a tela do caso de uso 4 com os resultados do empréstimo a partir dos dados informados pelo usuário.

Fluxo alternativo

1-Caso o usuário não preencha os campos aparecerá mensagem ‘Os campos da tela estão vazios’
2-Se o usuário informar um CPF que não existe aparecerá mensagem CPF invalido.
3-Se o usuário digitar palavras ou caracteres especiais em campos destinados a valores
imprimirá mensagem ‘Digite somente números no formato aceito pelo programa’.
4- Se o usuário não tiver informado os dados para a conexão com o banco de dados, irá aparecer a tela do caso de uso 005.

Regras de negócio: RN-03, RN-02 e RN-01 do documento de regras de negócio do sistema.

Tela de Menu (DCU-CAD003)
Descrição: Permite o usuário alterar a conexão com o banco de dados, contratar empréstimos, cadastra, listar, alterar e excluir clientes.
Usuários: De acordo com a RN-01 do documento de regras de negocio.
Pré-condições: De acordo com a RN-01 do documento de regras de negocio.
Tela
Fluxo principal

1- Usuário seleciona uma das opções do menu

Fluxo alternativo

1- Usuário selecionar:
2- Botão de desligar
3- Opção Desenvolvedores.
4- Aparecerá uma janela com os nomes dos desenvolvedores do software.
5- Selecionar Menu.
6- Selecionar Configurar conexão.

Tela Configurar

7- Irá abrir a tela Configurar conexão (DCU-CAD005) com o banco de dados.

Tela Conexão
Fluxo Principal(DCU-CAD005)

8- Informar nome do banco de dados.
9- Nome do usuário do banco de dados.
10- Senha
11- IP do host onde se encontra o banco de dados
12- Porta de conexão
13- Clique em Salvar.

Fluxo Alternativo(DUC-CAD005)

1- Se o usuário não informar todos os dados/não preencher todos os campos irá aparecer uma mensagem: “Informe todos os dados que foram pedidos!!!”

Resultados Sac e Price (DCU-CAD004)
Descrição: Mostra para o usuário os valores das parcelas do empréstimo solicitado, o valor total e permite ele visualizar o empréstimo em outra quantidade de parcelas.
Usuários: De acordo com a RN-01.
Pré-condições:Ter tido o empréstimo aprovado pelo sistema.
Tela
Fluxo principal

1- Clicar no botão contratar da tabela price.
2- Aparece mensagem ‘Operação finalizada com sucesso! Empréstimo contratado no sistema Price’.
3- Clicar no botão contratar da tabela sac.
4- Aparece mensagem ‘Operação finalizada com sucesso! Empréstimo contratado no sistema Sac’.

Fluxo alternativo

1- Digitar novo período desejado para o empréstimo.
2- Clicar no botão calcular.

3- Imprime nas tabelas sac e price os valores recalculados do mesmo empréstimo.

4-Se o usuário digitar letars ou caracteres especiais no campo de novo período aparece mensagem ‘Por favor, digite somente números’.
5-Se o usuário clicar no botão calcular com o campo novo período vazio aparece mensagem Campo vazio!!
6-Se o usuário digitar um numero de meses no novo período que resulte em parcelas maiores que o limite de 30% calculado, mostra mensagem O valor da parcela está acima do limite.

Regras de negócio: RN-03 do documento de regras de negócio do sistema.

Diagramas

Diagrama De Caso de Uso
Diagrama de Classe: CAD001
Diagrama de Classe: CAD002
Diagrama de Classe: CAD004
Diagrama de Classe: CalculoSac_Price
Diagrama de Classe: Fronteira_BD
Diagrama de Classe: Cliente
Diagrama de Classe: Emprestimo
Escopo de Classe: Classes_Apoio
Escopo de Classe: CAD001
Escopo de Classe: CAD002
Escopo de Classe: CAD004
Diagrama de Atividade: AlgoritmoPrice
Diagrama de Atividade: AlgoritmoSac
Diagrama de Sequência: CAD001
Diagrama de Sequência: CAD002
Diagrama de Sequência: CAD004
Tutorial 1: Preparando o ambiente para utilização do software:
infoVeja  
Download do Software: Casa Bancária
cloudDownload do Software