{"id":29311425,"url":"https://github.com/akshawop/banking-system","last_synced_at":"2026-05-19T06:06:44.321Z","repository":{"id":303104510,"uuid":"1013412565","full_name":"akshawop/banking-system","owner":"akshawop","description":"Made a small scale CLI based banking system made in java(just for practice)","archived":false,"fork":false,"pushed_at":"2025-08-14T18:18:06.000Z","size":3893,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-14T20:26:17.195Z","etag":null,"topics":["banking-system","java","jdbc","jline","mysql","practice-project"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akshawop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-03T21:26:32.000Z","updated_at":"2025-08-14T18:18:10.000Z","dependencies_parsed_at":"2025-07-05T18:59:58.369Z","dependency_job_id":"6e2f20e5-e6e8-4301-90cc-5fcf812aef5f","html_url":"https://github.com/akshawop/banking-system","commit_stats":null,"previous_names":["akshawop/banking-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akshawop/banking-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshawop%2Fbanking-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshawop%2Fbanking-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshawop%2Fbanking-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshawop%2Fbanking-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akshawop","download_url":"https://codeload.github.com/akshawop/banking-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshawop%2Fbanking-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33204120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"online","status_checked_at":"2026-05-19T02:00:06.763Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["banking-system","java","jdbc","jline","mysql","practice-project"],"created_at":"2025-07-07T08:14:40.531Z","updated_at":"2026-05-19T06:06:44.316Z","avatar_url":"https://github.com/akshawop.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# 🏛️ Banking System Project Documentation\n\nWelcome 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. 🚀\n\n---\n\n## 1. 🗂 Project Structure\n\n```\nBanking System/\n│\n├── src/                        # ☕ Java source code\n│   └── me/akshawop/banking/\n│        ├── cli/               # 🖥 Command Line Interfaces (CLIs)\n│        │    ├── AccountCLI.java\n│        │    ├── ATM.java\n│        │    ├── BankCLI.java\n│        │    ├── BranchCLI.java\n│        │    ├── CustomerCLI.java\n│        │    └── inputmodules/        # 📝 Forms and Inputs for User interaction\n│        │         ├── NewAddress.java\n│        │         ├── UpdateAddress.java\n│        │         └── forms/\n│        │              ├── CreateBankForm.java\n│        │              ├── CreateBranchForm.java\n│        │              ├── NewAccountForm.java\n│        │              ├── NewCustomerForm.java\n│        │              ├── UpdateBankForm.java\n│        │              └── UpdateCustomerForm.java\n│        ├── customtype/               # 📦 Custom data types\n│        │    └── Address.java\n│        ├── sql/                       # 🗃️ SQL query helpers\n│        │    └── SQLQueries.java\n│        ├── sys/                       # ⚙️ Core system classes \u0026 DAOs\n│        │    ├── Account.java\n│        │    ├── AccountDAO.java\n│        │    ├── AccountStatus.java\n│        │    ├── AccountType.java\n│        │    ├── Bank.java\n│        │    ├── BankDAO.java\n│        │    ├── Branch.java\n│        │    ├── BranchDAO.java\n│        │    ├── Card.java\n│        │    ├── CardDAO.java\n│        │    ├── CardStatus.java\n│        │    ├── CardType.java\n│        │    ├── Customer.java\n│        │    ├── CustomerDAO.java\n│        │    ├── DB.java               # 🔌 Database connection config\n│        │    ├── Transaction.java\n│        │    ├── TransactionDAO.java\n│        │    ├── TransactionMode.java\n│        │    └── TransactionType.java\n│        └── util/                      # 🛠️ Utility classes \u0026 exceptions\n│             ├── AccountBlockedException.java\n│             ├── CardBlockedException.java\n│             ├── ClearScreen.java\n│             ├── IncorrectPinException.java\n│             ├── InputChecker.java\n│             ├── InputPIN.java\n│             └── NotEnoughBalanceException.java\n│\n├── lib/                        # 📦 External libraries (JARs)\n│   ├── jline-3.30.4.jar\n│   └── mysql-connector-j-9.3.0.jar\n│\n├── sql/                        # 🗄 SQL schema for database setup\n│   └── schema.sql\n│\n├── bin/                        # 🏗️ Compiled Java classes (after build)\n│\n├── windows/                    # 💻 Windows scripts for compiling and running\n│   ├── atm.ps1\n│   ├── bank.ps1\n│   ├── branch.ps1\n│   └── compile.ps1\n│\n├── linux/                      # 🐧 Linux / macOS shell scripts for compiling and running\n│   ├── atm.sh\n│   ├── bank.sh\n│   ├── branch.sh\n│   └── compile.sh\n│\n├── .gitignore 🚫\n├── .gitattributes ⚙️\n└── README.md 📘\n```\n\n---\n\n## 2. ⚙️ Prerequisites\n\n-   **Java JDK 17 or higher** installed ([Download here](https://adoptium.net/))☕\n-   **MySQL Server** 🗄 running locally (or update connection settings in `DB.java`)\n-   **Visual Studio Code** 💻 (recommended) or any Java IDE\n-   **VS Code Extensions:**\n\n    -   Extension Pack for Java 📦\n    -   Java Dependency Viewer 🔍\n    -   Code Runner (optional) ✅\n\n---\n\n## 3. 🏗 Setting Up the Database\n\n1. **Start your MySQL server.** 🔌\n2. **Open `sql/schema.sql`** and run its contents in your MySQL client 📄✅\n\n---\n\n## 4. 🛠 Configuring the Project\n\n-   **Dependencies:** MySQL Connector/J 🗄 and JLine ✍️ (in `lib/`)\n-   **Database Connection 🔑:** Edit `src/me/akshawop/banking/sys/DB.java` to match your MySQL username, password, and database name.\n\n---\n\n## 5. 🏃 Building and Running\n\n### **A. Compile the Project**\n\n#### **Windows (PowerShell)** 💻\n\n```sh\n./windows/compile.ps1\n```\n\n#### **Linux / macOS (Shell)** 🐧\n\n```sh\n./linux/compile.sh\n```\n\n#### **Manual Compilation** 🛠️\n\n```sh\njavac -cp \"lib/*\" -d bin src/me/akshawop/banking/**/*.java\n```\n\n---\n\n### **B. Run CLI Applications** 🖥️\n\nEach CLI file represents a different role in the banking system.\n\n#### 1. **BankCLI** 🏦👔\n\n-   **Purpose:** Manage banks and branches\n-   **Main File:** `src/me/akshawop/banking/cli/BankCLI.java`\n-   **Run:**\n\n    -   Windows 💻:\n        ```sh\n        ./windows/bank.ps1\n        ```\n    -   Linux/macOS 🐧:\n        ```sh\n        ./linux/bank.sh\n        ```\n    -   Manual:\n        ```sh\n        # windows\n        java -cp \"bin;lib/*\" me.akshawop.banking.cli.BankCLI\n        ```\n        ```sh\n        # linux / macOS\n        java -cp \"bin:lib/*\" me.akshawop.banking.cli.BankCLI\n        ```\n\n-   **What it does:**\n    -   Allows creation and management of banks and branches 🏢\n    -   Uses `BankDAO` for database operations 🗄\n    -   Helper forms in `inputmodules/forms/` for user input ✍️\n\n#### 2. **BranchCLI** 🏛️👔\n\n-   **Purpose:** Manage customers, accounts, and branch operations\n-   **Main File:** `src/me/akshawop/banking/cli/BranchCLI.java`\n-   **Run:**\n\n    -   Windows 💻:\n        ```sh\n        ./windows/branch.ps1\n        ```\n    -   Linux/macOS 🐧:\n        ```sh\n        ./linux/branch.sh\n        ```\n    -   Manual:\n        ```sh\n        # windows\n        java -cp \"bin;lib/*\" me.akshawop.banking.cli.BranchCLI\n        ```\n        ```sh\n        # linux / macOS\n        java -cp \"bin:lib/*\" me.akshawop.banking.cli.BranchCLI\n        ```\n\n-   **What it does:**\n    -   Allows branch officials to add/update customers 👤, manage accounts 💰, issue cards 💳, and handle transactions 💸\n    -   Uses `BranchDAO` for branch-specific database operations 🗄\n    -   Helper forms ✍️ and utility classes for input validation and screen clearing 🧹✅\n\n#### 3. **ATM** 🏧👤\n\n-   **Purpose:** Simulate ATM operations\n-   **Main File:** `src/me/akshawop/banking/cli/ATM.java`\n-   **Run:**\n\n    -   Windows 💻:\n        ```sh\n        ./windows/atm.ps1\n        ```\n    -   Linux/macOS 🐧:\n        ```sh\n        ./linux/atm.sh\n        ```\n    -   Manual:\n        ```sh\n        # windows\n        java -cp \"bin;lib/*\" me.akshawop.banking.cli.ATM\n        ```\n        ```sh\n        # linux / macOS\n        java -cp \"bin:lib/*\" me.akshawop.banking.cli.ATM\n        ```\n\n-   **What it does:**\n    -   Allows customers to log in 🔒, check balances 💰, withdraw/deposit money 💸, and view transactions 🧾\n    -   Uses `AccountDAO`, `TransactionDAO`, and related classes for account and transaction management 🗄\n\n---\n\n## 6. ⚙ How the System Works\n\n### **CLI Classes (User Interfaces)** 🖥️\n\n-   **BankCLI:** 🏦 manages banks and branches 🏢, uses BankDAO 🗄, forms ✍️\n-   **BranchCLI:** 🏛️ manages customers 👤 and accounts 💰, uses BranchDAO 🗄, forms ✍️ and utils 🧹✅\n-   **ATM:** 🏧 customer interface, interacts with AccountDAO 💰, TransactionDAO 💸\n\n### **DAO Classes** 🗄\n\n-   BankDAO 🏦, BranchDAO 🏛️, AccountDAO 💰, CustomerDAO 👤, TransactionDAO 💸, CardDAO 💳\n\n### **Helper Classes** 🛠️\n\n-   **Forms ✍️(`inputmodules/forms/`):**  \n    Collect and validate user input for creating/updating entities.\n-   **Utils 🧹(`util/`):**\n\n    -   `ClearScreen`: Clears the console for better UX.\n    -   `InputChecker`: Validates user input.\n\n-   **Custom exceptions for error handling** ⚠️❌\n\n---\n\n## 7. 🎭 Roleplay Usage\n\n-   Bank Official 🏦 → BankCLI\n-   Branch Official 🏛️ → BranchCLI\n-   Customer 🏧 → ATM\n\n---\n\n## 8. 🛑 Troubleshooting\n\n-   Database errors 🗄\n    Check your MySQL connection settings (in the DB.java file) and ensure the schema is set up in the database (schema.sql).\n-   Class not found 📦\n    Make sure you compile with the correct classpath (`lib/*` for JARs).\n-   Input issues ⚠️\n    Ensure your terminal is focused when running CLI programs.\n\n---\n\n## 9. 🎨 Customization\n\n-   Add roles ➕\n    Create new CLI classes in `cli/` and corresponding DAOs in `sys/`.\n-   Change database 🔑\n    Update `DB.java` for different database engines or credentials.\n-   Add features ✨\n    Extend forms, DAOs, and CLI classes as needed.\n\n---\n\n## 10. 📚 Additional Resources\n\n-   [VS Code Java Docs](https://code.visualstudio.com/docs/java/java-tutorial) 💻\n-   [MySQL Connector/J Docs](https://dev.mysql.com/doc/connector-j/en/) 🗄\n-   [JLine Docs](https://github.com/jline/jline3) ✍️\n\n---\n\n### 🎉**Enjoy exploring and roleplaying with your Banking System project!**\n\n### If you have any questions or need help, check the comments in the code, see the error messages or DM me on instagram.📝\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshawop%2Fbanking-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakshawop%2Fbanking-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshawop%2Fbanking-system/lists"}