void option4() { string inSSN; string choice; string test; string inData; Person testUpdatePerson; PersonFile * pPersonFile = new PersonFile; Person * pPerson = new Person; VehicleFile * pVehicleFile = new VehicleFile; Vehicle * pVehicle = new Vehicle; State * pState = new State; County * pCounty = new County; VMake * pVMake = new VMake; Color * pColor = new Color; VType * pVType = new VType; while(true) { PrintHeading4(); getline(cin,inSSN); cin.sync(); if(inSSN[0] == 'q' || inSSN[0] == 'Q') break; *pPerson = pPersonFile->SearchBySSN(inSSN); //Ensuring that the Record does not alrady exist if(pPerson->IsFound() == true || pPerson->IsDeleted()) { cout << "\n\t\t\tRecord for SSN: " << SSNHyphens(inSSN) << " already exists." << endl; test = UserWait(); if(test[0] == 'q' || test[0] =='Q') break; continue; } //This Block only runs if the SSN was not found in the file //SetFound is run so the Person can be displayed as before they are written out pPerson->SetFound(true); pPerson->SetSSN(Trim(inSSN)); while(true) { cout << "\n\n\t\tEnter new OLN: "; getline(cin, inData); cin.sync(); testUpdatePerson = pPersonFile->SearchByOLN(inData); //IsDeleted is included because duplicate OLNs cause issues with SearchByOLN if(testUpdatePerson.IsFound() || testUpdatePerson.IsDeleted()) { cout << "\n\t\tOLN Already Exists in File. Choose Different OLN." << endl; UserWait(); system("clear"); continue; } break; } pPerson->SetOLN(Trim(inData)); cout << "\n\n\t\tEnter new Last Name : "; getline(cin, inData); cin.sync(); pPerson->SetLastName(Trim(inData)); cout << "\n\n\t\tEnter new First Name : "; getline(cin, inData); cin.sync(); pPerson->SetFirstName(Trim(inData)); cout << "\n\n\t\tEnter new Middle Initial: "; getline(cin, inData); cin.sync(); pPerson->SetMI(Trim(inData)); cout << "\n\n\t\tEnter new Street Address: "; getline(cin, inData); cin.sync(); pPerson->SetStreet(Trim(inData)); cout << "\n\n\t\tEnter new City : "; getline(cin, inData); cin.sync(); pPerson->SetCity(Trim(inData)); system("clear"); cout << "\n\t\tNow Displaying Codes for: State"; pState->DisplayStates(); cout << "\n\n\t\tEnter State Code : "; getline(cin, inData); cin.sync(); pPerson->SetStateCode(Trim(inData)); //Only prompts for County if State is Alabama if(pPerson->GetStateCode() != "02") { pPerson->SetCountyCode("00"); } else { system("clear"); cout << "\n\t\tNow Displaying Codes for: County"; pCounty->DisplayCounties(); cout << "\n\n\t\tEnter County Code : "; getline(cin, inData); cin.sync(); pPerson->SetCountyCode(Trim(inData)); } cout << "\n\n\t\tEnter new Zip Code : "; getline(cin, inData); cin.sync(); //Like SSN, the Set takes care of removing hyphens pPerson->SetZip(Trim(inData)); system("clear"); pPerson->DisplayPerson(); cout << "\n\t\tAdd Vehicle for this Record? (Y/N): " << flush; getline(cin, choice); cin.sync(); //Everything in this if block is Populating the Vehicle Record if(choice[0] == 'y' || choice[0] =='Y') { UserInputVehicle(*pPerson, *pVehicle); } system("clear"); pPerson->DisplayPerson(); pVehicle->DisplayVehicle(); cout << "\n\t\tCommit Record to File? (Y/N): " << flush; getline(cin, choice); cin.sync(); if(choice[0] != 'y' && choice[0] !='Y') { cout << "\n\t\tRecord not Committed to File. " << endl; test = UserWait(); if(test[0] == 'q' || test[0] =='Q') break; continue; } pPersonFile->AddPerson(*pPerson); pVehicleFile->AddVehicle(*pVehicle); cout << "\n\t\tRecord Committed to File." << endl; test = UserWait(); if(test[0] == 'q' || test[0] =='Q') break; } delete pPerson; delete pPersonFile; delete pVehicle; delete pVehicleFile; delete pState; delete pCounty; }