I think is hard to give you a full solution, mine is just a direction.
Install the free good and well known plugin Posts 2 Posts.
Using that plugin:
you can create many-to-many relationships between posts and users
So after you create a relation between students (as users) and posts (probably CPT) you need also
- Create an archive page that shows only post connected to current user (look for
pre_get_posts
action) - Create single view that checks if current user is the one related to post and if not redirect or show something else (look for
template_redirect
action ortemplate_include
action) - Last thing you have to avoid logged user with specific role (students) can view backend, after login (and every time they try to view dashboard) they should be redirected to your customized archive (first item in this list). A search here in wpse will help you for this.
Try to implement step by step, and if you have problems ask a more specific question.