Hi, I am trying to implement a student grading system. -Use an Associative container, multimap. -Search record by Student name (the key) and the data consists of student ID and GPA. Since more than one student can have the same name, use a multimap. progam does the following: 1. It will use a multimap as the container. 2. It will use the Student class to describe the ID and GPA. multimap will be declared: multimap<string, Student> grades; 3. use data(names, IDs and GPAs) 4. The main() driver will display a menu of commands available to the user: The commands are: a. insert a student’s data into the system, The program will allow duplicate names to be inserted. b. Find a student’s data, given the student’s name(key). If there are multiple students in the container with the given name, display information about all of them. c.. Exit the system 1. should have a source (.h and .cpp) files please help thanks
how i stated: Code: #include <iostream> #include <string> #include <map> using namespace std; class Student { public: //--- Constructor Student (int id = 0, double gpa = 0); //--- Output operator friend ostream & operator<<(ostream & out, const Student & s); //--- Input operator friend istream & operator>>(istream & in, Student & s); //--- Less-than operator friend bool operator<(const Student & a, const Student & b); private: //--- Data members int myId; double myGPA; }; // end of class Student //--- Definition of constructor inline Student::Student(int id, double gpa) : myId(id), myGPA(gpa) { } //--- Definition of input operator inline istream & operator>>(istream & in, Student & s) { in >> s.myId >> s.myGPA; } //--- Definition of output operator inline ostream & operator<<(ostream & out, const Student & s) { out << "id = " << s.myId << " GPA = " << s.myGPA; return out; } //--- Definition of less-than operator inline bool operator<(const Student & a, const Student & b) { return a.myId < b.myId; } //================================================================ int main() { //typedef multimap<string, Student>grades typedef multimap<string, Student, less<string>> grades1; typedef multimap<Student, string, less<Student>> grades2; grades1 a1; // associative array of Student, index type is string grades2 a2; // associative array of string, index type is Student Student s; s = Student(12345, 3.3); a1["Fred"] = s; a2[s] = "Fred"; s = Student(32322, 3.9); a1["Al"] = s; a2[s] = "Al"; s = Student(13131, 2.5); a1["Joan"] = s; a2[s] = "Joan"; s = Student(22121, 4.0); a1["Barb"] = s; a2[s] = "Barb"; s = Student(28888, 2.9); a1["George"] = s; a2[s] = "George"; s = Student(19981, 3.0); a1["Dot"] = s; a2[s] = "Dot"; s = Student(20012, 2.9); a1["Sue"] = s; a2[s] = "Sue"; string name; cout << "Enter a name: "; cin >> name; grades1::iterator it1 = a1.find(name); cout << name << " has "; if (it1 == a1.end()) cout << "no info"; else cout << a1[name]; cout << endl; Student aStudent; cout << "Enter a Student's id and GPA: "; cin >> aStudent; grades2::iterator it2 = a2.find(aStudent); cout << "Student " << aStudent << " is "; if (it2 == a2.end()) cout << "no info"; else cout << a2[aStudent]; cout << endl; }
OK, what do you need help with? You've written some fairly advanced stuff there with friends and operators and so on, so the whole task should be straight forward for you.