C++ CODE
GradStudents are Students but they have the additional data member of researchArea.
Your program will loop asking for one of three options (add, print, or quit).
Add user option: You will create (using new) a Student object or a GradStudent object and add its pointer to the vector classMembers.
Print user option: You will print the entire class last, using the appropriate ToStr member function. You should NOT test whether a particular pointer in the class list points to a Student or a GradStudent. The correct ToStr function will be called automatically if you have properly defined functions for ToStr. \\
CODE!!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Student {
public:
Student(string initialName = \"No Name\") {
name = initialName;
}
// Enter definition for a virtual ToStr member function here.
protected:
string name;
};
class GradStudent : public Student {
public:
// Enter definition for a paramteriezed contructor function here that sets both data members.
// Enter definition for a virtual ToStr member function here.
private:
string researchArea;
};
int main() {
string usrOption;
string inpName;
string inpResearch;
vector<Student*> classMembers;
do {
cout << \"Option: \";
cin >> usrOption;
cout << endl;
if (usrOption == \"print\") {
// Enter code here to print each member pointed to from classMembers using their respective ToStr member functions.
}
}
else if (usrOption == \"add\") {
cout << \"Name: \";
cin >> inpName;
cout << endl;
cout << \"If grad student enter a one word research area, else enter \\\"NO\\\": \";
cin >> inpResearch;
cout << endl;
if (inpResearch == \"NO\") {
// Enter code here to create new objects (using new) for either a Student or a GradStudent
// and add the pointer to the classMember vector.
}
}
} while (usrOption != \"quit\");
return 0;
}
Option add Name: Mary If grad student enter a one word research area, else enter \"NO\" MachineLearning Option add Name Bob If grad student enter a one word research area else enter NO NO Option print Mary is a graduate student researching the area of MachineLearning. Bob is an undergraduate student. Option quit
#include
#include #include using namespace std; class Student { protected: int social; string name; public: Student (); // Default constructor Student(int ssn, string StudentName); void setSSN(int); int getSSN(); void setName(string); string getName(); virtual double calcGPA(); }; Student ::Student() { } Student::Student(int ssn, string StudentName) { social = ssn; name = StudentName; return; } void Student::setSSN(int SSN) { social = SSN; return; } int Student::getSSN() { return (social); } void Student::setName(string name2) { name = name2; return; } string Student::getName() { return name; } double Student::calcGPA() { cout << \"Student calcGPA\" << endl; return (0); } class GradStudent : public Student { private: char Status; public: GradStudent (char = \'A\'); virtual double calcGPA(); void SetStatus(char); }; GradStudent::GradStudent(char grade) { Status = grade; } double GradStudent::calcGPA() { double GPA = 0.0; if (Status == \'A\' || Status == \'a\') GPA = 4.0; cout << \"GradStudent calcGPA\"; return (GPA); } void GradStudent::SetStatus (char stat) { Status = stat; return; } class UnderGradStudent : public Student { private: double CreditHrs; double QualityPts; public: UnderGradStudent ( double = 0, double = 0); virtual double calcGPA (); void setCreditHrs(int); void setQualityPts(int); }; UnderGradStudent::UnderGradStudent(double Hours, double Points) { CreditHrs = Hours; QualityPts = Points; if (Hours < 0) CreditHrs = 0; if (Points < 0) QualityPts = 0; } double UnderGradStudent::calcGPA () { double GPA = 0.0; if (CreditHrs > 0) GPA = QualityPts / CreditHrs; cout << \"UnderGraduateStudent calcGPA\"; return (GPA); } void UnderGradStudent::setCreditHrs (int C) { CreditHrs = C; if (C < 0) CreditHrs = 0; return; } void UnderGradStudent::setQualityPts (int Q) { QualityPts = Q; if (Q < 0) QualityPts = 0; return; } int main() { char ans = \'n\', Status; string StudentName; int StudentSSN; int code, CreditHrs, points; Student* a = NULL; do { cout << \"Enter 1 for undergrad.\ Enter 2 for grad.\" << endl << \"-->\"; cin >> code; if (code == 1) { UnderGradStudent* ug; ug = new UnderGradStudent; a = ug; cin.ignore(); cout << \"Enter Student name: \"; getline(cin, StudentName); ug->setName (StudentName); cout << \"Enter Student SSN: \"; cin >> StudentSSN; ug->setSSN(StudentSSN); cout << \"Enter credit hours: \"; cin >> CreditHrs; ug->setCreditHrs(CreditHrs); cout << \"Enter quality points: \"; cin >> points; ug->setQualityPts(points); cout << endl; } else if (code == 2) { GradStudent * gs; gs = new GradStudent; a = gs; cin.ignore(); cout << \"Enter Student name: \"; getline(cin, StudentName); gs->setName(StudentName); cout << \"Enter Student SSN: \"; cin >> StudentSSN; gs->setSSN(StudentSSN); cout << \"Enter Status: \"; cin >> Status; gs->SetStatus(Status); cout << endl; } cout << \"\ Name: \" << a->getName() << \" SSN: \" << a->getSSN() << \" GPA: \" << setiosflags(ios::fixed | ios::showpoint) << setprecision(2) << a->calcGPA() << endl; delete a; a = NULL; cout << \"Continue?: \"; cin >> ans; cin.ignore(); cout << endl; } while (toupper(ans) == \'Y\'); return 0; }