Демонстрирация реализации наследования на при построении архитектуры приложения на заданную тему, страница 2

//добавление товара в список

this->list[current] = tv;

this->current++;

}

//сохранение списка товаров в файл

void CTovarList::SaveListToFile()

{

FILE *Fz;//переменная для работы с файлами

//открыли файл для добавления записей

Fz = fopen("Tovar.txt","a+");

int msize = sizeof(CTovar);

//запись списка товаров в файл

for(int i = 0; i < this->current; i++)

fwrite(&(this->list[i]), msize, 1, Fz);

fclose(Fz);

printf("Data is write to file!!!");

}

//загрузка списка товаров из файла в список

void CTovarList::LoadListFromFile()

{

FILE *Fz;//переменная для работы с файлами

//открыли файл для чтения записей

if ((Fz = fopen("Tovar.txt","rb")) == NULL )

printf("File open error!!!");

else

{

int msize = sizeof(CTovar);

this->current = 0;

//чтение списка товаров из файла

while(1)

{

if( ! fread(&(this->list[current++]), msize, 1, Fz) )

break;

}

current--;

fclose(Fz);

printf("Data is read from file!!!");

if (current > 0)

this->OutList();

}

}

//вывод списка товаров на экран монитора

void CTovarList::OutList()

{

if ( current > 0 )

for(int i = 0; i < this->current; i++)

printf("\n%3i %20s , %6.3f", list[i].getNumber(), list[i].getTovarName(),  list[i].getCost() );

else

printf("List is empty!");

}

//вернуть значение количества товаров в списке

int CTovarList::getCount()

{

return current;

}

Файл «Zakaz.h»

/////////////////////////////

///class CZakaz 

/////////////////////////////

class CZakaz : public CTovar, public CClient 

{

public:

CZakaz();

virtual ~CZakaz();//деструктор

//инициализация свойств объекта  вводом с клавиатуры

//и переданными значениями

void InitZakazData(CTovar tov);

//перегрузка оператора присваивания

CZakaz &operator = (const CZakaz &);

};

/////////////////////////////

///class CZakazList 

/////////////////////////////

class CZakazList

{

CZakaz * list;

int current;

public:

CZakazList();//конструктор по умолчанию

//конструктор с параметрами

CZakazList(int count);

virtual ~CZakazList();//деструктор

//добавить заказ в список

void AddZakaz(CTovar tov);

//дружественная функция для вывода списка заказов на экран монитора

void OutZakazList();

};

Файл «Zakaz.cpp»

// Zakaz.cpp: implementation of the CZakaz class.

//

//////////////////////////////////////////////////////////////////////

#include "Zakaz.h"

/////////////////////////////

///class CZakaz 

/////////////////////////////

CZakaz::CZakaz()

{

}

CZakaz::~CZakaz()

{

}

//инициализация свойств объекта вводом с клавиатуры

//и переданными значениями

void CZakaz::InitZakazData(CTovar tov)

{

strcpy(tovar_name, tov.getTovarName());

cost   = tov.getCost();

number = tov.getNumber();

this->InitClientData();

}

//перегрузка оператора присваивания

CZakaz &CZakaz::operator = (const CZakaz & zak)           

{

if( this != &zak) // проверка, не копирование ли объекта в себя

{

//копируем значения полей

strcpy(tovar_name,  zak.tovar_name);

cost              = zak.cost;

number            = zak.number;

strcpy(client_name, zak.client_name);

is_in_black_list  = zak.is_in_black_list;

}

return *this;

}

/////////////////////////////