#include "controller.h" #define NDEBUG #include #include using namespace std; //////////////////////////////////////////////////////////////// // Student and item information are read in from input files // and parsed before storing into appropriate arrays. // Parameters: // -None // // Pre: -None // // Post: Student and item information are stored into appropriate arrays // // Returns: none // // Called by: none // // Calls: initializeStudent(); initializeItems() ///////////////////////////////////////////////////////////////// controller::controller() { ifstream studentFile; //Student file ifstream itemFile; //Item file ifstream commandFile; //Command file string counter; unsigned int numberOfStudents =0; unsigned int numberOfItems = 0; unsigned int idNum = 0; //Number associated with student studentFile.open("students.data"); //Open student data and prepare to read info itemFile.open("items.data"); //Open multimedia data and prepare to read info while(studentFile) { studentFile>>counter; if(counter == "@E-mail:") { numberOfStudents++; } if(counter == "@@") { studentFile.ignore(200, '\n'); } } studentFile.close(); //Close file once information is read in studentFile.clear(); studentFile.open("students.data"); while(studentFile) { initializeStudent(studentFile, idNum); idNum++; //Update number if(idNum >= numberOfStudents) { //////cout<<<<<<<<"All students have been read in. Blanks will be skipp'd."<>counter; if(counter == "@Owner:") { numberOfItems++; } if(counter == "@@") { itemFile.ignore(200, '\n'); } } itemFile.close(); //Close file once information is read in itemFile.clear(); idNum = 0; //Reset identification number to zero itemFile.open("items.data"); while(itemFile) { initializeItem(itemFile, idNum); idNum++; //Update number if(idNum >= numberOfItems) { //////cout<<<<<<<<"All items have been in. Leaving file now to avoid blank line penalties"< // Parses student information, storing each piece of data in // its correct spot. // Parameters: // unsigned int idNum-- number assigned to student // ifstream& inFile -- input file information is being read from // // Pre: -None // // Post: Student information is stored into studentArray. // // Returns: boolean true // // Called by: constructor // // Calls: setName(); setNameAvailable(); setNumber(); setPhoneNumberAvailable(); // setEmail(); setEmailAvailable(); setAddyLine1(); setAddyLine2; // setAddress1Available(); setAddress2Available(); setCity(); // setCityAvailable(); setState(); setStateAvailable(); setZipcode(); // setZipcodeAvailable(); setOther(); setMiscAvailable(); ////////////////////////////////////////////////////////////////////////////////// bool controller::initializeStudent(ifstream& inFile, unsigned int& idNum) { string addyLine; unsigned int number =0; //Used to read in phone numbers string getHeading; //Heading proceeding the information string secondHeading; //Second heading bool setBool = false; //Set values inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; while(inFile) { if(getHeading == "@Name:") //If the category is name... { //.......Following code will store the name getline(inFile, getHeading, '\n'); studentArray[idNum].setName(getHeading); setBool = true; studentArray[idNum].setNameAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@Phone") //If the category is phone number... { //.......Following code will store the phone number inFile.ignore(200, '('); inFile>>number; //Read in area code studentArray[idNum].setNumber(number, inFile); setBool = true; studentArray[idNum].setPhoneNumberAvailable(setBool); inFile.ignore(200, '\n'); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@E-mail: ") //If the category is e-mail... { //.......Following code will store the e-mail information inFile>>getHeading; inFile.ignore(200, '\n'); //////cout<<<<<<<>getHeading; inFile.ignore(200, '\n'); //////cout<<<<<<<>getHeading; } else if(getHeading == "@Address Line 1:") //If the category is address line 1... { //.......Following code will store address on line 1 information getline(inFile, getHeading, '\n'); setBool = true; studentArray[idNum].setAddyLn1(getHeading); studentArray[idNum].setAddress1Available(setBool); inFile>>getHeading; } else if(getHeading == "@Address Line 2: ") { //.......Following code will store address on line 2 information getline(inFile, getHeading, '\n'); setBool = true; studentArray[idNum].setAddyLn2(getHeading); studentArray[idNum].setAddress2Available(setBool); inFile>>getHeading; } else if(getHeading == "@Address Line 2:") { //.......Following code will store address on line 2 information getline(inFile, getHeading, '\n'); setBool = true; studentArray[idNum].setAddyLn2(getHeading); studentArray[idNum].setAddress2Available(setBool); inFile>>getHeading; } else if(getHeading == "@Address ") { //.......Following code will store address on line 2 information inFile.ignore(200, '\n'); getline(inFile, getHeading, '\n'); setBool = true; studentArray[idNum].setAddyLn2(getHeading); studentArray[idNum].setAddress2Available(setBool); inFile>>getHeading; } else if(getHeading == "@Address") { //.......Following code will store address on line 2 information inFile.ignore(200, '\n'); getline(inFile, getHeading, '\n'); setBool = true; studentArray[idNum].setAddyLn2(getHeading); studentArray[idNum].setAddress2Available(setBool); inFile>>getHeading; } else if(getHeading == "@City: ") //If the category is city... { //.......Following code will store the city information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setCity(getHeading); studentArray[idNum].setCityAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@City:") //If the category is city... { //.......Following code will store the city information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setCity(getHeading); studentArray[idNum].setCityAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@State: ") //If the category is state... { //.......Following code will store the state information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setState(getHeading); studentArray[idNum].setStateAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@State:") //If the category is state... { //.......Following code will store the state information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setState(getHeading); studentArray[idNum].setStateAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@Zipcode: ") //If the category is zipcode... { //.......Following code will store the zipcode inFile>>number; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setZipcode(number); studentArray[idNum].setZipcodeAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@Zipcode:") //If the category is zipcode... { //.......Following code will store the zipcode inFile>>number; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setZipcode(number); studentArray[idNum].setZipcodeAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@Other: ") //If the category is other... { //.......Following code will store miscellaneous information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setOther(getHeading); studentArray[idNum].setMiscAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@Other:") //If the category is other... { //.......Following code will store miscellaneous information inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setOther(getHeading); studentArray[idNum].setMiscAvailable(setBool); inFile>>getHeading; inFile.ignore(200, '\n'); //Ignore blank; } else if(getHeading == "@@ ") //If the end has been reached....goto next headline { inFile.ignore(200, '\n'); return true; } else if(getHeading == "@@") //If the end has been reached....goto next headline { inFile.ignore(200, '\n'); return true; } else if(getHeading == " ") { inFile.ignore(200, '\n'); inFile>>getHeading; } else { ////cout<<<<<<"invalid command. Check the initializeStudent function in the controller.cpp file. Student number: "< // Parses item information, storing each piece of data in // its correct spot. // Parameters: // unsigned int idNum-- number assigned to student // ifstream& inFile -- input file information is being read from // // Pre: -None // // Post: Item information is stored into itemArray. // // Returns: boolean true // // Called by: constructor // // Calls: setItem(); setPrivateItem(); setMedia(); setPrivateMedia(); // setAuthor(); setPrivateAuthor(); setOwner(); setPrivateOwner; // setPrice(); setPrivatePrice(); setAvailable(); setPrivateAvailable(); ////////////////////////////////////////////////////////////////////////////////// bool controller::initializeItem(ifstream& inFile, unsigned int& idNum) { unsigned int dollar =0; //Used to read in phone numbers unsigned int cents = 0; string getHeading; //Heading proceeding the information bool setBool = false; //Set values unsigned int dumVal = idNum; inFile>>getHeading; //Read in first heading... inFile.ignore(200, '\n'); while(inFile) { if(getHeading == "@Item:") //If the header is item... { //.......Following code will store the name of the item getline(inFile, getHeading, '\n'); itemArray[idNum].setItem(getHeading); itemArray[idNum].setPrivateItem(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Media") //If the header is media type... { //.......Following code will store the media type of item inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[idNum].setMedia(getHeading); itemArray[idNum].setPrivateMedia(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Media Type:") //If the header is media type... { //.......Following code will store the media type of item inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[idNum].setMedia(getHeading); itemArray[idNum].setPrivateMedia(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@by: ") //If the header is by... { //.......Following code will store the author of the item getline(inFile, getHeading, '\n'); itemArray[idNum].setAuthor(getHeading); itemArray[idNum].setPrivateAuthor(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@by:") //If the header is by... { //.......Following code will store the author of the item getline(inFile, getHeading, '\n'); itemArray[idNum].setAuthor(getHeading); itemArray[idNum].setPrivateAuthor(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Owner: ") //If the header is owner... { //.......Following code will store the owner of the item inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[idNum].setOwner(getHeading); itemArray[idNum].setPrivateOwner(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Owner:") //If the header is owner... { //.......Following code will store the owner of the item inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[idNum].setOwner(getHeading); itemArray[idNum].setPrivateOwner(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Price: ") //If the header is price... { //.......Following code will store the price of the item inFile.ignore(200, '$'); //Ignore dollar sign inFile>>dollar; //Read in the price itemArray[idNum].setDollar(dollar); itemArray[idNum].setPrivatePrice(); inFile.ignore(200, '.'); inFile>>cents; itemArray[idNum].setCent(cents); inFile.ignore(200, '\n'); //Check me if anything goes wrong inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Price:") //If the header is price... { //.......Following code will store the price of the item inFile.ignore(200, '$'); //Ignore dollar sign inFile>>dollar; //Read in the price itemArray[idNum].setDollar(dollar); itemArray[idNum].setPrivatePrice(); inFile.ignore(200, '.'); inFile>>cents; itemArray[idNum].setCent(cents); inFile.ignore(200, '\n'); //Check me if anything goes wrong inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Availability: ") //If the header is availability... { //.......Following code will store the availability of the item getline(inFile, getHeading, '\n'); itemArray[idNum].setAvailable(getHeading); itemArray[idNum].setPrivateAvailable(); ////cout<<<<<>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Availability:") //If the header is availability... { //.......Following code will store the availability of the item getline(inFile, getHeading, '\n'); itemArray[idNum].setAvailable(getHeading); itemArray[idNum].setPrivateAvailable(); ////cout<<<<<>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@@ ") //If the end of the information to be read in has been reached.... { inFile.ignore(200, '\n'); //Goto next header return true; } else if(getHeading == "@@") //If the end of the information to be read in has been reached.... { inFile.ignore(200, '\n'); //Goto next header return true; } else { ////cout<<<<<<"invalid command. Check the initializeItem function in the controller.cpp file. Student number: "< // Searches for the specified e-mail address, and resets the student information. // After being reset, other students may be added into the new slot. // // Parameters: // string targetEmail-- email of the target student // ifstream& outFile -- output file information is being printed to // // Pre: -None // // Post: Item information is stored into itemArray. // // Returns: none // // Called by: organizer() // // Calls: emailPresent(); getEmail(); resetInfo(); ownerPresent(); // getOwner(); ////////////////////////////////////////////////////////////////////////////////// void controller::deleteEmail(ofstream& outFile, string targetEmail) { bool emailIsThere = false; //Just checking if student provided a name at all bool ownerIsThere = false; //Just checking if the item has an owner or not string testString; //Just a string to test against unsigned int maximum = numItems + 100; //Run a loop through the array of students searching for a matching email for(unsigned int i =0; i <=numStudents; i++) { emailIsThere = studentArray[i].emailPresent(); //Check for the presence of an e-mail address.. testString = studentArray[i].getEmail(); //Check email straignt if(emailIsThere == true) //IF there is an email address { if(targetEmail == testString) { studentArray[i].resetInfo(); //Reset the student information back to its default values ////cout<<<<<<"delete "< // Searches the student array until it finds the target student. // Once the target student is found, his/her information is printed to the output file. // // Parameters: // string targetEmail-- email of the target student // ifstream& outFile -- output file information is being printed to // // Pre: -None // // Post: Student information is printed to the output file. // // Returns: none // // Called by: organizer() // // Calls: emailPresent(); getEmail(); namePresent(); phonePresent(); address1Present(); // address2Present(); cityPresent(); statePresent(); zipcodePresent(); // getName(); getAreaCode(); getNumber1(); getNumber2(); getAddyLine1(); // getAddyLine2(); getCity(); getState(); getZipcode(); getOther(); // ownerPresent(); authorPresent(); mediaPresent(); pricePresent(); // isAvailable(); itemPresent(); getOwner(); getAuthor(); getPrice(); // getAvailablility(); getItem(); ////////////////////////////////////////////////////////////////////////////////// void controller::printEmail(ofstream& outFile, string targetEmail, string command) { bool emailIsThere = false; //Just checking if student provided a name at all bool itemNameIsThere = false; bool authorIsThere = false; bool mediaTypeIsThere = false; bool priceIsThere = false; bool availabilityIsThere = false; bool ownerIsThere = false; //Just checking if the item has an owner or not bool nameIsThere = false; bool address1IsThere = false; bool address2IsThere = false; bool cityIsThere = false; bool stateIsThere = false; bool zipcodeIsThere = false; bool otherIsThere = false; bool phoneIsThere = false; string testString; unsigned int maximum = numItems + 100; //Run a loop through the array of students searching for a matching email for(unsigned int i =0; i <=numStudents; i++) { emailIsThere = studentArray[i].emailPresent(); testString = studentArray[i].getEmail(); //.......prints out information provided by student... if(emailIsThere == true) { if(testString == targetEmail) { if(command == "print students") { ////cout<<<<<<"print students"< // Calls the printEmail function until all the students in the array have been printed. // // Parameters: // ofstream& outFile -- output file information is being printed to // // Pre: -None // // Post: Student information is printed to the output file. // // Returns: none // // Called by: organize() // // Calls: getEmail(); printEmail(); ////////////////////////////////////////////////////////////////////////////////// void controller::printStudents(ofstream& outFile) { string targetEmail; //Email to be printed string command; //Flag to determine what is printed command = "print students"; for(unsigned int i = 0; i <= numStudents; i++) { targetEmail = studentArray[i].getEmail(); if(targetEmail == "") { ////cout<<<<<<"Print student function: Student was removed from array cell: "< // Parses student information, storing each piece of data in // its correct spot. // Parameters: // unsigned int idNum-- number assigned to student // ifstream& inFile -- input file information is being read from // // Pre: -None // // Post: Student information is stored into studentArray. // // Returns: boolean true // // Called by: organize // // Calls: setName(); setNameAvailable(); setNumber(); setPhoneNumberAvailable(); // setEmail(); setEmailAvailable(); setAddyLine1(); setAddyLine2; // setAddress1Available(); setAddress2Available(); setCity(); // setCityAvailable(); setState(); setStateAvailable(); setZipcode(); // setZipcodeAvailable(); setOther(); setMiscAvailable(); setReset(); ////////////////////////////////////////////////////////////////////////////////// bool controller::addStudent(ifstream& inFile, ofstream& outFile) { unsigned int number =0; //Used to read in phone numbers unsigned int idNum =0; string getHeading; //Heading proceeding the information bool setBool = false; //Set values bool openSpot = false; //Used to spot an open array slot where new student may be added //...Following code loops through the student array looking for an open space for(idNum =0; idNum<=numStudents; idNum++) { openSpot = studentArray[idNum].returnReset(); if(openSpot == true) { break; } } inFile.ignore(200, '\n'); //Ignore to next readable line getline(inFile, getHeading, '\n'); //Read in type of information to be inputted. while(inFile) { if(getHeading == "@Name: ") { getline(inFile, getHeading, '\n'); studentArray[idNum].setName(getHeading); setBool = true; studentArray[idNum].setNameAvailable(setBool); getline(inFile, getHeading, '\n'); } if(getHeading == "@Name:") { getline(inFile, getHeading, '\n'); studentArray[idNum].setName(getHeading); setBool = true; studentArray[idNum].setNameAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Phone Number: ") { inFile.ignore(200, '('); inFile>>number; //Read in area code studentArray[idNum].setNumber(number, inFile); setBool = true; studentArray[idNum].setPhoneNumberAvailable(setBool); inFile.ignore(200, '\n'); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Phone Number:") { inFile.ignore(200, '('); inFile>>number; //Read in area code studentArray[idNum].setNumber(number, inFile); setBool = true; studentArray[idNum].setPhoneNumberAvailable(setBool); inFile.ignore(200, '\n'); getline(inFile, getHeading, '\n'); } else if(getHeading == "@E-mail: ") { outFile<<"add student"<>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setEmail(getHeading); studentArray[idNum].setEmailAvailable(setBool); setBool = false; studentArray[idNum].setReset(setBool); ////cout<<<<<<"Add student: "<>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setEmail(getHeading); studentArray[idNum].setEmailAvailable(setBool); setBool = false; studentArray[idNum].setReset(setBool); ////cout<<<<<<"Add student: "<>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setCity(getHeading); studentArray[idNum].setCityAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@City:") { inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setCity(getHeading); studentArray[idNum].setCityAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@State: ") { inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setState(getHeading); studentArray[idNum].setStateAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@State:") { inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setState(getHeading); studentArray[idNum].setStateAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Zipcode: ") { inFile>>number; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setZipcode(number); studentArray[idNum].setZipcodeAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Zipcode:") { inFile>>number; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setZipcode(number); studentArray[idNum].setZipcodeAvailable(setBool); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Other: ") { inFile>>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setOther(getHeading); studentArray[idNum].setMiscAvailable(setBool); ////cout<<<<<>getHeading; inFile.ignore(200, '\n'); setBool = true; studentArray[idNum].setOther(getHeading); studentArray[idNum].setMiscAvailable(setBool); ////cout<<<<< // Parses item information, storing each piece of data in // its correct spot. // Parameters: // unsigned int idNum-- number assigned to student // ifstream& inFile -- input file information is being read from // // Pre: -None // // Post: Item information is stored into itemArray. // // Returns: boolean true // // Called by: constructor // // Calls: setItem(); setPrivateItem(); setMedia(); setPrivateMedia(); // setAuthor(); setPrivateAuthor(); setOwner(); setPrivateOwner; // setPrice(); setPrivatePrice(); setAvailable(); setPrivateAvailable(); ////////////////////////////////////////////////////////////////////////////////// bool controller::addItem(ifstream& inFile, ofstream& outFile) { unsigned int dollar =0; //Used to read in phone numbers unsigned int cents =0; string getHeading; //Heading proceeding the information string test; //Used to test owners bool setBool = true; //Set values bool openSlot = false; bool validPrice = true; unsigned int i =0; unsigned int maximum = numItems + 100; //.......Following loop seeks out open space to add items into the item array for(i =0; i<=maximum; i++) { openSlot = itemArray[i].returnReset(); if(openSlot == true) { break; } } inFile.ignore(200, '\n'); //Ignore blank line inFile>>getHeading; inFile.ignore(200, '\n'); while(inFile) { if(getHeading == "@Item:") { getline(inFile, getHeading, '\n'); itemArray[i].setItem(getHeading); itemArray[i].setPrivateItem(); inFile>>getHeading; inFile.ignore(200, '\n'); } else if(getHeading == "@Media Type:") { inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[i].setMedia(getHeading); itemArray[i].setPrivateMedia(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Media") { inFile>>getHeading; inFile.ignore(200, '\n'); itemArray[i].setMedia(getHeading); itemArray[i].setPrivateMedia(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@by:") { getline(inFile, getHeading, '\n'); itemArray[i].setAuthor(getHeading); itemArray[i].setPrivateAuthor(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@by: ") { getline(inFile, getHeading, '\n'); itemArray[i].setAuthor(getHeading); itemArray[i].setPrivateAuthor(); getline(inFile, getHeading, '\n'); } else if(getHeading == "@Owner: ") { inFile>>getHeading; inFile.ignore(200, '\n'); //..Following code searches for owner in student array list for(unsigned int j=0; j<=numStudents; j++) { test = studentArray[j].getEmail(); if(test == getHeading) { bool result = false; outFile<<"add item"<>getHeading; inFile.ignore(200, '\n'); //..Following code searches for owner in student array list for(unsigned int j=0; j<=numStudents; j++) { test = studentArray[j].getEmail(); if(test == getHeading) { bool result = false; outFile<<"add item"<>dollar; //Read in the price itemArray[i].setDollar(dollar); itemArray[i].setPrivatePrice(); inFile.ignore(200, '.'); inFile>>cents; validPrice =itemArray[i].setCent(cents); if(validPrice == false) { ////cout<<<<<<"Price listed was invalid"<>dollar; //Read in the price itemArray[i].setDollar(dollar); itemArray[i].setPrivatePrice(); inFile.ignore(200, '.'); inFile>>cents; validPrice =itemArray[i].setCent(cents); if(validPrice == false) { ////cout<<<<<<"Price listed was invalid"<>getHeading; } else { ////cout<<<<<<"invalid command. Check the addItem function in the controller.cpp file. Student number: "< // Calls the printEmail function until all the students in the array have been printed. // // Parameters: // ofstream& outFile -- output file information is being printed to // // Pre: -None // // Post: Student information is printed to the output file. // // Returns: none // // Called by: organize() // // Calls: ownerPresent(); printEmail(); authorPresent(); mediaPresent(); pricePresent(); // isAvailable(); itemPresent(); getItem(); getMedia(); getAuthor(); getDollar(); // getCents(); getAvailability(); ////////////////////////////////////////////////////////////////////////////////////////// void controller::printItems(ofstream& outFile) { bool emailIsThere = false; //Just checking if student provided a name at all bool itemNameIsThere = false; bool authorIsThere = false; bool mediaTypeIsThere = false; bool priceIsThere = false; bool availabilityIsThere = false; bool ownerIsThere = false; //Just checking if the item has an owner or not unsigned int maxItems = numItems+100; //Following code cycles through each item array cell...and prints out its contents... for(unsigned int j=0; j<=maxItems; j++) { ownerIsThere = itemArray[j].ownerPresent(); authorIsThere = itemArray[j].authorPresent(); mediaTypeIsThere = itemArray[j].mediaPresent(); priceIsThere = itemArray[j].pricePresent(); availabilityIsThere = itemArray[j].isAvailable(); itemNameIsThere = itemArray[j].itemPresent(); if(ownerIsThere == true) { if(itemNameIsThere == true) { outFile<<"Item:"<