Реферат: Информационно-справочная система, обеспечивающая работу с базой данных Bit
после возврата из процедуры 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" и "Выход в главное ме-
ню". Собственно просмотр содержимого БД осуществляют процедуры
View(1) и View(2), рассмотренные ниже. Процедура Working(3) реа-
лизована в стиле процедур Main_menu и Working(1) с применением
процедуры Repeat.
Данная процедура выводит меню, содержащее следующие пункты:
"Загрузить основную базу из выбранного файла", " Загрузить основ-
ную базу из файла bit.dat", " Загрузить базу BSTUD из выбранного
файла"," Загрузить базу BSTUD из файла bstud.dat" и "Выход в
главное меню". Собственно загрузка баз данных осуществляется про-
цедурой Load_bd, аргументом которой служит переменная C, считан-
ная с клавиатуры при вводе пользователем номера желаемого пункта
меню. В процедуре Working(4) также применена процедура Repeat.
Процедура Working(5) аналогична Working(4). Для сохранения
баз данных применяется процедура Save_bd, рассмотренная ниже, ар-
гументом которой является переменная I.
Данная процедура служит для создания новой базы данных. Про-
цедура работает следующим образом: из базы, имеющей метку "аби-
турьент" , извлекаются нужные данные, производится суммирование
оценок за экзамены и новая запись с помощью предиката assertz до-
бавляется к базе с меткой "студент". Для того, чтобы были обрабо-
таны все записи, используется fail. После создания новой БД вы-
дается соответствующее сообщение и предупреждение о том, чтобы
пользователь не забыл сохранить вновь созданую БД.
Данная процедура состоит из отсечения, которое запрещает
дальнейший перебор. Процедура оканчивается успехом и происходит
возврат в процедуру Main_menu, в которой выполняется условие C=7,
благодаря чему происходит выход из программы.
Процедура Working(_) выводит сообщение об ошибке ввода циф-
ры и подсказку о том, что следует ввести число от 0 до 7. Вывод
сообщения сопровождается подачей звукового сигнала, реализован-
ной с помощью встроенного предиката sound. После нажатия клавиши
происходит возврат в главное меню.
Данная процедура производит коррекцию данных в записи.
Имеется возможность выбрать запись для корректировки либо по но-
меру, либо по фамилии абитурьента. Данную возможность предостав-
ляет процедура Accept, описанная ниже, которая вызывается после
создания окна "Изменение данных". Процедура Accept передает но-
мер выбранной записи в переменную N, после чего содержимое запи-
си распечатывается на экране. После этого пользователю предостав-
ляется возможность ввести измененные данные; если нет необходи-
мости изменять какой-либо элемент, можно нажать клавишу <Enter>.
Все данные, в том числе и числа, считываются в формате строк. Это
необходимо для осуществления возможности отказа от изменения эле-
мента нажатием клавиши <Enter>. Все считанные данные передаются
процедурам Skip (для строковых выходных данных) и Skip1 (для це-
лочисленных выходных данных). Эти процедуры в зависимости от то-
го, была ли нажата клавиша <Enter> возвращают в процедуру
Correct(1) либо старое значение, либо новое, при чем процедура
Skip1 преобразует с помощь встроенного предиката str_int строко-
вые данные в целочисленные. Старая запись удаляется из базы дан-
ных предикатом retract, а новая добавляется предикатом assertz.
По окончании выводится предупреждение о том, что следует сохра-
нить вновь введенные данные(процедура Mesage).
Процедура Correct(2) служит для добавления записей к БД.
Пользователь поочередно вводит каждый элемент записи, отвечая на
запросы системы. С помощью предиката assertz данные добавляются в
БД, после чего вызывается предикат Ask, формирующий запрос на
продолжение процесса ввода новых записей. Если от пользователя
будет получен утвердительный ответ, то благодаря процедуре Repeat
цикл ввода данных повторится, при получении отрицательного отве-
та система выдаст предупреждение о необходимости сохранения вновь
введенных данных (процедура Mesage) и произойдет возврат из про-
цедуры Correct(2).
Данная процедура служит для вывода на экран содержимого ос-
новной ( View(1) ) и вновь созданной ( View(2) ) баз данных. Каж-
дая из процедур выводит заголовочную таблицу, после чего распеча-
тывает содержимое каждой записи. Для перебора всей БД применен
предикат fail. После вывода всех записей выводится просьба на-
жать любую клавишу для продолжения.
Данная процедура является вспомагательной к процедурам
Correct(1) и Working(2). Она в паре со вспомагательной процеду-
рой Acp определяет номер желаемой записи после ввода пользовате-
лем либо собственно номера этой записи, либо после ввода фамилии
абитурьента (данные пункты присутствуют в меню, выводимом проце-
дурой Accept) и возвращает этот номер в вызывавшую процедуру.
Процедуры Skip и Skip1 являются вспомагательными к процеду-
ре Correct(1). Они позволяют определить, следует ли замещать
имеющийся элемент записи на новый или нет (если была нажата кла-
виша <Enter>). В процедурах проверяется, является ли первый аргу-
мент пустой строкой. Если это так, то третьему аргумент присваи-
вается второй. Если же первый аргумент не является пустой стро-
кой, то он присваивается третьему аргументу (в Skip1 происходит
предварительное преобразование строковой переменной в целочислен-
ную).
Данная процедура осуществляет загрузку баз данных из фай-
лов на диске по признакам, зависящим от аргумента процедуры:
Bd_load(1) загружает основную БД из файла, заданного пользовате-
лем, Bd_load(2) - из файла bit.dat, Bd_load(3) - базу BSTUD из
файла, заданного пользователем и BD_load(4) - базу BSTUD из фай-
ла bstud.dat. В данных процедурах проверяется наличие файла на
диске с помощью предиката existfile и загрузка БД в память с по-
мощью предиката consult. В случае отсутствия файла на диске, вы-
дается соответствующее сообщение (процедура Io_error).
Данная процедура осуществляет сохранение баз данных в фай-
лах на диске по признакам, зависящим от аргумента процедуры:
Bd_save(1) сохраняет основную БД в файле, заданном пользователем,
Bd_save(2) - в файле bit.dat, Bd_save(3) - базу BSTUD в файле,
заданном пользователем и BD_save(4) - базу BSTUD в файле
bstud.dat. Сохранение БД осуществляется с помощью встроенного
предиката save. В случае ошибки выдается соответствующее сообще-
ние (процедура Error).