{"id":25070616,"url":"https://github.com/flexycode/ccprgg1l_activity_com23p","last_synced_at":"2025-04-14T20:55:22.080Z","repository":{"id":225359635,"uuid":"765756387","full_name":"flexycode/CCPRGG1L_ACTIVITY_COM23P","owner":"flexycode","description":"💫 CCPRGG1L-COMP23P Group Project for 1st semester final exam project, Exercises and Lab Activity for Professor Jay Abaleta","archived":false,"fork":false,"pushed_at":"2024-12-31T07:01:59.000Z","size":88,"stargazers_count":7,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T09:11:12.825Z","etag":null,"topics":["java","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/flexycode.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}},"created_at":"2024-03-01T14:58:08.000Z","updated_at":"2025-01-29T07:59:10.000Z","dependencies_parsed_at":"2024-03-08T07:27:21.076Z","dependency_job_id":"16c8565a-31af-4243-8092-cba8a39de5e8","html_url":"https://github.com/flexycode/CCPRGG1L_ACTIVITY_COM23P","commit_stats":null,"previous_names":["flexycode/ccprgg1l_finalproject_com23p"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexycode%2FCCPRGG1L_ACTIVITY_COM23P","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexycode%2FCCPRGG1L_ACTIVITY_COM23P/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexycode%2FCCPRGG1L_ACTIVITY_COM23P/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flexycode%2FCCPRGG1L_ACTIVITY_COM23P/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flexycode","download_url":"https://codeload.github.com/flexycode/CCPRGG1L_ACTIVITY_COM23P/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961128,"owners_count":21189991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["java","project"],"created_at":"2025-02-06T21:32:34.294Z","updated_at":"2025-04-14T20:55:22.045Z","avatar_url":"https://github.com/flexycode.png","language":"Java","readme":"# 💫 CCPRGG1L_FINALPROJECT_COM23P \n### Group Name: [Artificial Ledger](https://www.youtube.com/watch?v=dQw4w9WgXcQ)  🇵🇭\n### Name: [Jay Arre Talosig](https://github.com/flexycode) \n### Subject \u0026 Section: 🧚‍♂️ [CCPRGG1L COM23P](https://www.youtube.com/watch?v=dQw4w9WgXcQ) 🧚‍♀️  \n### Professor: 👦 [Jay D. Abaleta](https://www.youtube.com/watch?v=Zi_XLOBDo_Y)        \n\n[CCPRGG1L-COMP23P Group Project for 1st semester final exam project](https://www.youtube.com/watch?v=Ts9kBO6Nr_s)\n\n# 📊 Table of Contents\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Contributing](#contributing)\n- [License](#license)\n\n\n## [Introduction](#introduction)\nThis repository contains source code for a Java project that focuses on fundamental concepts and exercises. The code includes examples of input/output operations, arithmetic calculations, and basic Java syntax.\n \n###### ⚡ Course Outline: https://nationalueduph.sharepoint.com/:w:/r/sites/FundamentalsofProgramming-CCPRGG1LCOM23P/_layouts/15/Doc2.aspx?action=edit\u0026sourcedoc=%7B5e6c8bed-44a9-4add-a947-3c727bf33daa%7D\u0026wdOrigin=TEAMS-MAGLEV.teamsSdk_ns.rwc\u0026wdExp=TEAMS-TREATMENT\u0026wdhostclicktime=1707804185955\u0026web=1 \n\n###### ⚡ Repository Source: https://github.com/flexycode/CCPRGG1L_FUNDAMENTALS_COM23P\n###### ⚡ Object-Oriented Source Code: https://https://github.com/flexycode/BankingSystem\n  \n### CCPRGG1L Table lecture\n\n| Topic                                                                  | Description                                                      |\n|-----------------------------------------------------------------------|-----------------------------------------------------------------|\n| Part 1 - Introduce Basic Programming                                   | Introduction to basic programming concepts, variables, and types. |\n| Part 2 - Java Programming                                              | Overview of problem-solving phases in programming.              |\n| Part 3a - Understand the Basic Concepts of Object-Oriented Programming (OOP) | Comparison of procedural programming and OOP principles.         |\n| Part 3b - Learn How to Declare and Use Classes and Objects in Java     | Introduction to classes and objects in Java.                    |\n| Part 4 - Learn How to Implement User-Defined Methods                   | Overview of primitive types, the String class, and basic operators (arithmetic, relational, and logical). |\n| Part 5 - Identify the Types of Variables and Their Scope               | Understanding class methods and variable scoping.               |\n| Part 6 - Sequential, Conditional, and Iteration Structures             | Introduction to sequential structures in programming.           |\n| Part 7 - Learn the Difference Between Sequential, Conditional, and Iteration Structures | Overview of conditional structures in programming.              |\n| Part 8 - Learn How to Use Various Conditional Structures               | Practical applications of different conditional structures.     |\n| Part 9 - Learn the Difference Between Sequential, Conditional, and Iteration Structures | Overview of iteration structures in programming.                |\n| Part 10 - Learn How to Use Various Iteration Structures                | Practical applications of different iteration structures.       |\n| Part 11 - Learn Built-in Mathematical Functions in the Java Math Class Library | Overview of string and character operations.                     |\n| Part 12 - Learn About Arrays and Array Lists in Java                  | Introduction to arrays and array lists in Java.                |\n\n# Banking System\n\n## Introduction\nWelcome to the Banking System! This system allows users to perform various banking activities such as creating accounts, depositing/withdrawing money, checking balances, and displaying account details. A banking program in Java, that the users can do the following banking activities like creating accounts, depositing/withdrawing money, checking balance, and displaying account details.\n\n## Features \n- Create new bank accounts with unique account numbers and account holder names.\n- Deposit money into existing accounts.\n- Withdraw money from existing accounts, with checks for sufficient balance.\n- Check the current balance of an account.\n- Display detailed information about an account.\n\n### Code Structure Tree\n\nNew Version of CryptoBank diagram tree \n```bash\nCryptoBank.java\n├── main(String[] args)\n│   ├── Scanner for input\n│   └── Switch statement for menu options\n├── createNewAccount(Scanner scanner)\n│   ├── Checks if maximum account limit is reached\n│   └── Creates a new account and adds it to the account arrays\n├── performTransaction(Scanner scanner, boolean isDeposit)\n│   ├── Asks for account number and amount\n│   └── Performs deposit or withdrawal based on isDeposit flag\n└── checkBalance(Scanner scanner)\n    ├── Asks for account number\n    └── Displays the balance of the specified account\n```\n\n### Previous Version when I used Encapsulation\n\nCryptoBank diagram tree\n```bash\nCryptoBank.java\n│\n├── main(String[] args)\n│   ├── Scanner for input\n│   └── Switch statement for menu options\n│\n├── createNewAccount(Scanner scanner) \n│   ├── Checks if maximum account limit is reached\n│   └── Creates a new BankAccount and adds it to the accounts array\n│\n├── performTransaction(Scanner scanner, boolean isDeposit)\n│   ├── Asks for account number and amount\n│   └── Performs deposit or withdrawal based on isDeposit flag\n│\n├── checkBalance(Scanner scanner)\n│   ├── Asks for account number\n│   └── Displays the balance of the specified account\n│\n└── BankAccount (Static Inner Class)\n    ├── Fields: accountName, accountNumber, balance\n    ├── Constructor: BankAccount(String accountName, int accountNumber)\n    ├── deposit(double amount)\n    ├── withdraw(double amount)\n    └── checkBalance()\n```\n\n### Tree Diagram Simple Structure\n```bash\nCryptoBank (Workspace Folder in Eclipse or VS Code\n├── bin\n└── Package\n    ├── src\n        └── CryptoBank.java (java file class)\n```\n#### Switch Statement\nThe switch statement in the main method controls the program's flow based on the user's menu choice. Each case corresponds to a different banking operation, calling the appropriate method:\n\n* Case 1: Calls `createNewAccount` to create a new account.\n* Case 2: Calls `performTransaction` with `true` to deposit money.\n* Case 3: Calls `performTransaction` with `false` to withdraw money.\n* Case 4: Calls `checkBalance` to display an account's balance.\n* Case 5: Exits the program.\n\n#### Methods for Deposit and Withdraw\n* **createNewAccount(Scanner scanner)**: This method prompts the user for an account name, creates a new `BankAccount` object with a unique account number (based on `accountCount`), and adds it to the `accounts` array. It also increments `accountCount`.\n  \n* **performTransaction(Scanner scanner, boolean isDeposit)**: Depending on the `isDeposit` flag, this method either deposits or withdraws money from a specified account. It asks the user for the account number and the amount, then performs the requested operation.\n\n#### Testing the Array with Temporary Data\nThe array `accounts` is used to store instances of the `BankAccount` class. In the main method, the program creates a new BankAccount and adds it to the accounts array when the user chooses to create a new account. This is a form of testing the array with temporary data, as it simulates the creation of new accounts in a real banking system.\n\n#### Important Features in the Code\n* **Static Inner Class**: The `BankAccount` class is defined as a static inner class within `CryptoBank`. This is a way to encapsulate the `BankAccount` class within the CryptoBank class, making it clear that BankAccount is closely related to CryptoBank.\n\n* **Array Usage**: The `accounts` array is used to store multiple `BankAccount` instances. This is a simple way to manage a collection of accounts in a single variable.\n  \n* **User Input Handling**: The program uses a `Scanner` to handle user input. This is a common way to get input from the user in a console-based Java program.\n\n* **Error Handling**: The program includes checks to ensure that the user doesn't exceed the maximum number of accounts and that the user doesn't try to deposit or withdraw from a non-existent account.\n\n* **Encapsulation**: The `BankAccount` class encapsulates the data and operations related to a bank account. This is a fundamental principle of object-oriented programming.\n\n* **Control Flow**: The program uses control structures like `if-else` and `switch` statements to manage the flow of the program based on user input.\n\n* **Modularity**: The program is divided into methods, each responsible for a specific task. This makes the code easier to read, understand, and maintain.\n\n* **Static Fields**: The `MAX_ACCOUNTS` field is declared as `static`, meaning it's shared by all instances of the `CryptoBank` class. This is used to limit the number of accounts that can be created.\n\n* **Error Messages**: The program provides informative error messages when the user enters invalid input or when an operation can't be performed.\n\n* **Looping**: The program uses a `do-while` loop to keep the menu running until the user chooses to exit. This ensures that the program doesn't terminate immediately after a single operation.\n\n\n# 🧊 Installation  \n \n### Installation ✍️      \n1. Clone the repository to your local machine.\n2. Open the project in your preferred programming environment.\n3. Build the project to compile the source code.\n\n### Usage ✍️\n1. Run the `CryptoBank` class to start the program.  \n2. Follow the on-screen menu options to perform various banking activities.\n3. Enter the required information when prompted, such as account numbers, account holder names, deposit/withdrawal amounts, etc.\n4. View the program's output to see the results of each operation.\n\n# 🏆 Contributing   \n\n### Contributing  \nIf you would like to contribute to the Banking System, please follow these steps:\n1. Fork the repository.\n2. Create a new branch for your feature or bug fix.\n3. Make your changes and commit them.\n4. Push your changes to your forked repository.\n5. Submit a pull request to the main repository.\n\n### 🧠 Submitting Changes\n\n🧠 Contributions are welcome! If you have ideas for improvements or want to add more exercises, follow these steps:\n\n1. Fork the repository.\n2. Create a new branch.\n3. Make your changes and commit them.\n4. Push to your fork and submit a pull request.\n\n### 👋 Contributors\n### Special thanks to all my groupmates: \n * ####  😎 [Jay Arre Talosig](https://github.com/flexycode)\n * ####  😃 [Gabriel Angelo Viñas](https://github.com/IYB-Mata) \n * ####  🥰 [Anilove Tiquio](https://github.com/tiquioani) \n * ####  🤗 [Kristine Vine Navarro](https://github.com/Kristine2811) \n * ####  😌 [Joshua Maquilan](https://github.com/Primorion) \n * ####  😋 [Vince Erol Pangilinan](https://github.com/vinceeee4)\n   \n### 🛸 Reporting Issues\n\n###### 🤖 If you encounter any issues or have suggestions, please open an issue to let us know.\n\n# 🔑 License \n \n## License\nThe Banking System is licensed under the [MIT License](https://opensource.org/licenses/MIT) and [ALT Licence](https://github.com/flexycode/BankingSystem/blob/main/LICENSE).\nThis project is licensed under the MIT License and Artificial Ledger Technology.\n\n# 📫 Changelogs     \n## [1.4.10] - 2024-03-02     \n### Added \n- 📫 Uploaded the Project Requirements\n- 📫 Created the Project Documentation\n- 📫 Added breakdown and documentation\n- 📫 Added a function for default Bank Account profile. \n- 📫 Added Final revision for CryptoBank.\n\n### Changed\n- 📫 Revised all java source code file\n- 📫 Changed some variable and array\n- 📫 Changed the value and function for class method in the BankingProgram.java \n\n### Fixed\n- 📫 Fixed some error in java methods and classes\n- 📫 Fixed the name of the Main Branch for debugging and run the code. BankingProgram will be the main branch while BankingSystem will be the sub-branch.\n\n### Problem\n- 📫 There's an overall issue from this code\n\n#### [Back to Table of Content](#introduction)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexycode%2Fccprgg1l_activity_com23p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflexycode%2Fccprgg1l_activity_com23p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflexycode%2Fccprgg1l_activity_com23p/lists"}