ONKurs/phoebook/CBookItems.h

136 lines
4.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Класс "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);
};