Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<iomanip>
- using namespace std;
- class Student{
- public:
- //default Constructor
- Student():Student("First Name","Last Name") { }
- Student(string fname, string lname){
- first_name = fname;
- last_name = lname;
- for(int i=0;i<10;i++)
- arr[i]=0;
- }
- //Destructor
- ~Student();
- //Copy Constructor
- Student (const Student &s);
- //Assignment Overload
- Student& operator=(const Student &s);
- //Set first name
- void setFirstName(string s);
- //Set last name
- void setLastName(string s);
- //Get first name
- string getFirstName();
- //Get last name
- string getLastName();
- //Get full name
- string getFullName();
- //Add grade
- void addGrade (int position, int grade);
- //Remove grade
- void removeGrade(int index);
- //Update grade
- void updateGrade(int index, int newGrade);
- //Outputs one grade
- void displayGrade(int index);
- //Calculate GPA
- float GPA();
- //Outputs all grades + GPA
- void displayGrades();
- //Outputs Full name + Grades + GPA
- void display();
- private:
- string first_name;
- string last_name;
- int *arr=new int[10];
- };
- //Destructor
- Student::~Student(){
- //cout << "Destructor called." << endl << endl;
- }
- //Copy Constructor
- Student::Student(const Student &s){
- //cout << "Copy constructor called" << endl;
- first_name = s.first_name;
- last_name = s.last_name;
- for(int i=0; i<10; i++){
- arr[i] = s.arr[i];
- }
- }
- //Assignment overload
- Student& Student::operator=(const Student &s){
- //cout << "Assignment overload called." << endl;
- first_name = s.first_name;
- last_name = s.last_name;
- for(int i=0; i<10; i++){
- arr[i] = s.arr[i];
- }
- }
- //setting first name
- void Student::setFirstName(string s){
- first_name = s;
- }
- //setting last name
- void Student::setLastName(string s){
- last_name = s;
- }
- //getting firstName
- string Student::getFirstName(){
- return(first_name);
- }
- //getting lastName
- string Student::getLastName(){
- return(last_name);
- }
- //getting fullName
- string Student::getFullName(){
- return(first_name+last_name);
- }
- //adding grade
- void Student::addGrade(int position,int grade){
- arr[position]=grade;
- }
- //removing grade
- void Student::removeGrade(int index){
- index = 0;
- }
- //updating grade
- void Student::updateGrade(int index,int newGrade){
- arr[index]=newGrade;
- }
- //displaying grade
- void Student::displayGrade(int index){
- cout << arr[index] << endl;
- }
- //calculating GPA
- float Student::GPA(){
- int sum=0;
- int count = 0;
- for(int i=0;i<10;i++){
- if(arr[i]!=0){
- sum += arr[i];
- count++;
- }
- }
- if(count==0){
- return 0;
- }
- return (sum*1.0/count);
- }
- //displaying Grades
- void Student::displayGrades(){
- for(int i=0;i<10;i++){
- if(arr[i]!=0)
- cout <<i+1<<" : "<<arr[i]<<endl;
- }
- cout << "GPA : " << setprecision(2) << fixed << GPA() << endl;
- }
- //displaying display
- void Student::display(){
- cout << first_name << " " << last_name << endl;
- displayGrades();
- cout << endl;
- }
- class Instructor{
- private:
- string name;
- string department;
- public:
- Instructor(){ }
- Instructor(string n,string d){
- name=n;
- department=d;
- }
- void setName(string n);
- string getName();
- void setDept(string d);
- string getDept();
- };
- void Instructor::setName(string n){
- name=n;
- }
- void Instructor::setDept(string d){
- department=d;
- }
- string Instructor::getName(){
- return name;
- }
- string Instructor::getDept(){
- return department;
- }
- class Course{
- private:
- string name;
- Instructor i;
- int size = 5;
- Student *students = new Student[size];
- public:
- Course();
- Course(string c,Instructor a);
- void setName(string n);
- string getName();
- void setInstructor(Instructor a);
- string getInstructor();
- void output();
- void grow();
- ~Course();
- Course(const Course &c);
- Course& operator=(const Course &c);
- void addStudent(int position, Student &s);
- void listStudents();
- void display();
- };
- Course::Course(){}
- Course::Course(string c,Instructor a){
- name=c;
- i.setName(a.getName());
- i.setDept(a.getDept());
- }
- Course::~Course(){ cout << "(Course) Destructor called"; }
- Course::Course(const Course &c){
- cout << "(Course) Copy constructor called" << endl;
- name = c.name;
- i = c.i;
- for(int i=0;i<size;i++) {
- students[i] = c.students[i];
- }
- }
- Course& Course::operator=(const Course &c){
- cout << "(Course) Assignment Overload called" << endl;
- name = c.name;
- i = c.i;
- for(int i=0;i<size;i++) {
- students[i] = c.students[i];
- }
- }
- void Course::setName(string n){
- name=n;
- }
- string Course::getName(){
- return name;
- }
- void Course::setInstructor(Instructor a){
- i.setName(a.getName());
- i.setDept(a.getDept());
- }
- string Course::getInstructor(){
- return "Instructor: " + i.getName() + "\tDepartment: " + i.getDept();
- }
- void Course::output(){
- cout << "Course: " << getName() << " ";
- cout << "\t" << getInstructor() <<" " << endl;
- cout << "===============================================================================" << endl;
- }
- void Course::grow(){
- int new_size = size * 2;
- Student* newArray = new Student[new_size];
- for(int i = 0; i < size; i++) {
- newArray[i] = students[i];
- }
- delete [] students;
- students = newArray;
- new_size = size;
- }
- void Course::addStudent(int position, Student &s){
- students[position] = s;
- }
- void Course::listStudents(){
- for(int i=0;i<size;i++){
- students[i].display();
- }
- }
- void Course::display(){
- output();
- listStudents();
- }
- int main(){
- Student *s1 = new Student ("Miles", "Morales");
- s1->addGrade(0,80);
- s1->addGrade(1,84);
- s1->addGrade(2,65);
- Student *s2 = new Student("Peter", "Parker");
- s2->addGrade(0,50);
- s2->addGrade(1,60);
- s2->addGrade(2,70);
- Instructor *i1 = new Instructor ("Kevin Morea", "Computer Sciences");
- Course *c1 = new Course ("ET575", *i1);
- c1->addStudent(0,*s1);
- c1->addStudent(1,*s2);
- c1->display();
- Course *c2 = new Course {*c1};
- c2->display();
- Course *c3 = new Course;
- *c3 = *c2;
- c3->display();
- delete [] c1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement