(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()
{
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.