What I would do is first create a struct called student that holds a student id and their number grade. I would then store all the student structs in a vector.
To display the letter grades, the easiest way is to probably to have a separate function that receives a number grade and returns a string with the equivalent letter grade. The function would most likely use multiple if-else statements testing for grade ranges to return the correct letter grade.
For score distribution you can have counter variables for each letter grade. In the letter grade function, you can increment the counter for each grade before returning a string.
The class average is pretty simple and I'm sure you can figure out yourself.