Задачка показалась интересной, код доступен на
гитхаб.
Выполняются все основные требования, много дубля кода удалено, но всё равно далёк от идеала)
Ключевой момент, что для решения задачи достаточно было бы использование listbox, потому что treeview подразумевает вложенность. Например курсант и внутри n-строк по предметам.
Приглашаю допилить .