diff --git a/HTMLInserting/InsertingFunctions.cpp b/HTMLInserting/InsertingFunctions.cpp index f74ead7f1f1beb31890f94de1fea5e1872cfb4bf..978d3961475307623904f506da8f74e09ebdb852 100644 --- a/HTMLInserting/InsertingFunctions.cpp +++ b/HTMLInserting/InsertingFunctions.cpp @@ -2,22 +2,6 @@ #include #include "InsertingFunctions.h" -void getDataFromFile(string fileName, string &planType, int &remainingCredits){ - - ifstream fin; - - fin.open(fileName); - - if(!fin.is_open()){ - throw runtime_error("File could not be opened"); - } - else{ - getline(fin, planType); - fin >> remainingCredits; - } - - fin.close(); -} void insertData(const string &planType, const string remainingCredits){ diff --git a/HTMLInserting/InsertingFunctions.h b/HTMLInserting/InsertingFunctions.h index f37a4e314a2e82fb5bf52efb023cecd97ed8a65b..f04533e2d547a2518d88e1ec8e3134c80a2fbe6d 100644 --- a/HTMLInserting/InsertingFunctions.h +++ b/HTMLInserting/InsertingFunctions.h @@ -2,5 +2,4 @@ using namespace std; -void getDataFromFile(string fileName, string &planType, int &remainingCredits); void insertData(const string &planType, const string remainingCredits); \ No newline at end of file diff --git a/HTMLInserting/main.cpp b/HTMLInserting/InsertingTestHarness.cpp similarity index 100% rename from HTMLInserting/main.cpp rename to HTMLInserting/InsertingTestHarness.cpp diff --git a/HTMLParsing/ParsingFunctions.cpp b/HTMLParsing/ParsingFunctions.cpp index 32290f37431459e99597ae6d9981b0e456f1ac36..32e68afdeefea575c03283b6d72a356f7c2e25dd 100644 --- a/HTMLParsing/ParsingFunctions.cpp +++ b/HTMLParsing/ParsingFunctions.cpp @@ -4,7 +4,7 @@ int extractCredit(string str) { stringstream sStream; - + sStream << str; string temp; @@ -21,6 +21,26 @@ int extractCredit(string str) } } +double extractFlex(string str){ + + stringstream sStream; + + sStream << str; + + string temp; + double found; + while (!sStream.eof()) { + + sStream >> temp; + + if (stringstream(temp) >> found){ + return found; + } + + temp = ""; + } +} + vector readHTMLFromFile(string fileName){ vector hLines; @@ -76,7 +96,7 @@ string getPlanType(vector hLines){ break; } else if(hLines.at(i).find("Silver Flex 8") != string::npos){ - planType = "Silver Flex 8"; + planType = "Silver Flex 08"; break; } else{ @@ -92,7 +112,7 @@ int findCreditElement(vector hLines, string planType){ int elementLocation; for(int i = 0; i < hLines.size(); ++i){ - if(hLines.at(i).find("Gold Flex 12") != string::npos){ + if(hLines.at(i).find("" + planType + "") != string::npos){ if(hLines.at(i - 2).find("View Transactions") != string::npos){ elementLocation = i + 2; } @@ -102,18 +122,36 @@ int findCreditElement(vector hLines, string planType){ return elementLocation; } -void writeToFile(string mealPlanType, int totalCredits, string outputFileName){ +int findFlexElement(vector hLines, string planType){ - ofstream fout(outputFileName); + int elementLocation; + planType.pop_back(); + planType.pop_back(); + - if(!fout){ - throw runtime_error("Cannot open output file to write data"); - } - else{ - fout << mealPlanType << endl; - fout << totalCredits << endl; + for(int i = 0; i < hLines.size(); ++i){ + if(hLines.at(i).find(planType) != string::npos){ + if(hLines.at(i - 2).find("View Transactions") != string::npos){ + elementLocation = i + 2; + } + } } - fout.close(); + return elementLocation; + + +} +int findParentPassElement(vector hLines, string planType){ + + int elementLocation; -} \ No newline at end of file + for(int i = 0; i < hLines.size(); ++i){ + if(hLines.at(i).find("Wolves-Parents Pass") != string::npos){ + if(hLines.at(i - 2).find("View Transactions") != string::npos){ + elementLocation = i + 2; + } + } + } + + return elementLocation; +} diff --git a/HTMLParsing/ParsingFunctions.h b/HTMLParsing/ParsingFunctions.h index 195c1d271a1c101e0f284063d7143fe480b6d98e..1a4893f981e48f782f924d0b82942bf889c12445 100644 --- a/HTMLParsing/ParsingFunctions.h +++ b/HTMLParsing/ParsingFunctions.h @@ -8,7 +8,9 @@ using namespace std; vector readHTMLFromFile(string fileName); +int extractCredit(string str); +double extractFlex(string str); string getPlanType(vector hLines); int findCreditElement(vector hLines, string planType); -int extractCredit(string str); -void writeToFile(string mealPlanType, int totalCredits, string outputFileName); \ No newline at end of file +int findFlexElement(vector hLines, string planType); +int findParentPassElement(vector hLines, string planType); diff --git a/HTMLParsing/main.cpp b/HTMLParsing/ParsingTestHarness.cpp similarity index 100% rename from HTMLParsing/main.cpp rename to HTMLParsing/ParsingTestHarness.cpp diff --git a/Main/main.cpp b/Main/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d39965227969523893ec60e95b4349a606f90e1d --- /dev/null +++ b/Main/main.cpp @@ -0,0 +1,40 @@ +#include "../HTMLParsing/ParsingFunctions.h" +#include "../HTMLInserting/InsertingFunctions.h" +#include "../StudentData/StudentData.h" + +#include +#include +#include +#include + +int main(){ + + StudentData studentData; + + try{ + vector hLines = readHTMLFromFile("Sample.html"); + + string mealPlanType = getPlanType(hLines); + + int creditElementLocation = findCreditElement(hLines, mealPlanType); + int parentPassLocation = findParentPassElement(hLines, mealPlanType); + int flexElementLocation = findFlexElement(hLines, mealPlanType); + + + int totalCredits = extractCredit(hLines.at(creditElementLocation)); + int totalParentPasses = extractCredit(hLines.at(parentPassLocation)); + double totalFlexDollars = extractFlex(hLines.at(flexElementLocation)); + + studentData = StudentData(totalCredits, totalParentPasses, totalFlexDollars); + + } + catch(runtime_error &excpt){ + cout << excpt.what() << endl; + } + + cout << "Total credits: " << studentData.getCredits() << endl; + cout << "Total Wolf Parent Passes: " << studentData.getWolfParentPasses() << endl; + cout << "Total Flex Dollars: " << fixed << setprecision(2) << studentData.getFlexDollars() << endl; + + return 0; +} \ No newline at end of file diff --git a/HTMLParsing/Sample.html b/Sample.html similarity index 100% rename from HTMLParsing/Sample.html rename to Sample.html diff --git a/StudentData/StudentData.cpp b/StudentData/StudentData.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bf2c7d87727086216781f23000b9829cfbbf02dc --- /dev/null +++ b/StudentData/StudentData.cpp @@ -0,0 +1,26 @@ + +#include "StudentData.h" + +StudentData::StudentData(){ + this->credits = -1; + this->wolfParentPasses = -1; + this->flexDollars = -1; +} + +StudentData::StudentData(int credits, int wolfParentPasses, double flexDollars){ + this->credits = credits; + this->wolfParentPasses = wolfParentPasses; + this->flexDollars = flexDollars; +} + +void StudentData::setCredits(int credits){ + this->credits = credits; +} + +void StudentData::setWolfParentPasses(int wolfParentPasses){ + this->wolfParentPasses = wolfParentPasses; +} + +void StudentData::setFlexDollars(double flexDollars){ + this->flexDollars = flexDollars; +} diff --git a/StudentData/StudentData.h b/StudentData/StudentData.h new file mode 100644 index 0000000000000000000000000000000000000000..10adb3d55c3b2e62cfb190867a0bffc5f3ddc333 --- /dev/null +++ b/StudentData/StudentData.h @@ -0,0 +1,17 @@ + + +class StudentData { + public: + StudentData(); + StudentData(int, int, double); + void setCredits(int); + void setWolfParentPasses(int); + void setFlexDollars(double); + int getCredits() { return credits; } + int getWolfParentPasses() { return wolfParentPasses; } + double getFlexDollars() { return flexDollars; } + private: + int credits; + int wolfParentPasses; + double flexDollars; +}; \ No newline at end of file