Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- marketingsoftware.cpp (main code):
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <string>
- using namespace std;
- #include "person.h"
- Person::Person() {
- age = 0;
- gender = "default";
- yearlyIncome = 0;
- return;
- }
- void Person::Print() {
- cout << "Age = " << this->age
- << ", gender = " << this->gender
- << ", yearly income = " << this->yearlyIncome
- << endl;
- return;
- }
- void Person::SetData(int age, string gender, int yearlyIncome) {
- this->age = age;
- this->gender = gender;
- this->yearlyIncome = yearlyIncome;
- return;
- }
- int Person::GetAge() {
- return this->age;
- }
- bool ReadPeopleFromFile(int argc, char* argv[], vector<Person> &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);
- tmpPrsn.Print();
- people.push_back(tmpPrsn);
- }
- inFS.close();
- cout << "Finished reading file." << endl;
- return false; // indicates no error
- }
- void GetUserInput(int &ageLowerRange, int&ageUpperRange, string gender2) {
- cout << "Enter gender (male, female, or any):";
- cin >> gender2;
- cout<<"\nEnter lower range of age: ";
- cin >> ageLowerRange;
- cout << "Enter upper range of age: ";
- cin >> ageUpperRange;
- return;
- }
- vector<Person> GetPeopleInAgeRange(vector<Person> ppl, int lowerRange, int upperRange) {
- unsigned int i = 0;
- vector<Person> 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;
- }
- int main(int argc, char* argv[]) {
- vector<Person> ptntlCstmrs;
- bool hadError = false;
- int ageLowerRange = 0;
- int ageUpperRange = 0;
- string gender = "";
- hadError = ReadPeopleFromFile(argc, argv, ptntlCstmrs);
- if( hadError ) {
- return 1; // indicates error
- }
- GetUserInput(ageLowerRange, ageUpperRange, gender);
- ptntlCstmrs = GetPeopleInAgeRange(ptntlCstmrs, ageLowerRange, ageUpperRange);
- // FIXME Add the function GetPeopleWithSpecificGender
- //FIXME Addthefunction GetPeopleInIncomeRange
- cout << "\nNumber of potential customers = "<<ptntlCstmrs.size() << endl;
- return 0;
- }
- data read from text file:
- 20 male 25000
- 25 male 45000
- 23 male 30000
- 16 male 7000
- 30 male 55000
- 22 female 27000
- 26 female 44000
- 21 female 37000
- 18 female 17000
- 29 female 62000
- person.cpp (compiled with main file):
- #include <string>
- using namespace std;
- class Person {
- public:
- Person();
- void Print();
- void SetData(int a); // FIXME Also set gender and yearly income
- int GetAge();
- private:
- int age;
- string gender;
- int yearlyIncome;
- };
- person.h:
- class Person {
- public:
- Person();
- void Print();
- void SetData(int age, string gender, int yearlyIncome);
- int GetAge();
- // string gender;
- private:
- int age;
- string gender;
- int yearlyIncome;
- };
- description of what I need done (taken from assignment instructions):
- "3. Allow the user to select the potential customer’s gender: “male”, “female”, or “any”. The
- program should now output only potential customers with the userspecified gender and age.
- Update the GetUserInput function to prompt the user and store the user’s gender selection.
- Also, create a function GetPeopleWithSpecificGender that returns only people with the
- userspecified gender.
- Debugging suggestion: Use a function to print main’s vector of Persons so that you can see who
- is in the vector after each function call. This technique may help debug the newly created
- function GetPeopleWithSpecificGender.
- "
- "
- 4. In addition to age and gender, allow the user to select the lower and upper range of a
- customer’s yearly income.
- Update the GetUserInput function to prompt the user and store the user’s specified range.
- Also, create a function GetPeopleInIncomeRange that returns only people with the userspecified
- yearly income.
- "
- "
- The main should now look like the following code:
- intmain(intargc,char*argv[]){
- vector<Person>people;
- boolhadError=false;
- intageLowerRange=0;
- intageUpperRange=0;
- stringgender="";
- intyILowerRange=0;
- intyIUpperRange=0;
- hadError=ReadPeopleFromFile(argc,argv,people);
- if(hadError){
- return1;//indicateserror
- }
- GetUserInput(ageLowerRange,ageUpperRange,gender,yILowerRange,
- yIUpperRange);
- people=GetPeopleInAgeRange(people,ageLowerRange,ageUpperRange);
- people=GetPeopleWithSpecificGender(people,gender);
- people=GetPeopleInIncomeRange(people,yILowerRange,yIUpperRange);
- cout<<"\nNumberofpotentialcustomers="<<people.size()<<endl;
- return0;
- }"
- (sorry if the above code pasted badly, i'm too lazy to fix all the spaces, blame whoever made the pdf)
- "Here is an example program execution with people.txt (user input is highlighted here for clarity):
- Openingfilepeople.txt.
- Age=20,gender=male,yearlyincome=25000
- Age=25,gender=male,yearlyincome=45000
- Age=23,gender=male,yearlyincome=30000
- Age=16,gender=male,yearlyincome=7000
- Age=30,gender=male,yearlyincome=55000
- Age=22,gender=female,yearlyincome=27000
- Age=26,gender=female,yearlyincome=44000
- Age=21,gender=female,yearlyincome=37000
- Age=18,gender=female,yearlyincome=17000
- Age=29,gender=female,yearlyincome=62000
- Finishedreadingfile.
- Enterlowerrangeofage:24
- Enterupperrangeofage:30
- Entergender(male,female,orany):any
- Enterlowerrangeofyearlyincome:43000
- Enterupperrangeofyearlyincome:57000
- Numberofpotentialcustomers=3"
- same there.... what the hell is going on with the spaces :|
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement