trying to show single post but displays all post on a custom post type

query_posts( 'post_type=students'); that changes the main query to be for all posts with the type students. It’s showing all the posts because you’re asking it to.

If this is on a single post page, your loop will be sufficient, no need for extra query_posts calls or anything like that. Just remove that bit from your code.

In fact, you probably shouldn’t use query_posts at all.