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

Create a C++ console application that will store and retrieve names and addresse

ID: 3670299 • Letter: C

Question

Create a C++ console application that will store and retrieve names and addresses in a text file.

The program should do the following.

It should accept a series of names and addresses from the console.

The user's input should be written to a text file in the CSV format described in the lecture, but do not include the field names in the first row of the file.

Read the records from the text file, and display them in a user-friendly format.

Provide a menu to allow the user to append records to the file, display the records, or exit the application.

Build upon the code below to complete

//Specification: Append and display records in a address database

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void menu(void);
void writeData(void);
void readData(void);
string * split(string, char);

const char FileName[] = "TestAddress.txt";

int main () {
        menu();
        return 0;
} //end main

void menu(void) {
//allow user to choose to append records, display records or exit the program

}//end menu

void writeData(void){
//Write the Address Info to a file

}//end write data

void readData(void){
//read data from a file
//use the split function to break a
//deliminated line of text into fields

}//end read data

string * split(string theLine, char theDeliminator){
        //Break theline into fields and save the fields to an array.
        //Each field will occupy one element in a character array.
        //theLine is a string with fields separated with theDeliminator character.
        //Assumes the last field in the string is terminated with a newline.
        //Useage: string *theFields = split(lineBuffer, ',');

        //determine how many splits there will be so we can size our array
        int splitCount = 0;
        for(int i = 0; i < theLine.size(); i++){
                if (theLine[i] == theDeliminator)
                         splitCount++;
        }
        splitCount++; //add one more to the count because there is not an ending comma

        //create an array to hold the fields
        string* theFieldArray;
        theFieldArray = new string[splitCount];

        //split the string into seperate fields
        string theField = "";
        int commaCount = 0;

        for(int i = 0; i < theLine.size(); i++){ //read each character and look for the deliminator
               if (theLine[i] != theDeliminator) {
                       theField += theLine[i]; //build the field
               }
              else { //the deliminator was hit so save to the field to the array
                       theFieldArray[commaCount] = theField; //save the field to the array
                       theField = "";
                       commaCount++;
              }
        }
        theFieldArray[commaCount] = theField; //the last field is not marked with a comma...

        return theFieldArray;
} //end split

Explanation / Answer

this program is for reading the records from the text file which is comma seperated

HOW TO RUN

save by filerecords.cpp

on terminal

g++ filerecords.cpp -std=c++11

./a.out

---------------------------------------------------------------------------------

#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
typedef struct addresses addresses;
    struct addresses {
    string name;
    string address;
addresses(string name,string address) : name(name), address(address) {}
};

int main()
{
    ifstream inputFile;
    string line;

vector<addresses> records;

        string name;
        string address;
inputFile.open("/home/shekhar/Desktop/chegg/CS/cpp/fileHandling/WandR");
while (getline(inputFile, line,','))   // reads a line from the
{
//     cout << line << endl;
     stringstream lineStream(line);    // transforms the line into a stream
// get fields from the string stream; fields are separated by comma
   getline(lineStream, name, ',');
   getline(lineStream, address, ',');
addresses m(name,address);
records.push_back(m);
}


//sort based on title

for (auto& i: records)
cout << i.name << " "<< i.address;


    inputFile.close();
return 0;
}