На главной форме сверху находится переключатель даты (месяц, год), при изменении выполняется автоматическая генерация истории популярности и её подсчет в данный момент, что можно наблюдать в таблицах слева (для исполнителей) и справа для композиций.
Что бы можно было осуществлять перемотку во времени и при этом не хранить всю историю, при создании нового автора/композиции ему присваивается семя в зависимости от имени и уже на основе этого хеша выполняется генерация.
Ниже поля даты находится интерфейс фильтрации композиций по жанру и по исполнителю, можно фильтровать одновременно по нескольким жанрам и исполнителю. Что бы отфильтровать нужно нажать на кнопку Filter, что бы снять фильтрацию и восстановить интерфейс фильтрации в начальное состояние нужно нажать на кнопку Clear filter.
Так же можно фильтровать композиции по автору просто нажимая на автора в таблице слева.
Нажимая на композицию в таблице справа, в таблице авторов выделится автор данной композиции.
Авторы и композиции автоматически сортируются по популярности.
Можно добавить новых авторов и композиции нажав на соответствующие кнопки. Автор добавится только в том случае если его имя будет не пустым и будет выбран хотя бы 1 жанр. На имя исполнителя и композиции наложен валидатор, который разрешает использовать только латинские символы a-Z, пробелы и цифры.
После добавления система обновляется.
Если выбрать композицию в таблице справа и нажать на кнопку Show selected composition history, сгенерируется график популярности от времени для данной композиции с момента её релиза.
Выделенные элементы таблиц сохраняют выделения после пересортировки/фильтрации/обновления.
Все формы адаптивны.
Для создания графиков использовалась библиотека QCustomPlot https://www.qcustomplot.com