Audio Library Management System

High-Performance Music Catalog with Advanced Search Capabilities

2023-2024 Middlesex University C++17 / STL CST2550 Project

Executive Summary

The Audio Library Management System is a comprehensive C++17 application that transforms a simple music catalog requirement into a professional-grade system. Originally developed as a university project, it showcases modern C++ best practices through thread-safe architecture, sophisticated data structures, and exceptional performance. The system handles 100,000+ tracks with O(1) lookup performance and features 5 different search modes including fuzzy matching and regex support.

Key Features

Advanced Search Engine

5 search modes: exact, prefix, substring, fuzzy (with edit distance), and regex patterns

Multi-Index Architecture

Four hash-based indexes enabling O(1) lookups by title, artist, album, or genre

Thread-Safe Operations

Reader-writer locks using std::shared_mutex for concurrent access

File Format Support

Import/export capabilities for CSV and JSON with robust error handling

Technical Implementation

Technology Stack

C++17 STL Containers Smart Pointers Threading RAII Catch2

Architecture Highlights

  • Memory Management: Zero memory leaks using std::shared_ptr for all dynamic allocations
  • Data Structures: std::unordered_multimap for efficient multi-field indexing
  • Concurrency: std::shared_mutex enabling multiple concurrent readers
  • Search Algorithm: Levenshtein distance implementation for fuzzy matching
  • Error Handling: Exception-safe design with RAII patterns throughout
  • Testing: Comprehensive unit tests covering edge cases and thread safety

Performance & Quality Metrics

O(1)
Average Lookup Time
Hash-based indexing for instant searches
100K+
Track Capacity
Tested with large-scale datasets
0
Memory Leaks
Smart pointer management throughout
100%
Warning-Free
Clean compilation with -Wall -Wextra -Wpedantic

System Capabilities

Search Functionality

Exact Matching

Direct hash table lookups for perfect string matches across all indexed fields

Fuzzy Search

Typo-tolerant searching using Levenshtein distance algorithm with configurable threshold

Regex Support

Full regular expression pattern matching for complex search queries

Multi-Field Search

Simultaneous searching across title, artist, album, and genre fields

Core Features

Track Management

Add, remove, and update tracks with comprehensive metadata including ratings and play counts

Statistics & Analytics

Track library statistics, most played songs, and rating distributions

Import/Export

CSV and JSON file support with robust parsing and error handling

CLI Interface

User-friendly command-line interface with clear menus and input validation

Development Journey

Initial Design

Started with basic requirements for a music library system. Identified the need for efficient searching and scalability.

Architecture Redesign

Completely restructured from original hash table to multi-index architecture with smart pointers and modern C++ features.

Thread Safety

Implemented reader-writer locks to enable concurrent access, crucial for real-world applications.

Testing & Polish

Added comprehensive unit tests, fixed edge cases, and achieved 100% clean compilation.

Technical Insights

Modern C++ Best Practices

Leveraged C++17 features like std::optional, structured bindings, and if-init statements for cleaner, safer code.

Performance vs. Flexibility

Balanced the trade-offs between search performance and memory usage by maintaining multiple indexes.

Error Handling Strategy

Implemented comprehensive input validation and graceful error recovery for a robust user experience.

Explore the Code

Interested in the implementation details? The full source code, documentation, and build instructions are available on GitHub.