Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Purpose: Implement the simple Contact management application as a Windows consol

ID: 3856235 • Letter: P

Question

Purpose: Implement the simple Contact management application as a Windows console application.
Requirements: You are provided with three source files. Implement your code per below instructions for each file:
ContactRecord.h - This header file contains the class definition of the ContactRecord class. You need to provide the implementation for each of its member functions and constructors.

###
#pragma once
#include <iostream>
#include <string>
using namespace std;
class ContactRecord
{
private:
int ContactID;
string FirstName;
string LastName;
string MiddleName;
string PhoneNumber;
private:
void CopyData(const ContactRecord & src);
public:
int GetContactID() { return this->ContactID; }
string GetFirstName() { return this->FirstName; }
string GetLastName() { return this->LastName; }
string GetMiddleName() { return this->MiddleName; }
string GetPhoneNumber() { return this->PhoneNumber; }
void SetContactID(int v) { this->ContactID = v;}
void SetFirstName(string v) { this->FirstName = v; }
void SetLastName(string v) { this->LastName = v; }
void SetMiddleName(string v) { this->MiddleName = v; }
void SetPhoneNumber(string v) { this->PhoneNumber = v; }
public:
void Print() const;
public:
ContactRecord();
ContactRecord(string firstName, string lastName, string middleName, string phoneNumber);
ContactRecord(const ContactRecord & src);
public:
const ContactRecord & operator=(const ContactRecord & src);
bool operator==(const ContactRecord & src);
};
###

ContactDataManager.h - This header file contains the class definition of the ContactDataManager class. The ContactDataManager class manages the list (vector) of ContactRecord objects. You need to provide the implementation for each of its member functions and constructors.

###
#pragma once
#include <vector>
#include "ContactRecord.h"

class ContactDataManager
{
private:
static int NextContactID;
private:
vector<ContactRecord> ContactList;
private:
void CopyData(const ContactDataManager & src);
public:
ContactDataManager();
ContactDataManager(const ContactDataManager & src);
public:
size_t GetContactCount();
int AddContact(string firstName, string lastName, string middleName, string phoneNumber);
bool EditContact(int nContactID, string firstName, string lastName, string middleName, string phoneNumber);
bool RemoveContact(int nContactID);
bool RetrieveContact(int nContactID, ContactRecord & contact);
vector<int> GetContactIDs();
public:
const ContactDataManager operator=(const ContactDataManager & src);
};
###

Main.cpp - This source file contains the implementation of the main() method. Do not modify this file. Include it in your project. Your ContactRecord and ContactDataManager classes will need to work with this source file.

###
#include "ContactRecord.h"
#include "ContactDataManager.h"

int main(int argc, char *argv[], char *envp[])
{
ContactDataManager contactDataManager;
contactDataManager.AddContact("Peter", "Nguyen", "", "123456789");
contactDataManager.AddContact("Kim", "Vo", "Hai", "987654321");
contactDataManager.AddContact("John", "Smith", "Jr.", "112233445566");
contactDataManager.AddContact("Hung", "Bach", "", "3344556677");
vector<int> contactIds = contactDataManager.GetContactIDs();
cout << "***** CONTACTS BEFORE EDIT *****" << endl;
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
contactDataManager.EditContact(contactIds[0],
"Peter",
"Nguyen",
"S.",
"66666666");
cout << "***** CONTACTS AFTER EDIT *****" << endl;
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
contactDataManager.RemoveContact(contactIds[1]);
cout << "***** CONTACTS AFTER REMOVE *****" << endl;
contactIds = contactDataManager.GetContactIDs();
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
return 0;
}
###

Explanation / Answer

#include <iostream>
#include <string>
using namespace std;
class ContactRecord
{
private:
int ContactID;
string FirstName;
string LastName;
string MiddleName;
string PhoneNumber;
private:
void CopyData(const ContactRecord & src);
public:
int GetContactID() { return this->ContactID; }
string GetFirstName() { return this->FirstName; }
string GetLastName() { return this->LastName; }
string GetMiddleName() { return this->MiddleName; }
string GetPhoneNumber() { return this->PhoneNumber; }
void SetContactID(int v) { this->ContactID = v;}
void SetFirstName(string v) { this->FirstName = v; }
void SetLastName(string v) { this->LastName = v; }
void SetMiddleName(string v) { this->MiddleName = v; }
void SetPhoneNumber(string v) { this->PhoneNumber = v; }
public:
void Print() const;
public:
ContactRecord();
ContactRecord(string firstName, string lastName, string middleName, string phoneNumber);
ContactRecord(const ContactRecord & src);
public:
const ContactRecord & operator=(const ContactRecord & src);
bool operator==(const ContactRecord & src);
};

#include <vector>
#include "ContactRecord.h"

class ContactDataManager
{
private:
static int NextContactID;
private:
vector<ContactRecord> ContactList;
private:
void CopyData(const ContactDataManager & src);
public:
ContactDataManager();
ContactDataManager(const ContactDataManager & src);
public:
size_t GetContactCount();
int AddContact(string firstName, string lastName, string middleName, string phoneNumber);
bool EditContact(int nContactID, string firstName, string lastName, string middleName, string phoneNumber);
bool RemoveContact(int nContactID);
bool RetrieveContact(int nContactID, ContactRecord & contact);
vector<int> GetContactIDs();
public:
const ContactDataManager operator=(const ContactDataManager & src);
};

#include "ContactRecord.h"
#include "ContactDataManager.h"

int main(int argc, char *argv[], char *envp[])
{
ContactDataManager contactDataManager;
contactDataManager.AddContact("Peter", "Nguyen", "", "123456789");
contactDataManager.AddContact("Kim", "Vo", "Hai", "987654321");
contactDataManager.AddContact("John", "Smith", "Jr.", "112233445566");
contactDataManager.AddContact("Hung", "Bach", "", "3344556677");
vector<int> contactIds = contactDataManager.GetContactIDs();
cout << "***** CONTACTS BEFORE EDIT *****" << endl;
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
contactDataManager.EditContact(contactIds[0],
"Peter",
"Nguyen",
"S.",
"66666666");
cout << "***** CONTACTS AFTER EDIT *****" << endl;
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
contactDataManager.RemoveContact(contactIds[1]);
cout << "***** CONTACTS AFTER REMOVE *****" << endl;
contactIds = contactDataManager.GetContactIDs();
for (size_t i = 0; i < contactIds.size(); i++)
{
ContactRecord rec;
contactDataManager.RetrieveContact(contactIds[i], rec);
rec.Print();
}
cout << endl;
return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote