Remove крайне странное название для "режима редактирования". Edit назовите, что ли :-)
Думаю, проблема в этом: в Remove вы сначала читаете номер n строки для редактирования, но все данные продолжаете вбивать в SP[SP.size() - 1]
У вектора есть полезные фишки: ссылка на последний элемент: SP.back(), проверка на пустоту: SP.empty()
Код будет гораздо проще читать, если на элемент, с которым предполагается работа получить ссылку, и все действия делать уже с ней. Т.е. вместо SP[SP.size() - 1] ввести ссылку Sport& curSport = SP[SP.size() - 1]; и дальше работать с ней.
Помимо проверки вводимых данных неплохо бы ещё сделать проверку выхода за границы массива. Вот тут, например:
cout << "Введите номер строки, которую Вы хотите отредактировать: ";
cin >> n;
cout << "Введите фамилию участника: ";
cin >> SP[n - 1].Name;