A comprehensive database-driven application for managing stock portfolios, analyzing investment performance, and collaborating with other investors. Built as part of the University of Toronto CSCC43 Database Systems final course project. Please read the C43 Report.pdf for details.
- Normalized Schema: All tables designed in BCNF (Boyce-Codd Normal Form)
- Core Entities: Stock, User, StockList, Portfolio, Review, Friend, StockListHolding, PortfolioHolding, StockHistory
- Relationships: Comprehensive foreign key constraints ensuring data integrity
- Backend: Java with JDBC for database connectivity
- Database: PostgreSQL with advanced features (CTEs, aggregations)
- Architecture: Multi-layered design separating data access, business logic, and presentation
CSCC43-Project/
├── managers/
│ ├── AccountManager.java # Handles user account operations (registration, login, profile)
│ ├── DatabaseConnection.java # Manages PostgreSQL database connections
│ ├── FriendManager.java # Manages user friendships and friend requests
│ ├── PortfolioHoldingManager.java # Handles holdings within user portfolios
│ ├── PortfolioManager.java # Manages portfolio creation, updates, and retrieval
│ ├── ReviewManager.java # Handles user reviews and feedback on stocks
│ ├── StatisticsManager.java # Provides analytics and investment performance statistics
│ ├── StockListHoldingManager.java # Manages holdings within stock lists
│ ├── StockListManager.java # Handles creation and management of stock lists
│ ├── StockManager.java # Manages stock information and queries
│ └── UserManger.java # Handles user profile and account management
├── create_database.sql/ # SQL script for database setup
├── Main.java # Application entry point
├── .idea # IDE configuration files (if using IntelliJ IDEA)
└── README.md # This file
- Java 8 or higher
- PostgreSQL (v12 or above recommended)
- IDE (Eclipse, IntelliJ IDEA, etc.)
-
Clone the repository:
git clone https://github.com/Googlogogo/CSCC43-Project.git cd CSCC43-Project -
Import the project into your preferred IDE.
-
Install dependencies (if any external libraries are required).
-
Install PostgreSQL if not already installed.
-
Create a new database:
CREATE DATABASE cscc43_project;
-
Run the database setup script
create_database.sqlto create the database tables and fields -
Configure the database connection in the application:
- Replace the "URL", "USER", "PASSWORD" with your actual values inside
managers/DatabaseConnection.java
- Replace the "URL", "USER", "PASSWORD" with your actual values inside
- Start the application by running Main.java.
- Login with your credentials if authentication is implemented.
- Perform database operations through the application interface.
- Execute queries and view the results.
This project was developed as part of academic coursework. While not actively maintained, the codebase serves as a reference implementation for:
- Database design and normalization principles
- Complex SQL query development
- Java database application architecture
- Financial analytics implementation
Yiran Yu