Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_po_programmirovaniyu.doc
Скачиваний:
155
Добавлен:
17.02.2016
Размер:
1.31 Mб
Скачать

2.3 Описание программы

Для функционирования приложения «Автобусный парк» необходимо наличие на компьютере установленной операционной системы Windows 2000/XP/Vista .

Программа запускается с помощью запуска файла bus.exe, находящегося в каталоге X:/bus (X- имя диска, на который записывается приложение).

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

Сведения об автобусах имеют ограничения: номер маршрута и номер автобуса представляют собой целое число размеров не более трех цифр. Фамилия и инициалы водителя должны быть не длиннее 29 символов. Это нужно для исключения ошибок при форматированном вводе-выводе данных в файл и из файла. Количество автобусов строгими рамками не ограничено, так как в программе используются динамические структуры данных – списки.

Описание логической структуры.

Для хранения базы данных воспользуемся односвязными списками. Каждый элемент включает информационную часть (номер автобуса, ФИО водиетля и номер маршрута) и указатель на следующий элемент. Признак конца списка – ноль в поле указателя. Список доступен через указатель на его первый элемент.

Создадим два списка для хранения элементов. Один содержит информацию об автобусах в парке, другой на маршруте. Список автобусов на маршруте изначально пуст, поэтому указатель на его начало обнуляется. Указатель на начало списка парка устанавливается после загрузки первого элемента из файла. Если файл пуст, то указатель тоже обнуляется.

Чтение информации из базы производится с помощью функции Bus* __fastcall read_dbase(char* filename). Функция построчно считывает информацию из файла и заполняет поля структуры. Затем созданная структура включается в список автобусов в парке. Пока не достигнут конец файла, процесс продолжается.

Ввод нового элемента осуществляется двумя функциями: Bus __fastcall new_bus() и Bus* __fastcall add(Bus* beg, const Bus& bus). В функции new_bus() создается элемент структуры, с помощью формы «Автобусы» заполняются все поля, затем в функции add(Bus* beg, const Bus& bus) эта структура присоединяется к нужному списку. Параметры, которая принимает функция – указатель на начало списка и заполненная структура.

Для редактирования сведений об автобусе используются функции int __fastcall editBus(Bus* beg, int numbus) и Bus* __fastcall find(Bus* pv, int num, Bus** prev). Функция find осуществляет поиск элемента в списке по номеру автобуса и возвращает указатель на найденный элемент или нуль, если элемент не найден. Функция принимает в качестве параметров номер автобуса и указатель на начало списка, в котором нужно искать. Указатель на найденный элемент возвращается в функцию editBus, где редактируются поля структуры.

Для удаления элемента используется функция Bus* __fastcall remove(int num, Bus* beg). Функция вызывает функцию find для поиска удаляемого элемента в списке. В функцию поиска передается указатель на начало списка, номер автобуса и адрес предыдущего элемента. Это необходимо, чтобы связать предыдущий и последующий элементы. Функция возвращает указатель найденного элемента или нуль. После исключения из списка нужного элемента он удаляется (delete pv).

Вывод на экран нужного списка реализуется в функции void __fastcall print_dbase(Bus* beg). Принимая указатель на начало списка, функция перебирает все элементы списка и выводит в таблицу на форме.

Вывод в файл осуществляет функция int __fastcall write_dbase(char *filename, Bus *park, Bus *route). В нее передается название файла и указатели на начало обоих списков. Для выгрузки информации используется форматированный вывод.

Все остальные функции – это методы компонентов C++Builder. Из этих методов вызываются нужные функции, которые описаны выше. Кнопка «Добавить автобус» вызывает функцию add(), кнопка «Редактировать» - определяет номер автобуса по таблице и вызывает editBus(), кнопка «Удалить автобус» - после определения номера вызывает remove(), кнопка «Сохранить в файл» - функцию write_dbase(), кнопки «Автобусы на маршруте» и «Автобусы в парке» вызывают функцию вывода на экран списков.

Кнопки «Направить на маршрут» и «Направить с парк» с помощью find() находит в списке нужный элемент, а затем переносит его в другой список, подключая к последнему элементу или устанавливая как начало списка, если тот был пуст. В прежнем списке к предыдущему элементу подключается следующий после перенесенного.

Используемые технические средства.

Для нормального функционирования программы необходим любой современный компьютер, цветной монитор, клавиатура, манипулятор типа «мышь».

Минимальные требования для работы программы:

- Любой современный процессор Intel / AMD;

- ОЗУ от 512 Мбайт.

Вызов и загрузка.

Приложение «Автобусный парк» может находиться в любом доступном каталоге любого диска (A,C,D,E и т.д.). Файл базы данных “bus.txt” должен находиться в одном каталоге с исполняемым файлом. Программа запускается файлом “bus.exe”.

Входные данные.

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

Данные можно вносить с клавиатуры. При этом, номер автобуса и номер автобуса – это целые числа из трех цифр, а ФИО водителя – это символьный массив, который вводится в поле строка и преобразуется в массив программно при создании структуры.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]