Wow, first off - wall of text - the code tags are here for a reason. Second, you have a spelling mistake in the function signature of the definition site. You have "int WhatKindOfStudents()" at the definition of the function (note the extra S). The error message is just stating that it can't find the definition of that function (which it can't, because you technically didn't define 'WhatKindOfStudent'). This is an error at the linking stage - this is not an error your program spit out. Visual studio (technically the linker that VS is using underneath the hood) spits out this message.
As for debugging hints - if you come back with more problems, people aren't going to want to read through 1k+ lines of code as your programs get longer. Read what the errors state and try to look at those areas of code. If you can't figure it out, post the relevant code snippets. We usually won't need your entire program to figure out what the issue is and it makes it easier on us too. In addition, sometimes by typing it out and trying to explain it to others (instead of giant wall of text'ing us for over 9k damage), you'll figure it out yourself. This actually has a name - meet
rubber duck debugging.
BTW, the reason the linker spits out a seemingly cryptic error message (I mean, what the hell is (?WhatKindOfStudent@@YAHXZ) right?) is due to what is called name mangling. C++ compilers do this to ensure that identically named symbols (in source) can be distinguished. This is needed to support C++ templates, classes, namespaces, operator overloading, etc. There are no hard-fast rules for this, so different compilers do name mangling in their own way. See
http://en.wikipedia.org/wiki/Name_mangling. (__cdecl is just a calling convention specifier - not so important for you to understand at the moment).
A link for you to read so that you can understand the build process for C++ programs:
http://stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work. This is important to know as understanding this is going to help you a LOT when you start doing 3d graphics programming and you need to start using libraries.
Speaking of which, I would advise getting a lot of practice under your belt before attempting 3d graphics.