associative container data structure in c++

Discussion in 'C++' started by pap, Mar 22, 2012.

  1. pap

    pap New Member

    Joined:
    Mar 22, 2012
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    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
     
  2. pap

    pap New Member

    Joined:
    Mar 22, 2012
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    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;
    
    }
     
    Last edited by a moderator: Mar 22, 2012
  3. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,009
    Likes Received:
    203
    Trophy Points:
    63
    Occupation:
    Senior Support Engineer
    Location:
    England
    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.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice