136 lines
4.1 KiB
C++
136 lines
4.1 KiB
C++
/**
|
||
* Класс "CBookItems" представляет собой сущность телефонного справочника
|
||
* Он хранит в себе все номера, имена и фамилии абонентов, занесённых в справочник
|
||
* Может менять и возвращать данные отдельного абонента, занесённого в справочник
|
||
* Может сортировать абонентов по фамилии или по имени
|
||
* Может производить поиск абонентов по фамилии, имени и номеру
|
||
* Может сохранять данные абонентов телефонного справочника в файл
|
||
* Может загружать данные абонентов телефонного справочника из файла
|
||
*/
|
||
|
||
#pragma once
|
||
#include <iostream>
|
||
#include <string>
|
||
#include <vector>
|
||
#include <fstream>
|
||
|
||
using namespace std;
|
||
|
||
|
||
class CBookItems
|
||
{
|
||
public:
|
||
template<class T>
|
||
class BaseBookItem
|
||
{
|
||
protected:
|
||
T _sFirstName;
|
||
T _sLastName;
|
||
T _sPhoneNumber1;
|
||
T _sPhoneNumber2;
|
||
public:
|
||
BaseBookItem()
|
||
{
|
||
}
|
||
virtual ~BaseBookItem()
|
||
{
|
||
}
|
||
virtual const string to_string() const = 0;
|
||
};
|
||
|
||
class BookItem : BaseBookItem<string>
|
||
{
|
||
public:
|
||
BookItem()
|
||
{
|
||
}
|
||
virtual ~BookItem()
|
||
{
|
||
}
|
||
//===============================================================================
|
||
/**
|
||
*Переопределяет операторы вывода/вывода
|
||
*/
|
||
friend std::ostream& operator<<(std::ostream& s, const BookItem& item);
|
||
friend std::istream& operator>>(std::istream& s, BookItem& item);
|
||
|
||
friend CBookItems;
|
||
const string to_string() const;
|
||
};
|
||
|
||
vector<BookItem> _aItems;
|
||
|
||
public:
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Создаёт элемент телефонного справочника и задаёт его значение
|
||
*/
|
||
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 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& sPhoneNumber1);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Возвращает данные элемента телефонного справочника (2 телефона)
|
||
*/
|
||
int GetItem(int nNumOfItem, string& sFirstName, string& sLastName, string& sPhoneNumber1, string& sPhoneNumber2);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Возвращает элемент телефонного справочника
|
||
*/
|
||
const BookItem& GetItem(int nNumOfItem);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Возвращает количество элементов в телефонном справочнике
|
||
*/
|
||
int GetSize();
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Сортирует абонентов в справочнике по именам или фамилии
|
||
*/
|
||
int SortItems(int nSortingType);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Ищет абонентов по имени, фамилии или по номеру телефона
|
||
*/
|
||
int FindItem(string sDesiredValue, int nSortingType, vector<int>& nNumOfDesirvedItems);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Сохраняет данные абонентов телефонной книги
|
||
*/
|
||
int SaveItems(string sNameOfFile);
|
||
|
||
//===============================================================================
|
||
/**
|
||
*Загружает данные абонентов телефонной книги
|
||
*/
|
||
int LoadItems(string sNameOfFile);
|
||
}; |