├── Utils.java ├── Pessoa.java ├── Conta.java └── AgenciaBancaria.java /Utils.java: -------------------------------------------------------------------------------- 1 | package utils; 2 | 3 | import java.text.DecimalFormat; 4 | import java.text.NumberFormat; 5 | import java.text.SimpleDateFormat; 6 | import java.util.Date; 7 | 8 | public class Utils { 9 | 10 | static NumberFormat formatandoNumeros = new DecimalFormat("R$ #,##0.00"); 11 | static SimpleDateFormat formatandoData = new SimpleDateFormat("dd/MM/yyyy"); 12 | 13 | public static String dateToString(Date data) { 14 | return Utils.formatandoData.format(data); 15 | } 16 | 17 | public static String doubleToString(Double valor) { 18 | return Utils.formatandoNumeros.format(valor); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /Pessoa.java: -------------------------------------------------------------------------------- 1 | package model; 2 | 3 | import java.util.Date; 4 | 5 | import utils.Utils; 6 | 7 | public class Pessoa { 8 | 9 | private static int counter = 1; 10 | 11 | private int numeroPessoa ; 12 | private String name; 13 | private String cpf; 14 | private String email; 15 | private Date accountCreationDate; 16 | 17 | public Pessoa() { } 18 | 19 | public Pessoa(String name, String cpf, String email) { 20 | this.numeroPessoa = Pessoa.counter; 21 | this.name = name; 22 | this.cpf = cpf; 23 | this.email = email; 24 | this.accountCreationDate = new Date(); 25 | Pessoa.counter += 1; 26 | } 27 | 28 | public int getNumeroPessoa() { 29 | return this.numeroPessoa; 30 | } 31 | 32 | public String getName() { 33 | return name; 34 | } 35 | public void setName(String name) { 36 | this.name = name; 37 | } 38 | public String getCpf() { 39 | return cpf; 40 | } 41 | public void setCpf(String cpf) { 42 | this.cpf = cpf; 43 | } 44 | public String getEmail() { 45 | return email; 46 | } 47 | public void setEmail(String email) { 48 | this.email = email; 49 | } 50 | public Date getAccountCreationDate() { 51 | return this.accountCreationDate; 52 | } 53 | 54 | public String toString() { 55 | return "\nName: " + this.getName() + 56 | "\nCPF: " + this.getCpf() + 57 | "\nEmail: " + this.getEmail() + 58 | "\nAccount Creation Date: " + Utils.dateToString(this.getAccountCreationDate()); 59 | } 60 | 61 | 62 | } -------------------------------------------------------------------------------- /Conta.java: -------------------------------------------------------------------------------- 1 | package model; 2 | 3 | import utils.Utils; 4 | 5 | public class Conta { 6 | 7 | private static int accountCounter = 1; 8 | 9 | private int numeroConta; 10 | private Pessoa pessoa; 11 | private Double saldo = 0.0; 12 | 13 | 14 | public Conta(Pessoa pessoa) { 15 | this.numeroConta = Conta.accountCounter; 16 | this.pessoa = pessoa; 17 | this.updateSaldo(); 18 | Conta.accountCounter += 1; 19 | } 20 | 21 | 22 | public int getNumeroConta() { 23 | return numeroConta; 24 | } 25 | public Pessoa getClient() { 26 | return pessoa; 27 | } 28 | public void setClient(Pessoa pessoa) { 29 | this.pessoa = pessoa; 30 | } 31 | public Double getSaldo() { 32 | return saldo; 33 | } 34 | public void setSaldo(Double saldo) { 35 | this.saldo = saldo; 36 | } 37 | 38 | private void updateSaldo() { 39 | this.saldo = this.getSaldo(); 40 | } 41 | 42 | public String toString() { 43 | 44 | return "\nBank account: " + this.getNumeroConta() + 45 | "\nCliente: " + this.pessoa.getName() + 46 | "\nCPF: " + this.pessoa.getCpf() + 47 | "\nEmail: " + this.pessoa.getEmail() + 48 | "\nSaldo: " + Utils.doubleToString(this.getSaldo()) + 49 | "\n" ; 50 | } 51 | 52 | public void depositar(Double valor) { 53 | if(valor > 0) { 54 | setSaldo(getSaldo() + valor); 55 | //this.saldo = this.getSaldo() + valor; 56 | System.out.println("Seu depósito foi realizado com sucesso!"); 57 | }else { 58 | System.out.println("Não foi possível realizar o depósito!"); 59 | } 60 | } 61 | 62 | public void sacar(Double valor) { 63 | if(valor > 0 && this.getSaldo() >= valor) { 64 | setSaldo(getSaldo() - valor); 65 | System.out.println("Saque realizado com sucesso!"); 66 | }else { 67 | System.out.println("Não foi possível realizar o saque!"); 68 | } 69 | } 70 | 71 | public void transferencia(Conta contaParaDeposito, Double valor) { 72 | if(valor > 0 && this.getSaldo() >= valor) { 73 | setSaldo(getSaldo() - valor); 74 | //this.saldo = this.getSaldo() - valor; 75 | contaParaDeposito.saldo = contaParaDeposito.getSaldo() + valor; 76 | System.out.println("Transferência realizada com sucesso!"); 77 | }else { 78 | System.out.println("Não foi possível realizar a tranferência"); 79 | } 80 | 81 | } 82 | 83 | } -------------------------------------------------------------------------------- /AgenciaBancaria.java: -------------------------------------------------------------------------------- 1 | 2 | package main; 3 | 4 | import java.util.ArrayList; 5 | import java.util.Scanner; 6 | import model.Pessoa; 7 | import model.Conta; 8 | 9 | public class AgenciaBancaria { 10 | 11 | static Scanner input = new Scanner(System.in); 12 | static ArrayList contasBancarias; 13 | 14 | public static void main(String[] args) { 15 | contasBancarias = new ArrayList(); 16 | operacoes(); 17 | } 18 | 19 | public static void operacoes() { 20 | 21 | System.out.println("------------------------------------------------------"); 22 | System.out.println("-------------Bem vindos a nossa Agência---------------"); 23 | System.out.println("------------------------------------------------------"); 24 | System.out.println("***** Selecione uma operação que deseja realizar *****"); 25 | System.out.println("------------------------------------------------------"); 26 | System.out.println("| Opção 1 - Criar conta |"); 27 | System.out.println("| Opção 2 - Depositar |"); 28 | System.out.println("| Opção 3 - Sacar |"); 29 | System.out.println("| Opção 4 - Transferir |"); 30 | System.out.println("| Opção 5 - Listar |"); 31 | System.out.println("| Opção 6 - Sair |"); 32 | 33 | int operacao = input.nextInt();; 34 | 35 | switch (operacao) { 36 | case 1: 37 | criarConta(); 38 | break; 39 | 40 | case 2: 41 | depositar(); 42 | break; 43 | 44 | case 3: 45 | sacar(); 46 | break; 47 | 48 | case 4: 49 | transferir(); 50 | break; 51 | 52 | case 5: 53 | listarContas(); 54 | break; 55 | 56 | case 6: 57 | System.out.println("Flw é nóis!"); 58 | System.exit(0); // para o sistema 59 | 60 | default: 61 | System.out.println("Opção inválida!"); 62 | operacoes(); 63 | break; 64 | } 65 | } 66 | 67 | public static void criarConta() { 68 | //System.out.println("Você está criando uma conta\n"); 69 | 70 | System.out.println("\nNome: "); 71 | String nome = input.next(); 72 | 73 | System.out.println("\nCPF: "); 74 | String cpf = input.next(); 75 | 76 | System.out.println("Email: "); 77 | String email = input.next(); 78 | 79 | Pessoa cliente = new Pessoa(nome, cpf, email); 80 | 81 | Conta conta = new Conta(cliente); 82 | 83 | contasBancarias.add(conta); 84 | System.out.println("--- Sua conta foi criada com sucesso! ---"); 85 | 86 | operacoes(); 87 | 88 | } 89 | 90 | private static Conta encontrarConta(int numeroConta) { 91 | Conta conta = null; 92 | if(contasBancarias.size() > 0) { 93 | for(Conta contaa : contasBancarias) { 94 | if(contaa.getNumeroConta() == numeroConta) { 95 | conta = contaa; 96 | } 97 | } 98 | } 99 | return conta; 100 | } 101 | 102 | public static void depositar() { 103 | System.out.println("Número da conta: "); 104 | int numeroConta = input.nextInt(); 105 | Conta conta = encontrarConta(numeroConta); 106 | 107 | if(conta != null) { 108 | System.out.println("Qual valor deseja depositar? "); 109 | Double valorDeposito = input.nextDouble(); 110 | 111 | conta.depositar(valorDeposito); 112 | }else { 113 | System.out.println("--- Conta não encontrada ---"); 114 | } 115 | 116 | operacoes(); 117 | 118 | } 119 | 120 | public static void sacar() { 121 | System.out.println("Número da conta: "); 122 | int numeroConta = input.nextInt(); 123 | 124 | Conta conta = encontrarConta(numeroConta); 125 | 126 | if(conta != null) { 127 | System.out.println("Qual valor deseja sacar? "); 128 | Double valorSaque = input.nextDouble(); 129 | 130 | conta.sacar(valorSaque); 131 | System.out.println("--- Saque realizado com sucesso! ---"); 132 | }else { 133 | System.out.println("--- Conta não encontrada ---"); 134 | } 135 | 136 | operacoes(); 137 | 138 | } 139 | 140 | public static void transferir() { 141 | System.out.println("Número da conta que vai enviar a transferência: "); 142 | int numeroContaRemetente = input.nextInt(); 143 | 144 | Conta contaRemetente = encontrarConta(numeroContaRemetente); 145 | 146 | if(contaRemetente != null) { 147 | System.out.println("Número da conta do destinatário: "); 148 | int numeroContaDestinatario = input.nextInt(); 149 | 150 | Conta contaDestinatario = encontrarConta(numeroContaDestinatario); 151 | 152 | if(contaDestinatario != null) { 153 | System.out.println("Valor da transferência: "); 154 | Double valor = input.nextDouble(); 155 | 156 | contaRemetente.transferencia(contaDestinatario, valor); 157 | 158 | }else { 159 | System.out.println("--- A conta para depósito não foi encontrada ---"); 160 | } 161 | 162 | }else { 163 | System.out.println("--- Conta para transferência não encontrada ---"); 164 | } 165 | operacoes(); 166 | } 167 | 168 | public static void listarContas() { 169 | if(contasBancarias.size() > 0) { 170 | for(Conta conta: contasBancarias) { 171 | System.out.println(conta); 172 | } 173 | }else { 174 | System.out.println("--- Não há contas cadastradas ---"); 175 | } 176 | 177 | operacoes(); 178 | } 179 | } 180 | --------------------------------------------------------------------------------