В этом уроке мы создадим 2-ую процедуру для нашей базы данных, которая будет выводить на экран информацию о сотруднике в зависимости от введенной фамилии. Причем, программа будет работать таким образом, что для поиска необходимого сотрудника достаточно будет ввести лишь несколько первых букв его фамилии. Эту процедуру мы также поместим в отдельный модуль.
Строка №1-№27. Эта часть кода подробно рассмотрена в предыдущих уроках.
Строка №28. Зарезервированное слово LABEL открывает раздел, в котором описываются метки. В нашем случае нам понадобится одна метка. Ее название указывается после слова LABEL. В нашей программе мы создали одну метку под названием «1».
Строка №32. Переменную «fampoisk1» будем использовать для хранения вводимой пользователем фамилии сотрудника (либо части фамилии).
Строка №33. Переменную «fampoisk2» будем использовать для копирования в нее фамилии сотрудника (или части фамилии) из компонента записи «sotrudn.LD.fam».
Строка №34. Переменная «family» будет хранить одно из 2-х значений: либо «Холост/незамужем», либо «Женат/замужем».
Строка №35. Переменная «kolsimfam» будет хранить количество символов, которое мы будем вводить с клавиатуры.
Строка №36. Переменная «CH» нужна для функции READKEY.
Строка №40. Ставим метку «1». Через двоеточие указываем первый оператор, который будет выполняться после метки. В нашем случае это оператор очистки экрана CLRSCR.
Строка №41. Выводим на экран сообщение.
Строка №42. Вводим фамилию (предположим, что мы введем первые 3 буквы фамилии).
Строка №43. В случае, если мы не введем никаких символов, ход программы перейдет к метке «1», т.е. на строку №40. Таким образом, если мы не введем никаких символов и нажмем клавишу Enter, то экран очистится (строка №40) и будет выведено сообщение (строка №41). Если строку №43 убрать из программы, то при пустом вводе на экран будут выведены данные о всех сотрудниках из базы данных. Для этого мы и используем строку №43. При пустом вводе данные о всех сотрудниках будут выведены на экран, однако благодаря переходу к метке «1» экран очистится (строка №40), будет выведено сообщение (строка №41) и программа будет ожидать ввода символов (строка №42).
Строка №44. Функция LENGTH возвратит в качестве своего значения количество символов из переменной «fampoisk1». Таким образом, если мы введем с клавиатуры первые 3 буквы фамилии, то результатом Функции LENGTH будет число 3. Это число будет записано в переменную «kolsimfam».
Строка №45-№47. Считываем весь файл в переменную «sotrudn».
Строка №48. В переменной (компоненте записи) «sotrudn.LD.fam» хранится фамилия сотрудника. Нам необходимо скопировать часть фамилии, начиная с первого символа. Количество символов для копирования определяется переменной «kolsimfam». Таким образом, если в этой переменой хранится число 3, то из переменной «sotrudn.LD.fam» будет скопировано первые 3 символа. Эти символы будут сохранены в переменную «fampoisk2».
Строка №49. Сравниваем обе переменные: переменную «fampoisk1», где хранятся символы, вводимые пользователем с клавиатуры, и переменную «fampoisk2», где хранится фамилия (или часть фамилии). Причем количество символов в обеих переменных одинаковое. Если содержимое обеих переменных совпадает, то на экран выводится информация о сотруднике (строка №50-№68).
Строка №70. Выводим на экран сообщение.
Строка №71. Программа ждет нажатия клавиши. После нажатия, код клавиши будет записан в переменную «CH».
Строка №72. Если код нажатой клавиши равен 27 (клавиша ESC), то произойдет выход из программы благодаря процедуре EXIT.
Строка №73. Если будет нажата другая клавиша, то…
Строка №75. Переводим указатель на начало файла, чтобы можно было читать файл снова.
Строка №76. Возвращаем ход программы к строке №40.
После создания процедуры проверим ее работоспособность.
Для этого в основную программу в раздел описания модулей USES добавим название 2-го модуля, а в операторе выбора CASE OF добавим название процедуры.
Program baza_dan2;
uses crt, modul1,modul2;
var vibor:integer;
begin
clrscr;
writeln('Выберите действие');
writeln('Нажмите 1 для добавления записи в базу данных');
writeln('Нажмите 2 для вывода карточки сотрудника');
writeln('Нажмите 3 для вывода информации о сотруднике');
writeln('Нажмите 4 для сортировки базы данных');
writeln('Нажмите 5 для удаления записи о сотруднике');
writeln('Нажмите 6 для статистического анализа базы данных');
readln(vibor);
case vibor of
1:add_record;
2:vivod_kart_sotr;
end;
end.
После запуска программы нажимаем 2 и вводим фамилию сотрудника. Я ввел первые 3 буквы фамилии "Пут". В результате на экране появились данные сотрудников, чьи фамилии начинаются на эти буквы.
После запуска программы я ввел 3 символа "Пут". В результате, программа вывела на экран информацию о сотрудниках, чьи фамилии начинаются с этих символов.