/* Contestant Database */ #include #include #include using namespace std; //constant definitions const int MAX_NUM_CONTESTANTS = 50; //structure definitions struct Name { string last; string first; }; struct Job_info { string title; double salary; }; struct Personal_info { char gender; string haircolor; int age; Job_info job; }; struct Contestant{ Name name; Personal_info personal; }; // Function Prototypes void readdata(Contestant[], int &); void printdata(Contestant[], int); void printmenu(void); void findage(Contestant[], int); void findgender(Contestant[], int); void findhair(Contestant[], int); void findtitle(Contestant[], int); void findsalary(Contestant[], int); void pause(void); int main() { Contestant contestant[MAX_NUM_CONTESTANTS]; int num; char choice; bool not_done = true; /* first part */ /* fill and print database */ readdata(contestant,num); printdata(contestant,num); /* second part */ /* call functions to read and process requests */ do { printmenu(); cin >> choice; switch(choice) { case 'q': case 'Q': not_done = false; break; case 'a': case 'A': findage(contestant,num); break; case 'g': case 'G': findgender(contestant,num); break; case 'h': case 'H': findhair(contestant,num); break; case 't': case 'T': findtitle(contestant,num); break; case 's': case 'S': findsalary(contestant,num); break; default: cout << "Invalid choice - try again\n\n"; break; } } while (not_done); //system("pause"); //un-comment if using devC++ return 0; } /* Function readdata() */ void readdata(Contestant contestant[], int &count) { // open input file ifstream cfile("c:\\bc\\cis15\\pgms\\chapter_07\\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 printdata: */ void printdata(Contestant contestant[], int num) { // open output file // ofstream dbfile("c:\\bc\\cis1_5\\newpgms\\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 << endl << endl; 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 letter corresponding to that trait.\n\n"; cout << "To quit, select Q.\n\n"; cout << "\t****************************\n"; cout << "\t List of Choices \n"; cout << "\t****************************\n"; cout << "\t Q -- quit\n"; cout << "\t A -- age\n"; cout << "\t G -- gender\n"; cout << "\t H -- hair color\n"; cout << "\t T -- title\n"; cout << "\t S -- salary\n"; cout << endl << endl <<"\tEnter your selection: "; return; } /* Function findage() */ void findage(Contestant contestant[], int num) // add to main { int agewanted,found=0; cout << "\n\nEnter the age you want: "; cin >> agewanted; cout << "\nContestants whose age is " <