// tyler taormina // cst 116 // lab 7 // number 1 #include #include #include #include #include #include using namespace std; const int MAX = 10; void RmString(string arr[], int); void ClearBuffer(); void DisplayMenu(int&); void ProcessMenuChoice (int&, int&, int&, std::string first[MAX], std::string last[MAX], std::string phone[MAX], std::string bday[MAX]); void AddPerson(int, string first[MAX], string last[MAX], string phone[MAX], string bday[MAX]); void PrintData(int, string first[MAX], string last[MAX], string phone[MAX], string bday[MAX]); void FindString (string first[], string last[], string phone[], string bday[], int); int ReadData (ifstream & inFile, std::string first[MAX], std::string last[MAX], std::string phone[MAX], std::string bday[MAX]); void OutData(ofstream & outFile, string first[], string last[], string phone[], string bday[], int record_counter ); int main() { std::string f_name[MAX]; std::string l_name[MAX]; std::string phone[MAX]; std::string bday[MAX]; int record_counter = 0; int menu_choice; int flag = 1; ifstream inFile; //open file and read data inFile.open ( "data.txt"); if ( inFile.is_open ( ) ) { record_counter = ReadData (inFile, f_name, l_name, phone, bday); inFile.close ( ); } else { cout << "Trouble Opening File: inFile"; cout << "\n\n\t\t ** About to EXIT NOW! ** "; } //User interacts with program here. while (flag != 0) { DisplayMenu(menu_choice); ProcessMenuChoice(menu_choice, flag, record_counter, f_name, l_name, phone, bday); } //Writes changes to the data.txt file ofstream outFile ( "data.txt" ); if ( outFile.is_open ( ) ) { OutData(outFile, f_name, l_name, phone, bday, record_counter); outFile.close ( ); } else { cout << "Trouble Opening File: outFile"; cout << "\n\n\t\t ** About to EXIT NOW! ** "; } return 0; } int ReadData ( ifstream & inFile, string first[MAX], string last[MAX], string phone[MAX], string bday[MAX]) { int counter = 0; inFile >> first[counter] >> last[counter] >> phone[counter] >> bday[counter]; // Priming Read while ( !inFile.eof ( ) ) { counter++; inFile >> first[counter] >> last[counter] >> phone[counter] >> bday[counter]; } return counter; } /* void FindString(string first[], int limit) */ /* { */ /* // Check for a substring inside of one of the input strings. */ /* // Prints whether or not the string was found. If found */ /* // prints the index of the list where the string was found */ /* // and what the string was that contained the substring. */ /* string sub; */ /* int i, j; */ /* int reset = 0; */ /* ClearBuffer(); */ /* cout << "Lets look for a substring..." << endl; */ /* cout << "Please enter a substring to look for: \n" << endl; */ /* getline(cin, sub); */ /* for (i = 0; i < limit; i++) { */ /* if (arr[i].size() < sub.size()) */ /* i = limit; */ /* for (j = 0; j < arr[i].size(); j++) { */ /* int k = 0; */ /* if (arr[i][j] == sub[k]) { */ /* reset = j; */ /* while (arr[i][j] == sub[k] && k < sub.size()) { */ /* j++; */ /* k++; */ /* } */ /* if (k == sub.size()){ */ /* cout << "We found it at index: " << i+1 << endl; */ /* cout << "The string was: " << arr[i] << endl; */ /* } */ /* else */ /* j = reset; */ /* } */ /* } */ /* } */ /* } */ void PrintData(int record_counter, string first[MAX], string last[MAX], string phone[MAX], string bday[MAX]) { //Displays all strings stored. int i = 0; cout << "==================================================================\n"; cout << "This is what we have in our database so far..." << endl; cout << "==================================================================\n"; while (i < record_counter) { cout << i+1 << ") " << first[i] << " " << last[i] << " " << phone[i] << " " << bday[i] << endl; i += 1; } } void AddPerson(int record_counter, string first[MAX], string last[MAX], string phone[MAX], string bday[MAX]) { std::string temp; cout << "Enter the first name of the person you'd like to add: " << endl; cin >> temp; first[record_counter] = temp; cout << "Enter the last name of the person you'd like to add: " << endl; cin >> temp; last[record_counter] = temp; cout << "Enter the phone number of the person you'd like to add: " << endl; cin >> temp; phone[record_counter] = temp; cout << "Enter the birthday of the person you'd like to add: " << endl; cin >> temp; bday[record_counter] = temp; } /* void RmString(string arr[], int limit) */ /* { */ /* // Finds string within array and removes the element. */ /* // May need to use vector. */ /* int i = 0, j = 0, k = 0; */ /* int choice; */ /* string deleted; */ /* string copy[max]; */ /* cout << "What data entry would you like to delete..." << endl; */ /* PrintString(limit, arr); */ /* cout << "Please enter the number for the string that you'd like to delte: " << endl; */ /* cin >> choice; */ /* choice -= 1; */ /* cout << "Working...\n\n" << endl; */ /* for (j = 0 ; j < limit + 1; j++) */ /* { */ /* if (k == choice) { */ /* cout << "Deleting...\n\n" << endl; */ /* deleted = arr[k]; */ /* k++; */ /* j--; */ /* } */ /* else { */ /* copy[j] = arr[k]; */ /* k++; */ /* } */ /* } */ /* cout << "==================================================================\n"; */ /* cout << "Here is our updated database..." << endl; */ /* cout << "==================================================================\n"; */ /* while (i < (limit - 1)) */ /* { */ /* cout << i+1 << ") " << copy[i] << endl; */ /* i++; */ /* } */ /* cout << "We removed: " << deleted << endl; */ /* } */ void DisplayMenu(int& menu_choice) { //Displays the menu of functions for the user to choose from. menu_choice = 0; cout << "==================================================================\n"; cout << " MENU" << endl; cout << "==================================================================\n"; cout << "1) Find a person's information.\n"; cout << "2) Add a new person to the database.\n"; cout << "3) Edit information for a certain individual.\n"; cout << "4) Display full database.\n"; cout << "5) Exit Program.\n\n"; cout << "Enter: "; cin >> menu_choice; if (menu_choice > 5 || menu_choice < 1) { cout << "Invalid Entry. Please enter a number from the options list provided.\n\n\n\n" << endl; DisplayMenu(menu_choice); } } void ProcessMenuChoice (int& menu_choice, int& flag, int& record_counter, std::string first[MAX], std::string last[MAX], std::string phone[MAX], std::string bday[MAX]) { //Takes in user input for menu choice and calls the appropriate function. ClearBuffer(); flag = 0; switch(menu_choice) { case 1: // FindString(FNAME, LNAME, PHONE, BDAY, limit); break; case 2: record_counter++; AddPerson(record_counter, first, last, phone, bday); break; case 3: //Edit information for a certain person break; case 4: PrintData(record_counter, first, last, phone, bday); break; case 5: cout << "Ending program." << endl; cout << "Are you sure you want to quit?" << endl; break; default: break; } cout << "Press 0 to close the program.\n" << endl; cout << "Press any other number to continue the program.\n" << endl; cin >> flag; } void OutData(ofstream & outFile, string first[], string last[], string phone[], string bday[], int record_counter ) { int i; cout << "Writing Changes..." << endl; for (i = 0; i < record_counter; i++) { outFile << first[i] << " " << last[i] << " " << phone[i] << " " << bday[i] << endl; } } void ClearBuffer() { // clears buffer after menu choice so as not to interfere with the following user inputs. char c; do { c = getchar(); } while (c != '\n' && c != EOF); }