Welcome to the Banking System project! This guide will help you set up, understand, and run the project on your local machine using Visual Studio Code or any Java IDE. π
Banking System/
β
βββ src/ # β Java source code
β βββ me/akshawop/banking/
β βββ cli/ # π₯ Command Line Interfaces (CLIs)
β β βββ AccountCLI.java
β β βββ ATM.java
β β βββ BankCLI.java
β β βββ BranchCLI.java
β β βββ CustomerCLI.java
β β βββ inputmodules/ # π Forms and Inputs for User interaction
β β βββ NewAddress.java
β β βββ UpdateAddress.java
β β βββ forms/
β β βββ CreateBankForm.java
β β βββ CreateBranchForm.java
β β βββ NewAccountForm.java
β β βββ NewCustomerForm.java
β β βββ UpdateBankForm.java
β β βββ UpdateCustomerForm.java
β βββ customtype/ # π¦ Custom data types
β β βββ Address.java
β βββ sql/ # ποΈ SQL query helpers
β β βββ SQLQueries.java
β βββ sys/ # βοΈ Core system classes & DAOs
β β βββ Account.java
β β βββ AccountDAO.java
β β βββ AccountStatus.java
β β βββ AccountType.java
β β βββ Bank.java
β β βββ BankDAO.java
β β βββ Branch.java
β β βββ BranchDAO.java
β β βββ Card.java
β β βββ CardDAO.java
β β βββ CardStatus.java
β β βββ CardType.java
β β βββ Customer.java
β β βββ CustomerDAO.java
β β βββ DB.java # π Database connection config
β β βββ Transaction.java
β β βββ TransactionDAO.java
β β βββ TransactionMode.java
β β βββ TransactionType.java
β βββ util/ # π οΈ Utility classes & exceptions
β βββ AccountBlockedException.java
β βββ CardBlockedException.java
β βββ ClearScreen.java
β βββ IncorrectPinException.java
β βββ InputChecker.java
β βββ InputPIN.java
β βββ NotEnoughBalanceException.java
β
βββ lib/ # π¦ External libraries (JARs)
β βββ jline-3.30.4.jar
β βββ mysql-connector-j-9.3.0.jar
β
βββ sql/ # π SQL schema for database setup
β βββ schema.sql
β
βββ bin/ # ποΈ Compiled Java classes (after build)
β
βββ windows/ # π» Windows scripts for compiling and running
β βββ atm.ps1
β βββ bank.ps1
β βββ branch.ps1
β βββ compile.ps1
β
βββ linux/ # π§ Linux / macOS shell scripts for compiling and running
β βββ atm.sh
β βββ bank.sh
β βββ branch.sh
β βββ compile.sh
β
βββ .gitignore π«
βββ .gitattributes βοΈ
βββ README.md π
-
Java JDK 17 or higher installed (Download here)β
-
MySQL Server π running locally (or update connection settings in
DB.java
) -
Visual Studio Code π» (recommended) or any Java IDE
-
VS Code Extensions:
- Extension Pack for Java π¦
- Java Dependency Viewer π
- Code Runner (optional) β
- Start your MySQL server. π
- Open
sql/schema.sql
and run its contents in your MySQL client πβ
- Dependencies: MySQL Connector/J π and JLine βοΈ (in
lib/
) - Database Connection π: Edit
src/me/akshawop/banking/sys/DB.java
to match your MySQL username, password, and database name.
./windows/compile.ps1
./linux/compile.sh
javac -cp "lib/*" -d bin src/me/akshawop/banking/**/*.java
Each CLI file represents a different role in the banking system.
-
Purpose: Manage banks and branches
-
Main File:
src/me/akshawop/banking/cli/BankCLI.java
-
Run:
- Windows π»:
./windows/bank.ps1
- Linux/macOS π§:
./linux/bank.sh
- Manual:
# windows java -cp "bin;lib/*" me.akshawop.banking.cli.BankCLI
# linux / macOS java -cp "bin:lib/*" me.akshawop.banking.cli.BankCLI
- Windows π»:
-
What it does:
- Allows creation and management of banks and branches π’
- Uses
BankDAO
for database operations π - Helper forms in
inputmodules/forms/
for user input βοΈ
-
Purpose: Manage customers, accounts, and branch operations
-
Main File:
src/me/akshawop/banking/cli/BranchCLI.java
-
Run:
- Windows π»:
./windows/branch.ps1
- Linux/macOS π§:
./linux/branch.sh
- Manual:
# windows java -cp "bin;lib/*" me.akshawop.banking.cli.BranchCLI
# linux / macOS java -cp "bin:lib/*" me.akshawop.banking.cli.BranchCLI
- Windows π»:
-
What it does:
- Allows branch officials to add/update customers π€, manage accounts π°, issue cards π³, and handle transactions πΈ
- Uses
BranchDAO
for branch-specific database operations π - Helper forms βοΈ and utility classes for input validation and screen clearing π§Ήβ
-
Purpose: Simulate ATM operations
-
Main File:
src/me/akshawop/banking/cli/ATM.java
-
Run:
- Windows π»:
./windows/atm.ps1
- Linux/macOS π§:
./linux/atm.sh
- Manual:
# windows java -cp "bin;lib/*" me.akshawop.banking.cli.ATM
# linux / macOS java -cp "bin:lib/*" me.akshawop.banking.cli.ATM
- Windows π»:
-
What it does:
- Allows customers to log in π, check balances π°, withdraw/deposit money πΈ, and view transactions π§Ύ
- Uses
AccountDAO
,TransactionDAO
, and related classes for account and transaction management π
- BankCLI: π¦ manages banks and branches π’, uses BankDAO π, forms βοΈ
- BranchCLI: ποΈ manages customers π€ and accounts π°, uses BranchDAO π, forms βοΈ and utils π§Ήβ
- ATM: π§ customer interface, interacts with AccountDAO π°, TransactionDAO πΈ
- BankDAO π¦, BranchDAO ποΈ, AccountDAO π°, CustomerDAO π€, TransactionDAO πΈ, CardDAO π³
-
Forms βοΈ(
inputmodules/forms/
):
Collect and validate user input for creating/updating entities. -
Utils π§Ή(
util/
):ClearScreen
: Clears the console for better UX.InputChecker
: Validates user input.
-
Custom exceptions for error handling
β οΈ β
- Bank Official π¦ β BankCLI
- Branch Official ποΈ β BranchCLI
- Customer π§ β ATM
- Database errors π Check your MySQL connection settings (in the DB.java file) and ensure the schema is set up in the database (schema.sql).
- Class not found π¦
Make sure you compile with the correct classpath (
lib/*
for JARs). - Input issues
β οΈ Ensure your terminal is focused when running CLI programs.
- Add roles β
Create new CLI classes in
cli/
and corresponding DAOs insys/
. - Change database π
Update
DB.java
for different database engines or credentials. - Add features β¨ Extend forms, DAOs, and CLI classes as needed.
- VS Code Java Docs π»
- MySQL Connector/J Docs π
- JLine Docs βοΈ