First off, I'm not sure that you even need machine learning for this. You probably know what features you are looking for in every specific job (which grades are most crucial). Won't it be easier to define a simple threshold per job?
For example, for job X, you need to have a grade above 80 in course A, above 90 in course A and so on. This can give you the list of all suitable candidates per job (but it won't tell you which job is the best fit per student).
A different approach would be to define the most important courses for each job (preferably weighted, because some are more important than others), than for every student calculate his score for every potential job (weighted MSE or MAE). This will give you the best fit for every student. You will than need to use some sorting algorithm to place all the students in the best fitted jobs overall (I assume that not all students can get their best fit as jobs don't have infinite positions).
For example, for student A and job X, the the score will be:
You will probably still need to use some threshold per job, since having a job being to best fit for the student, doesn't necessary mean that he meets its criteria.