- •Введение
- •1 Постановка задачи
- •2 Описание структуры данных
- •3 Общая структура программы
- •3.1 Состав программы
- •3.2 Описание пользовательского интерфейса
- •4 Описание функций
- •4.1 Функция addInf(char* file)
- •4.2 Функция ticketOut(struct train name)
- •4.3 Функция show(char* file)
- •4.4 Функция searchDeparture(char* file)
- •4.5 Функция searchNum(char* file)
- •4.6 Функция searchTravel(char* file)
- •4.7 Функция del(char* file1)
- •4.8 Функция printFile()
- •4.9 Функция edit(char* file)
- •4.10 Функция menu(char* file_name)
- •5 Результаты работы программы
- •Заключение
- •Список литературы
- •Приложение а
3.2 Описание пользовательского интерфейса
Пользовательский интерфейс осуществлен с помощью системы меню.
Пользователю предлагается ввести имя файла, далее производится очистка экрана и вывод текста меню, включающий в себя следующие пункты:
1. Просмотр задания.
2. Создать и добавить.
3. Поиск рейса по временному промежутку.
4. Поиск рейса по номеру.
5. Поиск самого быстрого рейса.
6. Просмотр информации о рейсах.
7. Удаление.
8. Редактирование.
9. Выход.
Пользователь вводит номер пункта меню и вызывается соответствующая функция. Программа заканчивает работу, когда выбран пункт меню 9 – «Выход».
Работа с меню осуществляется с помощью функции menu(char* file_name).
4 Описание функций
4.1 Функция addInf(char* file)
Назначение: добавление новой информации в файл.
Входные данные: file – указатель на файл.
Выходные данные: отсутствуют.
Вспомогательные переменные:
– int i счетчик в цикле.
– int n количество новых записей.
Описание работы функции: открытие в режиме дополнения и проверка правильности открытия бинарного файла, куда будет добавляться информация. Далее вводится n, количество новых записей. С помощью цикла с счетчиком, который выполняется n раз, добавляется информация по рейсам в следующем порядке: name.arrivial – пункт прибытия, name.number – номер поезда, name.type – тип поезда, name.time_departure_hour – час времени отправления, name.time_departure_minute – минуты времени отправления, name.time_travel_hour – количество часов в пути, name.time_travel_minute – количество минут (без целых часов) в пути. Введенная информация по каждой структуре записывается в бинарный файл. Закрытие файла.
4.2 Функция ticketOut(struct train name)
Назначение: вывод структуры на экран.
Входные данные: name – переменная типа структуры.
Выходные данные: отсутствуют.
Вспомогательные переменные: отсутствуют.
Описание работы функции: чтобы сохранить правильный вид формата времени для минут, например, 12 часов 5 минут должно выглядеть таким образом «12:05», а не «12:5», использован вывод с помощью условия. В условии проверяется нужен ли при выводе 0, и если число меньше 10, то добавляется 0.
4.3 Функция show(char* file)
Назначение: вывод на экран содержимого файла в графленом виде.
Входные данные: file – указатель на файл.
Выходные данные: отсутствуют.
Вспомогательные переменные: отсутствуют.
Описание работы функции: открытие в режиме чтения и проверка правильности открытия файла. Вывод шапки таблицы. С помощью цикла с условием, чтение до конца файла, вывод содержимого таблицы, информация по каждой структуре выводится функцией ticketOut(struct train name). Закрытие файла.
4.4 Функция searchDeparture(char* file)
Назначение: нахождение рейсов в определенном временном промежутке.
Входные данные: file – указатель на файл.
Выходные данные: отсутствуют.
Вспомогательные переменные:
– int time_first_hour – час в начальной границе временного промежутка.
– int time_first_min – минуты в начальной границе временного промежутка.
– int time_second_hour – час в конечной границе временного промежутка.
– int time_second_min – минуты в конечной границе временного промежутка.
– int time_first – общее время в минутах начальной границы временного промежутка.
– int time_second – общее время в минутах конечной границы временного промежутка.
– int n – номер структуры, изначально равно 0.
– int nal – индикатор наличия подходящих рейсов, изначально равно 1.
– char station[15] – искомый пункт назначения.
Описание работы функции: открытие в режиме чтения и проверка правильности открытия бинарного файла. Ввод искомого пункта назначения station. Ввод начальной и конечной границы временного промежутка в формате часы и минуты через пробел соответственно time_first_hour, time_first_min, time_second_hour, time_second_min. Подсчет времени в минутах для каждой границы. В цикле с условием, чтение до конца файла, каждая структура проверяется сначала по совпадению пункта назначения рейса и искомого пункта назначения, затем на вхождения во временной промежуток с помощью подсчета времени в минутах. Если подходящие рейсы находятся, то при первом нахождении выводится шапка таблицы, индикатор n принимает значение 0, вывод структуры с помощью функции ticketOut(struct train name), вывод нижней границы таблицы. Если же подходящих рейсов не нашлось, то индикатор n не меняет своего значения, равен 1, выводится уведомление на экран «Подходящих рейсов не найдено, выберите другое время». Закрытие файла.