Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   associative container data structure in c++ (http://www.go4expert.com/forums/associative-container-data-structure-cpp-t28074/)

pap 22Mar2012 22:57

associative container data structure in c++
 
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

pap 22Mar2012 23:06

Re: associative container data structure in c++
 
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;

}


xpi0t0s 23Mar2012 15:07

Re: associative container data structure in c++
 
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.


All times are GMT +5.5. The time now is 01:41.