Assuming the file is stored in this layout:
|---- Header----|----Student Data----|----Course Data---|----Achievements----|
|
Position is x byte position in file so you could seek to that position and load the data, and having the number of objects also in the header you know how many to read in.
So the header could have:
ID (some random ascii to identify it and for you to check against)
Size of student structure
Size of course structure
Size of achievements structure.
Position of student structures (offset from beginning of file)
Number of student structures stored (how many objects)
Position of course structures (offset from beginning of file)
Number of course structures stored (how many objects)
Position of achievements structures (offset from beginning of file)
Number of achievements structures stored (how many objects)
.. and any other information you may like to store, i had timestamp data for last modified, and who modified (assuming you have a login system to track that).
Since your designing the header your in full control and can store whatever you like. :)