║working(0)║ ║ ║ working(1) ║ ║ ║working(2)║ ║ ║working(3)║
║──────────║ ║ ║─────────────║ ║ ║──────────║ ║ ║──────────║
║Информация║ ║ ║Корректировка║ ║ ║ Удаление ║ ║ ║ Просмотр ║
║о системе║ ║ ║ данных ║ ║ ║ данных ║ ║ ║ базы ║
╚══════════╝ ║ ╚══════╦══════╝ ║ ╚═════╦════╝ ║ ╚═════╦════╝
╔═════════════╣ ╔╝ ║ ╚╗ ║ ╚═════╗
║ ║ ║ ║ ║ ╚═╗ ║
║ ╔═════╩═════╗ ║ ╔══════╩══════╗ ║ ╔═════╩════╗ ║
║ ║ working(4)║ ║ ║ working(5) ║ ║ ║working(6)║ ║
║ ║───────────║ ║ ║─────────────║ ║ ║──────────║ ║
║ ║ Процедура ║ ║ ║ Процедура ║ ║ ║ Создание ║ ║
║ ║загрузки БД║ ║ ║сохранения БД║ ║ ║ новой БД ║ ║
║ ╚═════╦═════╝ ║ ╚══════╦══════╝ ║ ╚══════════╝ ║
║ ║ ║ ╚══════╗ ║ ║
║ ╚╗ ╠═══════╦══════╗ ║ ╚═══════════╗ ║
║ ╔══════════╗ ║ ║ ║ ║ ╚═════╗ ║ ║
║ ║working(7)║ ║ ╔════╩═════╗ ║ ╔════╩═════╗ ║ ╔═════╩═════╗ ║
╠═╣──────────║ ║ ║correct(1)║ ║ ║correct(2)║ ║ ║ accept(N) ║ ║
║ ║ Выход ║ ║ ║──────────║ ║ ║──────────║ ║ ║───────────║ ║
║ ╚══════════╝ ║ ║Изменение ║ ║ ║Ввод новых║ ║ ║Определение║ ║
║ ╔══════════╗ ║ ║ данных ║ ║ ║ данных ║ ║ ║ удаляемой ║ ║
║ ║working(_)║ ║ ╚══════════╝ ║ ╚══════════╝ ║ ║ записи ║ ║
╚═╣──────────║ ║ ╔═══════╩════════╗ ║ ╚═══════════╝ ║
║ Обработка║ ║ ║ correct(_) ║ ║ ║
║ ошибки ║ ║ ║────────────────║ ║ ║
╚══════════╝ ║ ║ выход в главное║ ║ ╔═══╝
║ ║ меню ║ ║ ║
║ ╚════════════════╝ ║ ║
║ ║ ║
║ ║ ║
(1) (2) (3)
(1) (2) (3)
║ ║ ║
║ ║ ╚══╗
║ ╚═══════════╗ ║
╔═══════╩═══════╦════════════╦══════════════╗ ║ ║
╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║ ║
║ load_bd(1) ║ ║ load_bd(2)║ ║ load_bd(3) ║ ║load_bd(4)║ ║ ║
║────────────║ ║───────────║ ║────────────║ ║──────────║ ║ ║
║ Загрузка ║ ║ Загрузка ║ ║ Загрузка ║ ║ Загрузка ║ ║ ║
║основной БД ║ ║основной БД║ ║ новой БД ║ ║ новой БД ║ ║ ║
║ из файла ║ ║ из файла ║ ║ из файла ║ ║ из файла ║ ║ ║
║пользователя║ ║ bit.dat ║ ║пользователя║ ║ bstud.dat║ ║ ║
╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║ ║
║ ║
╔═══════════════╦════════════╦══════════════╦══════╝ ║
╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║
║ save_bd(1) ║ ║ save_bd(2)║ ║ save_bd(3) ║ ║save_bd(4)║ ║
║────────────║ ║───────────║ ║────────────║ ║──────────║ ║
║ Сохранение ║ ║ Сохранение║ ║ Сохранение ║ ║Сохранение║ ║
║основной БД ║ ║основной БД║ ║ новой БД ║ ║ новой БД ║ ║
║ в файле ║ ║ в файле ║ ║ в файле ║ ║ в файле ║ ║
║пользователя║ ║ bit.dat ║ ║пользователя║ ║ bstud.dat║ ║
╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║
║
╔═══════════════════╦═══════════════════╦═════════╝
╔══════╩══════╗ ╔══════╩══════╗ ╔══════╩══════╗
║ view(1) ║ ║ view(2) ║ ║ view(_) ║
║─────────────║ ║─────────────║ ║─────────────║
║ Просмотр ║ ║ Просмотр ║ ║ Выход ║
║ основной БД ║ ║ новой БД ║ ║ в меню ║
╚═════════════╝ ╚═════════════╝ ╚═════════════╝
Процедуры создавались на основе требований, изложенных в за-
дании к курсовой работе.
С помощью процедуры Begin в разделе GOAL инициируется нача-
ло выполнения программы. Эта процедура запускает процедуру на-
чальной загрузки базы данных Autoload, после чего передает управ-
ление процедуре вывода главного меню Main_menu.
Эта процедура выводит список пунктов главного меню и ожи-
дает от пользователя ввода числа, которое будет занесено в пере-
менную C. После этого вызывается процедура обработки основных ре-
жимов Working, в которую переменная C передается в качестве аргу-
мента. В процедуре использован предикат Repeat, в связи с этим
после возврата из процедуры Working в случае, если C не равно 7
происходит повторный вывод пунктов меню и ожидание ввода числа.
Процедура Autoload предназначена для автоматической загруз-
ки основной базы данных при запуске программы. Это значительно
облегчает работу с системой, так как не требуется при запуске
программы подгружать основную БД из режима "Загрузка". Процедура
Autoload проверяет существование на диске файла bit.dat с по-
мощью встроенного предиката existfile и подгружает БД в память с
помощью предиката consult. В случае отсутствия файла выдается
сообщение об ошибке.
Данная процедура выводит информацию о языке, на котором на-
писана система и данные о создателе.
Процедура Working(1) служит для вывода меню режима коррек-
ции данных, находящихся в БД, и внесения новых записей. После ак-
тивизации процедура выводит меню в котором имеются режимы: "Изме-
нение данных", "Добавление данных" и "Выход в меню". Активизация
режимов происходит аналогично главному меню с помощью нажатия
соответствующей цифровой клавиши. Считанное с клавиатуры число
заносится в переменную X, после чего вызывается процедура
Correct, аргументом которой служит X. С помощью процедур
Correct(1) и Correct(2), описанных ниже, собственно и реализует-
ся режимы коррекции и добавления. В процедуре Working(1) также
применен предикат Repeat, с помощью которого реализован повтор-
ный вывод меню в случае ошибки ввода.
Данная процедура предназначена для удаления записей из базы
данных. В программе предусмотрена возможность задания либо номе-
ра удаляемой записи, либо фамилии абитурьента, содержащейся в
данной записи. Эта возможность реализуется процедурой Accept,
описанной ниже. Процедура Accept возвращает номер выбранной запи-
си и с помощью встроенного предиката retract запись удаляется из
базы данных. В случае ошибки (отсутствия записи, выбранной
пользователем для удаления) выводится соответствующее сообщение
(процедура Error).
Процедура Working(3) выводит меню, содержащее пункты: "Прос-
мотр основной базы", "Просмотр базы BSTUD" и "Выход в главное ме-