/* Contestant Database */ #include #include #include #include //needed to use system() function using namespace std; //constant definitions const int NUMCONS = 50; //structure definitions struct Conname { string last; string first; }; struct Jobinfo { string title; double salary; }; struct Persinfo { char gender; string haircolor; int age; Jobinfo job; }; struct Con { Conname name; Persinfo personal; }; // Function Prototypes void readdata(Con [], int &); void prettyprint(Con [], int); void printmenu(void); void findage(Con [], int); void findgender(Con [], int); void findhair(Con [], int); void findtitle(Con [], int); void findsalary(Con [], int); void pause(void); int main() { Con contestant[NUMCONS]; int num; int choice; bool not_done = true; /* first part */ /* fill and print database */ readdata(contestant,num); prettyprint(contestant,num); /* second part */ /* call functions to read and process requests */ do { printmenu(); cin >> choice; switch(choice) { case 0: not_done = false; break; case 1: findage(contestant,num); break; case 2: findgender(contestant,num); break; case 3: findhair(contestant,num); break; case 4: findtitle(contestant,num); break; case 5: findsalary(contestant,num); break; default: cout << "Incorrect value; try again\n\n"; break; } } while (not_done); // system("pause"); //un-comment when using DevC++ return 0; } /* Function readdata() */ void readdata(Con contestant[], int &count) { // open input file ifstream cfile("c:\\bc\\CISC1110\\pgms\\chapter10\\myinput.txt"); //comment-out for debugging //ifstream cfile("con"); //un-comment for debugging count = 0; //initialize count while (cfile >> contestant[count].name.last) { cfile >> contestant[count].name.first; cfile >> contestant[count].personal.gender; cfile >> contestant[count].personal.haircolor; cfile >> contestant[count].personal.age; cfile >> contestant[count].personal.job.title; cfile >> contestant[count].personal.job.salary; count++; } cfile.close(); return; } /* Function prettyprint: */ void prettyprint(Con contestant[], int num) { // open output file //ofstream dbfile("c:\\bc\\CISC1110\\pgms\\chapter10\\myoutput.txt"); //comment-out for debugging ofstream dbfile("con"); //un-comment for debugging dbfile.setf(ios::fixed,ios::floatfield); dbfile.precision(2); //set decimal precision dbfile << "\t\tContestants in the Database\n\n"; dbfile << "Name\t\tGender\tHair\tAge\tTitle\tSalary\n\n"; for (int count = 0; count < num; count++) { dbfile << contestant[count].name.first; dbfile << "\t" << contestant[count].name.last; dbfile << "\t" << contestant[count].personal.gender; dbfile <<"\t" << contestant[count].personal.haircolor; dbfile << "\t" << contestant[count].personal.age; dbfile << "\t" << contestant[count].personal.job.title; dbfile <<"\t"; dbfile.width(9); dbfile << contestant[count].personal.job.salary; dbfile << endl; } dbfile.close(); return; } /* Function printmenu() */ void printmenu(void) { cout << "\n\n\n\n\n\n\n"; cout << "To obtain a list of contestants with a given\n"; cout << "trait, select a trait from the list and type in\n"; cout << "the number corresponding to that trait.\n\n"; cout << "To quit, select 0.\n\n"; cout << "\t****************************\n"; cout << "\t List of Choices \n"; cout << "\t****************************\n"; cout << "\t 0 -- quit\n"; cout << "\t 1 -- age\n"; cout << "\t 2 -- gender\n"; cout << "\t 3 -- hair color\n"; cout << "\t 4 -- title\n"; cout << "\t 5 -- salary\n"; cout << "\n\n\tEnter your selection, 0-5: "; return; } /* Function findage() */ void findage(Con contestant[], int num) { int agewanted,found=0; cout << "\n\nEnter the age you want: "; cin >> agewanted; cout << "\nContestants whose age is " <