В каждом современном предприятии сотрудники ежедневно работают с информацией. В зависимости от должностных обязанностей характер и объем информации может быть разным. В независимости от решаемых задач, неизменным является потребность оперативного сохранения информации. Информация, помещенная в структурированное хранилище, становится частью базы данных.
Компьютерные базы данных повышают эффективность работы с информацией, используемой сотрудниками, на всех уровнях организации. Поэтому нашей задачей стала разработка базы данных средствами современной среды программирования.
Наша разработка посвящена проектированию структуры и реализации базы данных, содержащей сведения о студентах, в среде программирования Visual Prolog. Разработанная СУБД достаточно функциональная и может быть использована при хранении сведений о фамилиях студентов, группах, в которых они обучаются, результатов прохождения трех контрольных точек по одному из предметов.
В системе Visual Prolog создается проект, в состав которого входят окна, элементы управления, объявления доменов и предикатов. При создании приложений предикаты бывают двух видов: обработчики событий – их согласование вызывается операционной системой при наступлении определенных событий, и «обычные» предикаты, согласование которых вызывает в программе программист.
В Visual Prolog элемент управления (ЭУ) – это дочернее окно, которое не имеет собственных обработчиков события. Предназначение ЭУ заключается в том, чтобы послать родительскому окну сообщение о событии.
Все действия с ЭУ осуществляется посредством согласования предикатов, первый аргумент которых должен быть связан с дескриптором ЭУ.
Дескриптор ЭУ можно получить согласованием предиката win_GetCtlHandle:
ДескрипторЭУ = win_GetCtlHandle (Дескриптор _Родительского _Окна, ИдентификаторЭУ)
при этом идентификатор ЭУ объявляется в поле Constant окна атрибутов ЭУ в процессе вставки в окно этого элемента управления.
В Visual Prolog имеются специальные средства для организации реляционных баз данных. Предикаты баз данных описываются в разделе facts, который должен располагаться в программе перед разделом predicates. Все утверждения с предикатами, описанными в разделе facts, составляют динамическую БД, которая, в отличие от неизменяемой статической БД, являющейся частью кода программы, в процессе программы может меняться, то есть из неё можно удалять любые содержащиеся в ней утверждения, а так же добавлять новые.
Динамическая база данных располагается в оперативной памяти (резидентная БД).
Например, в динамической БД содержатся сведения о студентах ВУЗа с предикатом stud, тогда требуется следующее описание:
facts
dstud(name, group),
где name, group – типы данных, описанные domains.
Разработанное приложение имеет следующий вид (рис. 1).
Для хранения сведений о студентах в программе используются два динамических предиката:
facts – students
stud(symbol,symbol,symbol)
facts – sved
sved(symbol,symbol,symbol,symbol)
Ниже представлено проектирование будущей базы на логическом и физическом уровне (рис. 2, 3).
Их базы данных сохраняются в два файла: baza и baz1. Их структура представлена на рисунке 4.
В приложении реализованы следующие функции:
• Ввод данных о студенте (номер зачетной книжки, фамилия, группа);
• Удаление данных о студенте;
• Удаление данных о группе студентов;
• Вывод данных;
• Вывод данных о студентах определенной группы;
• Заполнение сведений о студентах: баллы за три контрольные точки;
• Подведение итогов: преодолел студент или нет контрольный рубеж (60 баллов).
Рассмотрим реализацию одной из функций более подробно, например: Ввод данных о студенте (номер зачетной книжки, фамилия, группа) (рис. 5).
После ввода данных о студентах нажимается кнопка «ввод данных», с которой связан обработчик следующего события.
%BEGIN win1, idc_ввод_данных _CtlInfo
win_win1_eh(_Win,e_Control(idc_ввод_данных,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
WH = win_GetCtlHandle(_Win, idc_fio),
F = win_GetText(WH),
WH1 = win_GetCtlHandle(_Win, idc_gr),
G = win_GetText(WH1),
WH2 = win_GetCtlHandle(_Win, idc_z),
Z = win_GetText(WH2),
not(stud(Z,_,_)), asserta(stud(Z,F,G)), !.
В правиле заложена проверка, не позволяющая вводить в базу студентов с одинаковым номером зачетной книжки.
Таким образом, данная программа может быть использована и для демонстрации возможностей баз данных в учебном процессе, и, при дальнейшей доработке, в научных исследованиях в области искусственного интеллекта.
Рис. 1. Окно приложения
Рис. 2. Проектирование базы данных на логическом уровне
Рис. 3. Проектирование базы данных на физическом уровне
Рис. 4. Структура фалов с данными
Рис. 5. Ввод данных