A collaborative, multi-tier Java application developed as the Capstone project for CMSC 495. This project implements a real-time currency conversion engine with a Swing-based GUI, following the Model-View-Controller (MVC) design pattern.
To support a cross-platform team using VS Code, IntelliJ, and Eclipse, this project utilizes a Standard Maven Structure. This ensures consistent builds, automated dependency management, and a clean Git history.
All source code resides in the src/main/java directory. Please ensure every file includes the proper package declaration:
package edu.cmsc495;
CMSC495/
├─ pom.xml # Maven Project Object Model
├─ mvnw, mvnw.cmd # Maven Wrapper (Run without local Maven install)
├─ .mvn/ # Wrapper configuration
└─ src/
└─ main/
└─ java/
└─ edu/
└─ cmsc495/ # Root Package
Main.java
CurrencyConverter.java # Business Logic (Model)
Converter_GUI.java # User Interface (View)
ConverterController.java # Logic Bridge (Controller)
We use the Maven Wrapper (mvnw) to ensure everyone on the team uses the same version of Maven, regardless of their IDE or local setup.
1. Compile the Project: Run this to compile the source code and ensure there are no syntax errors:
./mvnw clean compile2. Run the Application: This launches the GUI and starts the application using the specified main class:
./mvnw exec:java -Dexec.mainClass=edu.cmsc495.Main3. Run Unit Tests:
./mvnw testFollow these steps to ensure smooth collaboration and prevent merge conflicts.
- Fork the repository to your own GitHub account.
- Clone your fork locally:
git clone [https://github.com/YOUR_USER_NAME/CMSC495.git](https://github.com/YOUR_USER_NAME/CMSC495.git) cd CMSC495
Always work on a new branch for every feature or fix. Never commit directly to main.
git checkout main
git pull origin main
git switch -c feat/your-branch-nameBranch Naming Conventions:
feat/— New features (e.g.,feat/add-api-integration)fix/— Bug fixes (e.g.,fix/decimal-rounding)refactor/— Code cleanup (no new features)docs/— Documentation updates
- Before pushing, ensure your code builds and passes all tests to avoid breaking the main project:
./mvnw clean compile test
./mvnw exec:java -Dexec.mainClass=edu.cmsc495.MainIf everything is working, push it to main and open a pull request
git add .
git commit -m "Brief description of what you implemented"
git push -u origin feat/your-branch-name- Open a Pull Request (PR) on GitHub and request a review.
Once your PR is merged and your work is part of the main codebase, sync your local environment:
git checkout main
git pull origin main
git branch -d feat_OR_fix/your_old_branch_name