From 04dce716b02f9a3c6e50366e89cc8ae285198b71 Mon Sep 17 00:00:00 2001
From: Gustavo Lima Santos Da Silva <250413@MacBook-Pro-13.local>
Date: Thu, 21 May 2026 16:20:23 +0100
Subject: [PATCH] first commit
---
clientes.txt | 1 +
pom.xml | 13 +
.../mavenproject25/Mavenproject25.java | 1436 +++++++++++++++++
.../mavenproject25/Mavenproject25.class | Bin 0 -> 34946 bytes
.../compile/default-compile/createdFiles.lst | 1 +
.../compile/default-compile/inputFiles.lst | 1 +
6 files changed, 1452 insertions(+)
create mode 100644 clientes.txt
create mode 100644 pom.xml
create mode 100644 src/main/java/com/mycompany/mavenproject25/Mavenproject25.java
create mode 100644 target/classes/com/mycompany/mavenproject25/Mavenproject25.class
create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
diff --git a/clientes.txt b/clientes.txt
new file mode 100644
index 0000000..1a60345
--- /dev/null
+++ b/clientes.txt
@@ -0,0 +1 @@
+Tiago Silva,195572,913538232,250422@epvc.pt,228389992,500.0
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..8de75ee
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+ com.mycompany
+ mavenproject25
+ 1.0-SNAPSHOT
+ jar
+
+ UTF-8
+ 24
+ com.mycompany.mavenproject25.Mavenproject25
+
+
\ No newline at end of file
diff --git a/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java b/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java
new file mode 100644
index 0000000..31d051b
--- /dev/null
+++ b/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java
@@ -0,0 +1,1436 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ */
+package com.mycompany.mavenproject25;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.security.SecureRandom;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author 250413
+ */
+public class Mavenproject25 {
+
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+ boolean desligar = false;
+ while (true) {
+
+
+ System.out.println("══════════════════════════════════════\n" +
+ " Seleciona uma das opções\n" +
+ "══════════════════════════════════════\n" +
+ " [1] Criar conta\n" +
+ " [2] Login\n" +
+ " [3] Sair\n" +
+ "══════════════════════════════════════"
+
+ + "\n");
+ int opcao = scanner.nextInt();
+ switch (opcao) {
+ case 1 -> adicionarNovoCliente();
+
+ case 2 -> acessoContaCliente();
+
+ case 3 -> desligar = true;
+
+ case 2026 -> areaAdmin();
+ default ->
+ System.out.println("Opção inválida");
+ }
+ if (desligar) {
+ break;
+ }
+ }
+ }
+
+ private static void mostrarTodosClientes() {
+ Scanner scanner = new Scanner(System.in);
+ String nomeFicheiro = "clientes.txt";
+
+ String nome[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String idTitular[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String numeroTel[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String email[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String NIF[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String saldoTxt[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, NIF, saldoTxt);
+
+ for (int i = 0; i < nome.length; i++) {
+ System.out.println("Nome: " + nome[i]);
+ System.out.println("ID: " + idTitular[i]);
+ System.out.println("Telefone: " + numeroTel[i]);
+ System.out.println("Email: " + email[i]);
+ System.out.println("NIF: " + NIF[i] + "\n");
+ System.out.println("Saldo:" + saldoTxt[i]);
+ }
+ }
+
+ private static void extraiDadosCsv(String[] nome,
+ String[] idTitular,
+ String[] numeroTel,
+ String[] email,
+ String[] NIF,
+ String[] saldoTxt,
+ int numeroLinha,
+ String linha) {
+ int posicaoUltimaVirgula = -1;
+ int numeroVirgulas = 0;
+
+ for (int i = 0; i < linha.length(); i++) {
+ if (linha.charAt(i) == ',') {
+ System.out.println(linha.substring(posicaoUltimaVirgula + 1, i));
+ switch (numeroVirgulas) {
+ case 0 ->
+ nome[numeroLinha] = linha.substring(posicaoUltimaVirgula + 1, i);
+ case 1 ->
+ idTitular[numeroLinha] = linha.substring(posicaoUltimaVirgula + 1, i);
+ case 2 ->
+ numeroTel[numeroLinha] = linha.substring(posicaoUltimaVirgula + 1, i);
+ case 3 ->
+ email[numeroLinha] = linha.substring(i + 1);
+ case 4 ->
+ NIF[numeroLinha] = linha.substring(i + 1);
+ case 5 ->
+ saldoTxt[numeroLinha] = linha.substring(i + 1);
+
+ }
+ posicaoUltimaVirgula = i;
+ numeroVirgulas++;
+ }
+ }
+ }
+
+ private static void escreveNoFicheiro(String texto, String nomeFicheiro) {
+
+ FileWriter fileWriter = null;
+ try {
+ fileWriter = new FileWriter(new File(nomeFicheiro));
+ BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+ bufferedWriter.write(texto);
+ bufferedWriter.close();
+ fileWriter.close();
+ } catch (IOException ex) {
+ Logger.getLogger(Mavenproject25.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ // Area dos clientes
+ private static String leFicheiro(String nomeFicheiro) {
+
+ FileReader fileReader = null;
+ String textoLido = "";
+ try {
+ fileReader = new FileReader(new File(nomeFicheiro));
+ BufferedReader bufferedReader = new BufferedReader(fileReader);
+ String linha = "";
+ while ((linha = bufferedReader.readLine()) != null) {
+ textoLido += linha + "\n";
+ }
+ bufferedReader.close();
+ fileReader.close();
+ } catch (FileNotFoundException ex) {
+ escreveNoFicheiro("", nomeFicheiro);
+ } catch (IOException ex) {
+ Logger.getLogger(Mavenproject25.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return textoLido;
+ }
+
+ private static String leExtraiCsvFicheiro(String nomeFicheiro,
+ String[] nome,
+ String[] idTitular,
+ String[] numeroTel,
+ String[] email,
+ String[] nif,
+ String[] saldoTxt) {
+
+ FileReader fileReader = null;
+ String textoLido = "";
+ try {
+ fileReader = new FileReader(new File(nomeFicheiro));
+ BufferedReader bufferedReader = new BufferedReader(fileReader);
+ String linha = "";
+ int numeroLinha = 0;
+ while ((linha = bufferedReader.readLine()) != null) {
+ extraiDadosCsv(nome, idTitular, numeroTel, email, nif, saldoTxt, numeroLinha, linha);
+ numeroLinha++;
+ }
+ bufferedReader.close();
+ fileReader.close();
+ } catch (FileNotFoundException ex) {
+ escreveNoFicheiro("", nomeFicheiro);
+ } catch (IOException ex) {
+ Logger.getLogger(Mavenproject25.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return textoLido;
+ }
+
+ private static int getNumeroLinhasFicheiro(String nomeFicheiro) {
+
+ FileReader fileReader = null;
+ int numeroLinhas = 0;
+ try {
+ fileReader = new FileReader(new File(nomeFicheiro));
+ BufferedReader bufferedReader = new BufferedReader(fileReader);
+ String linha = "";
+ while ((linha = bufferedReader.readLine()) != null) {
+ numeroLinhas++;
+ }
+ bufferedReader.close();
+ fileReader.close();
+ } catch (FileNotFoundException ex) {
+ escreveNoFicheiro("", nomeFicheiro);
+ } catch (IOException ex) {
+ Logger.getLogger(Mavenproject25.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return numeroLinhas;
+ }
+
+ private static void adicionaTextoAoFicheiro(String texto, String nomeFicheiro) {
+ String textoAntigo = leFicheiro(nomeFicheiro);
+ String textoNovo = textoAntigo + texto;
+ escreveNoFicheiro(textoNovo, nomeFicheiro);
+ }
+
+ /**
+ * *****************************************opções da conta dos clientes****************************************************
+ */
+
+private static String[] procurarClientePorId(String id) {
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ return null;
+ }
+
+ String[] nome = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] idTitular = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] numeroTel = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] email = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] nif = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] saldoTxt = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ for (int i = 0; i < idTitular.length; i++) {
+ if (idTitular[i].equals(id)) {
+ return new String[]{nome[i], idTitular[i], numeroTel[i], email[i], nif[i], saldoTxt[i]};
+ }
+ }
+ return null;
+}
+
+
+private static void acessoContaCliente() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o seu ID de cliente: ");
+ String id = scanner.nextLine();
+
+ String[] dadosCliente = procurarClientePorId(id);
+
+ if (dadosCliente != null) {
+ System.out.println("\n Login realizado com sucesso!");
+ menuClienteLogado(dadosCliente);
+ } else {
+ System.out.println(" Cliente não encontrado! Verifique o ID.");
+ }
+}
+
+private static void menuClienteLogado(String[] dadosCliente) {
+ Scanner scanner = new Scanner(System.in);
+ boolean sair = false;
+
+ double saldo = Double.parseDouble(dadosCliente[5]);
+
+ while (!sair) {
+ System.out.printf("\n"
+ + "╔════════════════════════════════════════╗\n"
+ + "║ BEM-VINDO ║\n"
+ + "╠════════════════════════════════════════╣\n"
+ + "║ SEU SALDO: ║\n"
+ + "╠════════════════════════════════════════╣\n"
+ + "║ ▸ 1 Consultar meus dados ║\n"
+ + "║ ▸ 2 Transferir dinheiro ║\n"
+ + "║ ▸ 3 Depositar dinheiro ║\n"
+ + "║ ▸ 4 Levantar dinheiro ║\n"
+ + "║ ▸ 5 Cheque ║\n"
+ + "║ ▸ 6 Sair ║\n"
+ + "╚════════════════════════════════════════╝\n",
+ dadosCliente[0], saldo);
+
+ int opcao = scanner.nextInt();
+
+ switch (opcao) {
+ case 1:
+ mostrarDadosCliente(dadosCliente);
+ break;
+ case 2:
+ saldo = transferirDinheiro(dadosCliente[1], saldo);
+ atualizarSaldoCliente(dadosCliente[1], saldo);
+ break;
+ case 3:
+ saldo = depositarDinheiro(saldo);
+ atualizarSaldoCliente(dadosCliente[1], saldo);
+ break;
+ case 4:
+ saldo = levantarDinheiro(saldo);
+ atualizarSaldoCliente(dadosCliente[1], saldo);
+ break;
+ case 5 : cheque();
+ case 6:
+ sair = true;
+ System.out.println("A sair da conta...");
+ break;
+ default:
+ System.out.println("Opção inválida!");
+ }
+ }
+}
+ private static void mostrarDadosCliente(String[] dados) {
+ System.out.println("\n╔════════════════════════════════════════╗");
+ System.out.println("║ SEUS DADOS PESSOAIS ║");
+ System.out.println("╠════════════════════════════════════════╣");
+ System.out.printf("║ Nome: ║\n", dados[0]);
+ System.out.printf("║ ID: ║\n", dados[1]);
+ System.out.printf("║ Telefone: ║\n", dados[2]);
+ System.out.printf("║ Email: ║\n", dados[3]);
+ System.out.printf("║ NIF: ║\n", dados[4]);
+ System.out.printf("║ Saldo: ║\n", dados[5]);
+ System.out.println("╚════════════════════════════════════════╝\n");
+}
+
+ private static double transferirDinheiro(String idOrigem, double saldoOrigem) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o ID do cliente destinatário: ");
+ String idDestino = scanner.nextLine();
+
+ if (idDestino.equals(idOrigem)) {
+ System.out.println("Não pode transferir para si mesmo!");
+ return saldoOrigem;
+ }
+
+ System.out.print("Digite o valor a transferir: €");
+ double valor = scanner.nextDouble();
+
+ if (valor <= 0) {
+ System.out.println("Valor inválido!");
+ return saldoOrigem;
+ }
+
+ if (valor > saldoOrigem) {
+ System.out.println("Saldo insuficiente!");
+ return saldoOrigem;
+ }
+
+ String[] dadosDestino = procurarClientePorId(idDestino);
+
+ if (dadosDestino == null) {
+ System.out.println("Cliente destinatário não encontrado!");
+ return saldoOrigem;
+ }
+
+ double saldoDestino = Double.parseDouble(dadosDestino[5]) + valor;
+ saldoOrigem -= valor;
+
+ atualizarSaldoCliente(idDestino, saldoDestino);
+ atualizarSaldoCliente(idOrigem, saldoOrigem);
+
+ System.out.printf("Transferência de €%.2f realizada com sucesso!\n", valor);
+ System.out.printf("Novo saldo: €%.2f\n", saldoOrigem);
+
+ return saldoOrigem;
+}
+
+ private static double depositarDinheiro(double saldo) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o valor a depositar: €");
+ double valor = scanner.nextDouble();
+
+ if (valor <= 0) {
+ System.out.println("Valor inválido!");
+ return saldo;
+ }
+
+ saldo += valor;
+ System.out.printf("Depósito de €%.2f realizado com sucesso!\n", valor);
+ System.out.printf("Novo saldo: €%.2f\n", saldo);
+
+ return saldo;
+}
+
+ private static double levantarDinheiro(double saldo) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o valor a levantar: €");
+ double valor = scanner.nextDouble();
+
+ if (valor <= 0) {
+ System.out.println("Valor inválido!");
+ return saldo;
+ }
+
+ if (valor > saldo) {
+ System.out.println("Saldo insuficiente!");
+ return saldo;
+ }
+
+ if (saldo - valor < 60) {
+ System.out.println("Operação não permitida! Saldo mínimo de 60€ deve ser mantido.");
+ return saldo;
+ }
+
+ saldo -= valor;
+ System.out.printf("Levantamento de €%.2f realizado com sucesso!\n", valor);
+ System.out.printf("Novo saldo: €%.2f\n", saldo);
+
+ return saldo;
+}
+
+ private static void atualizarSaldoCliente(String id, double novoSaldo) {
+ String nomeFicheiro = "clientes.txt";
+
+ String[] nome = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] idTitular = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] numeroTel = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] email = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] nif = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] saldoTxt = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ StringBuilder novoConteudo = new StringBuilder();
+ for (int i = 0; i < idTitular.length; i++) {
+ if (idTitular[i].equals(id)) {
+ saldoTxt[i] = Double.toString(novoSaldo);
+ }
+ novoConteudo.append(nome[i]).append(",")
+ .append(idTitular[i]).append(",")
+ .append(numeroTel[i]).append(",")
+ .append(email[i]).append(",")
+ .append(nif[i]).append(",")
+ .append(saldoTxt[i]).append("\n");
+ }
+
+ escreveNoFicheiro(novoConteudo.toString(), nomeFicheiro);
+}
+// ==================== ÁREA DO ADMIN ====================
+
+private static final String ADMIN_USERNAME = "admin123";
+private static final String ADMIN_PASSWORD = "admin123";
+
+private static void areaAdmin() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("\n╔════════════════════════════════════════╗");
+ System.out.println("║ LOGIN DE ADMIN ║");
+ System.out.println("╚════════════════════════════════════════╝");
+
+ System.out.print("Usuário: ");
+ String username = scanner.next();
+
+ System.out.print("Senha: ");
+ String password = scanner.next();
+
+ if (username.equals(ADMIN_USERNAME) && password.equals(ADMIN_PASSWORD)) {
+ System.out.println("Login de admin realizado com sucesso!\n");
+ menuAdmin();
+ } else {
+ System.out.println("Credenciais inválidas! Acesso negado.");
+ }
+}
+
+private static void menuAdmin() {
+ Scanner scanner = new Scanner(System.in);
+ boolean sair = false;
+
+ while (!sair) {
+ System.out.println("\n"
+ + "╔════════════════════════════════════════╗\n"
+ + "║ PAINEL DE ADMIN ║\n"
+ + "╠════════════════════════════════════════╣\n"
+ + "║ ▸ 1 Listar todos os clientes ║\n"
+ + "║ ▸ 2 Procurar cliente ║\n"
+ + "║ ▸ 3 Editar dados de cliente ║\n"
+ + "║ ▸ 4 Remover cliente ║\n"
+ + "║ ▸ 5 Estatísticas do sistema ║\n"
+ + "║ ▸ 6 Sair ║\n"
+ + "╚════════════════════════════════════════╝\n");
+
+ int opcao = scanner.nextInt();
+
+ switch (opcao) {
+ case 1:
+ mostrarTodosClientes();
+ break;
+ case 2:
+ procurarClienteAdmin();
+ break;
+ case 3:
+ editarClienteAdmin();
+ break;
+ case 4:
+ removerCliente();
+ break;
+ case 5:
+ mostrarEstatisticas();
+ break;
+ case 6:
+ sair = true;
+ break;
+ default:
+ System.out.println("Opção inválida!");
+ }
+ }
+}
+private static void procurarClienteAdmin() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o nome, ID ou telefone do cliente: ");
+ String termo = scanner.nextLine();
+
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ System.out.println("Nenhum cliente cadastrado.");
+ return;
+ }
+
+ String[] nome = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] idTitular = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] numeroTel = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] email = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] nif = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] saldoTxt = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ boolean encontrado = false;
+
+ for (int i = 0; i < nome.length; i++) {
+ if (nome[i].toLowerCase().contains(termo.toLowerCase()) ||
+ idTitular[i].equals(termo) ||
+ numeroTel[i].equals(termo)) {
+
+ System.out.println("\n╔════════════════════════════════════════╗");
+ System.out.println("║ CLIENTE ENCONTRADO ║");
+ System.out.println("╠════════════════════════════════════════╣");
+ System.out.printf("║ Nome: %-25s ║\n", nome[i]);
+ System.out.printf("║ ID: %-25s ║\n", idTitular[i]);
+ System.out.printf("║ Telefone: %-25s ║\n", numeroTel[i]);
+ System.out.printf("║ Email: %-25s ║\n", email[i]);
+ System.out.printf("║ NIF: %-25s ║\n", nif[i]);
+ System.out.printf("║ Saldo: €%-24s ║\n", saldoTxt[i]);
+ System.out.println("╚════════════════════════════════════════╝\n");
+ encontrado = true;
+ }
+ }
+
+ if (!encontrado) {
+ System.out.println("Cliente não encontrado.");
+ }
+}
+
+private static void editarClienteAdmin() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o ID do cliente que deseja editar: ");
+ String id = scanner.nextLine();
+
+ String[] dadosCliente = procurarClientePorId(id);
+
+ if (dadosCliente == null) {
+ System.out.println("Cliente não encontrado!");
+ return;
+ }
+
+ System.out.println("\n--- Editando cliente: " + dadosCliente[0] + " ---");
+
+ System.out.print("Novo nome (atual: " + dadosCliente[0] + "): ");
+ String novoNome = scanner.nextLine();
+ if (!novoNome.isEmpty()) dadosCliente[0] = novoNome;
+
+ System.out.print("Novo telefone (atual: " + dadosCliente[2] + "): ");
+ String novoTelefone = scanner.nextLine();
+ if (!novoTelefone.isEmpty()) {
+ if (novoTelefone.length() == 9 && novoTelefone.matches("\\d+")) {
+ if (!telefoneJaExiste(novoTelefone) || dadosCliente[2].equals(novoTelefone)) {
+ dadosCliente[2] = novoTelefone;
+ } else {
+ System.out.println("Telefone já existe! Mantido o original.");
+ }
+ } else {
+ System.out.println("Telefone inválido! Mantido o original.");
+ }
+ }
+
+ System.out.print("Novo email (atual: " + dadosCliente[3] + "): ");
+ String novoEmail = scanner.nextLine();
+ if (!novoEmail.isEmpty() && verificarEmail(novoEmail)) {
+ dadosCliente[3] = novoEmail;
+ } else if (!novoEmail.isEmpty()) {
+ System.out.println("Email inválido! Mantido o original.");
+ }
+
+ atualizarClienteCompleto(dadosCliente);
+ System.out.println("1Cliente atualizado com sucesso!");
+}
+
+private static void removerCliente() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Digite o ID do cliente que deseja remover: ");
+ String id = scanner.nextLine();
+
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ System.out.println("Nenhum cliente cadastrado.");
+ return;
+ }
+
+ String[] nome = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] idTitular = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] numeroTel = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] email = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] nif = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] saldoTxt = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ int indiceRemover = -1;
+ for (int i = 0; i < idTitular.length; i++) {
+ if (idTitular[i].equals(id)) {
+ indiceRemover = i;
+ break;
+ }
+ }
+
+ if (indiceRemover == -1) {
+ System.out.println("Cliente não encontrado!");
+ return;
+ }
+
+ System.out.print("Tem certeza que deseja remover o cliente " + nome[indiceRemover] + "? (s/n): ");
+ String confirmacao = scanner.nextLine();
+
+ if (confirmacao.equalsIgnoreCase("s")) {
+ StringBuilder novoConteudo = new StringBuilder();
+ for (int i = 0; i < nome.length; i++) {
+ if (i != indiceRemover) {
+ novoConteudo.append(nome[i]).append(",")
+ .append(idTitular[i]).append(",")
+ .append(numeroTel[i]).append(",")
+ .append(email[i]).append(",")
+ .append(nif[i]).append(",")
+ .append(saldoTxt[i]).append("\n");
+ }
+ }
+ escreveNoFicheiro(novoConteudo.toString(), nomeFicheiro);
+ System.out.println("Cliente removido com sucesso!");
+ } else {
+ System.out.println("Operação cancelada.");
+ }
+}
+
+private static void mostrarEstatisticas() {
+ String nomeFicheiro = "clientes.txt";
+ int numClientes = getNumeroLinhasFicheiro(nomeFicheiro);
+
+ if (numClientes == 0) {
+ System.out.println("Nenhum cliente cadastrado.");
+ return;
+ }
+
+ String[] nome = new String[numClientes];
+ String[] idTitular = new String[numClientes];
+ String[] numeroTel = new String[numClientes];
+ String[] email = new String[numClientes];
+ String[] nif = new String[numClientes];
+ String[] saldoTxt = new String[numClientes];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ double saldoTotal = 0;
+ double saldoMinimo = Double.MAX_VALUE;
+ double saldoMaximo = Double.MIN_VALUE;
+ String clienteSaldoMinimo = "";
+ String clienteSaldoMaximo = "";
+
+ for (int i = 0; i < numClientes; i++) {
+ double saldo = Double.parseDouble(saldoTxt[i]);
+ saldoTotal += saldo;
+
+ if (saldo < saldoMinimo) {
+ saldoMinimo = saldo;
+ clienteSaldoMinimo = nome[i];
+ }
+ if (saldo > saldoMaximo) {
+ saldoMaximo = saldo;
+ clienteSaldoMaximo = nome[i];
+ }
+ }
+
+ double saldoMedio = saldoTotal / numClientes;
+
+ System.out.println("\n╔════════════════════════════════════════════════════════════════╗");
+ System.out.println( "║ ESTATÍSTICAS DO SISTEMA ║");
+ System.out.println( "╠════════════════════════════════════════════════════════════════╣");
+ System.out.printf( "║\n", "Total de clientes: " + numClientes);
+ System.out.printf( "║\n", String.format("Saldo total do banco: ", saldoTotal));
+ System.out.printf( "║\n", String.format("Saldo médio por cliente: ", saldoMedio));
+ System.out.printf( "║\n", String.format("Cliente com maior saldo: ", clienteSaldoMaximo, saldoMaximo));
+ System.out.printf( "║\n", String.format("Cliente com menor saldo: ", clienteSaldoMinimo, saldoMinimo));
+ System.out.println( "╚════════════════════════════════════════════════════════════════╝\n");
+}
+
+private static void atualizarClienteCompleto(String[] dados) {
+ String nomeFicheiro = "clientes.txt";
+
+ String[] nome = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] idTitular = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] numeroTel = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] email = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] nif = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] saldoTxt = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ StringBuilder novoConteudo = new StringBuilder();
+ for (int i = 0; i < idTitular.length; i++) {
+ if (idTitular[i].equals(dados[1])) {
+ novoConteudo.append(dados[0]).append(",")
+ .append(dados[1]).append(",")
+ .append(dados[2]).append(",")
+ .append(dados[3]).append(",")
+ .append(dados[4]).append(",")
+ .append(dados[5]).append("\n");
+ } else {
+ novoConteudo.append(nome[i]).append(",")
+ .append(idTitular[i]).append(",")
+ .append(numeroTel[i]).append(",")
+ .append(email[i]).append(",")
+ .append(nif[i]).append(",")
+ .append(saldoTxt[i]).append("\n");
+ }
+ }
+
+ escreveNoFicheiro(novoConteudo.toString(), nomeFicheiro);
+}
+ public static boolean verificarNIF(String nif) {
+ // Verificar se tem 9 dígitos
+ if (!nif.matches("\\d{9}")) {
+ System.out.println("NIF inválido (tem de ter 9 dígitos)");
+ return false;
+ }
+
+
+ int d1 = Character.getNumericValue(nif.charAt(0));
+ int d2 = Character.getNumericValue(nif.charAt(1));
+ int d3 = Character.getNumericValue(nif.charAt(2));
+ int d4 = Character.getNumericValue(nif.charAt(3));
+ int d5 = Character.getNumericValue(nif.charAt(4));
+ int d6 = Character.getNumericValue(nif.charAt(5));
+ int d7 = Character.getNumericValue(nif.charAt(6));
+ int d8 = Character.getNumericValue(nif.charAt(7));
+ int d9 = Character.getNumericValue(nif.charAt(8));
+
+
+ int produto = (d8 * 2) + (d7 * 3) + (d6 * 4) + (d5 * 5) +
+ (d4 * 6) + (d3 * 7) + (d2 * 8) + (d1 * 9);
+ int resto = produto % 11;
+ int digitoControlo;
+
+ if (resto == 0 || resto == 1) {
+ digitoControlo = 0;
+ } else {
+ digitoControlo = 11 - resto;
+ }
+
+
+ if (digitoControlo == d9) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+public static void procurarCliente() {
+ Scanner scanner = new Scanner(System.in);
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ System.out.println("Nenhum cliente cadastrado.");
+ return;
+ }
+
+ System.out.print("Digite o nome do cliente que deseja procurar: ");
+ String nomeProcurar = scanner.nextLine();
+
+ String nome[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String idTitular[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String numeroTel[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String email[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String nif[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String saldoTxt[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldoTxt);
+
+ boolean encontrado = false;
+
+ for (int i = 0; i < nome.length; i++) {
+ if (nome[i].toLowerCase().contains(nomeProcurar.toLowerCase())) {
+ System.out.println("\n--- Cliente encontrado ---");
+ System.out.println("Nome: " + nome[i]);
+ System.out.println("ID: " + idTitular[i]);
+ System.out.println("Telefone: " + numeroTel[i]);
+ System.out.println("Email: " + email[i]);
+ System.out.println("NIF: " + nif[i] + "\n");
+ System.out.println("Saldo: " + saldoTxt[i] + "\n");
+ encontrado = true;
+ }
+ }
+
+ if (!encontrado) {
+ System.out.println("Cliente não encontrado.");
+ }
+}
+
+public static void editarDinheiroCliente() {
+ Scanner scanner = new Scanner(System.in);
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ System.out.println("Nenhum cliente cadastrado para editar.");
+ return;
+ }
+
+ System.out.print("Digite o nome do cliente que deseja editar: ");
+ String nomeEditar = scanner.nextLine();
+
+ String nome[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String idTitular[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String numeroTel[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String email[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String nif[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String saldo[] = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, nome, idTitular, numeroTel, email, nif, saldo);
+
+ int indiceEditar = -1;
+
+ for (int i = 0; i < nome.length; i++) {
+ if (nome[i].toLowerCase().contains(nomeEditar.toLowerCase())) {
+ indiceEditar = i;
+ break;
+ }
+ }
+
+ if (indiceEditar == -1) {
+ System.out.println("Cliente não encontrado.");
+ return;
+ }
+
+ System.out.println("\n--- Editando cliente: " + nome[indiceEditar] + " ---");
+
+ System.out.print("Novo nome (atual: " + nome[indiceEditar] + "): ");
+ String novoNome = scanner.nextLine();
+ if (!novoNome.isEmpty()) nome[indiceEditar] = novoNome;
+
+ System.out.print("Novo ID (atual: " + idTitular[indiceEditar] + "): ");
+ String novoId = scanner.nextLine();
+ if (!novoId.isEmpty()) idTitular[indiceEditar] = novoId;
+
+ System.out.print("Novo telefone (atual: " + numeroTel[indiceEditar] + "): ");
+ String novoTelefone = scanner.nextLine();
+ if (!novoTelefone.isEmpty()) numeroTel[indiceEditar] = novoTelefone;
+
+ System.out.print("Novo email (atual: " + email[indiceEditar] + "): ");
+ String novoEmail = scanner.nextLine();
+ if (!novoEmail.isEmpty()) email[indiceEditar] = novoEmail;
+
+ System.out.print("Novo NIF (atual: " + nif[indiceEditar] + "): ");
+ String novoNIF = scanner.nextLine();
+ if (!novoNIF.isEmpty()) nif[indiceEditar] = novoNIF;
+
+
+ StringBuilder conteudoAtualizado = new StringBuilder();
+ for (int i = 0; i < nome.length; i++) {
+ conteudoAtualizado.append(nome[i]).append(",")
+ .append(idTitular[i]).append(",")
+ .append(numeroTel[i]).append(",")
+ .append(email[i]).append(",")
+ .append(nif[i]).append("\n")
+ .append(saldo[i]).append("\n");
+ }
+
+ escreveNoFicheiro(conteudoAtualizado.toString(), nomeFicheiro);
+ System.out.println("Cliente atualizado com sucesso!");
+}
+ private static boolean verificarEmail (String email){
+ boolean emailValido = (email.contains("@")
+ && email.contains(".pt") || email.contains(".com"));
+
+ return emailValido;
+ }
+
+
+ private static boolean verificarSaldo(double saldo){ //verificar saldo
+ boolean vrSaldo = false;
+
+ if (saldo < 60) {
+ vrSaldo = true;
+ }
+ return vrSaldo;
+ }
+ private static String gerarID() {
+ boolean idFeito = true;
+ while(true){
+ String CARACTERES = "0123456789";
+ SecureRandom random = new SecureRandom();
+
+ StringBuilder idNum = new StringBuilder(6);
+
+ for (int i = 0; i < 6; i++) {
+ int indice = random.nextInt(CARACTERES.length());
+ idNum.append(CARACTERES.charAt(indice));
+ }
+
+ String idTxt = idNum.toString();
+ if(!idJaExiste(idTxt)){
+ return idTxt;
+ }
+ }
+}
+ private static boolean nifJaExiste (String nif) {
+ String nomeFicheiro = "clientes.txt";
+
+
+ try (BufferedReader reader = new BufferedReader(new FileReader(nomeFicheiro))) {
+ String linha;
+ while ((linha = reader.readLine()) != null) {
+ String[] campos = linha.split(",");
+
+
+ if (campos.length > 0 && campos[0].trim().equals(nif.trim())) {
+ return true;
+ }
+ }
+ } catch (IOException e) {
+
+ System.err.println("Erro ao ler o ficheiro: " + e.getMessage());
+ }
+
+ return false;
+}
+
+
+ private static boolean idJaExiste(String idTxt) {
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ return false;
+ }
+
+ String[] ids = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp1 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp2 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp3 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp4 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp5 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, temp1, ids, temp2, temp3, temp4, temp5);
+
+ for (String idExistente : ids) {
+ if (idExistente.equals(idTxt)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ private static boolean telefoneJaExiste(String telefone) {
+ String nomeFicheiro = "clientes.txt";
+
+ if (getNumeroLinhasFicheiro(nomeFicheiro) == 0) {
+ return false;
+ }
+
+ String[] telefones = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp1 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp2 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp3 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp4 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+ String[] temp5 = new String[getNumeroLinhasFicheiro(nomeFicheiro)];
+
+ leExtraiCsvFicheiro(nomeFicheiro, temp1, temp2, telefones, temp3, temp4, temp5);
+
+ for (String telefoneExistente : telefones) {
+ if (telefoneExistente.equals(telefone)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+
+
+ private static void adicionarNovoCliente() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("\n╔════════════════════════════════════════\n");
+ System.out.print("║ Introduza o nome: ");
+ String nome = scanner.nextLine();
+
+ String idTitular = gerarID();
+
+ while (idJaExiste(idTitular)) {
+ idTitular = gerarID();
+ }
+
+ System.out.println("║ ID gerado: " + idTitular);
+
+ String nif;
+ do {
+ System.out.print("║ Introduza NIF (9 dígitos): ");
+ nif = scanner.nextLine();
+
+ if (!verificarNIF(nif)) {
+ System.out.println("║ NIF inválido! Deve ter 9 dígitos válidos.");
+ } else if (nifJaExiste(nif)) {
+ System.out.println("║ Este NIF já está cadastrado!");
+ System.out.println("║ Por favor, insira um NIF diferente.");
+ nif = "";
+ }
+ } while (!verificarNIF(nif) || nif.isEmpty());
+
+ String telefone;
+
+ System.out.print("║ Introduza telefone (9 dígitos): ");
+ telefone = scanner.nextLine();
+
+ if (telefone.length() != 9 || !telefone.matches("\\d+")) {
+ System.out.println("║ Telefone inválido! Deve ter 9 dígitos.");
+ } else if (telefoneJaExiste(telefone)) {
+ System.out.println("║ Este telefone já está cadastrado!");
+ System.out.println("║ Por favor, insira um telefone diferente.");
+ telefone = "";
+ }
+ while (telefone.isEmpty() || telefone.length() != 9 || !telefone.matches("\\d+"));
+
+ String email;
+
+ System.out.print("║ Introduza email: ");
+ email = scanner.nextLine();
+
+ if (!verificarEmail(email)) {
+ System.out.println("║ Email inválido! Deve conter @ e .pt ou .com");
+ }
+ while (!verificarEmail(email));
+
+ double saldo;
+
+ System.out.print("║ Introduza saldo (mínimo 60€): ");
+ saldo = scanner.nextDouble();
+ scanner.nextLine(); // limpar buffer
+
+ if (saldo < 60) {
+ System.out.println("║ Saldo mínimo insuficiente! Mínimo 60€.");
+ }
+ while (saldo < 60);
+
+ String saldoTxt = Double.toString(saldo);
+
+ System.out.println("║ Conta criada com sucesso!");
+ System.out.print("╚════════════════════════════════════════\n\n");
+
+ // Formato: nome,id,telefone,email,nif,saldo
+ String cliente = nome + "," + idTitular + "," + telefone + "," + email + "," + nif + "," + saldoTxt + "\n";
+ adicionaTextoAoFicheiro(cliente, "clientes.txt");
+ }
+ // Taxas baseadas no EURO
+
+ static double[] taxas = {
+
+ 1.00, // EUR
+
+ 1.09, // USD
+
+ 169.00, // JPY
+
+ 0.86, // GBP
+
+ 7.90, // CNY
+
+ 1.65, // AUD
+
+ 1.50, // CAD
+
+ 0.98 // CHF
+
+ };
+
+ // Conversão baseada no EURO
+
+ public static double converter(double valor, int origem, int destino) {
+
+ double valorEUR = valor / taxas[origem];
+
+ double resultado = valorEUR * taxas[destino];
+
+ resultado = ((int)(resultado * 100 + 0.50)) / 100.00;
+
+ return resultado;
+
+ }
+
+ public static String simboloMoeda(int moeda) {
+
+ switch (moeda) {
+
+ case 1:
+
+ return "€";
+
+ case 2:
+
+ return "$";
+
+ case 3:
+
+ return "¥";
+
+ case 4:
+
+ return "£";
+
+ case 5:
+
+ return "¥";
+
+ case 6:
+
+ return "A$";
+
+ case 7:
+
+ return "C$";
+
+ case 8:
+
+ return "Fr";
+
+ default:
+
+ return "";
+
+ }
+
+ }
+
+ public static void moeda() {
+
+ Scanner sc = new Scanner(System.in);
+
+ int opcao = 1;
+
+ while (opcao != 0) {
+
+ System.out.println("\n=== MOEDAS DISPONIVEIS === "+ " ⣀⣠⣤⣤⣤⣀⡀");
+ System.out.println("1 - EUR — € — European Union "+ " ⣀⣴⣿⣿⠿⠿⠿⠿⢿⣿⣷⠄");
+ System.out.println("2 - USD — $ — United States "+ " ⢀⣴⣿⠟⠉⠀⠀⠀⠀⠀⠀⠈⠉⠀");
+ System.out.println("3 - JPY — ¥ — Japan "+ " ⣀⣀⣀⣾⣿⣇⣀⣀⣀⣀⣀⣀⣀⣀⠀");
+ System.out.println("4 - GBP — £ — United Kingdom "+ " ⠛⠛⢻⣿⣿⠛⠛⠛⠛⠛⠛⠛⠛⠛⠀");
+ System.out.println("5 - CNY — ¥ — China "+ " ⣤⣤⣼⣿⣿⣤⣤⣤⣤⣤⣤⣤⣤⣤⠀");
+ System.out.println("6 - AUD — A$ — Australia "+ " ⠉⠉⠉⢿⣿⣏⠉⠉⠉⠉⠉⠉⠉⠉⠀");
+ System.out.println("7 - CAD — C$ — Canada "+ " ⠈⢻⣿⣦⣀⠀⠀⠀⠀⠀⠀⢀⣀⠀");
+ System.out.println("8 - CHF — Fr — Switzerland "+ " ⠉⠻⣿⣿⣶⣶⣶⣶⣿⣿⡿⠃⠀\n"
+ + " ⠉⠙⠛⠛⠛⠉⠁⠀⠀⠀" );
+
+ int origem;
+ while (true) {
+ System.out.print("\nEscolha a moeda a converter: ");
+ origem = sc.nextInt();
+ if (origem >= 1 && origem <= 8) break;
+
+ System.out.println("Opção invalida. Insira novamente.");
+
+ }
+
+ int destino;
+
+ while (true) {
+
+ System.out.print("Escolhe a moeda pretendida: ");
+
+ destino = sc.nextInt();
+
+ if (destino >= 1 && destino <= 8) break;
+
+ System.out.println("Opção invalida. Insira novamente.");
+
+ }
+
+ System.out.print("Valor a converter: ");
+
+ double valor = sc.nextDouble();
+
+ double resultado = converter(valor, origem - 1, destino - 1);
+
+ System.out.println("\n=== RESULTADO ===");
+
+ System.out.println(valor + " " +
+
+ simboloMoeda(origem) +
+
+ " = " +
+
+ resultado +
+
+ " " +
+
+ simboloMoeda(destino));
+
+ System.out.println("\n1 - Nova conversão");
+
+ System.out.println("0 - Sair");
+
+ System.out.print("Opção: ");
+
+ opcao = sc.nextInt();
+
+ }
+
+ System.out.println("Programa terminado.");
+
+ }
+ private static final String[] UNIDADES = {
+ "zero", "um", "dois", "três", "quatro",
+ "cinco", "seis", "sete", "oito", "nove"
+ };
+
+ private static final String[] ESPECIAIS = {
+ "dez", "onze", "doze", "treze", "catorze",
+ "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"
+ };
+
+ private static final String[] DEZENAS = {
+ "", "", "vinte", "trinta", "quarenta",
+ "cinquenta", "sessenta", "setenta", "oitenta", "noventa"
+ };
+
+ private static final String[] CENTENAS = {
+ "", "cento", "duzentos", "trezentos", "quatrocentos",
+ "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos"
+ };
+
+
+ public static void cheque() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Nome do beneficiário: ");
+ String beneficiario = scanner.nextLine();
+
+ System.out.print("Telefone beneficiário (9 dígitos): ");
+ String telBeneficiario = scanner.nextLine();
+
+ if (telBeneficiario.length() != 9 || !telBeneficiario.matches("\\d+")) {
+ System.out.println("║ Telefone inválido! Deve ter 9 dígitos.");
+ return;
+ }
+
+ System.out.print("Localidade: ");
+ String localidade = scanner.nextLine();
+
+ System.out.print("Data (dd/mm/aaaa): ");
+ String data = scanner.nextLine();
+
+ System.out.print("Valor do cheque: ");
+ double valor = scanner.nextDouble();
+ scanner.nextLine();
+
+ String quantiaPorExtenso = converterValorParaExtenso(valor);
+
+ System.out.print("Assinatura: ");
+ String assinatura = scanner.nextLine();
+
+ String valorFormatado = String.format("valor", valor);
+
+ String faturas = beneficiario + ", " + telBeneficiario + ", " + localidade + ", " + data + ", " + quantiaPorExtenso + ", " + valorFormatado + ", " + assinatura + "\n";
+ adicionaTextoAoFicheiro(faturas, "faturas.txt");
+
+ String valorTexto = String.format("%.2f€", valor);
+
+ System.out.println("┌──────────────────────────────────────────────────────────────┐");
+
+ System.out.println("│ CHEQUE │");
+
+ System.out.println("│ │");
+
+ System.out.printf("│ Banco: %-51s │%n", "Banco Horizonte");
+
+ System.out.println("│ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ │");
+
+ System.out.printf("│ Localidade: %-20s Data: %-16s │%n",
+
+ localidade, data);
+
+ System.out.println("│ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ │");
+
+ System.out.println("│ │");
+
+ System.out.println("│ Pague por este cheque a: │");
+
+ System.out.printf("│ %-60s │%n", beneficiario);
+
+ System.out.println("│ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ │");
+
+ System.out.println("│ │");
+
+ System.out.printf("│ A quantia de: %-45s │%n", quantiaPorExtenso);
+
+ System.out.println("│ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ │");
+
+ System.out.println("│ │");
+
+ System.out.printf("│ Valor: %-53s │%n", valorTexto);
+
+ System.out.println("│ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ │");
+
+ System.out.println("│ │");
+
+ System.out.printf("│ %45s │%n", assinatura);
+
+ System.out.println("│ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ │");
+
+ System.out.printf("│ %49s │%n", "Assinatura");
+
+ System.out.println("│ │");
+
+ System.out.println("└──────────────────────────────────────────────────────────────┘");
+
+ }
+
+
+ // Converte valor decimal para extenso (ex: 1234.56 -> "Mil duzentos e trinta e quatro euros e cinquenta e seis cêntimos")
+ public static String converterValorParaExtenso(double valor) {
+ int parteInteira = (int) valor;
+ int parteCentavos = (int) Math.round((valor - parteInteira) * 100);
+
+ String extenso = "";
+
+ if (parteInteira > 0) {
+ extenso += converterNumero(parteInteira);
+ if (parteInteira == 1) {
+ extenso += " euro";
+ } else {
+ extenso += " euros";
+ }
+ }
+
+ if (parteCentavos > 0) {
+ if (parteInteira > 0) {
+ extenso += " e ";
+ }
+ extenso += converterNumero(parteCentavos);
+ if (parteCentavos == 1) {
+ extenso += " cêntimo";
+ } else {
+ extenso += " cêntimos";
+ }
+ } else if (parteInteira == 0) {
+ extenso = "zero euros";
+ }
+
+ if (extenso.length() > 0) {
+ extenso = extenso.substring(0, 1).toUpperCase() + extenso.substring(1);
+ }
+
+ return extenso;
+ }
+
+ private static String converterNumero(int numero) {
+ if (numero == 0) return "zero";
+
+ int milhares = numero / 1000;
+ int resto = numero % 1000;
+
+ String resultado = "";
+
+ if (milhares > 0) {
+ if (milhares == 1) {
+ resultado += "mil";
+ } else {
+ resultado += converterCentenas(milhares) + " mil";
+ }
+
+ if (resto > 0) {
+ resultado += " e ";
+ }
+ }
+
+ if (resto > 0) {
+ if (resto == 100 && milhares > 0) {
+ resultado += "cem";
+ } else {
+ resultado += converterCentenas(resto);
+ }
+ }
+
+ return resultado;
+ }
+
+ private static String converterCentenas(int numero) {
+ int centena = numero / 100;
+ int resto = numero % 100;
+
+ String resultado = "";
+
+ if (centena > 0) {
+ resultado += CENTENAS[centena];
+ if (resto > 0) {
+ resultado += " e ";
+ }
+ }
+
+ if (resto > 0) {
+ resultado += converterDezenasUnidades(resto);
+ }
+
+ return resultado;
+ }
+
+ private static String converterDezenasUnidades(int numero) {
+ if (numero < 10) {
+ return UNIDADES[numero];
+ } else if (numero < 20) {
+ return ESPECIAIS[numero - 10];
+ } else {
+ int dezena = numero / 10;
+ int unidade = numero % 10;
+
+ if (unidade == 0) {
+ return DEZENAS[dezena];
+ } else {
+ return DEZENAS[dezena] + " e " + UNIDADES[unidade];
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/target/classes/com/mycompany/mavenproject25/Mavenproject25.class b/target/classes/com/mycompany/mavenproject25/Mavenproject25.class
new file mode 100644
index 0000000000000000000000000000000000000000..d5103678f37e2d1a271637bcd2b8f07eaa17a9d1
GIT binary patch
literal 34946
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
XQ(wQ-*ZnX6`4kRZ_=XANFYtc=iu8@(
literal 0
HcmV?d00001
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..df80a58
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1 @@
+com/mycompany/mavenproject25/Mavenproject25.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..f12e547
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1 @@
+/Users/250413/NetBeansProjects/mavenproject25/src/main/java/com/mycompany/mavenproject25/Mavenproject25.java
|