Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(C++) Please do this as fast as possible. Modify the 2 files below, turning them

ID: 3715538 • Letter: #

Question

(C++) Please do this as fast as possible.

Modify the 2 files below, turning them into "Linked Lists"

(Provide all copiable code in C++)

The following is teacher.h

#ifndef TEACHER_H
#define TEACHER_H
#define MAX_CLASS_SIZE 10
#include "student.h"

class Teacher
{
public:
Teacher();
~Teacher();
void intitalizeClass();
Student* getStudent(int i);
string getAssignmentByName(string name);
void assignGradeByName(string name,string grade);
void print();
static void test();
private:
int findStudentByName(string name);
int classSize;
Student students[MAX_CLASS_SIZE]; //Implementas the aggregation relationship
};

#endif // TEACHER_H

The following is teacher.cpp

#include "teacher.h"

Teacher::Teacher()
{
classSize =0;
}

void Teacher::intitalizeClass(){
students[0].setName("Bejamin");
classSize++;
students[1].setName("Beatriz");
classSize++;
students[2].setName("Ming");
classSize++;
}

int Teacher::findStudentByName(string name){
for(int i=0;i<classSize;i++){
if(students[i].getName() == name) return i;
}
return -1;
}

Student* Teacher::getStudent(int i){
return &students[i];
}

string Teacher::getAssignmentByName(string name)
{
int found = findStudentByName(name);
if(found>=0){
return students[found].getAssignment();
}else {
cout<<name<<" not found"<<endl;
return "";
}
}
void Teacher::assignGradeByName(string name, string grade)
{
int found = findStudentByName(name);
if(found>=0){
students[found].assignGrade(grade);
}else {
cout<<name<<" not found"<<endl;
}
}

void Teacher::print(){
for(int i=0;i<classSize;i++){
students[i].print();
}
}

void Teacher::test(){
Teacher aTeacher;
aTeacher.intitalizeClass();
aTeacher.getStudent(0)->submitAssignment("Assignment of student 0");
aTeacher.getStudent(1)->submitAssignment("Assignment of student 1");
aTeacher.getStudent(2)->submitAssignment("Assignment of student 2");
aTeacher.print();

string student = "Ming";
// cout<<"Trying to find "<<student<<endl;
// int found = aTeacher.findStudentByName(student);
// if(found>=0) aTeacher.getStudent(found)->print();
// else cout<<"Could not find student"<<endl;

cout<<"Pulling "<<student<<"'s assignment"<<endl;
string assignment = aTeacher.getAssignmentByName(student);
cout<<assignment<<endl;
cout<<"Assigning grade to"<<student<<endl;
aTeacher.assignGradeByName(student,"A+");
aTeacher.print();

}

Teacher::~Teacher()
{
}

Explanation / Answer

Add student.h file where Student type is declared so that student can be accessed by

#ifndef TEACHER_H
#define TEACHER_H
#define MAX_CLASS_SIZE 10
#include "student.h"

class Teacher
{
public:
Teacher();
~Teacher();
void intitalizeClass();
Student* getStudent(int i);
string getAssignmentByName(string name);
void assignGradeByName(string name,string grade);
void print();
static void test();
private:
int findStudentByName(string name);
int classSize;
Student students[MAX_CLASS_SIZE]; //Implementas the aggregation relationship
};

#endif // TEACHER_H

The following is teacher.cpp

#include "teacher.h"

Teacher::Teacher()
{
classSize =0;
}

void Teacher::intitalizeClass(){
students[0].setName("Bejamin");
classSize++;
students[1].setName("Beatriz");
classSize++;
students[2].setName("Ming");
classSize++;
}

int Teacher::findStudentByName(string name){
for(int i=0;i<classSize;i++){
if(students[i].getName() == name) return i;
}
return -1;
}

Student* Teacher::getStudent(int i){
return &students[i];
}

string Teacher::getAssignmentByName(string name)
{
int found = findStudentByName(name);
if(found>=0){
return students[found].getAssignment();
}else {
cout<<name<<" not found"<<endl;
return "";
}
}
void Teacher::assignGradeByName(string name, string grade)
{
int found = findStudentByName(name);
if(found>=0){
students[found].assignGrade(grade);
}else {
cout<<name<<" not found"<<endl;
}
}

void Teacher::print(){
for(int i=0;i<classSize;i++){
students[i].print();
}
}

void Teacher::test(){
Teacher aTeacher;
aTeacher.intitalizeClass();
aTeacher.getStudent(0)->submitAssignment("Assignment of student 0");
aTeacher.getStudent(1)->submitAssignment("Assignment of student 1");
aTeacher.getStudent(2)->submitAssignment("Assignment of student 2");
aTeacher.print();

string student = "Ming";
// cout<<"Trying to find "<<student<<endl;
// int found = aTeacher.findStudentByName(student);
// if(found>=0) aTeacher.getStudent(found)->print();
// else cout<<"Could not find student"<<endl;

cout<<"Pulling "<<student<<"'s assignment"<<endl;
string assignment = aTeacher.getAssignmentByName(student);
cout<<assignment<<endl;
cout<<"Assigning grade to"<<student<<endl;
aTeacher.assignGradeByName(student,"A+");
aTeacher.print();

}

Teacher::~Teacher()
{
}