You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

136 lines
4.1 KiB

/**
* Êëàññ "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);
};