Разработка программы учета пассажиров в поездах, страница 4

Далее проверяется, создан ли этот поток корректно.

if(!strm)

{

std :: cout << "Error while reading from file '" << path << "' !\n" ;

return 0;

}

Одна из причин ошибки при создании потока – неверный путь.

Далее при помощи итератора мы перебираем записи из базы и при помощи оператора вывода в поток << выводим все поля в текстовом представлении.

После записи всех записей в поток мы закрываем поток, чтобы сохранить изменения в файле.

strm.close();

Функция load_base выполняет загрузку базы из файла.

Функции передается константный указатель на массив символов, который указывает путь к файлу.

Вначале создается входной поток данных по указаному пути.

std :: ifstream strm(path);

После проверяется корректность созданного потока. Опять же, ошибка создания часто возникает из-за неправильно указанного пути к файлу.

Далее при помощи стандартной функции контеера clear производится его очистка. После начинается непосредственное чтение данных из потока при помощи стандартного оператора ввода из потока >>.  Чтение производится в бесконечном цикле, выход из которого производится при достижении конца файла – на каждой итерации проводится проверка на достижение конца файла:

if(strm.eof())

break;

После прочтения параметров в каждой итерации создается объект типа “пассажир” и производится добавление его в базу путем вызова функции add_record, описанной выше.

После  добавления всех элементов поток закрывается при помощи функции стандартной функции close.

Третий класс - «Interface» - представляет собой реализацию простого интерфейса для консольного приложения. Его основной задачей является вывод   информации о базе и обеспечение взаимодействия программы и пользователя.

В конструктор этого класса передается указатель на класс Manager, чтобы связать наш интерфейс с базой данных. Основной поток выполняется в функции run, которая выполняет чтение поступающих от пользователя команд и вызов соответствующих функций. Структура функции состоит из цикла, в котором читается ввод из стандартного потока ввода std :: cin. Далее при помощи конструкции switch-case осуществляется вызов соответствующей подфункции для обработки нажатой клавиши.

while(answ != 0)

{

std ::cin.clear();

std :: cin >> answ;

switch(answ)

{

case 1:{...}

...      

case n: {... }

}

}

Далее в каждой вызванной функции производится выполнение соответствующих функции для данного пункта меню.        

После ввода соответствующей клавиши – "0" – осуществялется выход из программы.

3.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.

3.1 Описание работы меню.

Меню состоит из пунктов:

1.Создание таблицы.

2.Добавление.

3.Удаление.

4.Сортировка.

5.Вывод.

6.Выход из программы.

При активации первого пункта происходит вызов функции, отвечающей за создание таблицы, пользователь может по своему желанию сформировать таблицу с нужными для него данными.

При выборе второго пункта пользователь имеет возможность в созданную, либо ранее загруженную таблицу добавить новую запись.

При выборе третьего пункта пользователь имеет возможность из созданной, либо ранее загруженной таблицы удалить  запись.

После выбора четвертого пункта производится сортировка данных, по полю.

Для того чтобы просмотреть данные необходимо выбрать пятый пункт меню.

Выход из программы происходит по выбору шестого пункта меню. Перед окончанием работы программы пользователю задается вопрос сохранять ли измененные данные в файл.

Движение по пунктам меню производится при помощи клавиш управления курсором (стрелками).

Выбор производится нажатием клавиши [Enter].

Как говорилось в постановке задачи меню организовано при помощи функций описанных в библиотеке graphics.h

3.2 Описание ограничений возможностей программы.