Skip to content

A multi-window Java banking application connected to a MySQL database, featuring user authentication, account management, and transaction history.

License

Notifications You must be signed in to change notification settings

Orlando275/JavaBank-MySQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 Project Overview

JavaBank-MySQL is a Java-based desktop banking system where you can:

  • 🔐 Securely log in or register with password hashing and database validation.
  • 💳 Manage accounts with real-time deposits, withdrawals, and balance checks.
  • 📈 View transaction history with sortable and filterable records for each user.
  • 🖥️ Navigate seamlessly through a multi-window Java Swing interface.
  • 🛠 Easily extend features thanks to a clean, modular MVC architecture.

This project is designed to showcase robust Java application development, database integration with MySQL, and professional-grade UI/UX design in a multi-window desktop environment.


📥 Installation & Setup

  1. Clone this repository

    git clone https://github.com/Orlando275/JavaBank-MySQL.git
  2. Configure your Java project

    • If you’re using Maven, add the MySQL Connector dependency in your pom.xml.
    • If you’re using Gradle, include the connector in your build.gradle.
    • Or download the JDBC driver JAR of your choice, place it in a lib/ directory, and add it to your classpath.
  3. Build and run

    # With Maven
    mvn clean install
    mvn exec:java -Dexec.mainClass="com.mycompany.project_.Main"
    
    # With Gradle
    gradle build
    gradle run

💾 Database Setup

Create the project_bank database and users table by executing the following SQL (via MySQL Workbench, CLI, etc.):

CREATE DATABASE project_bank;
USE project_bank;

CREATE TABLE IF NOT EXISTS users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL UNIQUE,
  email    VARCHAR(255),
  password VARCHAR(255) NOT NULL
);

🔌 JDBC Driver Installation

  • Download the JDBC driver for your database (e.g., MySQL Connector/J).
  • Place the JAR in your project’s lib/ folder or register it as a Maven/Gradle dependency.
  • Ensure the driver is on the runtime classpath so the application can connect to project_bank.

✨ Features

  • 🔐 User Authentication – Secure login and registration with password hashing and database validation.
  • 💳 Account Management – Deposit, withdrawal, and balance overview for each user.
  • 📈 Transaction History – Persistent log of transactions, sortable and filterable for quick review.
  • 🖥️ Multi-Window UI – Intuitive Java Swing interfaces with responsive layouts.
  • 🛠️ Modular Architecture – Clear separation of controllers, DAOs, models, and views for easy extension and maintenance.

📂 Project Structure

PROJECT_BANK/
├── src/
│   ├── main/
│   │   └── java/
│   │       └── com/
│   │           └── mycompany/
│   │               └── project_/
│   │                   ├── LoginWindow.java
│   │                   ├── Main.java
│   │                   ├── MainPage.java
│   │                   └── RegisterWindow.java
│   └── test/
│       └── java/
├── target/
├── LICENSE
├── pom.xml
└── README.md

🖼️ Screenshots

Welcome Screen

Welcome Screen

Registration Form

Registration Form

Login Window

Login Window

Login Success Popup

Login Success

Main Page Dashboard

Main Dashboard


🚀 How It Works

  • StartupMain.java initializes the Swing UI and establishes a JDBC connection to project_bank.
  • Authentication – User credentials are validated against the users table; new users can register.
  • Account Operations – Deposit and withdrawal actions update the database and UI in real time.
  • Transaction Logging – Every operation is recorded and fetched for display in the history view.
  • Modularity – Controllers handle user interactions, DAOs manage SQL queries, and models represent core entities — making feature additions straightforward.

🛠️ Technologies Used

  • Java 11+
  • Java Swing (UI)
  • JDBC / MySQL Connector/J
  • MySQL 8
  • Maven or Gradle

🔮 Future Improvements

  • Add role-based access control (admin vs. customer)
  • Encrypt sensitive data at rest
  • Integrate real-time notifications (e.g., balance alerts)
  • Build a web front-end with Spring Boot

📄 License

This project is licensed under the MIT License — see the LICENSE file for details.

About

A multi-window Java banking application connected to a MySQL database, featuring user authentication, account management, and transaction history.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages