Hi all I have been struggling with this program for quite awhile. I can't seem to get the PRINTFREE and PRINTMATCH commands to work right. I seen a similar problem on here but I am still grasping at straws. Any help would be greatly appreciated. Here is the scenario:
Programming Assignment 2
Your assignment is to write a program for a computer dating service. Each client gives you his or her
name, phone number, and a list of interests. It is your job to maintain lists of men and women using
the service and to match up the compatible couples. You will find more details about the assignment,
including the inputs, outputs, and deliverables in the course environment.
Input
Data about current clients should be on file "Clients.mf". For each current client, the file contains the
following information:
Sex 1 character, 'M' or 'F'
Name up to 20 characters, followed by comma
Phone Number 8 characters
Number of Interests an integer
List of Interests 10 characters each separated by commas with a period after the
Match up to 20 characters, followed by end-of-line.
From the keyboard: The user may enter on of the following commands.
Command Processing
NEWCLIENT <sex> <name>
<phone number><number of
interests> <interests>
final interest.
Add the client to the appropriate list by storing the appropriate
information. Attempt to match this new client with a member of the
opposite sex. A match occurs when the clients have three or more
of the same interests. (You only have to find the first match for each
new client.) Make sure you then designate both persons as matched,
as described in the section on data structures above. Print the name
of the new client, the name of his or her match, and both phone
numbers. If no match is found, print an appropriate message.
<name> from the matched person.
currently matched.
UNMATCH <name> Unmatch this name with his or her current match by removing
PRINTMATCH Print a list of all matched pairs.
PRINTFREE Print the names and phone numbers of clients who are not
QUIT Stop processing
Output
Echo print all screen input and output on file "Dates.out."
Data Structures
The problem requires you to maintain two lists of clients, one for men and one for women. When a
new client is added to the list, he or she is added to the end of the appropriate list.
Each list element must include all the information for one client: name, phone number, number of
interests (maximum number is 10), interests, and the name of this client's current match (empty
string if not matched). You must use one of the list classes developed in Chapter 3.
Deliverables
• Your design.
• A listing of your program
• A listing of your test plan as input to the program
# include "Client.h"
# include "ClientList.h"
# include <fstream>
# include <string>
# include <cctype>
# include <cstring>
# include <iostream>
usingnamespace std;
void displayMenu();
int main ()
{
string choice;
ClientList femaleList, maleList;
Client member;
do
{
cout << "\nEnter one of the options from the menu.\n\n";
displayMenu();
cin >> choice;
cin.ignore();
if (choice == "NEWCLIENT" || choice == "newclient")
{
char clientSex, repeat;
string clientName,
clientPhone,
clientInterest;
int numInterest;
bool found;
do
{
cout << "Enter the following information for each client:\n\n";
cout << "Enter the gender of the client (\'M\' for male ";
cout << "or \'F\' for female)\n";
cin.get(clientSex);
cin.ignore();
while (toupper(clientSex) != 'M' && toupper(clientSex) != 'F')
{
cout << "Invalid entry. Enter \'m\' or \'f\'.";
cin.get(clientSex);
cin.ignore();
}
if (toupper(clientSex) == 'M')
member.setGender(clientSex);
elseif (toupper(clientSex) == 'F')
member.setGender(clientSex);
cout << "Enter the name of the client (use only 21 letters)\n";
getline(cin, clientName);
member.setName(clientName);
cout << "Enter the phone number of the client (use only 7 digits)\n";
getline(cin, clientPhone);
member.setPhone(clientPhone);
cout << "Enter the number of interests for the client ";
cout << "(maximum of 10 interests per person)\n";
cin >> numInterest;
cin.ignore();
for (int index = 0; index < numInterest; index++)
{
cout << "Enter interest " << (index+1);
cout << ": (add a comma after each interest) ";
getline(cin, clientInterest);
member.setInterest(clientInterest);
}
if (member.getGender() == 'M' || member.getGender() == 'm')
{
maleList.newClient(member);
}
elseif (member.getGender() == 'F' || member.getGender() == 'f')
femaleList.newClient(member);
cout << "Would you like to enter another client? (y/n)? ";
cin.get(repeat);
cin.ignore();
}while (toupper(repeat) != 'N');
}
elseif (choice == "UNMATCH" || choice == "unmatch")
{
string empty = " ";
member.setMatch(empty);
}
elseif (choice == "PRINTMATCH" || choice == "printmatch")
{
maleList.printMatches(femaleList);
femaleList.printMatches(maleList);
}
elseif (choice == "PRINTFREE" || choice == "printfree")
{
femaleList.printFreeClients();
maleList.printFreeClients();
}
elseif (choice == "QUIT" || choice == "quit")
{
return 0;
}
else
cout << "Invalid entry. Please try again.\n";
}while(choice != "QUIT" || choice != "quit");
cin.get();
return 0;
}
void displayMenu()
{
cout << "NEWCLIENT:\tAdd a new member to the database\n\n";
cout << "UNMATCH:\tRemoves the matching member from the client\n\n";
cout << "PRINTMATCH:\tPrints a list of all matched members\n\n";
cout << "PRINTFREE:\tPrints the name and phone numbers of members that "
<< "currenctly\n\t\tare not matched\n\n";\
cout << "QUIT:\t\tEnds program\n\n";
}