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

THIS IS FOR C++ Please separate into .h and .cpp files. Problem Write a program

ID: 3715731 • Letter: T

Question

THIS IS FOR C++

Please separate into .h and .cpp files.

Problem

Write a program to keep track of business contacts.

Specification

1. Create a BusinessContact class with the following fields:

firstName:String

lastName:String

phoneNumber:String

emailAddress:String

company:String

2. Store the records in memory in an array.

3. Store the records on disk in the text file contacts.txt.

4. Create a menu that allows for the following operations:

Add a Contact

Delete a Contact

View a Contact

Display the Contact List

5. Automatically read the text file and store the records in an array when the program begins.

6. Automatically write the records to the file when the program ends.

Explanation / Answer

----------------------header starts here ------------------------

#ifndef BUSSINESSCARD_H

#define BUSSINESSCARD_H

#include <iostream>

#include <vector>

using namespace std;

class bussinessCard{

private:

string firstName;

string lastName;

string phoneNumber;

string emailAddress;

string company;

public:

bussinessCard();

bussinessCard(string firstName, string lastName, string phoneNumber,string emailAddress,string company );

friend void addContact(vector <bussinessCard> &bussinessCardLIst,bussinessCard card);

friend void deleteContact(vector <bussinessCard> &bussinessCardLIst, bussinessCard card);

friend void viewContact(vector <bussinessCard> &bussinessCardLIst, bussinessCard card);

friend void displayContactList(vector <bussinessCard> &bussinessCardLIst);

friend void readContactListFromFile(vector <bussinessCard> &bussinessCardLIst, string inputFilename);

friend void writeContactListToFile(vector <bussinessCard> &bussinessCardLIst, string inputFilename);

};

#endif

------------------------header ends here----------------------

----------------------specification starts here ------------------------

#include "bussinessCard.h"

#include <iostream>

#include <string>

#include <vector>

#include <cstdlib>

#include <sstream>

#include <fstream>

#include <limits>

using namespace std;

bussinessCard::bussinessCard(){

firstName = "";

lastName = "";

phoneNumber = "";

emailAddress = "";

company = "";

}

bussinessCard::bussinessCard(string firstName, string lastName, string phoneNumber,string emailAddress,string company ){

this->firstName = firstName;

this->lastName = lastName;

this->phoneNumber = phoneNumber;

this->emailAddress = emailAddress;

this->company = company;

}

void addContact(vector <bussinessCard> &bussinessCardLIst, bussinessCard card){

bussinessCardLIst.push_back(card);

}

void deleteContact(vector <bussinessCard> &bussinessCardLIst, bussinessCard card){

vector<bussinessCard>::iterator it;

int deleteSucces = 0;

for(it = bussinessCardLIst.begin(); it != bussinessCardLIst.end(); it++ ) {

// found nth element..print and break.

if((*it).firstName == card.firstName && (*it).lastName == card.lastName) {

bussinessCardLIst.erase(it);

cout << "Delete is Succesfull for FirstName: " << card.firstName << " and LastName" << card.lastName <<endl;

deleteSucces = 1;

}

}

if(!deleteSucces){

cout << "There is no matching record for deletion for FirstName: " << card.firstName << " and LastName" << card.lastName <<endl;

}

}

void viewContact(vector <bussinessCard> &bussinessCardLIst, bussinessCard card){

vector<bussinessCard>::iterator it;

int contactSucces = 0;

for(it = bussinessCardLIst.begin(); it != bussinessCardLIst.end(); it++ ) {

// found nth element..print and break.

if((*it).firstName == card.firstName ) {

//bussinessCardLIst.erase(it);

cout << "FirstName: "<<(*it).firstName << " LastName: "<< (*it).lastName << " phoneNumber: " << (*it).phoneNumber

<< " emailAddress: "<< (*it).emailAddress << " company: " << (*it).company << endl;   

contactSucces = 1;

}

}

if(!contactSucces){

cout << "There is no matching record for contact for FirstName: " << card.firstName <<endl;

}

}

