#include "CConsoleUI.h" void CConsoleUI::StartUsingUI(CBookItems& CPhoneBook) { LoadPhoneBook(CPhoneBook); bExit = false; _aUserCommandList.push_back("help"); _aUserCommandList.push_back("SHW_PHNBOOK"); _aUserCommandList.push_back("CNG_ITEM"); _aUserCommandList.push_back("SRT_ITEMS"); _aUserCommandList.push_back("FND_ITEM"); _aUserCommandList.push_back("CRT_ITEM"); _aUserCommandList.push_back("SAVE_ITEMS"); _aUserCommandList.push_back("EXIT"); _aUserCommandList.push_back("LOAD_ITEMS"); } void CConsoleUI::PrintPhoneBook(CBookItems& CPhoneBook) { if (CPhoneBook.GetSize() >= 1) { for (int i = 0; i < CPhoneBook.GetSize(); i++) cout << 1 + i << ". " << CPhoneBook.GetItem(i) << endl; } else { cout << "Ваша телефонная книга пуста" << endl; } } void CConsoleUI::ChangeSomeItem(CBookItems& CPhoneBook) { int nNumOfElement = 0; string sFName; string sLName; string sNum1; string sNum2; cout << "Введите номер элемента: "; cin >> nNumOfElement; cout << "Введите имя, фамилию и номера абонента:" << endl; cout << "Имя: "; cin >> sFName; cout << "Фамилия: "; cin >> sLName; 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 << "1. По Имени" << endl; cout << "2. По Фамилии" << endl; cout << "3. По Номеру1" << endl; cout << "4. По Номеру2" << endl; cin >> nSortingType; nSortingType--; int error = CPhoneBook.SortItems(nSortingType); if (error == 1) { cout << "Ошибка: команда введена неверно!" << endl; } } void CConsoleUI::FindItem(CBookItems& CPhoneBook) { string sValueNeed = ""; vector nNumOfDesirvedItems; int nSortingType = 0; cout << "Введите номера типа поиска:" << endl; cout << "1. По Имени" << endl; cout << "2. По Фамилии" << endl; cout << "3. По Номеру" << endl; cin >> nSortingType; cout << "Введите имя/фамилию/телефон абонента: "; cin >> sValueNeed; CPhoneBook.FindItem(sValueNeed, nSortingType, nNumOfDesirvedItems); for (int i = 0; i < nNumOfDesirvedItems.size(); i++) { cout << 1 + i << ". " << CPhoneBook.GetItem(nNumOfDesirvedItems.at(i)).to_string() << endl; } } void CConsoleUI::CreateNewItem(CBookItems& CPhoneBook) { string sFName; string sLName; string sNum1; string sNum2; cout << "Введите имя, фамилию и номера абонента:" << endl; cout << "Имя: "; cin >> sFName; cout << "Фамилия: "; cin >> sLName; cout << "Номер1: "; cin >> sNum1; cout << "Номер2: "; cin >> sNum2; CPhoneBook.CreateNewItem(sFName, sLName, sNum1, sNum2); } void CConsoleUI::Help() { cout << "Перечисленные ниже команды" << endl << "Помогают взаимодействовать пользователю со справочником: " << endl; cout << "EXIT- закрыть программу" << endl; cout << "SHW_PHNBOOK- показать справочник" << endl; cout << "CNG_ITEM- изменить данные абонента" << endl; cout << "SRT_ITEMS- сортировка абонентов" << endl; cout << "FND_ITEM- поиск абонентов" << endl; cout << "CRT_ITEM- создание нового аонента" << endl; cout << "SAVE_ITEMS- сохранение данных пользователей" << endl; cout << "LOAD_ITEMS- загрузка данных пользователей" << endl; } void CConsoleUI::MakeSomeAcion(CBookItems& CPhoneBook) { cout << "Введите комманду для взаимодействия с телефонным справочником" << endl << "(Введите 'help' для отображения команд): "; cin >> _sUserCommand; system("cls"); for (int i = 0; i < _aUserCommandList.size(); i++) { if (_sUserCommand == _aUserCommandList.at(i)) { switch (i) { case 0: Help(); break; case 1: PrintPhoneBook(CPhoneBook); break; case 2: ChangeSomeItem(CPhoneBook); PrintPhoneBook(CPhoneBook); break; case 3: SortItems(CPhoneBook); PrintPhoneBook(CPhoneBook); break; case 4: FindItem(CPhoneBook); break; case 5: CreateNewItem(CPhoneBook); PrintPhoneBook(CPhoneBook); break; case 6: SavePhoneBook(CPhoneBook); PrintPhoneBook(CPhoneBook); break; case 7: CloseProgramm(); break; case 8: LoadPhoneBook(CPhoneBook); PrintPhoneBook(CPhoneBook); break; default: cout << "Неверно введена команда" << endl; break; } } } } void CConsoleUI::SavePhoneBook(CBookItems& CPhoneBook) { if (CPhoneBook.SaveItems("myFile.txt") == 1) { cout << "Ошибка открытия файла" << endl; } else { cout << "Файл успешно открыт" << endl; } } void CConsoleUI::LoadPhoneBook(CBookItems& CPhoneBook) { if (CPhoneBook.LoadItems("myFile.txt") == 1) { cout << "Ошибка доступа к файлу" << endl; } else { cout << "Данные успешно загружены" << endl; } } void CConsoleUI::CloseProgramm() { bExit = true; } void CConsoleUI::SetConsoleUI(CBookItems& CPhoneBook) { StartUsingUI(CPhoneBook); setlocale(LC_ALL, "Rus"); while (!bExit) { MakeSomeAcion(CPhoneBook); } system("cls"); }