#include <iostream>
//#include <fstream>
#include <iomanip>
#include <string>
#include <climits>
using namespace std;
struct Person
{
string firstName;
string lastName;
string phoneNumber;
};
struct Address
{
string streetNum_Name;
string city;
string state;
int zip_code;
};
struct Info
{
Person person;
Address address;
};
void printFileHeader(ostream& outFile);
bool openInputFile(istream& inFile);
void openOutputFile(ostream& outFile);
bool readInfo(istream& inFile, Info&);
void printInfo(ostream& outFile, const Info&);
int main()
{
//ifstream inFile;
istream& inFile = cin;
//ofstream outFile;
ostream& outFile = cout;
bool fileStreamState;
Info person;
fileStreamState = openInputFile(inFile);
openOutputFile(outFile);
printFileHeader(outFile);
//cout << "Processing information. Please Wait...." << endl << endl;
while (readInfo(inFile, person)) {
printInfo(outFile, person);
}
outFile << setw(7) << "-----" << setw(20) << "---------" << setw(15) << "----------" << setw(20) << "----"
<< setw(12) << "------------" << endl;
cout << "Program has finished execution." << endl;
//inFile.close();
//outFile.close();
}
void printFileHeader(ostream& outFile) {
outFile << left << setw(7) << "Entry" << setw(20) << "Last Name" << setw(15) << "First Name" << setw(20) << "City"
<< setw(12) << "Phone Number" << endl;
outFile << setw(7) << "-----" << setw(20) << "---------" << setw(15) << "----------" << setw(20) << "----"
<< setw(12) << "------------" << endl;
}
bool openInputFile(istream& inFile) {
/*
string filename;
cout << "Enter the name of the input file: ";
cin >> filename;
cout << filename << endl << endl;
inFile.open(filename.c_str());
while(inFile.fail()) {
cout << string(15,'*') << " File Open Error " << string(15,'*') << endl;
cout << "==> Input file failed to open properly!!\n";
cout << "==> Attempted to open file: " << filename << endl;
cout << "==> Try Again\n";
cout << string(47,'*') << endl<< endl;
inFile.clear();
cout << "Enter in the name of the input file: ";
cin >> filename;
cout << filename << endl << endl;
inFile.open(filename.c_str());
}
*/
return 1;
}
void openOutputFile(ostream& outFile) {
/*
string filename;
cout << "Enter the name of the output file: ";
cin >> filename;
cout << filename << endl << endl;
outFile.open(filename.c_str());
while(outFile.fail()) {
cout << string(15,'*') << " File Open Error " << string(15,'*') << endl;
cout << "==> Output file failed to open properly!!\n";
cout << "==> Attempted to open file: " << filename << endl;
cout << "==> Try Again\n";
cout << string(47,'*') << endl<< endl;
outFile.clear();
cout << "Enter in the name of the input file: ";
cin >> filename;
cout << filename << endl << endl;
outFile.open(filename.c_str());
}
*/
}
bool readInfo(istream& inFile, Info& record) {
getline(inFile, record.person.phoneNumber);
//cout << record.person.phoneNumber << endl;
getline(inFile, record.person.lastName);
//cout << record.person.lastName << endl;
getline(inFile, record.address.streetNum_Name);
//cout << record.address.streetNum_Name << endl;
getline(inFile, record.address.city);
//cout << record.address.city << endl;
getline(inFile, record.address.state);
//cout << record.address.state << endl;
inFile >> record.address.zip_code;
inFile.ignore(INT_MAX, '\n');
//cout << record.address.zip_code << endl;
getline(inFile, record.person.firstName);
//cout << record.person.firstName << endl;
return !inFile.fail();
}
void printInfo(ostream& outFile, const Info& record) {
static int entry = 0;
entry++;
outFile << left << setw(7) << entry << setw(20) << record.person.lastName << setw(15) << record.person.firstName
<< setw(20) << record.address.city << setw(12) << record.person.phoneNumber << endl;
}