Управление проектами: Методические указания по проведению лабораторных работ, страница 3

Главный визуальный компонент в таком интерфейсе – TDBGrid. Сделайте его временно не доступным для редактирования ( см. свойства Options ).

Стандартный TDBNavigator, для редактирования БД, здесь будет не пригоден, поэтому используйте собственный кнопки для редактирования таблицы.

Запретите вообще пользовательское редактирование первого индексного поля ( в свойствах колонок (Columns) TDBGrid ).

Поскольку первое поле теперь только для чтения, то необходимо вести в нём программный учёт инкрементирования при добавлении или удалении записей. Это должно учитываться в коде кнопок «Добавить» и «Удалить».

5. Используя разработанный GUI, добавить, как минимум, пять записей в базу знаний будущей системы.

6. Оформить подробный отчёт о проделанной работе.

Контрольные вопросы

1. Какие форматы файлов СУБД наиболее распространены?

2. Почему имена полей таблицы лучше указывать латинскими буквами?

3. Чем отличаются технологии BDE и ADO друг от друга?

4. Что можно выделить общее при программировании объектов БД двух различных технологий (ADO и BDE)?

5. Как программно удалить запись из таблицы?

Лабораторная работа №3

Разработка экспертной системы: автоматизация базы знаний

Цель: в результате выполнения работы студент должен научиться программировать ядро простейшей экспертной системы, устанавливающей диагноз болезни по показателям симптомов больного.

Краткие теоретические сведения

С помощью компонента ТАDOTаblе можно также обращаться к записям таблицы без использования языка SQL. Несмотря на то, что таблица – это двумерное представление данных, подобно двумерному массиву, обращаться к её элементам напрямую по двум координатам нельзя. В табличных объектах ( TADOTable, TADOQuery ) существует понятие указателя на текущую строку. Указатель показывает, какая строка активна и откуда будут считываться записи по столбцам.

Для навигации таблицы используются следующие методы:

– First. Переместить курсор на первую запись.

– Last. Переместить курсор на последнюю запись.

– Next. Переместить курсор на следующую запись.

– Prior. Переместить курсор на предыдущую запись.

– MoveBy(n). Переместить курсор на n-записей относительно текущей.

Поставив курсор на нужную строку значение поля можно считать через подобъект «Fields»:

Table1.Fields[2].Text; // Получить запись по третьей колонке текущей строки

Ход работы

1. Используя приложение созданное во второй лабораторной работе, добавить в него специальную форму-запрос «Экспертиза», разместив её в свободном месте на главной форме или на отдельной странице компонента «TPageControl».

На этой форме должны располагаться поля ввода или выпадающие списки для каждого признака классификаций, причём значения списков (ComboBox) рекомендовано реализовать в виде программного считывания всевозможных значений, встречающихся в базе знаний для каждого признака.

2. Написать модуль оценки критериев запроса по результатам «сканирования» базы знаний экспертной системы.

Под сканированием базы знаний понимается процесс распознания классификаций признаков запроса идентичных классификациям признаков БЗ. В случае совпадения элементов классификации текущему признаку присваивается единица, иначе – ноль. В конце сканирования значения признаков на каждой строке суммируются и сравниваются. Если по четырём признакам значение сумматора оказывается равным четырём – то текущая запись является абсолютным совпадением.

PS Можно сразу реализовать вывод результата оценки эксперта, используя SQL-запрос компонента TADOQuery, но для этого необходимо сперва преобразовать табличную базу знаний экспертной системы хотя бы к первой нормальной форме...

Пример SQL-запроса:

select * from knowledge_base.DBF

WHERE

(TEMPERATUR like %38% or TEMPERATUR like '%*%')  and

(HEDACHE like %слабая% or HEDACHE like '%*%') and

(COUGH like %нет% or COUGH like '%*%') and

(INFLAM_THR like %слабое% or INFLAM_THR like '%*%');

3. Вывести результаты пользователю системы.

Система должна вывести содержание последнего столбца соответствующей строки табличной базы знаний в случае успеха, указав сумматор.

4. Оформить подробный отчёт о проделанной работе.

Контрольные вопросы

1. Что такое и для чего нужна «экспертная система»?

2. Из каких частей состоит экспертная система?

3. Кто должен входить в группу разработчиков экспертной системы?

4. Насколько язык Delphi пригоден для создания экспертных систем?