Programming Assignment 7 Instructions: Marketing Software
include
include
include
include
include “Person.h”
using namespace std;
// Get a filename from program arguments, then make a Person for each line in the file.
bool ReadPeopleFromFile(int argc, char* argv[], vector &people) {
Person tmpPrsn;
ifstream inFS;
int tmpAge = 0;
string tmpGender = “”;
int tmpYI = 0;
if (argc != 2) {
cout << “\nUsage: [EXECUTABLE FILE] [TEXT DATA FILE], e.g. myprog.exe dev_people.txt” << endl;
return true; // indicates error
}
cout << “Opening file ” << argv[1] << “.\n”;
inFS.open(argv[1]); // Try to open file
if (!inFS.is_open()) {
cout << “Could not open file ” << argv[1] << “.\n”;
return true; // indicates error
}
while (!inFS.eof()) {
inFS >> tmpAge;
inFS >> tmpGender;
inFS >> tmpYI;
tmpPrsn.SetData(tmpAge,tmpGender,tmpYI); //Updated member function call to set gender,age
//and yearly income of a person
tmpPrsn.Print();
people.push_back(tmpPrsn);
}
inFS.close();
cout << “Finished reading file.” << endl;
return false; // indicates no error
}
// Ask user to enter age range.
void GetUserInput(int &ageLowerRange, int&ageUpperRange, string &gender, int &yIncomeLowerRange, int &yIncomeUpperRange) {
cout<<“\nEnter lower range of age: “;
cin >> ageLowerRange;
cout << “Enter upper range of age: “;
cin >> ageUpperRange;
cout << “Enter gender: “;
cin >> gender;
cout << “Enter lower range of yearly Income: “;
cin >> yIncomeLowerRange;
cout << “Enter upper range of yearly Income: “;
cin >> yIncomeUpperRange;
return;
}
// Return people within the given age range.
vector GetPeopleInAgeRange(vector ppl, int lowerRange, int upperRange) {
unsigned int i = 0;
vector pplInAgeRange;
int age = 0;
for (i = 0; i < ppl.size(); ++i) {
age = ppl.at(i).GetAge();
if ((age >= lowerRange) && (age <= upperRange)) {
pplInAgeRange.push_back(ppl.at(i));
}
}
return pplInAgeRange;
}
// Return people with the given gender.
vector GetPeopleWithSpecificGender(vector ppl, string userGender)
{
unsigned int i = 0;
/* If the user specified gender is any, then all the customers are selected as potential irrespection of male or female */
if(userGender == “any”)
return ppl;
else
{
/* If the customer’s gender is matching the user specified gender then, the person is selected as potential customer */
vector pplForGender;
string gender = “”;
for (i = 0; i < ppl.size(); ++i) {
gender = ppl.at(i).GetGender();
if ( gender == userGender) {
pplForGender.push_back(ppl.at(i));
}
}
return pplForGender;
}
}
// Return people within the user specified yearly income range.
vector GetPeopleInIncomeRange(vector ppl, int lowerRange, int upperRange) {
unsigned int i = 0;
vector pplInIncomeRange;
int yearlyIncome = 0;
for (i = 0; i < ppl.size(); ++i) {
yearlyIncome = ppl.at(i).GetYearlyIncome();
if ((yearlyIncome >= lowerRange) && (yearlyIncome <= upperRange)) {
pplInIncomeRange.push_back(ppl.at(i));
}
}
return pplInIncomeRange;
}
int main(int argc, char* argv[]) {
vector ptntlCstmrs;
bool hadError = false;
int ageLowerRange = 0;
int ageUpperRange = 0;
string gender = “”;
int yILowerRange = 0;
int yIUpperRange = 0;
hadError = ReadPeopleFromFile(argc, argv, ptntlCstmrs);
if( hadError ) {
return 1; // indicates error
}
GetUserInput(ageLowerRange, ageUpperRange,gender,yILowerRange, yIUpperRange);
ptntlCstmrs = GetPeopleInAgeRange(ptntlCstmrs, ageLowerRange, ageUpperRange);
ptntlCstmrs=GetPeopleWithSpecificGender(ptntlCstmrs,gender);
ptntlCstmrs=GetPeopleInIncomeRange(ptntlCstmrs,yILowerRange,yIUpperRange);
cout << “\nNumber of potential customers = “<<ptntlCstmrs.size() << endl;
return 0;
}
Looking for a Similar Assignment? Order now and Get 10% Discount! Use Coupon Code "Newclient"
