This Lab 3 asks you to make two revisions to the program you wrote for Lab2. The
ID: 3869906 • Letter: T
Question
This Lab 3 asks you to make two revisions to the program you wrote for Lab2.
The revisions are as follows
1) The first modification is to add a protected data member to the personType class. named contact_Info. This data member is an instance of a new class named contact_infoType(defined below)
2) Change the data structure that stores the membershipTypes from an array to a vector.
Combine your specification, implementation and driver files. Submit a working application in the space provided below. Remember to append your output at the end as a comment.
You can use the code below to declare your vector of membershipTypes and to declare an iterator i to index this array.
driver code
#include <iostream>
#include <fstream>
#include "personType.h"
#include <string>
#include <vector>
using namespace std;
int main()
{
membershipType members[6]; // vector of membershipTypes
string x, i1, i2;
ifstream myfile;
myfile.open("infile.txt");
for (int i = 0; i < 6; i++)
{
myfile >> members[i].lastName >> members[i].firstName >> members[i].personNum >>
members[i].personID >> members[i].address.streetAddressNum >>
members[i].address.streetName >> members[i].address.streetType >> members[i].address.city >> members[i].address.stateInitials >> members[i].address.zipCode >> members[i].gender;
myfile >> i1 >> i2;
myfile >> members[i].membership_status;
myfile >> members[i].membership_type;
members[i].setInterest1(i1);
members[i].setInterest2(i2);
members[i].print_membership_type();
}
myfile.close();
system("pause");
return 0;
}
specification code
#include <iostream>
#include <string>
using namespace std;
class addressType { //class defintions and prototypes member variables
public:
addressType();
string streetAddressNum, streetName, streetType, city, stateInitials;
int zipCode;
};
class personType
{
public:
personType();
string firstName;
string lastName;
int personNum;
char gender;
int personID;
addressType address;
void setInterest1(string interest1);//mutator
void setInterest2(string interest2);
void printPerson();
string GetInterest1() const; // Accessor
string GetInterest2() const;
private:
string SetInterest1;
string SetInterest2;
protected:
class contact_infoType
{
public:
string get_emailAddress;
private:
string emailAddress;
string phoneNumber;
string userName;
string password;
};
};
//define membershipType class
class membershipType :public personType
{
public:
char membership_type;
char membership_status;
membershipType(); // 1st constructor
membershipType(char, char); // 2nd constructor
void print_membership_type();
};
implntation code
#include "personType.h"
personType::personType()
{
int personNum = 0;
int personID = 0;
}
addressType::addressType() {
int zipCode = 0;
}
void personType::setInterest1(string interest1) {
SetInterest1 = interest1;
}//mutator
void personType::setInterest2(string interest2) {
SetInterest2 = interest2;
}
string personType:: GetInterest1() const
{
return SetInterest1;
}// Accessor
string personType:: GetInterest2() const {
return SetInterest2;
}
void personType :: printPerson() {//constructor
cout << firstName << " " << lastName << " " << gender << " " <<
personID << " " << address.streetAddressNum << " "
<< address.streetName << " " << address.streetType
<< " " << address.city << " " << address.stateInitials
<< " " << address.zipCode << " " << SetInterest1 << " " << SetInterest2 << endl;
}
membershipType::membershipType() {
membership_type = ' ';
membership_status = ' ';
}
membershipType::membershipType(char set_type,char set_type2) {
membership_type = set_type;
membership_status = set_type2;
}
void membershipType::print_membership_type()
{
static int counter = 1;
if (counter <= 6) {
cout<<counter<<"." << firstName <<","<< endl;
cout << "Personal ID:" << personID << endl;
cout << "MembershipStatus:" << membership_status << endl;
cout << "MembershipType:" << membership_type << endl;
cout << "Interests" << GetInterest1() << GetInterest2() << endl;
cout << address.streetAddressNum << address.streetName << address.streetType << address.city <<
address.city << address.stateInitials << address.zipCode << endl;
cout << endl;
cout << endl;
cout << endl;
counter++;
}
}
Explanation / Answer
declaration code:
#include <iostream>
#include <string>
using namespace std;
class addressType { //class defintions and prototypes member variables
public:
addressType();
string streetAddressNum, streetName, streetType, city, stateInitials;
int zipCode;
};
class contact_infoType {
public:
contact_infoType();
string get_emailAddress;
private:
string emailAddress;
string phoneNumber;
string userName;
string password;
};
class personType {
public:
personType();
string firstName;
string lastName;
int personNum;
char gender;
int personID;
addressType address;
void setInterest1(string interest1);//mutator
void setInterest2(string interest2);
void printPerson();
string GetInterest1() const; // Accessor
string GetInterest2() const;
private:
string SetInterest1;
string SetInterest2;
protected:
contact_infoType contact_Info;
};
class membershipType :public personType
{
public:
char membership_type;
char membership_status;
membershipType(); // 1st constructor
membershipType(char, char); // 2nd constructor
void print_membership_type();
};
implmementation code:
#include "personType.h"
// AddressType functions
addressType::addressType() {
int zipCode = 0;
}
contact_infoType::contact_infoType() {
get_emailAddress = "";
emailAddress = "";
phoneNumber = "";
userName = "";
password = "";
}
// PersonType functions
personType::personType()
{
int personNum = 0;
int personID = 0;
}
void personType::setInterest1(string interest1) {
SetInterest1 = interest1;
}//mutator
void personType::setInterest2(string interest2) {
SetInterest2 = interest2;
}
void personType :: printPerson() {//constructor
cout << firstName << " " << lastName << " " << gender << " " <<
personID << " " << address.streetAddressNum << " "
<< address.streetName << " " << address.streetType
<< " " << address.city << " " << address.stateInitials
<< " " << address.zipCode << " " << SetInterest1 << " " << SetInterest2 << endl;
}
string personType:: GetInterest1() const
{
return SetInterest1;
}// Accessor
string personType:: GetInterest2() const {
return SetInterest2;
}
// membershipType functions
membershipType::membershipType() {
membership_type = ' ';
membership_status = ' ';
}
membershipType::membershipType(char set_type,char set_type2) {
membership_type = set_type;
membership_status = set_type2;
}
void membershipType::print_membership_type()
{
static int counter = 1;
if (counter <= 6) {
cout<<counter<<"." << firstName <<","<< endl;
cout << "Personal ID:" << personID << endl;
cout << "MembershipStatus:" << membership_status << endl;
cout << "MembershipType:" << membership_type << endl;
cout << "Interests" << GetInterest1() << GetInterest2() << endl;
cout << address.streetAddressNum << address.streetName << address.streetType << address.city <<
address.city << address.stateInitials << address.zipCode << endl;
cout << endl;
cout << endl;
cout << endl;
counter++;
}
}
// Driver code:
#include <iostream>
#include <fstream>
#include "personType.h"
#include <string>
#include <vector>
using namespace std;
int main()
{
vector <membershipType> members; // vector of membershipTypes
string x, i1, i2;
ifstream myfile;
myfile.open("infile.txt");
for (int i = 0; i < 6; i++)
{
// create a temporary member
membershipType m;
myfile >> m.lastName >> m.firstName >> m.personNum >>
m.personID >> m.address.streetAddressNum >>
m.address.streetName >> m.address.streetType >> m.address.city >> m.address.stateInitials >> m.address.zipCode >> m.gender;
myfile >> i1 >> i2;
myfile >> m.membership_status;
myfile >> m.membership_type;
m.setInterest1(i1);
m.setInterest2(i2);
// add this member to vector
members.push_back(m);
}
vector <membershipType>::iterator i;
for(i = members.begin(); i != members.end(); ++i) {
member m = *i;
m.print_membership_type();
}
myfile.close();
system("pause");
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.