//Объявление переменной-счетчика
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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.