An open API service indexing awesome lists of open source software.

https://github.com/akshawop/banking-system

Made a small scale CLI based banking system made in java(just for practice)
https://github.com/akshawop/banking-system

banking-system java jdbc jline mysql practice-project

Last synced: 2 months ago
JSON representation

Made a small scale CLI based banking system made in java(just for practice)

Awesome Lists containing this project

README

          

๏ปฟ# ๐Ÿ›๏ธ Banking System Project Documentation

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. ๐Ÿš€

---

## 1. ๐Ÿ—‚ Project Structure

```
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 ๐Ÿ“˜
```

---

## 2. โš™๏ธ Prerequisites

- **Java JDK 17 or higher** installed ([Download here](https://adoptium.net/))โ˜•
- **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) โœ…

---

## 3. ๐Ÿ— Setting Up the Database

1. **Start your MySQL server.** ๐Ÿ”Œ
2. **Open `sql/schema.sql`** and run its contents in your MySQL client ๐Ÿ“„โœ…

---

## 4. ๐Ÿ›  Configuring the Project

- **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.

---

## 5. ๐Ÿƒ Building and Running

### **A. Compile the Project**

#### **Windows (PowerShell)** ๐Ÿ’ป

```sh
./windows/compile.ps1
```

#### **Linux / macOS (Shell)** ๐Ÿง

```sh
./linux/compile.sh
```

#### **Manual Compilation** ๐Ÿ› ๏ธ

```sh
javac -cp "lib/*" -d bin src/me/akshawop/banking/**/*.java
```

---

### **B. Run CLI Applications** ๐Ÿ–ฅ๏ธ

Each CLI file represents a different role in the banking system.

#### 1. **BankCLI** ๐Ÿฆ๐Ÿ‘”

- **Purpose:** Manage banks and branches
- **Main File:** `src/me/akshawop/banking/cli/BankCLI.java`
- **Run:**

- Windows ๐Ÿ’ป:
```sh
./windows/bank.ps1
```
- Linux/macOS ๐Ÿง:
```sh
./linux/bank.sh
```
- Manual:
```sh
# windows
java -cp "bin;lib/*" me.akshawop.banking.cli.BankCLI
```
```sh
# linux / macOS
java -cp "bin:lib/*" me.akshawop.banking.cli.BankCLI
```

- **What it does:**
- Allows creation and management of banks and branches ๐Ÿข
- Uses `BankDAO` for database operations ๐Ÿ—„
- Helper forms in `inputmodules/forms/` for user input โœ๏ธ

#### 2. **BranchCLI** ๐Ÿ›๏ธ๐Ÿ‘”

- **Purpose:** Manage customers, accounts, and branch operations
- **Main File:** `src/me/akshawop/banking/cli/BranchCLI.java`
- **Run:**

- Windows ๐Ÿ’ป:
```sh
./windows/branch.ps1
```
- Linux/macOS ๐Ÿง:
```sh
./linux/branch.sh
```
- Manual:
```sh
# windows
java -cp "bin;lib/*" me.akshawop.banking.cli.BranchCLI
```
```sh
# linux / macOS
java -cp "bin:lib/*" me.akshawop.banking.cli.BranchCLI
```

- **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 ๐Ÿงนโœ…

#### 3. **ATM** ๐Ÿง๐Ÿ‘ค

- **Purpose:** Simulate ATM operations
- **Main File:** `src/me/akshawop/banking/cli/ATM.java`
- **Run:**

- Windows ๐Ÿ’ป:
```sh
./windows/atm.ps1
```
- Linux/macOS ๐Ÿง:
```sh
./linux/atm.sh
```
- Manual:
```sh
# windows
java -cp "bin;lib/*" me.akshawop.banking.cli.ATM
```
```sh
# linux / macOS
java -cp "bin:lib/*" me.akshawop.banking.cli.ATM
```

- **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 ๐Ÿ—„

---

## 6. โš™ How the System Works

### **CLI Classes (User Interfaces)** ๐Ÿ–ฅ๏ธ

- **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 ๐Ÿ’ธ

### **DAO Classes** ๐Ÿ—„

- BankDAO ๐Ÿฆ, BranchDAO ๐Ÿ›๏ธ, AccountDAO ๐Ÿ’ฐ, CustomerDAO ๐Ÿ‘ค, TransactionDAO ๐Ÿ’ธ, CardDAO ๐Ÿ’ณ

### **Helper Classes** ๐Ÿ› ๏ธ

- **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** โš ๏ธโŒ

---

## 7. ๐ŸŽญ Roleplay Usage

- Bank Official ๐Ÿฆ โ†’ BankCLI
- Branch Official ๐Ÿ›๏ธ โ†’ BranchCLI
- Customer ๐Ÿง โ†’ ATM

---

## 8. ๐Ÿ›‘ Troubleshooting

- 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.

---

## 9. ๐ŸŽจ Customization

- Add roles โž•
Create new CLI classes in `cli/` and corresponding DAOs in `sys/`.
- Change database ๐Ÿ”‘
Update `DB.java` for different database engines or credentials.
- Add features โœจ
Extend forms, DAOs, and CLI classes as needed.

---

## 10. ๐Ÿ“š Additional Resources

- [VS Code Java Docs](https://code.visualstudio.com/docs/java/java-tutorial) ๐Ÿ’ป
- [MySQL Connector/J Docs](https://dev.mysql.com/doc/connector-j/en/) ๐Ÿ—„
- [JLine Docs](https://github.com/jline/jline3) โœ๏ธ

---

### ๐ŸŽ‰**Enjoy exploring and roleplaying with your Banking System project!**

### If you have any questions or need help, check the comments in the code, see the error messages or DM me on instagram.๐Ÿ“