Does anyone know why my GenerateReports function is not printing anything from the class/struct? Is it even set up right?
Code:// Example for reading records from the input files for DB. #include <iostream> #include <fstream> #include <string> using namespace std; const int Max_Stud = 30; //Max. no. of enrolled students struct NameType { string last; string first; char middle; }; struct CourseType { string name; char grade; int credits; }; struct StudRecType { string ssno; NameType name; string tel; char gender; string level; int totalCredit; float cumGPA; int noCo; CourseType course[5]; int semCredit; float semGPA; }; typedef StudRecType StudDBType[Max_Stud]; // Type definition for an array of records class DBType { public: DBType( ); void Insert(StudRecType ); bool GetNext(StudRecType &); void Reset( ); private: StudDBType Stud; int current; int nost; }; DBType::DBType( ) { current = 0; nost = 0; } void DBType:: Insert(StudRecType srec) { Stud[current] = srec; current ++; nost ++; } bool DBType::GetNext (StudRecType & srec) { if(current > nost) return false; else { srec = Stud[current]; current ++; return true; } } void DBType::Reset ( ) { current = 0; } void Get_Inf (ifstream&, DBType&, int&); void UpdateGPA(StudRecType&); // Calculate Sem. GPA and Cum GPA etc… void GenerateReports(ofstream&, DBType&, int&); void GenerateReports(ofstream& printFile, DBType& displayDB, int& noStud) { StudRecType student; int i = 0; for (i = 1; i < noStud; i++) { cout << "SS#: " << student.ssno << endl; cout << "Name(last, first, mid): " << student.name.last << " " << student.name.last << " " << student.name.middle << endl; cout << "Telphon Number: " << student.tel << endl; cout << "Gender: " << student.gender; cout << "Class Level: " << student.level; if (student.noCo > 0) { cout << "Registration of Spring 2008: Yes" << endl; int j = 0; for (j = 0; j < student.noCo; j++) { cout << "Unoffical Report Card" << endl; cout << "Course: " << j << endl; cout << student.course[j].name; cout << "Credits: " << endl; cout << student.course[j].credits << endl; cout << "Grade: " << endl; cout << student.course[j].grade << endl; displayDB.GetNext(student); } cout << "Credits for Spring: " << student.semCredit << endl; cout << "Spring Semester GPA: " << student.semGPA << endl; cout << "Total Credits: " << student.totalCredit + student.semCredit << endl; cout << "New cumulative GPA: " << student.cumGPA << endl; } else { cout << "Registration of Spring 2008: No"; } displayDB.GetNext(student); } } void UpdateGPA(StudRecType& fGPA) { int count = 0; int i = 0; float gradeA = 4.0; float gradeB = 3.0; float gradeC = 2.0; float gradeD = 1.0; float gradeF = 0.0; float heldGPA = 0.0; float totalGPA = 0.0; count = fGPA.noCo; int amtClass = 0; if (fGPA.noCo != 0) { for (i = 0; i < count; i++) { if (fGPA.course[i].grade == 'A') { heldGPA =gradeA * fGPA.course[i].credits; amtClass= amtClass + fGPA.course[i].credits; } if (fGPA.course[i].grade == 'B') { heldGPA =gradeB * fGPA.course[i].credits; amtClass= amtClass + fGPA.course[i].credits; } if (fGPA.course[i].grade == 'C') { heldGPA =gradeC * fGPA.course[i].credits; amtClass= amtClass + fGPA.course[i].credits; } if (fGPA.course[i].grade == 'D') { heldGPA =gradeD * fGPA.course[i].credits; amtClass= amtClass + fGPA.course[i].credits; } if (fGPA.course[i].grade == 'F') { heldGPA =gradeF * fGPA.course[i].credits; amtClass= amtClass + fGPA.course[i].credits; } if (fGPA.course[i].grade == 'W') totalGPA = (heldGPA + totalGPA); } fGPA.semGPA = (totalGPA / amtClass); fGPA.cumGPA = (totalGPA + fGPA.cumGPA*fGPA.totalCredit)/ (amtClass+fGPA.totalCredit); } } int main() { ifstream inStud; ofstream outFile; //int choice; DBType StudDB; int noStud = 0; inStud.open("Stud.txt"); if (!inStud) { cout <<"**Can't open input file Stud**"<< endl; return 1; } outFile.open("Echo.dat"); if(!outFile) { cout <<"** Can't open output file **"<< endl; return 1; } Get_Inf(inStud, StudDB, noStud); cout << "Total no. of Students is "<<noStud<<endl; cout<<endl; GenerateReports(outFile, StudDB, noStud); return 0; } //******************************************************************* void Get_Inf( /* in */ ifstream& inF1, /* out */ DBType& DB, /* Number of students */ int& noStud) { int j; int jco; StudRecType SR; noStud = 0; while(!inF1.eof()) { inF1>>SR.ssno; inF1>>SR.name.last>>SR.name.first>>SR.name.middle; inF1>>SR.tel>>SR.gender>>SR.level; inF1>>SR.totalCredit>>SR.cumGPA; //Echo input data on the screen cout<<SR.ssno<<endl; cout<<SR.name.last<<"*"<<SR.name.first; cout<<"*"<<SR.name.middle<<endl; cout<<SR.gender<<"*"<<SR.level<<endl; cout<<SR.totalCredit<<"*"<<SR.cumGPA<<endl; inF1>>jco; SR.noCo = jco; for (j = 0;j < jco; j++) { inF1>>SR.course[j].name; inF1>>SR.course[j].credits; inF1>>SR.course[j].grade; cout<<SR.course[j].name <<","<<SR.course[j].credits<<"," <<SR.course[j].grade<<endl; } noStud++; UpdateGPA(SR); DB.Insert (SR); inF1.ignore(100,'\n'); cin.get(); } }

