<< Пред. стр. 3 (из 4) След. >>
3) EntrViewForm - форма поиска и фильтрации в таблице "Предприятия";4) EcParamsForm - форма отображения данных таблицы "Экономические показатели";
5) EcParamsInputForm - форма ввода данных для занесения их в таблицу "Экономические показатели";
6) EcParamsViewForm - форма поиска в таблице "Экономические показатели";
7) MatBaseForm - форма отображения данных таблицы "Материальная база";
8) MatBaseInputForm - форма ввода данных для занесения их в таблицу "Материальная база";
9) MatBaseViewForm - форма поиска в таблице "Материальная база";
10) SecurityForm - форма отображения данных таблицы "Режимы предприятия";
11) SecurityInputForm - форма ввода данных для занесения их в таблицу "Режимы предприятия";
12) SecurityViewForm - форма поиска в таблице "Режимы предприятия";
13) ArchiveForm - форма отображения данных таблицы "Архив заказов";
14) ArchiveInputForm - форма ввода данных для занесения их в таблицу "Архив заказов";
15) ArchiveViewForm - форма поиска в таблице "Архив заказов";
16) IzdelieForm - форма отображения данных таблиц "Изделия", "Размеры" и "Заказчики";
17) IzdelieInputForm - форма ввода данных для занесения их в таблицу "Изделия";
18) IzdelieViewForm - форма поиска в таблице "Изделия";
19) SizesInputForm - форма ввода данных для занесения их в таблицу "Размеры";
20) SizeViewForm - форма поиска в таблице "Размеры";
21) ZakInputForm - форма ввода данных для занесения их в таблицу "Заказчики";
22) ZakViewForm - форма поиска в таблице "Заказчики";
23) CheckForm - форма проверки базы знаний на полноту.
6.2. Типичные процедуры.
В программе функции добавления, удаления и изменения данных реализуются путём обращения к хранимым процедурам на сервере.
Пример обращения к процедуре добавления для таблицы "Предприятия":
//Ввели ли название предприятия?
if NameEdit.Text<>'' then
begin
//Если да, то заносим информацию в базу
//Занесение параметров...
EntrDataModule.EntrInsertStoredProc.ParamByName('PNAME').AsString:=NameEdit.Text;
EntrDataModule.EntrInsertStoredProc.ParamByName('PADDRESS').AsString:=AddressEdit.Text;
EntrDataModule.EntrInsertStoredProc.ParamByName('PPHONE').AsString:=PhoneEdit.Text;
EntrDataModule.EntrInsertStoredProc.ParamByName('PCOMMENT').AsString:=CommentMemo.Text;
EntrDataModule.EntrInsertStoredProc.Prepare;//Подготовка данных
EntrDataModule.EntrInsertStoredProc.ExecProc;//Обращение к хранимой процедуре добавления
end
else
//Сообщение "Введите название предприятия".
MessageDlg('Введите название предприятия.',mtInformation,[mbOk],0);
Перед обращением к процедуре добавления производится проверка, введено ли название предприятия, и, если введено, то производится занесение параметров и обращение к хранимой процедуре, иначе выводится сообщение с просьбой ввести название предприятия. Как видно из текста процедуры, при добавлении передача ключа серверу не производится, он определяется сервером автоматически.
Пример обращения к процедуре удаления для таблицы "Предприятия":
// Запрос на подтверждение удаления
if MessageDlg('Вы уверены?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
//Если подтвердили, то удаляем.
EntrDataModule.EntrDeleteStoredProc.ParamByName('PENTKEY').AsString:=EntrDataModule.EnterprisesQuery.FieldValues['ENTKEY'];//Заносим параметр (ключ удаляемой записи)
EntrDataModule.EntrDeleteStoredProc.Prepare;//Подготовка параметра
EntrDataModule.EntrDeleteStoredProc.ExecProc;//Обращение к процедуре
RefreshEnterprisesTable;//После удаления обновляем информацию на экране
end;
При обращении к процедуре удаления сначала запрашивается подтверждение удаления, чтобы исключить случайное удаление. Если пользователь подтвердил своё намерение, происходит обращение к соответствующей хранимой процедуре удаления на сервере, а затем информация на экране обновляется.
Пример процедуры проверки на полноту знаний в таблицах, связанных с таблицей "Предприятия":
erez:=false;//Признак неполноты. Устанавливается в true, если нашли неполноту.
EntrDataModule.CheckEntrQuery.FindFirst;//Переходим на первую запись информации с сервера
repeat
j:=0;//Счётчик внутреннего цикла
repeat
if EntrDataModule.CheckEntrQuery.Fields[j].AsInteger=0 then
erez:=true;//Если нашли неполноту, устанавливаем признак.
inc(j);
until (j=EntrDataModule.CheckEntrQuery.FieldCount) or (erez=true);//Оканчиваем просмотр, если //просмотрели всю строку или нашли неполноту
if erez=false then //Если неполнота не найдена, переходим к следующей строке
EntrDataModule.CheckEntrQuery.FindNext;
until (EntrDataModule.CheckEntrQuery.RecNo=EntrDataModule.CheckEntrQuery.RecordCount-1) or (erez=true);//Заканчиваем работу, если просмотрели всю таблицу или нашли неполноту.
На вход процедуры проверки полноты знаний поступает информация с сервера, представленная в виде таблицы, в каждой строке которой занесено количество записей, связанных с записью таблицы "Предприятия", номер которой соответствует номеру строки, в каждой из подчинённых таблиц. Если присутствует нулевое значение, то в данном случае это означает, что о предприятии не занесены какие-либо данные, например, производимые изделия, режимы, экономические показатели или показатели материальной базы. Поэтому каждое нулевое значение обозначает неполноту, которую необходимо устранить для того, чтобы модуль логического вывода мог делать адекватные заключения, обращаясь к этой базе знаний.
III.
ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ
1. РАЗРАБОТКА ТЕСТОВ И ТЕСТОВЫХ ПРОГРАММ
В связи с тем, что разрабатываемый программный продукт имеет архитектуру "клиент-сервер", возникает необходимость тестирования как клиентской части, так и серверной.
Тесты можно разбить на следующие группы:
1) Тесты, проверяющие правильность работы программного продукта с данными;
2) Тесты, проверяющие правильность функционирования интерфейса пользователя.
1.1. Тесты, проверяющие правильность работы программного продукта с данными.
Необходимо проверить правильность работы процедур добавления, удаления и изменения данных. Также необходимо проверить правильность функционирования механизмов каскадного удаления.
Тест правильности добавления данных:
Добавление данных в таблицу;
Получение обновлённой информации с сервера
До проведения теста в таблице, с которой проводится тест, информации нет (рис. 26).
Рис. 26. Таблица "Экономические показатели" до проведения теста.
После выполнения процедуры добавления данных и обновления информации с сервера в таблице появились введённые данные (рис. 27). Следовательно, тест пройден успешно.
Рис. 27. Таблица "Экономические показатели" после добавления данных.
Также можно увидеть, что в поле "Ключ предприятия" было автоматически занесено верное значение.
Для проверки правильности процедуры модификации необходимо в таблицу добавить ещё несколько записей (рис. 28) для того, чтобы проверить изменяется ли именно та запись, которую необходимо модифицировать.
Рис. 28. Тестовый набор данных.
После добавления данных модифицируем показатель с ключом 13. После обновления данных с сервера видно, что запись правильно изменилась (рис. 29).
Рис. 29. Таблица "Экономические показатели" после модификации данных.
Теперь, для проверки правильности процедуры удаления, удалим эту запись. Результат процедуры удаления представлен на рис. 30.
Рис. 30. Таблица "Экономические показатели" после удаления показателя с ключом 13.
После обновления данных с сервера видно, что показатель действительно был удалён.
Для проверки процедуры каскадного удаления необходимо:
Добавить запись в главную таблицу ("Предприятия");
Добавить связанные с ней записи в подчинённые таблицы ("Экономические показатели", "Материальная база", "Режимы", "Архив", "Изделия");
Удалить запись в таблице "Предприятия";
Получить обновлённые данные с сервера.
После проведения теста можно увидеть, что после удаления главной записи все связанные с ней записи в подчинённых таблицах также были удалены.
Для проверки функционирования программного продукта при большом числе записей в таблице (порядка 10000) была создана специальная тестовая программа. Окно этой программы изображено на рис. 31.
Рис. 31. Тестовая программа.
Данная программа добавляет заданное количество записей. Данные заносятся во все поля записи. После занесения записей в таблицу, необходимо провести операции добавления данных, модификации и удаления для того, чтобы проверить:
Время реакции системы на запрос;
Правильность настроек псевдонима BDE.
Результаты теста показывают, что время реакции системы на запрос соответствует требованиям технического задания.
1.2. Тесты, проверяющие правильность функционирования интерфейса пользователя.
Интерфейс пользователя должен правильно реагировать на различные действия пользователя и блокировать все некорректные действия пользователя. Система также не должна позволять вводить заведомо некорректные данные.
Пока пользователь не подключился к серверу, он не может производить никаких операций над записями, поэтому программой заблокированы все соответствующие элементы управления (рис. 32).
Рис. 32. Состояние элементов управления пока клиентская часть не подключена к серверу.
Доступна только кнопка подключения, а также кнопка вывода отчёта, нажав на которую, можно настроить принтер, а также получить просматривать ранее сохранённые на диске отчёты.
Если в какую-либо таблицу ещё не внесены данные то кнопки модификации и удаления недоступны, а доступны только кнопка добавления и кнопка обновления данных с сервера, а также кнопка отчёта (рис. 33).
Рис. 33. Состояние элементов управления, если осуществлено подключение к серверу, но в таблицу ещё не внесены данные.
Если данные в таблице есть, то активируются все элементы управления.
При попытке удаления записи запрашивается подтверждение (рис. 34):
Рис. 34. Запрос подтверждения удаления.
Удаление производится только в том случае, если пользователь подтверждает своё желание.
При вводе данных отслеживается, корректные ли введены значения: например, некоторые поля не должны быть пустыми. Если поле пусто, то добавление записи не производится, и выводится сообщение о том, что поле не должно быть пусто (рис. 35).
Рис. 35. Сообщение, выдающееся, если при вводе данных в таблицу "Предприятия" поле названия предприятия пусто.
IV.
ЭКОНОМИЧЕСКАЯ ЧАСТЬ
1. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ПРИНЯТЫХ РЕШЕНИЙ
1.1. Обоснование выбора СУБД.
В качестве СУБД была выбрана InterBase фирмы Borland. Достоинствами данной СУБД по сравнению с конкурирующими (например, Microsoft SQL Server, Oracle) являются бесплатность, открытый исходный код, невысокие системные требования, приемлемая производительность при решении поставленных перед разрабатываемым программным продуктом задач. Также существуют версии InterBase для различных операционных систем.
Открытость исходного кода обеспечивает возможность самостоятельного исправления ошибок в данной СУБД независимо от её производителя, а также обуславливает наличие множество свободно распространяемых утилит и удобных средств администрирования, что позволяет снизить эксплуатационные расходы. Также открытость исходного кода позволяет обеспечить приемлемый уровень безопасности.
Невысокие системные требования позволяют использовать эту СУБД не только в локальных сетях, но и на локальных компьютерах.
Существование версий InterBase для различных операционных систем обеспечивает свободу в выборе операционной системы для компьютера, на котором данная СУБД будет работать.
1.2. Обоснование выбора языка программирования.
На сегодняшний день для семейства операционных систем Windows существует достаточно много средств разработки приложений (Borland Delphi, Microsoft Visual C++ и т. д.). Проведём краткий анализ наиболее распространённых из них.
1.2.1. Delphi.
Delphi разработана фирмой Borland, и является компонентной объектно-ориентированной средой быстрой разработки приложений.
Среди преимуществ можно отметить:
Широкие возможности среды;
Возможность быстро разрабатывать приложения;
Относительную простоту разработки приложений;
Мощную подсистему работы с базами данных;
Большое количество готовых компонентов;
Быстрый компилятор;
Возможность создания кроссплатформных приложений.
Основным недостатком является большой размер исполнимого файла, и, как следствие, повышенная требовательность приложений к аппаратным ресурсам.
1.2.2. Visual C++.
Visual C++ разработан фирмой Microsoft, и, также как и Delphi, является объектно-ориентированной средой разработки приложений.
Среди преимуществ можно отметить:
Большие возможности при создании приложений по Windows;
Небольшой объём исполнимых файлов;
Большая скорость работы приложений по сравнению с приложениями, написанными на Delphi;
Более стабильная, чем у Delphi, среда разработки.
Основным недостатком является высокая трудоёмкость разработки приложения, и, как следствие, требуется большее время на разработку приложения, чем в Delphi.
1.2.3. Вывод.
Так как в разрабатываемом программном продукте основная нагрузка ложится на серверную часть, а клиентская часть в основном осуществляет вывод информации и организует взаимодействие пользователя с базой через графический интерфейс, и, так как программный продукт должен быть готов в сжатые сроки, представляется целесообразным остановить выбор на Delphi.
ЗАКЛЮЧЕНИЕ
Результатом работы стала база знаний предприятий. Программный продукт обладает следующими возможностями:
Ввод, коррекция и просмотр фактов.
Проверка на полноту знаний.
Поиск по различным ключам.
Сортировка по основному полю.
Формирование отчетов.
Хранение данных в течение длительного периода времени.
Разработка программного продукта проводилась с учётом требований технического задания.
Программный продукт функционирует под управлением семейства операционных систем Win32.
Пути развития разработанного программного продукта:
Увеличение количества таблиц базы для того, чтобы механизм логического вывода мог делать более адекватные заключения, используя данную базу;
Улучшение функций проверки знаний для исключения противоречивости и неполноты знаний, а также поддержки их актуальности;
Улучшение возможностей редактирования фактов;
Перенос под различные операционные системы.
СПИСОК ЛИТЕРАТУРЫ
1) Пугачёв Е.К. Исследование методов представления и обработки знаний. Методические указания по выполнению лабораторных работ по дисциплине Системы искусственного интеллекта. - М.: МГТУ, 2000.- 35 с.
2) Представление и использование знаний /Под ред. У. Уэно, М. Исидзука. - М.: Мир, 1989. - 220 с.
3) Искусственный интеллект: Справочник в 3-х книгах. - М.: Радио и связь, 1990. Книга 2. Модели и методы /Под ред. Д.А. Поспелова. - 304 с.
4) Минский М. Фреймы для представления знаний. - М.: Энергия, 1979.- 51 с.
5) Гофман В.Э, Хомоненко А.Д. Delphi 6. - СПб.: БХВ-Петербург, 2002. - 1152 с.: ил.
6) Иванова Г.С., Ничушкина Т.Н. Проектирование программного обеспечения. Методическое пособие по выполнению и оформлению курсовых, дипломных и квалификационных работ. М.: МГТУ, 2002.- 128 с.
7) Тейксейра С., Пачеко К. Delphi 5. Руководство разработчика. Т. 2. Разработка компонентов и программирование баз данных: Пер. с англ. - М.: Вильямс, 2000. - 992 с.: ил.
ПРИЛОЖЕНИЕ 1.
РУКОВОДСТВО СИСТЕМНОГО АДМИНИСТРАТОРА
1. Требования программы.
Базе знаний требуется сервер InterBase 6.0, а также установленный на компьютере клиента BDE (входит в дистрибутив).
2. Установка программы.
Для установки программы нужно запустить Setup.exe и следовать инструкциям программы установки.
После завершения работы инсталлятора потребуется зарегистрировать базу на сервере InterBase. Для этого необходимо запустить сервер, подключиться к нему из программы IBConsole и выбрать пункт Register... из меню Database.
На компьютере, где установлен клиент, будет установлен также механизм BDE, в котором будет автоматически создан псевдоним MyBase. Здесь если это необходимо, должен быть внесён правильный путь к базе. Остальные настройки изменений не требуют.
3. Администрирование.
Администрирование базы осуществляется с помощью программы IBConsole, входящей в комплект сервера InterBase. Здесь можно управлять пользовательскими полномочиями, проводить резервное копирование данных, осуществлять "сборку мусора" из базы и т. п. За подробностями следует обратиться к документации сервера InterBase.
По умолчанию в базе существует учётная запись с именем SYSDBA и паролем masterkey. Она даёт пользователю, заходящему под этим именем, все привилегии. Эту учётную запись следует использовать только для первоначального доступа к базе, и сменить пароль администратора как можно скорее.
4. Удаление.
Для удаления базы с сервера следует удалить ссылку на неё из сервера InterBase, выбрав пункт Unregister из меню Database. Затем можно просто удалить файл с данными с сервера.
Для удаления клиентской части следует зайти в средство "Установка и удаление программ" панели управления и удалить программу "Enterprises Knowledge Base".
ПРИЛОЖЕНИЕ 2.
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
1. Подключение к серверу.
После запуска появляется основное окно программы (рис. П2.1):
Рис. П2.1. Главная форма приложения.
Для того чтобы начать работу с базой знаний необходимо подключиться к ней. Подключение осуществляется путём выбора пункта "Подключиться" из меню "Подключение". Появится окно ввода пароля (рис. П2.2):
Рис. П2.2. Окно ввода пароля.
Пароль следует получить у системного администратора.
После ввода пароля станут доступны данные базы знаний. Права доступа определяются системным администратором.
2. Работа с данными.
По данным в таблице можно перемещаться, проводить поиск, удалять, добавлять, редактировать, выводить на печать. Для главной таблицы предприятий возможна фильтрация по названию предприятия, в остальных выводятся только записи, связанные с записью в главной таблице. Доступ к таблицам можно получить путём выбора соответствующих записей в меню "Таблицы".
Эти операции проводятся аналогично для всех таблиц, поэтому будет рассмотрено их выполнение только для главной таблицы предприятий.
2.1. Добавление данных.
При нажатии на кнопку добавления появляется форма ввода данных (рис. П2.3):
Рис. П2.3. Форма ввода данных.
В поля следует ввести данные. Нажатие кнопки "Добавить" приведёт к сохранению данных в базе знаний. Нажатие кнопки "Очистить" приведёт к очистке полей формы. При нажатии на кнопку "Закрыть" форма закрывается.
2.2. Удаление данных.
Для удаления данных необходимо выбрать удаляемую запись и нажать кнопку удаления. Появится окно с запросом подтверждения на удаление (рис. П2.4):
Рис. П2.4. Запрос подтверждения на удаление.
После нажатия кнопки "Yes" запись будет удалена. При нажатии кнопки "No" запись удалена не будет.
2.3. Изменение данных.
Для изменения данных записи следует выделить запись и нажать на кнопку изменения. Появится форма изменения данных с уже введёнными данными записи (рис. П2.5):
Рис. П2.5. Форма изменения данных.