void displayContactList(vector <bussinessCard> &bussinessCardLIst){

vector<bussinessCard>::iterator it;

cout << "The Contact List is as below: " <<endl;

for(it = bussinessCardLIst.begin(); it != bussinessCardLIst.end(); it++ ) {

cout << "FirstName: "<<(*it).firstName << " LastName: "<< (*it).lastName << " phoneNumber: " << (*it).phoneNumber

<< " emailAddress: "<< (*it).emailAddress << " company: " << (*it).company << endl;   

}

}

void readContactListFromFile(vector <bussinessCard> &bussinessCardLIst, string inputFilename){

ifstream myfile;

myfile.open (inputFilename.c_str());

  

string line, field;

stringstream ss;

string firstName;

string lastName;

string phoneNumber;

string emailAddress;

string company;

while(getline(myfile, line)) {

ss.str(line);

ss >> firstName >> lastName >> phoneNumber >> emailAddress >> company;

addContact(bussinessCardLIst, bussinessCard(firstName, lastName, phoneNumber, emailAddress, company) );

ss.str("");

ss.clear();

}

myfile.close();

}

void writeContactListToFile(vector <bussinessCard> &bussinessCardLIst, string outputFilename){

ofstream myfile;

myfile.open (outputFilename.c_str());

vector<bussinessCard>::iterator it;

cout << "The Contact List is as below: " <<endl;

for(it = bussinessCardLIst.begin(); it != bussinessCardLIst.end(); it++ ) {

myfile <<(*it).firstName << " "<< (*it).lastName << " " << (*it).phoneNumber

<< " "<< (*it).emailAddress << " " << (*it).company << endl;   

}

myfile.close();

}

------------------------specification ends here----------------------

----------------------driver starts here ------------------------

#include "bussinessCard.h"

#include <iostream>

#include <string>

#include <vector>

#include <cstdlib>

#include <sstream>

#include <fstream>

#include <limits>

using namespace std;

void showMenu(){

  

cout << "Select one of the folllowing options" <<endl;

cout << "(1) Add a Contact" <<endl;

cout << "(2) Delete a Contact" <<endl;

cout << "(3) View a Contact" <<endl;

cout << "(4) Display the Contact List" <<endl;

cout << "(99) quit the Program" <<endl;

cout << "Input Selection ";

}

int main(){

vector <bussinessCard> bussinessCardLIst;

int option;

string name;

int update_number;

int playerNum;

string yes_or_no;

string firstName; string lastName; string phoneNumber; string emailAddress; string company ;

string inputFilename = "contacts.txt";

string outputFilename = "contacts.txt";

cout << "Reading List from " << inputFilename << endl;

readContactListFromFile(bussinessCardLIst, inputFilename);

cout << "Reading List Complete "<< endl;

do{

showMenu();

cin >> option;  

if (cin.fail())

{

cout << "ERROR -- You did not enter an integer";   

cin.clear();   

cin.ignore(std::numeric_limits<std::streamsize>::max(), ' ');

continue;

}

switch(option) {

case 1 :

cout << "Enter Details to add Contact" << endl;

cout << "Enter First Name" << endl;

cin >> firstName;

cout << "Enter Last Name" << endl;

cin >> lastName;

cout << "Enter PhoneNumber" << endl;

cin >> phoneNumber;

cout << "Enter Email Address" << endl;

cin >> emailAddress;

cout << "Enter Company" << endl;

cin >> company;

addContact(bussinessCardLIst,bussinessCard( firstName, lastName, phoneNumber, emailAddress, company));

break;

case 2 :

cout << "Enter Details to Delete Contact" << endl;

cout << "Enter First Name" << endl;

cin >> firstName;

cout << "Enter Last Name" << endl;

cin >> lastName;

deleteContact(bussinessCardLIst,bussinessCard( firstName, lastName, "", "", ""));

break;

case 3 :

cout << "Enter Details to view Contact" << endl;

cout << "Enter First Name" << endl;

cin >> firstName;

viewContact(bussinessCardLIst,bussinessCard( firstName, "", "", "", ""));

break;

  

case 4 :

displayContactList(bussinessCardLIst);

break;

case 99 :

cout << "Quitting Program" << endl;   

  

break;

default :

cout << "Invalid option" << endl;

}

} while(option != 99);

cout << "writing List to " << outputFilename << endl;

writeContactListToFile(bussinessCardLIst, outputFilename);

cout << "writing List Complete "<< endl;

return (0);

}

------------------------driver ends here----------------------