// Attached: HW_8-1b
// ===========================================================
// File: HW_8-1b_Combined.cpp
// ===========================================================
// Programmer: Elaine Torrez
// Class: CMPR 121
// ===========================================================
#include <iostream>
#include <string>
using namespace std;
class Student
{
protected:
int id;
int units;
string name;
public:
Student()
{
id = 0;
units = 0;
name = "";
}
Student(int studentId, string studentName, int studentUnits)
{
id = studentId;
name = studentName;
units = studentUnits;
}
virtual ~Student()
{
}
void setID(int studentId)
{
id = studentId;
}
int getID()
{
return id;
}
void setUnits(int studentUnits)
{
units = studentUnits;
}
int getUnits()
{
return units;
}
virtual void displayRecord() = 0;
};
class UnderGrad : public Student
{
private:
string level;
public:
UnderGrad(int studentId, string studentName, int studentUnits, string studentLevel)
: Student(studentId, studentName, studentUnits)
{
level = studentLevel;
}
~UnderGrad()
{
}
void displayRecord()
{
cout << "ID: " << id << endl;
cout << "Name: " << name << endl;
cout << "Units: " << units << endl;
cout << "Class: " << level << endl;
}
};
class Grad : public Student
{
private:
string degree;
public:
Grad(int studentId, string studentName, int studentUnits, string studentDegree)
: Student(studentId, studentName, studentUnits)
{
degree = studentDegree;
}
~Grad()
{
}
void displayRecord()
{
cout << "ID: " << id << endl;
cout << "Name: " << name << endl;
cout << "Units: " << units << endl;
cout << "Degree: " << degree << endl;
}
};
int main()
{
UnderGrad underGrad(100, "Tom Lee", 9, "Freshman");
Grad grad(101, "Jim Jones", 12, "PHD");
underGrad.displayRecord();
cout << endl;
grad.displayRecord();
cout << endl;
grad.setUnits(15);
grad.displayRecord();
return 0;
}
Ly8gQXR0YWNoZWQ6IEhXXzgtMWIKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRmlsZTogSFdfOC0xYl9Db21iaW5lZC5jcHAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gUHJvZ3JhbW1lcjogRWxhaW5lIFRvcnJlegovLyBDbGFzczogQ01QUiAxMjEKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFN0dWRlbnQKewpwcm90ZWN0ZWQ6CiAgICBpbnQgaWQ7CiAgICBpbnQgdW5pdHM7CiAgICBzdHJpbmcgbmFtZTsKCnB1YmxpYzoKICAgIFN0dWRlbnQoKQogICAgewogICAgICAgIGlkID0gMDsKICAgICAgICB1bml0cyA9IDA7CiAgICAgICAgbmFtZSA9ICIiOwogICAgfQoKICAgIFN0dWRlbnQoaW50IHN0dWRlbnRJZCwgc3RyaW5nIHN0dWRlbnROYW1lLCBpbnQgc3R1ZGVudFVuaXRzKQogICAgewogICAgICAgIGlkID0gc3R1ZGVudElkOwogICAgICAgIG5hbWUgPSBzdHVkZW50TmFtZTsKICAgICAgICB1bml0cyA9IHN0dWRlbnRVbml0czsKICAgIH0KCiAgICB2aXJ0dWFsIH5TdHVkZW50KCkKICAgIHsKICAgIH0KCiAgICB2b2lkIHNldElEKGludCBzdHVkZW50SWQpCiAgICB7CiAgICAgICAgaWQgPSBzdHVkZW50SWQ7CiAgICB9CgogICAgaW50IGdldElEKCkKICAgIHsKICAgICAgICByZXR1cm4gaWQ7CiAgICB9CgogICAgdm9pZCBzZXRVbml0cyhpbnQgc3R1ZGVudFVuaXRzKQogICAgewogICAgICAgIHVuaXRzID0gc3R1ZGVudFVuaXRzOwogICAgfQoKICAgIGludCBnZXRVbml0cygpCiAgICB7CiAgICAgICAgcmV0dXJuIHVuaXRzOwogICAgfQoKICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVjb3JkKCkgPSAwOwp9OwoKY2xhc3MgVW5kZXJHcmFkIDogcHVibGljIFN0dWRlbnQKewpwcml2YXRlOgogICAgc3RyaW5nIGxldmVsOwoKcHVibGljOgogICAgVW5kZXJHcmFkKGludCBzdHVkZW50SWQsIHN0cmluZyBzdHVkZW50TmFtZSwgaW50IHN0dWRlbnRVbml0cywgc3RyaW5nIHN0dWRlbnRMZXZlbCkKICAgICAgICA6IFN0dWRlbnQoc3R1ZGVudElkLCBzdHVkZW50TmFtZSwgc3R1ZGVudFVuaXRzKQogICAgewogICAgICAgIGxldmVsID0gc3R1ZGVudExldmVsOwogICAgfQoKICAgIH5VbmRlckdyYWQoKQogICAgewogICAgfQoKICAgIHZvaWQgZGlzcGxheVJlY29yZCgpCiAgICB7CiAgICAgICAgY291dCA8PCAiSUQ6ICAgICAgIiA8PCBpZCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIk5hbWU6ICAgICIgPDwgbmFtZSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlVuaXRzOiAgICIgPDwgdW5pdHMgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJDbGFzczogICAiIDw8IGxldmVsIDw8IGVuZGw7CiAgICB9Cn07CgpjbGFzcyBHcmFkIDogcHVibGljIFN0dWRlbnQKewpwcml2YXRlOgogICAgc3RyaW5nIGRlZ3JlZTsKCnB1YmxpYzoKICAgIEdyYWQoaW50IHN0dWRlbnRJZCwgc3RyaW5nIHN0dWRlbnROYW1lLCBpbnQgc3R1ZGVudFVuaXRzLCBzdHJpbmcgc3R1ZGVudERlZ3JlZSkKICAgICAgICA6IFN0dWRlbnQoc3R1ZGVudElkLCBzdHVkZW50TmFtZSwgc3R1ZGVudFVuaXRzKQogICAgewogICAgICAgIGRlZ3JlZSA9IHN0dWRlbnREZWdyZWU7CiAgICB9CgogICAgfkdyYWQoKQogICAgewogICAgfQoKICAgIHZvaWQgZGlzcGxheVJlY29yZCgpCiAgICB7CiAgICAgICAgY291dCA8PCAiSUQ6ICAgICAgIiA8PCBpZCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIk5hbWU6ICAgICIgPDwgbmFtZSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlVuaXRzOiAgICIgPDwgdW5pdHMgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJEZWdyZWU6ICAiIDw8IGRlZ3JlZSA8PCBlbmRsOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBVbmRlckdyYWQgdW5kZXJHcmFkKDEwMCwgIlRvbSBMZWUiLCA5LCAiRnJlc2htYW4iKTsKICAgIEdyYWQgZ3JhZCgxMDEsICJKaW0gSm9uZXMiLCAxMiwgIlBIRCIpOwoKICAgIHVuZGVyR3JhZC5kaXNwbGF5UmVjb3JkKCk7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgZ3JhZC5kaXNwbGF5UmVjb3JkKCk7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgZ3JhZC5zZXRVbml0cygxNSk7CiAgICBncmFkLmRpc3BsYXlSZWNvcmQoKTsKCiAgICByZXR1cm4gMDsKfQ==