isdigit
проверяет, является ли символ цифрой или нет. Помогло бы вам, если бы вы получали из стандартного ввода строку и сами переводили её в число. Но нет, операция
int count_students;
cin >> count_students;
вводит не строку, а число.
Чтобы проверить, был ли ввод успешным или нет можно вызвать
cin.fail(), типа того:
cin >> count_students;
if (cin.fail()) {
cout << "Неправильные входные данные. Попробуйте еще раз.";
cin.clear();
cin.ignore();
goto Step1;
}