1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void menu();
void writeData();
void readData();
string * split(string, char);
const char FileName[] = "TestAddress.txt";
int main()
{
menu();
return 0;
} //end main
void menu()
{
char answer;
int i = 0, x = 0;
while (i == 0)
{
cout << "What would you like to do?\n";
cout << "Append Records (A), Display Records (D), or Quit (Q)\n";
cin >> answer;
answer = tolower(answer);
switch (answer)
{
case 'a': writeData(); break;
case 'd': readData(); break;
case 'q': return;
default: x = 1; break;
} //end switch
while (x != 0)
{
cout << "\n\nError: Append Records (A), Display Records (D), or Quit (Q):\t";
cin >> answer;
cout << "\n\n" << endl;
if ((answer == 'a') || (answer == 'd') || (answer == 'q'))
{
x = 1;
break;
}//end if
else
{
break;
}//end else
}//end second while
}//end first while
cout << "\nWhat would you like to do?\n";
cout << "Append Records (A), Display Records (D), or Quit (Q)\n";
cin >> answer;
}//end menu
void writeData()
{
char answer;
string name = " ";
string street = " ";
string city = " ";
string state = " ";
string zipCode = " ";
ofstream test("c:\\desktop\\TestAddress.txt", ios::app);
do
{
cin.ignore(); //need this or else it will skip name inpout
cout << "\nName: ";
getline(cin, name);
cout << "\nStreet: ";
getline(cin, street);
cout << "\nCity: ";
getline(cin, city);
cout << "\nState: ";
getline(cin, state);
cout << "\nZip code: ";
getline(cin, zipCode);
test << name << "," << street << "," << city << "," << state << "," << zipCode;
cout << "\nEnter another Record? (Y/N) ";
cin >> answer;
answer = tolower(answer);
} while (answer == 'y');
test.close();
return;
}//end write data
void readData()
{
ofstream test;
test.open("c://desktop//TestAddress.txt");
if (test.is_open());
ifstream inMyStream(FileName, ios::in);
string firstline;
inMyStream >> firstline;
while (!inMyStream.eof())
{
getline(inMyStream, firstline, '\n');
cout << endl;
int i = 0;
string *Field = split(firstline, ',');
cin.ignore();
cout << "Name:\t " << Field[i] << endl;
i++;
cout << "Street:\t" << Field[i] << endl;
i++;
cout << "City:\t" << Field[i] << endl;
i++;
cout << "State:\t" << Field[i] << endl;
i++;
cout << "Zip:\t" << Field[i] << endl;
i++;
}
}//end read data
string * split(string theLine, char theDeliminator)
{
int splitCount = 0;
for (int i = 0; i < theLine.size(); i++){
if (theLine[i] == theDeliminator)
splitCount++;
}
splitCount++;
//create an array to hold the fields
string* FieldArray;
FieldArray = new string[splitCount];
//split the string into seperate fields
string Field = "";
int commaCount = 0;
for (int i = 0; i < theLine.size(); i++)
{ //read each character and look for the deliminator
if (theLine[i] != theDeliminator)
{
Field += theLine[i]; //build the field
}
else
{ //the deliminator was hit so save to the field to the array
FieldArray[commaCount] = Field; //save the field to the array
Field = "";
commaCount++;
}
}
FieldArray[commaCount] = Field; //the last field is not marked with a comma...
return FieldArray;
} //end split
|