//CmpE46Application FILE //LAb9~ #include "Student.h" #include #include #include #include using namespace std; Student::Student() { int i; id[0] = '\0';//Null character to end the string email[0] = '\0';//Null character to end the string for(i = 0; i < MAXLABS; i++) { labScores[i] = 0.0; } } void Student::setName(string fname, string lname) { firstName = fname; lastName = lname; } string Student::getName()//gets the student's first and last name combined with a space inbetween { string buffer; buffer = lastName + ", " + firstName; return buffer; } void Student::setId(char theId[]) { strcpy(id, theId); } //sets the email address void Student::setEmail(char theEmail[]) { strcpy(email, theEmail); } string Student::getEmail() { string buffer; buffer = email; return buffer; } void Student::setScores(double theScores[]) { int i; for(i = 0; i < MAXLABS; i++) { labScores[i] = theScores[i]; } } //gets the average of all the lab scores double Student::getAverage() const { int i; int total = 0; for(i = 0; i < MAXLABS; i++) //add all scores together/avg is in the main { total += labScores[i]; } return (double(total) / double(MAXLABS)); } istream& operator >>(istream& ins, Student& s_object)//Gets data from user to set private variables { int i; bool flag; string fname, lname; char buffer[50]; double labbuffer[MAXLABS]; int counter; cout << "Enter Student's first name: "; ins >> fname; cout << "Enter Student's last name: "; ins >> lname; ins.ignore(100, '\n'); s_object.setName(fname, lname); do { cout << "Enter Student's ID ( 6 DIGITS ) "; ins.get(buffer, MAXID + 1); ins.ignore(100, '\n'); flag = 0; for(i = 0; i < MAXID - 1; i++) { if(strlen(buffer) != MAXID - 1) //if statement if not 6 characters { cout << "Please Re-Enter the student's SIX DIGIT ID." << endl; flag = 1; break; } if(!isdigit(buffer[i])) //if statement if not a digit { cout << i << "Student's ID must be 6 DIGITS" << endl; flag = 1; break; } } } while(flag); s_object.setId(buffer); do { cout << "Enter Student's email address: "; ins.get(buffer, MAXEMAIL + 1); ins.ignore(100, '\n');//Stops if over 100 or a new line character flag = 0; if(strlen(buffer) > MAXEMAIL - 1) //if statement not 30 characters { cout << "Student's email is too long. Please Re-Enter email." << endl; flag = 1; } counter = 0; for(i = 0; i < MAXEMAIL; i++) { if(buffer[i] == '@') { counter++; } } if(counter != 1) //if statement if buffer doesn't have '@' { cout << "Please Re-Enter email addy. ONLY ONE @ can be placed." << endl; flag = 1; //break; } } while(flag); s_object.setEmail(buffer); cout << "Enter lab scores:" << endl; for(i = 0; i < MAXLABS; i++) { do { cout << "Lab " << i << ": ";//Max lab is 5, lab 0, lab 1, lab 2, lab 3, lab 4 ins >> labbuffer[i]; if((labbuffer[i] < 0)||(labbuffer[i] > 10)) { cout << "Lab scores can only be between 0 - 10." << endl; } } while((labbuffer[i] < 0)||(labbuffer[i] > 10)); } s_object.setScores(labbuffer); return ( ins ); } ostream& operator <<(ostream& outs, Student& s_object)//outs the damn inputs { int i; outs << "Student Name: " << s_object.getName() << endl; outs << "Student ID: " << s_object.id << endl; outs << "Student Email: " << s_object.getEmail() << endl; outs << "Lab Scores: " << endl; outs << endl; for(i = 0; i < MAXLABS; i++) { outs << "Lab " << i << ": " << s_object.labScores[i] << endl; } outs << endl; return ( outs ); }