diff --git a/build/classes/gui/GUIMyBank$1.class b/build/classes/gui/GUIMyBank$1.class index 889655e..fe30ed2 100644 Binary files a/build/classes/gui/GUIMyBank$1.class and b/build/classes/gui/GUIMyBank$1.class differ diff --git a/build/classes/gui/GUIMyBank$2.class b/build/classes/gui/GUIMyBank$2.class index f7134ae..dc5357b 100644 Binary files a/build/classes/gui/GUIMyBank$2.class and b/build/classes/gui/GUIMyBank$2.class differ diff --git a/build/classes/gui/GUIMyBank$3.class b/build/classes/gui/GUIMyBank$3.class index aec5dd4..a119ad2 100644 Binary files a/build/classes/gui/GUIMyBank$3.class and b/build/classes/gui/GUIMyBank$3.class differ diff --git a/build/classes/gui/GUIMyBank$4.class b/build/classes/gui/GUIMyBank$4.class index 00c0806..832852b 100644 Binary files a/build/classes/gui/GUIMyBank$4.class and b/build/classes/gui/GUIMyBank$4.class differ diff --git a/build/classes/gui/GUIMyBank$5.class b/build/classes/gui/GUIMyBank$5.class index d2d0292..1427092 100644 Binary files a/build/classes/gui/GUIMyBank$5.class and b/build/classes/gui/GUIMyBank$5.class differ diff --git a/build/classes/gui/GUIMyBank.class b/build/classes/gui/GUIMyBank.class index 48311d1..e7be23b 100644 Binary files a/build/classes/gui/GUIMyBank.class and b/build/classes/gui/GUIMyBank.class differ diff --git a/build/classes/logic/ContoCorrente.class b/build/classes/logic/ContoCorrente.class index dd1d5fb..9508b29 100644 Binary files a/build/classes/logic/ContoCorrente.class and b/build/classes/logic/ContoCorrente.class differ diff --git a/build/classes/logic/MyBank.class b/build/classes/logic/MyBank.class index 520f37d..d0eb4ff 100644 Binary files a/build/classes/logic/MyBank.class and b/build/classes/logic/MyBank.class differ diff --git a/src/gui/GUIMyBank.java b/src/gui/GUIMyBank.java index c8c9496..34f8216 100644 --- a/src/gui/GUIMyBank.java +++ b/src/gui/GUIMyBank.java @@ -51,7 +51,8 @@ public class GUIMyBank extends javax.swing.JFrame { // //GEN-BEGIN:initComponents + // //GEN-BEGIN:initComponents private void initComponents() { lblNome = new javax.swing.JLabel(); @@ -139,89 +140,125 @@ public class GUIMyBank extends javax.swing.JFrame { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(99, 99, 99) - .addComponent(btnAprireContoCorrente)) - .addGroup(layout.createSequentialGroup() - .addGap(56, 56, 56) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 272, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addGap(17, 17, 17) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblDataDiNascita) - .addComponent(lblSaldoIniziale)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(txtDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(txtSaldoIniziale))) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblNome) - .addComponent(lblCognome) - .addComponent(lblCodiceFiscale)) - .addGap(26, 26, 26) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(lblNumeroContoCorrente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnVersamento) - .addComponent(btnPrelievo) - .addComponent(btnListaMovimenti) - .addComponent(txtNumeroContoCorrente)) - .addGap(23, 23, 23)) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(99, 99, 99) + .addComponent(btnAprireContoCorrente)) + .addGroup(layout.createSequentialGroup() + .addGap(56, 56, 56) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 272, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addGap(17, 17, 17) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblDataDiNascita) + .addComponent(lblSaldoIniziale)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addGroup(layout.createSequentialGroup() + .addComponent(txtDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, 64, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btnDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, 39, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(txtSaldoIniziale))) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblNome) + .addComponent(lblCognome) + .addComponent(lblCodiceFiscale)) + .addGap(26, 26, 26) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, + 113, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtCodiceFiscale, + javax.swing.GroupLayout.PREFERRED_SIZE, 115, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtCognome, + javax.swing.GroupLayout.PREFERRED_SIZE, 113, + javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, + Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(lblNumeroContoCorrente, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnVersamento) + .addComponent(btnPrelievo) + .addComponent(btnListaMovimenti) + .addComponent(txtNumeroContoCorrente)) + .addGap(23, 23, 23))); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(14, 14, 14) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblNome) - .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblNumeroContoCorrente)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblCognome) - .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtNumeroContoCorrente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblCodiceFiscale) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblDataDiNascita) - .addComponent(txtDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(btnDataDiNascita)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblSaldoIniziale) - .addComponent(txtSaldoIniziale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(layout.createSequentialGroup() - .addComponent(btnVersamento) - .addGap(18, 18, 18) - .addComponent(btnPrelievo) - .addGap(18, 18, 18) - .addComponent(btnListaMovimenti))) - .addGap(18, 18, 18) - .addComponent(btnAprireContoCorrente) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, Short.MAX_VALUE) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(14, 14, 14)) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(14, 14, 14) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblNome) + .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblNumeroContoCorrente)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCognome) + .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtNumeroContoCorrente, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCodiceFiscale) + .addComponent(txtCodiceFiscale, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblDataDiNascita) + .addComponent(txtDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnDataDiNascita)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblSaldoIniziale) + .addComponent(txtSaldoIniziale, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addComponent(btnVersamento) + .addGap(18, 18, 18) + .addComponent(btnPrelievo) + .addGap(18, 18, 18) + .addComponent(btnListaMovimenti))) + .addGap(18, 18, 18) + .addComponent(btnAprireContoCorrente) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, + Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(14, 14, 14))); pack(); }// //GEN-END:initComponents @@ -252,19 +289,20 @@ public class GUIMyBank extends javax.swing.JFrame { }// GEN-LAST:event_txtSaldoInizialeFocusGained private void btnVersamentoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnVersamentoActionPerformed - String versamento; + double versamento; boolean error; do { error = false; - versamento = JOptionPane.showInputDialog("Inserire l'importo da versare:"); - if (!isNumeroValid(versamento)) { + try { + versamento = MyBank.valoreDouble(JOptionPane.showInputDialog("Inserire l'importo da versare:")); + + contoCorrenteAperto.versa(versamento); + lblSaldoIniziale.setText("Saldo"); + txtSaldoIniziale.setText(Double.toString(contoCorrenteAperto.getSaldo())); + } catch (NumberFormatException _) { JOptionPane.showMessageDialog(null, "L'importo che si desidera versare non è valido."); error = true; - } else { - contoCorrente.versa(Double.parseDouble(versamento)); - lblSaldoIniziale.setText("Saldo"); - txtSaldoIniziale.setText(Double.toString(contoCorrente.getSaldo())); } } while (error); }// GEN-LAST:event_btnVersamentoActionPerformed diff --git a/src/logic/ContoCorrente.java b/src/logic/ContoCorrente.java index adb7192..0c702ab 100644 --- a/src/logic/ContoCorrente.java +++ b/src/logic/ContoCorrente.java @@ -4,6 +4,10 @@ */ package logic; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -39,7 +43,7 @@ public class ContoCorrente { this.saldo = saldo; this.numeroContoCorrente = numeroContoCorrente; numeriContiCorrenti.add(numeroContoCorrente); - MyBank.log("Apertura del conto con saldo iniziale di " + this.saldo, numeroContoCorrente); + log("Apertura del conto con saldo iniziale di " + this.saldo); } public static List getNumeriContiCorrenti() { @@ -56,26 +60,44 @@ public class ContoCorrente { public void versa(double quantita){ this.saldo += quantita; - MyBank.log("Versamento di " + quantita + " effettuato con successo.", this.numeroContoCorrente); + log("Versamento di " + quantita + " effettuato con successo."); logSaldoCorrente(); } public void preleva(double quantita) throws IllegalArgumentException{ if (quantita > this.saldo) { - MyBank.log("Tentato prelievo di " + quantita + " fallito per superamento saldo.", this.numeroContoCorrente); + log("Tentato prelievo di " + quantita + " fallito per superamento saldo."); logSaldoCorrente(); throw new IllegalArgumentException("La quantità desiderata eccede il saldo corrente."); } else { this.saldo -= quantita; - MyBank.log("Prelievo di " + quantita + " effettuato con successo.", this.numeroContoCorrente); + log("Prelievo di " + quantita + " effettuato con successo."); logSaldoCorrente(); } } private void logSaldoCorrente() { - MyBank.log("Saldo corrente: " + this.saldo + "\n", this.numeroContoCorrente); + log("Saldo corrente: " + this.saldo + "\n"); } + + private void log(String messaggio) { + StringBuilder sb = new StringBuilder(); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.sss dd/MM/yyyy"); + try (BufferedWriter bw = new BufferedWriter( + new FileWriter(MyBank.PATH_CONTI + "movimenti_" + this.numeroContoCorrente + ".txt", true))) { + sb.append("["); + sb.append(sdf.format(new Date())); + sb.append("] "); + sb.append(messaggio); + sb.append("\n"); + + bw.write(sb.toString()); + } catch (IOException _) { + System.out.println("Errore nella scrittura del movimento."); + } + } + public String getNome() { return nome; } diff --git a/src/logic/MyBank.java b/src/logic/MyBank.java index c08c20c..5c32a04 100644 --- a/src/logic/MyBank.java +++ b/src/logic/MyBank.java @@ -35,7 +35,7 @@ public class MyBank { static Scanner sc = new Scanner(System.in); static final String ERRORE_GENERICO = "Errore: opzione non valida."; static final String ERRORE_CONTI_VUOTO = "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire."; - static final String PATH_CONTI = "./src/logic/conti/"; + public static final String PATH_CONTI = "./src/logic/conti/"; private static ArrayList conti = importaConti(); public static ArrayList getConti() { @@ -61,11 +61,6 @@ public class MyBank { switch (scelta) { case 0: break; - case 1: - System.out.println("Numero conto: " + conti.getLast().getNumeroContoCorrente()); - System.out.println("Conto corrente aggiunto con successo."); - pausa(); - break; case 2: if (conti.isEmpty()) { System.out.println(ERRORE_CONTI_VUOTO); @@ -255,23 +250,6 @@ public class MyBank { return contoCorrente; } - static void log(String messaggio, int numeroContoCorrente) { - StringBuilder sb = new StringBuilder(); - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.sss dd/MM/yyyy"); - try (BufferedWriter bw = new BufferedWriter( - new FileWriter(PATH_CONTI + "movimenti_" + numeroContoCorrente + ".txt", true))) { - sb.append("["); - sb.append(sdf.format(new Date())); - sb.append("] "); - sb.append(messaggio); - sb.append("\n"); - - bw.write(sb.toString()); - } catch (IOException _) { - System.out.println("Errore nella scrittura del movimento."); - } - } - static void stampaLog(ArrayList conti) { try (BufferedReader br = new BufferedReader( new FileReader(PATH_CONTI + "movimenti_" + selezionaConto(conti).getNumeroContoCorrente() + ".txt"))) {