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