diff --git a/phoebook/CBookItems.cpp b/phoebook/CBookItems.cpp index cc4a15f..039dcb4 100644 --- a/phoebook/CBookItems.cpp +++ b/phoebook/CBookItems.cpp @@ -1,19 +1,30 @@ #include "CBookItems.h" -void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber) +void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1) +{ + CreateNewItem(sFirstName, sLastName, sPhoneNumber1, ""); +} + +void CBookItems::CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2) { _BookItem* spaceItem = new _BookItem; spaceItem->_sFirstName = sFirstName; spaceItem->_sLastName = sLastName; - spaceItem->_sPhoneNumber = sPhoneNumber; + spaceItem->_sPhoneNumber1 = sPhoneNumber1; + spaceItem->_sPhoneNumber2 = sPhoneNumber2; _aItems.push_back(*spaceItem); //delete spaceItem; } -int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber, int nNumOfItem) +int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber1, int nNumOfItem) +{ + SetNewValueToItem(sFirstName, sLastName, sPhoneNumber1, "", nNumOfItem); +} + +int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2, int nNumOfItem) { nNumOfItem--; if (!(nNumOfItem > _aItems.size())) @@ -25,7 +36,8 @@ int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sP _BookItem spaceItem; spaceItem._sFirstName = sFirstName; spaceItem._sLastName = sLastName; - spaceItem._sPhoneNumber = sPhoneNumber; + spaceItem._sPhoneNumber1 = sPhoneNumber1; + spaceItem._sPhoneNumber2 = sPhoneNumber2; _aItems.at(nNumOfItem) = spaceItem; return 0; @@ -38,13 +50,20 @@ int CBookItems::SetNewValueToItem(string sFirstName, string sLastName, string sP } } -int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber) +int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1) +{ + string sPhoneNumber2; + GetItem(nNumOfItem, sFirstName, sLastName, sPhoneNumber1, sPhoneNumber2); +} + +int CBookItems::GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1, string& sPhoneNumber2) { if (!(nNumOfItem > _aItems.size())) { sFirstName = _aItems.at(nNumOfItem)._sFirstName; sLastName = _aItems.at(nNumOfItem)._sLastName; - sPhoneNumber = _aItems.at(nNumOfItem)._sPhoneNumber; + sPhoneNumber1 = _aItems.at(nNumOfItem)._sPhoneNumber1; + sPhoneNumber2 = _aItems.at(nNumOfItem)._sPhoneNumber2; return 0; } else @@ -71,19 +90,23 @@ int CBookItems::SortItems(int nSortingType) { string sFirstName = ""; string sLastName = ""; - string sPhoneNumber = ""; + string sPhoneNumber1 = ""; + string sPhoneNumber2 = ""; sFirstName = _aItems.at(i)._sFirstName; sLastName = _aItems.at(i)._sLastName; - sPhoneNumber = _aItems.at(i)._sPhoneNumber; + sPhoneNumber1 = _aItems.at(i)._sPhoneNumber1; + sPhoneNumber2 = _aItems.at(i)._sPhoneNumber2; _aItems.at(i)._sFirstName = _aItems.at(j)._sFirstName; _aItems.at(i)._sLastName = _aItems.at(j)._sLastName; - _aItems.at(i)._sPhoneNumber = _aItems.at(j)._sPhoneNumber; + _aItems.at(i)._sPhoneNumber1 = _aItems.at(j)._sPhoneNumber1; + _aItems.at(i)._sPhoneNumber2 = _aItems.at(j)._sPhoneNumber2; _aItems.at(j)._sFirstName = sFirstName; _aItems.at(j)._sLastName = sLastName; - _aItems.at(j)._sPhoneNumber = sPhoneNumber; + _aItems.at(j)._sPhoneNumber1 = sPhoneNumber1; + _aItems.at(j)._sPhoneNumber2 = sPhoneNumber2; } } } @@ -100,19 +123,23 @@ int CBookItems::SortItems(int nSortingType) { string sFirstName = ""; string sLastName = ""; - string sPhoneNumber = ""; + string sPhoneNumber1 = ""; + string sPhoneNumber2 = ""; sFirstName = _aItems.at(i)._sFirstName; sLastName = _aItems.at(i)._sLastName; - sPhoneNumber = _aItems.at(i)._sPhoneNumber; + sPhoneNumber1 = _aItems.at(i)._sPhoneNumber1; + sPhoneNumber2 = _aItems.at(i)._sPhoneNumber2; _aItems.at(i)._sFirstName = _aItems.at(j)._sFirstName; _aItems.at(i)._sLastName = _aItems.at(j)._sLastName; - _aItems.at(i)._sPhoneNumber = _aItems.at(j)._sPhoneNumber; + _aItems.at(i)._sPhoneNumber1 = _aItems.at(j)._sPhoneNumber1; + _aItems.at(i)._sPhoneNumber2 = _aItems.at(j)._sPhoneNumber2; _aItems.at(j)._sFirstName = sFirstName; _aItems.at(j)._sLastName = sLastName; - _aItems.at(j)._sPhoneNumber = sPhoneNumber; + _aItems.at(j)._sPhoneNumber1 = sPhoneNumber1; + _aItems.at(j)._sPhoneNumber2 = sPhoneNumber2; } } } @@ -178,20 +205,16 @@ int CBookItems::FindItem(string sDesiredValue, int nSortingType, vector& nN { for (int i = 0; i < _aItems.size(); i++) { - for (int j = 0; j < sDesiredValue.size() & j < _aItems.at(i)._sPhoneNumber.size(); j++) - { - if (sDesiredValue[j] == _aItems.at(i)._sPhoneNumber[j]) - { - bCheckRightValue = true; - } - else - { - bCheckRightValue = false; - } - } + string key, phone1, phone2; + key = sDesiredValue; + phone1 = _aItems.at(i)._sPhoneNumber1; + phone2 = _aItems.at(i)._sPhoneNumber2; - if (bCheckRightValue == true) - { + if (phone1 != "" && key.find(phone1) != std::string::npos + || phone2 != "" && key.find(phone2) != std::string::npos + || phone1 != "" && phone1.find(key) != std::string::npos + || phone2 != "" && phone2.find(key) != std::string::npos + ) { nNumOfDesirvedItems.push_back(i); } } @@ -218,7 +241,8 @@ int CBookItems::SaveItems(string sNameOfFile) { for (int i = 0; i < _aItems.size(); i++) { - fSave << _aItems.at(i)._sFirstName << " " << _aItems.at(i)._sLastName << " " << _aItems.at(i)._sPhoneNumber << " " << endl; + fSave << _aItems.at(i)._sFirstName << " " << _aItems.at(i)._sLastName << " " + << _aItems.at(i)._sPhoneNumber1 << " " << _aItems.at(i)._sPhoneNumber2 << " " << endl; } fSave.close(); return 0; @@ -238,7 +262,7 @@ int CBookItems::LoadItems(string sNameOfFile) } else { - string sFirstName = "", sLastName = "", sPhoneNum = ""; + string sFirstName = "", sLastName = "", sPhoneNum1 = "", sPhoneNum2 = ""; string sItemData = ""; while (getline(fLoad, sItemData)) { @@ -255,16 +279,21 @@ int CBookItems::LoadItems(string sNameOfFile) sLastName += sItemData[j]; j++, k++; } - k = 0; j++; - while (j < sItemData.size()) + while (j < sItemData.size() && sItemData[j] != '\r' && sItemData[j] != ' ') { - sPhoneNum += sItemData[j]; + sPhoneNum1 += sItemData[j]; + j++; + } + j++; + while (j < sItemData.size() && sItemData[j] != '\r' && sItemData[j] != ' ') + { + sPhoneNum2 += sItemData[j]; j++, k++; } - CreateNewItem(sFirstName, sLastName, sPhoneNum); - sFirstName = "", sLastName = "", sPhoneNum = "", sItemData = ""; + CreateNewItem(sFirstName, sLastName, sPhoneNum1, sPhoneNum2); + sFirstName = "", sLastName = "", sPhoneNum1 = "", sPhoneNum2 = "", sItemData = ""; } fLoad.close(); return 0; diff --git a/phoebook/CBookItems.h b/phoebook/CBookItems.h index 1874e8d..b283072 100644 --- a/phoebook/CBookItems.h +++ b/phoebook/CBookItems.h @@ -24,7 +24,8 @@ private: { string _sFirstName; string _sLastName; - string _sPhoneNumber; + string _sPhoneNumber1; + string _sPhoneNumber2; }; vector<_BookItem> _aItems; @@ -35,19 +36,37 @@ public: /** *Создаёт элемент телефонного справочника и задаёт его значение */ - void CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber); + void CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1); + + //=============================================================================== + /** + *Создаёт элемент телефонного справочника и задаёт его значение (2 телефона) + */ + void CreateNewItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2); //=============================================================================== /** *Меняет значение заданного элемента телефонного справочника */ - int SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber, int nNumOfItem); + int SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber1, int nNumOfItem); + + //=============================================================================== + /** + *Меняет значение заданного элемента телефонного справочника (2 телефона) + */ + int SetNewValueToItem(string sFirstName, string sLastName, string sPhoneNumber1, string sPhoneNumber2, int nNumOfItem); //=============================================================================== /** *Возвращает данные элемента телефонного справочника */ - int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber); + int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1); + + //=============================================================================== + /** + *Возвращает данные элемента телефонного справочника (2 телефона) + */ + int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1, string& sPhoneNumber2); //=============================================================================== /** diff --git a/phoebook/CConsoleUI.cpp b/phoebook/CConsoleUI.cpp index e9b90f8..c4b6d73 100644 --- a/phoebook/CConsoleUI.cpp +++ b/phoebook/CConsoleUI.cpp @@ -24,10 +24,11 @@ void CConsoleUI::PrintPhoneBook(CBookItems& CPhoneBook) { string sFName = " "; string sLName = " "; - string sNum = " "; + string sNum1 = " "; + string sNum2 = " "; - CPhoneBook.GetItem(i, sFName, sLName, sNum); - cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum << endl; + CPhoneBook.GetItem(i, sFName, sLName, sNum1, sNum2); + cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum1 << ", " << sNum2 << endl; } } else @@ -42,27 +43,31 @@ void CConsoleUI::ChangeSomeItem(CBookItems& CPhoneBook) int nNumOfElement = 0; string sFName; string sLName; - string sNum; + string sNum1; + string sNum2; cout << "Введите номер элемента: "; cin >> nNumOfElement; - cout << "Введите имя, фамилию и номер абонента:" << endl; + cout << "Введите имя, фамилию и номера абонента:" << endl; cout << "Имя: "; cin >> sFName; cout << "Фамилия: "; cin >> sLName; - cout << "Номер: "; - cin >> sNum; - CPhoneBook.SetNewValueToItem(sFName, sLName, sNum, nNumOfElement); + cout << "Номер1: "; + cin >> sNum1; + cout << "Номер2: "; + cin >> sNum2; + CPhoneBook.SetNewValueToItem(sFName, sLName, sNum1, sNum2, nNumOfElement); } void CConsoleUI::SortItems(CBookItems& CPhoneBook) { int nSortingType = 0; - cout << "Введите номер типа сортировки:" << endl; + cout << "Введите номера типа сортировки:" << endl; cout << "1. По Имени" << endl; cout << "2. По Фамилии" << endl; - cout << "3. По Номеру" << endl; + cout << "3. По Номеру1" << endl; + cout << "4. По Номеру2" << endl; cin >> nSortingType; nSortingType--; int error = CPhoneBook.SortItems(nSortingType); @@ -77,7 +82,7 @@ void CConsoleUI::FindItem(CBookItems& CPhoneBook) string sValueNeed = ""; vector nNumOfDesirvedItems; int nSortingType = 0; - cout << "Введите номер типа поиска:" << endl; + cout << "Введите номера типа поиска:" << endl; cout << "1. По Имени" << endl; cout << "2. По Фамилии" << endl; cout << "3. По Номеру" << endl; @@ -91,10 +96,11 @@ void CConsoleUI::FindItem(CBookItems& CPhoneBook) { string sFName = " "; string sLName = " "; - string sNum = " "; + string sNum1 = " "; + string sNum2 = " "; - CPhoneBook.GetItem(nNumOfDesirvedItems.at(i), sFName, sLName, sNum); - cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum << endl; + CPhoneBook.GetItem(nNumOfDesirvedItems.at(i), sFName, sLName, sNum1, sNum2); + cout << 1 + i << ". " << sFName << " " << sLName << ": " << sNum1 << ", " << sNum2 << endl; } } @@ -102,17 +108,20 @@ void CConsoleUI::CreateNewItem(CBookItems& CPhoneBook) { string sFName; string sLName; - string sNum; + string sNum1; + string sNum2; - cout << "Введите имя, фамилию и номер абонента:" << endl; + cout << "Введите имя, фамилию и номера абонента:" << endl; cout << "Имя: "; cin >> sFName; cout << "Фамилия: "; cin >> sLName; - cout << "Номер: "; - cin >> sNum; + cout << "Номер1: "; + cin >> sNum1; + cout << "Номер2: "; + cin >> sNum2; - CPhoneBook.CreateNewItem(sFName, sLName, sNum); + CPhoneBook.CreateNewItem(sFName, sLName, sNum1, sNum2); } void CConsoleUI::Help() diff --git a/phoebook/myFile.txt b/phoebook/myFile.txt index 7443720..a810d1d 100644 --- a/phoebook/myFile.txt +++ b/phoebook/myFile.txt @@ -1,3 +1,4 @@ Anton Pavkin +79374237500 Anton Pavkin +79374237500 -Luap Pupa pupazalupu +Vasya Pupkin +79628393472 +79328937344 +Oleg Kuvaev +79052983329 +7962923822