📢 Nuovo Corso Laravel API disponibile!

Progetto Gestione di una Banca in Java

Descrizione del Progetto

In questo progetto, creerai un semplice sistema di gestione di una banca utilizzando la linea di comando in Java. Il sistema permetterà di creare conti, effettuare depositi, prelievi e visualizzare i saldi.

Requisiti

  1. Librerie Java: Utilizzare le librerie standard di Java.
  2. Input e Output: Utilizzare la riga di comando per l’input e l’output.
  3. Funzionalità della Banca:
    • Creare nuovi conti.
    • Effettuare depositi sui conti.
    • Effettuare prelievi dai conti.
    • Visualizzare i saldi dei conti.
  4. Gestione degli Errori: Gestire input non validi e operazioni non valide.

Struttura del Progetto

banca/
├── src/
│ ├── Main.java
│ ├── Banca.java
│ └── Conto.java
└── README.md

Codice di Esempio

Main.java: Questo file contiene il punto di ingresso dell’applicazione.

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Banca banca = new Banca();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1. Crea un nuovo conto");
System.out.println("2. Effettua un deposito");
System.out.println("3. Effettua un prelievo");
System.out.println("4. Visualizza saldo");
System.out.println("5. Esci");
int scelta = scanner.nextInt();
scanner.nextLine(); // Consuma il newline
switch (scelta) {
case 1:
System.out.print("Inserisci il nome del proprietario: ");
String proprietario = scanner.nextLine();
banca.creaConto(proprietario);
break;
case 2:
System.out.print("Inserisci il numero del conto: ");
int numeroContoDeposito = scanner.nextInt();
System.out.print("Inserisci l'importo del deposito: ");
double importoDeposito = scanner.nextDouble();
banca.effettuaDeposito(numeroContoDeposito, importoDeposito);
break;
case 3:
System.out.print("Inserisci il numero del conto: ");
int numeroContoPrelievo = scanner.nextInt();
System.out.print("Inserisci l'importo del prelievo: ");
double importoPrelievo = scanner.nextDouble();
banca.effettuaPrelievo(numeroContoPrelievo, importoPrelievo);
break;
case 4:
System.out.print("Inserisci il numero del conto: ");
int numeroContoSaldo = scanner.nextInt();
banca.visualizzaSaldo(numeroContoSaldo);
break;
case 5:
System.out.println("Uscita in corso...");
scanner.close();
return;
default:
System.out.println("Scelta non valida.");
}
}
}
}

Banca.java: Questo file contiene l’implementazione delle operazioni bancarie.

import java.util.HashMap;
import java.util.Map;
public class Banca {
private Map<Integer, Conto> conti;
private int prossimoNumeroConto;
public Banca() {
conti = new HashMap<>();
prossimoNumeroConto = 1;
}
public void creaConto(String proprietario) {
Conto conto = new Conto(prossimoNumeroConto, proprietario);
conti.put(prossimoNumeroConto, conto);
System.out.println("Conto creato con successo. Numero conto: " + prossimoNumeroConto);
prossimoNumeroConto++;
}
public void effettuaDeposito(int numeroConto, double importo) {
Conto conto = conti.get(numeroConto);
if (conto != null) {
conto.deposita(importo);
System.out.println("Deposito effettuato con successo.");
} else {
System.out.println("Conto non trovato.");
}
}
public void effettuaPrelievo(int numeroConto, double importo) {
Conto conto = conti.get(numeroConto);
if (conto != null) {
if (conto.preleva(importo)) {
System.out.println("Prelievo effettuato con successo.");
} else {
System.out.println("Saldo insufficiente.");
}
} else {
System.out.println("Conto non trovato.");
}
}
public void visualizzaSaldo(int numeroConto) {
Conto conto = conti.get(numeroConto);
if (conto != null) {
System.out.println("Saldo del conto " + numeroConto + ": " + conto.getSaldo());
} else {
System.out.println("Conto non trovato.");
}
}
}

Conto.java: Questo file contiene l’implementazione della classe Conto.

public class Conto {
private int numeroConto;
private String proprietario;
private double saldo;
public Conto(int numeroConto, String proprietario) {
this.numeroConto = numeroConto;
this.proprietario = proprietario;
this.saldo = 0.0;
}
public void deposita(double importo) {
if (importo > 0) {
saldo += importo;
}
}
public boolean preleva(double importo) {
if (importo > 0 && saldo >= importo) {
saldo -= importo;
return true;
}
return false;
}
public double getSaldo() {
return saldo;
}
}

Istruzioni per l’Esecuzione

  1. Compilare il Progetto:

    Terminal window
    javac src/Main.java src/Banca.java src/Conto.java -d out
  2. Eseguire l’Applicazione:

    Terminal window
    java -cp out Main

Estensioni Possibili

  1. Funzionalità Avanzate: Aggiungere funzionalità come trasferimenti tra conti, gestione di più valute, ecc.
  2. Persistenza dei Dati: Integrare un sistema di persistenza dei dati per salvare i conti su file o database.
  3. Autenticazione: Implementare un sistema di autenticazione per proteggere l’accesso ai conti.