Описание программного комплекса. Модуль Description. Вид исходных файлов с данными, страница 7

//Объявление переменной-счетчика

static int count;

public:

//Конструктор

variety ( );

//Деструктор

~variety ( );

//Функция открытия CSV файла и копирования данных файла в массив указателей

void openFile ( char* );

//Функция сохранения данных массива в CSV-файле

void saveFile ( char* );

//Функция удаления элемента массива по его порядковому номеру

void deleteItemId ( int );

//Функция добавления нового элемента в конец массива

void addItem ( );

//Функция отображения данных массива

void showAll ( );

//Функция сортировки данных массива

void sortMas ( );

//Функция поиска элемента в массиве

void findItem ( char* );

//Функция отображения групповых результатов

void groupResult ( );

};

//Инициализация счетчика нулем

int variety::count = 0;

//Инициализация конструктора

variety::variety ( ){

//Для всех элементов массива

for ( int i = 0; i < NUMBER; i++)

//Выполнить инициализацию указателя нулем

vector [ i ] = NULL;

}

//Инициализация функции открытия CSV-файла

void variety::openFile ( char* fileName ){

//Объявления необходимых переменных

char str [ 50 ], temp [ 50 ];

int type = -1;

//Инициализация переменной входящего файлового потока

ifstream file ( fileName );

//Инициализация переменной, хранящей номер текущего элемента

int id = 0;

//Пока не достигнут конец файла

while ( !file.eof ( ) ){

//Читеам из файла строку

file.getline ( str, sizeof ( str ) );

//Инициализируем вспомогательный массив символов

for ( int i = 0; i < 50; i++) temp [ i ] = 0;

//Копируем всю строку, кроме административного уровня города, в массив temp

memcpy ( temp, str, strlen ( str ) - 2 );

//"Переворачиваем" строку, считанную из файла

strrev ( str );

//Удаляем символ конца строки

str [ 1 ] = 0;

//Считываем число, соотв. административному уровню города

type = atoi ( str );

//В соответствии с административным уровнем заносим элемент в массив, путем вызов одного из конструкторов

switch(type){

case ( 1 ):

vector [ id++ ] = new Capital ( temp );

break;

case ( 2 ):

vector [ id++ ] = new Region( temp );

break;

case ( 3 ):

vector [ id++ ] = new District ( temp );

break;

case ( 4 ):

vector [ id++ ] = new Village ( temp );

}

//Увеличиваем счетчик элементов массива

count++;

}

//Закрытие файлового потока

file.close ( );

//Вывод сообщения об успешном копировании данных файла в массив

system( "cls" );

cout << "information successfully load" <<  endl;

system( "pause" );

}

//Инициализация функции сохранения данных в CSV-файл

void variety::saveFile ( char* fileName ){

//Инициализация переменной исходящего файлового потока

ofstream file ( fileName );

//Инициализация переменной, хранящей номер текущего элемента

int id = 0;

//Пока существует элемент с индексом id

while ( vector [ id ] ){

//Передача в файловый поток вывода

file << vector [ id ] -> getPopulation ( ) << ";" << vector [ id ] -> getName ( ) << ";" << vector [ id ] -> getAttraction ( ) << ";" << vector [ id ] -> getIntLevel ( );

//Если есть еще элемент в массиве, то добавляем символ конца строки в файл

if ( vector [ id++ + 1 ] ) file << endl;

}

//Закрытие файлового потока

file.close ( );

//Вывод сообщения об успешном сохарнении данных массива в файл

system( "cls" );

cout << "Informations successfully save" <<  endl;

system( "pause" );

}

//Функция вывода всех элементов массива

void variety::showAll ( ){

//Функция вывода "шапки" таблицы

void showHeadTable ( );

//Функция вывода "закрытия" таблицы

void showEndTable ( );

//Функция вывода разделителя в таблице

void showSeparator ( );

//Объявление и инициализация вспомогательной переменной

int i = 0;