#include #include #include #include #include using namespace std; char getMenuChoice(); void verticalSpace(int); class countyElectionResults{ friend ostream &operator<<(ostream &, countyElectionResults); public: countyElectionResults(); countyElectionResults(string); bool loadFile(string); string getCountyName(); vector getVotes(); void showVotes(); int getNullifierVotes(); int getFielditeVotes(); int getOtherVotes(); int getTotalVotes(); private: string countyName; vector votes; int nullifierVotes; int fielditeVotes; int otherVotes; void countVotes(); }; ostream &operator<<(ostream &output, countyElectionResults results){ output << setw(25) << results.countyName << setw(15) << results.fielditeVotes << setw(15) << results.nullifierVotes << setw(15) << results.otherVotes; return output; } countyElectionResults::countyElectionResults(){ nullifierVotes = 0; fielditeVotes = 0; otherVotes = 0; } countyElectionResults::countyElectionResults(string filename){ nullifierVotes = 0; fielditeVotes = 0; otherVotes = 0; loadFile(filename); } bool countyElectionResults::loadFile(string filename){ ifstream countyFile; char vote; countyFile.open(filename.c_str()); if (!countyFile){ cout << "File not found: " << filename << endl; return false; } // Read in the first line with the county name getline(countyFile, countyName); while (countyFile >> vote){ votes.push_back(vote); } countVotes(); return true;; } void countyElectionResults::showVotes(){ cout << setw(15) << countyName << endl; for (int i = 0; i < votes.size(); i++){ cout << setw(15) << votes[i] << " " < countyElectionResults::getVotes(){ return votes; } int countyElectionResults::getNullifierVotes(){ return nullifierVotes; } int countyElectionResults::getFielditeVotes(){ return fielditeVotes; } int countyElectionResults::getOtherVotes(){ return otherVotes; } int countyElectionResults::getTotalVotes(){ return votes.size(); } void countyElectionResults::countVotes(){ nullifierVotes = 0; fielditeVotes = 0; otherVotes = 0; for (int i = 0; i < votes.size(); i ++){ switch (votes[i]){ case 'N': case 'n': nullifierVotes ++; break; case 'F': case 'f': fielditeVotes ++; break; default: otherVotes ++; } } } class stateElectionResults { public: void addCountyFile(); void showAllCountyResults(); void showCountyResults(string); void showCountyVotes(string); void listCounties(); private: vector stateResults;; }; void stateElectionResults::addCountyFile(){ string countyFileName; int voteCount = 0; cout << "Please enter the county file name to add:"; getline(cin, countyFileName); countyElectionResults newResults; if (newResults.loadFile(countyFileName)){ stateResults.push_back(newResults); } } void stateElectionResults::showAllCountyResults(){ int nullifierVotes = 0; int fielditeVotes = 0; int otherVotes = 0; verticalSpace(5); cout << setw(25) << "County Name" << setw(15) << "Fieldite Votes" << setw(15) << "Nullifier Votes" << setw(15) << "Other Votes" << endl; for (int i = 0; i < stateResults.size(); i++){ cout << stateResults[i] << endl; nullifierVotes += stateResults[i].getNullifierVotes(); fielditeVotes += stateResults[i].getFielditeVotes(); otherVotes += stateResults[i].getOtherVotes(); } cout << setw(25) << "Total:" << setw(15) << fielditeVotes << setw(15) << nullifierVotes << setw(15) << otherVotes << endl; verticalSpace(5); } void stateElectionResults::showCountyResults(string countyName){ verticalSpace(5); for (int i = 0; i < stateResults.size(); i++){ if (stateResults[i].getCountyName() == countyName){ cout << stateResults[i] << endl; break; } } verticalSpace(5); } void stateElectionResults::showCountyVotes(string countyName){ for (int i = 0; i < stateResults.size(); i++){ if (stateResults[i].getCountyName() == countyName){ stateResults[i].showVotes(); break; } } } void stateElectionResults::listCounties(){ cout << setw(25) << "COUNTIES" << endl; for (int i = 0; i < stateResults.size(); i++){ cout << setw(25) << stateResults[i].getCountyName() << endl; } } // int main(){ // // This main was just for testing operation of the countyElectionsResult class // countyElectionResults countyFile; // string filename; // cout << "Enter file name: "; // cin >> filename; // countyFile.loadFile(filename); // cout << setw(50) << countyFile.getCountyName() << endl; // cout << setw(30) << "Nullifier: " << setw(20) << countyFile.getNullifierVotes() << endl; // cout << setw(30) << "Fieldite: " << setw(20) << countyFile.getFielditeVotes() << endl; // cout << setw(30) << "Other: " << setw(20) << countyFile.getOtherVotes() << endl; // cout << setw(30) << "Total: " << setw(20) << countyFile.getTotalVotes() << endl; // cout << endl; // countyFile.showVotes(); // } int main(){ stateElectionResults theResults; bool done = false; char choice; string county; do { choice = getMenuChoice(); switch (choice){ case 'Q': case 'q': done = true; break; case 'A': case 'a': theResults.addCountyFile(); break; case 'R': case 'r': theResults.showAllCountyResults(); break; case 'L': case 'l': theResults.listCounties(); break; case 'C': case 'c': cout << "Please enter the county name: "; getline(cin,county); theResults.showCountyResults(county); break; case 'V': case 'v': cout << "Please enter the county name: "; getline(cin,county); theResults.showCountyVotes(county); break; default: cout << "Unknown choice. Please try again" << endl; } } while (!done); } void verticalSpace(int space){ for (int i = 0; i < space; i++){ cout << endl; } } char getMenuChoice(){ char choice; verticalSpace(5); cout << setw(45) << "A: Add a county file" << endl; cout << setw(45) << "L: List counties" << endl; cout << setw(45) << "R: show all results" << endl; cout << setw(45) << "C: show single county result" << endl; cout << setw(45) << "V: verify single county votes" << endl; cout << setw(45) << "Q: quit" << endl; cout << "Your choice: "; cin >> choice; string trash; getline (cin,trash); verticalSpace(5); return choice; }