https://github.com/crisnguyendev/miu-cs525-asd-final-project
Final project repository for designing a reusable framework to support banking and credit card processing systems, implementing patterns, UML diagrams, and extensible architectures.
https://github.com/crisnguyendev/miu-cs525-asd-final-project
assignment banking-system credit-card design-patterns facade-pattern framework persistence rules-engine uml
Last synced: 4 months ago
JSON representation
Final project repository for designing a reusable framework to support banking and credit card processing systems, implementing patterns, UML diagrams, and extensible architectures.
- Host: GitHub
- URL: https://github.com/crisnguyendev/miu-cs525-asd-final-project
- Owner: crisnguyendev
- Created: 2024-09-19T18:33:32.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-22T04:45:40.000Z (10 months ago)
- Last Synced: 2025-04-14T13:17:34.863Z (6 months ago)
- Topics: assignment, banking-system, credit-card, design-patterns, facade-pattern, framework, persistence, rules-engine, uml
- Language: Java
- Homepage:
- Size: 2.15 MB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MIU - ASD Final Project: Banking and Credit Card Processing Systems
This repository contains the final project for the **ASD (Advanced Software Design)** course, part of the graduate Computer Science program at **Maharishi International University (MIU)**.
---
## Project Overview
The **Advanced Software Design (ASD) Final Project** focuses on developing a framework to support multiple applications, including a **Banking System** and a **Credit Card Processing System**. Students will implement reusable patterns, frameworks, and architectures while designing scalable and maintainable software.---
## Requirements
### Part 1: Banking System
- **Use Cases:**
- Create a personal or company account (checking or savings).
- Deposit and withdraw money.
- Add interest.
- Generate account reports.
- **Features:**
- Email notifications for transactions exceeding $500 or resulting in negative balances.
- Support for multiple accounts per customer.
- Transaction history tracking.
- **Design Deliverables:**
- Class diagrams for all entities and relationships.
- Sequence diagrams for major use cases.### Part 2: Credit Card Processing System
- **Use Cases:**
- Create a credit card account.
- Deposit money and charge accounts.
- Add interest.
- Generate monthly billing reports.
- **Features:**
- Three credit card types (Gold, Silver, Bronze) with different interest rates and payment plans.
- Email notifications for charges over $400.
- Transaction history tracking.
- **Design Deliverables:**
- Class diagrams for all entities and relationships.
- Sequence diagrams for major use cases.### Part 3: Framework Development
- Design a **Framework** to support both applications using:
- **Account Pattern** for managing accounts.
- **Party Pattern** for managing entities like customers and companies.
- **Observer Pattern** for notifications and updates.
- Abstract common operations into reusable components.### Part 4: Implementation
- Develop code organized into three packages:
1. **framework**
2. **banking**
3. **creditcard**
- Build and test basic functionality for both applications.---
## Extra Credit Opportunities
1. **Rules Engine:** Add general rules for accounts and transactions (e.g., fraud alerts for large charges).
2. **Persistence Layer:** Implement database storage using the **Façade Pattern**.
3. **Extend Framework:** Include a third application, such as an **online bookstore** with product categories and payment options.
4. **Visual Composition:** Create a visual tool for building applications from the framework.---
## Deliverables
- UML diagrams for classes and sequences.
- Descriptions of design patterns used.
- Explanation of framework plug points and extensibility.
- Source code for framework and applications.---
## Prerequisites
- Completion of **CS 401 (Modern Programming Practices)** or faculty approval.
- Proficiency in Java and Object-Oriented Programming principles.---
## Getting Started
1. Clone the repository:
```bash
git clone https://github.com/anhvu2889/miu-cs525-asd-final-project
```
2. Open the project in your preferred IDE.
3. Compile and run Java programs:
```bash
javac src/.java
java src/
```
4. Execute unit tests:
```bash
java -cp .:junit-platform-console-standalone.jar org.junit.platform.console.ConsoleLauncher --scan-classpath
```---
## Contributing
Contributions are welcome! Follow these steps to contribute:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Commit your changes with a descriptive message.
4. Submit a pull request for review.