- вывод содержимого всего файла на экранной форме в виде таблицы;
- продвижение к следующей записи в файле;
- продвижение на предыдущую запись типизированного файла;
- возможность редактирования данных в имеющихся записях типизированного файла;
- возможность добавления новых записей в типизированный файл;
- возможность удаления отдельных записей из типизированного файла;
- поиск записей по какому-либо критерию и вывод результатов на экранную форму;
Последующие разделы будут посвящены решению поставленных задач и разработке приложения с вышеперечисленными функциями.
2 Разработка ЭКРАННЫХ ФОРМ И алгоритма программы
В предыдущем разделе было сказано, что процесс решения поставленной задачи разбивается на 3 этапа, первый из которых заключается в построении интерфейса с пользователем на основе экранных форм и визуальных объектов проектирования.
По сформулированной в предыдущем задании постановке должна иметься возможность выполнения манипуляций с файлами на жестком диске (открытие, сохранение, создание). Для этого разместим на форме объекты OpenDlg типа TOpenDialog (стандартный диалог открытия файла) и SaveDlg типа TSaveDialog (стандартный диалог сохранения файла). Эти объекты помогают автоматизировать процесс навигации по иерархии файлов и папок жесткого диска компьютера и выбора требуемого имени для открытия или сохранения файла.
Для запуска процедур открытия или создания файла, разместим на форме объект MainMenu типа TMainMenu. Настройка пунктов меню приведена на рисунке 2.1
Рисунок 2.1 – Настройка пунктов главного меню
Для возможности ввода исходных данных о компьютере поместим на форме поля ввода типа TEdit и соответствующие метки описания к ним. Для вывода информации о всех компьютерах аэропорта, предусмотрим объект SGrid1 типа TStringGrid, в который позволяет выводить информацию в виде таблицы.
Также для запуска функции продвижение к следующей записи, продвижение на предыдущую запись, сохранение изменений об одной записи, добавления новых записей в типизированный файл, удаления отдельных записей из типизированного файла, поиск записей по какому-либо критерию и вывод результатов на экранную форму, поместим на форме кнопки типа TBitButton. Сами процедуры для выполнения тех или иных функций реализуем как обработчики нажатия на соответствующие кнопки.
В итоге, спроектируем экранную форму, вид которой приведен на рисунке 2.2
Рисунок 2.2 – Экранная форма приложения
Для удобства работы в программе целесообразно всю информацию из файла хранить в динамическом массиве с элементами типа запись и оперировать с элементами массива.
Словесный алгоритм действий при открытии файла:
1. Открыть файл для чтения.
2. Принять размерность массива равной нулю.
3. Считать очередную запись из файла.
4. Если достигнут конец файла, перейти на пункт 8.
5. Увеличить длину динамического массива на единицу.
6. Занести очередную запись, считанную из файла в конец массива.
7. Перейти на пункт 3.
8. Закрыть файл.
9. Отобразить содержимое массива в таблице на экранной форме.
10. Конец
Словесный алгоритм действий при сохранении файла:
1. Открыть требуемый файл для записи.
2. Установить <номер> на начало массива (номер равен нулю).
3. Если достигнут конец массива, перейти на пункт 6.
4. Сохранить очередной элемент массива под номером <номер> в конец файла.
5. Нарастить <номер> на 1 и перейти на пункт 3.
6. Закрыть файл.
7. Конец.
При поиске все записи, удовлетворяющие критерию выбираются в отдельный массив и отображаются на экранной форме. Словесный алгоритм действий при поиске:
1. Установить <номер1> на начало исходного массива А.
2. Обнулить размерность результирующего массива В.
3. Если достигнут конец массива А, перейти на пункт 8.
4. Если запись <номер1> исходного массива А удовлетворяет критериям поиска, перейти на пункт 4, если не удовлетворяет, перейти на пункт 7.
5. Нарастить длину результирующего массива В на единицу.
6. Записать элемент <номер1> массива А в конец результирующего массива В.
7. Нарастить <номер1> на единицу и перейти на пункт 3.
8. Отобразить содержимое массива В в таблице на экранной форме.
9. Конец.
Анализируя требования к функциям разрабатываемого приложения под разработанную экранную форму можно выделить следующие программные модули:
1) вывод информации о разработчике программы и задании на курсовой проект;
2) создание нового типизированного файла, с информацией о компьютерах (инициализация временного массива записей );
3) сохранение содержимого файла в типизированном файле на жестком диске;
4) сохранение содержимого файла в типизированном файле на жестком диске под новым именем;
5) вывод информации о компьютере текущей записи массива в поля ввода на экранной форме;
6) перенос информации из типизированного файла в динамический массив и вывод содержимого на форме;
7) продвижение к следующей записи в массиве;
8) продвижение на предыдущую запись массива;
9) перенос информации из полей ввода в поля текущей записи из массива;
10) добавление новой записи в массив;
11) удаление текущей записи из массива;
12) поиск записей по какому-либо критерию и вывод результатов на экранную форму;
13) вывод содержимого динамического массива на объекте типа TStringGrid.
Каждый из вышеприведенных модулей реализуем при помощи процедуры. Модули 1,2, 3, 4, 6 будут обработчиками нажатий на соответствующие пункты главного меню. Для запуска модулей 7, 8, 9, 10, 11, 12 предусмотрим экранные кнопки на форме, для чего поместим на форму объекты типа TBitButton. А сами процедуры будут реализованы как обработчики нажатия на соответствующие кнопки. Модули 5, 13 реализуем как отдельную процедуру.
Cоставим алгоритм приложения, который представлен в приложении на рисунке A.1. На алгоритме приведены основные события экранной формы. В этом алгоритме:
блок №3 реализован процедурой NOpenClick,
блок №4 процедурой NSaveClick,
блок №5 - процедурой NShowClick,
блок №6 - процедурой NSaveAsClick,
блок №7 - процедурой NCreateClick,
блок №8 реализован процедурой BBDeleteClick,
блок №9 процедурой NInfoClick,
блок №10 - процедурой BBNextClick,
блок №11 - процедурой BBPrevClick,
блок №12 - процедурой BBUpdateClick,
блок №13 - процедурой BBAddClick,
блок №14 - процедурой BBSearchClick,
блок №15 - процедурой NExitClick.
Детальное описание разработанной программы, алгоритмов и их программной реализации приведено в последующих разделах.
3 ОПИСАНИЕ ПРОГРАММНЫХ МОДУЛЕЙ
В программе используется глобальная переменная Form1, которая представляет собой экранную форму.
Для организации интерфейса с пользователем были разработаны экранные формы, в результате чего на экранной форме Form1 поместили элементы, приведенные в таблице 3.1
Таблица 3.1– Описание визуальных объектов на форме Form1
Наименование | Тип | Назначение |
MainMenu1 | TMainMenu | главное меню |
NOpen, NSave, NSaveAs, NCreate, NExit, NInfo, NShow | TMenuItem | пункты главного меню «Открыть», «Сохранить», «Сохранить как», «Создать», «Выход», «Информация», «Показать» |
EName, EHDD, ERAM, EMonitor, | TEdit | поля для ввода данных о наименовании компьютера, объеме диска, памяти, типе монитора. |
RGrInet | TRadioGroup | поле для ввода информации о подключении к интернет |
SGrid1 | TStringGrid | вывод содержимого файла в виде таблицы |
BBPrev | TBitBtn | кнопка с надписью «Предыдущая запись» |
BBNext | TBitBtn | кнопка с надписью «Следующая запись» |
BBDelete | TBitBtn | кнопка с надписью «Удалить» |
BBAdd | TBitBtn | кнопка с надписью «Добавить» |
BBUpdate | TBitBtn | кнопка с надписью «Редактировать» |
BBSearch | TBitBtn | кнопка с надписью «Поиск» |
OpenDlg1 | TOpenDialog | стандартный диалог открытия файлов |
SaveDlg | TSaveDialog | стандартный диалог сохранения файла |
В разделе var опишем переменные, приведенные в таблице 3.2
Таблица 3.2– Переменные программы
Наименование | Тип | Назначение |
F | file of TComp | типизированный файл с данными о компьютерах |
Comp | TComp | информация об одном компьютере |
AComp | array of TComp | данные обо всех компьютерах в виде массива |
CurK | integer | номер текущей записи в массиве AComp |
Fname | string | имя текущего (рабочего) файла |
Для хранения данных о компьютере разработаем составной тип данных TComp c полями, приведенными в таблице 3.3
Таблица 3.3 – Информационные поля о компьютере
Наименование | Тип | Назначение |
Name | string[20] | наименование компьютера |
HDD | real | объём жесткого диска |
RAM | integer | объём оперативной памяти |
Monitor | string[20] | тип монитора |
Inet | boolean | наличие подключения к интернет |
В разработанной программе содержится описание 13 процедур обработчиков событий и 4 вспомогательных процедуры, которые приведены в таблице 3.4.
Таблица 3.4 Пользовательские процедуры и обработчики событий
Наименование | Обр-к | Назначение | Строки |
GetComp | - | поиск компьютера по имени | 78-89 |
ShowComp | - | вывод информации о компьютере на форму | 90-101 |
ShowCompInGrid | - | вывод информации о компьютере в таблицу | 102-114 |
ShowAComp | - | вывод содержимого массива FComp в таблицу | 115-127 |
BBAddClick | + | добавление новой записи о новом компьютере | 128-149 |
BBPrevClick | + | переход на предыдущую запись | 150-157 |
BBNextClick | + | переход на следующую запись | 158-165 |
NSaveClick | + | сохранение текущего файла | 166-179 |
NSaveAsClick | + | запуск диалога и сохранение в файле с заданным именем | 180-194 |
NOpenClick | + | запуск диалога и открытие файла | 195-216 |
BBDeleteClick | + | удаление текущей записи | 217-230 |
NCreateClick | + | инициализация массива AComp | 231-237 |
FormCreate | + | инициализация шапки таблицы | 238-247 |
BBUpdateClick | + | обновление записи в массиве данными из полей ввода | 248-260 |
NShowClick | + | вывод содержимого текущего файла на форму | 261-278 |
BBSearchClick | + | поиск компьютеров согласно некоторым критериям и вывод результатов поиска | 279-312 |
NInfoClick | + | вывод информации о разработчике | 313-317 |
NExitClick | + | выход из приложения | 318-322 |
Более подробно некоторые процедуры будут рассмотрены далее.