// File:Student.cpp // Student Class Definition #include "Student.h" #include #include // Need for strcpy #include // Need for toupper #include // Need for setw in cout // Default Constructor folded into one arg constr using default args (see .h) /* Student::Student() {strcpy(Name,""); Hours=Points=0; } */ // Constructor with argument Student::Student(char StudentName[],int hours,int points) {strcpy(Name,StudentName); Hours=hours; Points=points; } // Initialize Name of Student void Student::SetName(char StudentName[]) {strcpy(Name,StudentName);} // Update the class with a class record (#Hours,Grade in class 0..4) // void Student::AddClass(int CourseHours,char Grade) Student Student::operator+=(CourseData Info) {Hours+=Info.Hours; if (Info.Grade!='F') Points+=('E'-toupper(Info.Grade))*Info.Hours; return(*this); } // Change a Grade (#Hours, Previous Grade, New Grade) void Student::ChangeGrade(int CourseHours,char OldGrade,char NewGrade) {Points+=(toupper(OldGrade)-toupper(NewGrade))*CourseHours;} // Remove a class from student's record (Hours, Grade) // void Student::RemoveClass(int CourseHours,char Grade) Student Student::operator-=(CourseData Info) {Hours-=Info.Hours; if (Info.Grade!='F') Points-=('E'-toupper(Info.Grade))*Info.Hours; return(*this); } // Get Hours Completed int Student::HoursCompleted() const {return(Hours);} bool operator<(Student S1,Student S2) {return(strcmp(S1.Name,S2.Name)<0);} bool operator>(Student S1,Student S2) {return(strcmp(S1.Name,S2.Name)>0);} bool operator==(Student S1,Student S2) {return(!strcmp(S1.Name,S2.Name));} bool operator<<=(Student S1,Student S2) {return(S1.ComputeGPA()>=(Student S1,Student S2) {return(S1.ComputeGPA()>S2.ComputeGPA());} // Print Student Info //void Student::PrintStudentInfo() ostream &operator<<(ostream &Dest,Student S) {Dest << "\nStudent Name Hours GPA\n"; Dest.setf(ios::showpoint); Dest.precision(2); Dest << setiosflags(ios::left) << setw(20) << S.Name << resetiosflags(ios::left); Dest.setf(ios::right); Dest << setw(4) << S.Hours << setw(10) << S.ComputeGPA() << endl; return(Dest); } // Get Student's GPA float Student::ComputeGPA() const {if (Hours>0) return(float(Points)/Hours); return(0); }