Программный модуль базы знаний
Разработка, составление и отладка программного модуля "База знаний" средствами программы Quick Sales. Описание схемы базы: возможности редактирования, удаления и добавления данных. Текст программы и контрольный пример поиска через панель управления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.01.2013 |
Размер файла | 519,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
3
Курсовая работа
Программный модуль базы знаний
СОДЕРЖАНИЕ
1. ЦЕЛЬ РАБОТЫ
2. ПОСТАНОВКА ЗАДАЧИ
3. ОПИСАНИЕ ПРОГРАММЫ
4. СХЕМА ПРОГРАММЫ
5. ТЕКСТ ПРОГРАММЫ
6. КОНТРОЛЬНЫЙ ПРИМЕР
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ
1. ЦЕЛЬ РАБОТЫ
Цель работы - написать и отладить программу, позволяющую работать с базами знаний, предусмотреть возможность редактирования, удаления, добавления записи.
модуль данные программа quick sales
2. ПОСТАНОВКА ЗАДАЧИ
Задание
Необходимо составить базу знаний, вводить вопрос и находить в базе ответ. База знаний состоит из продукционных моделей.
Модуль «База знаний» в программе Quick Sales
База знаний Quick Sales представляет собой хранилище информации, которое состоит из двух частей: вопросов и ответов.
Вызов
Модуль «База знаний» в Quick Sales может быть вызван одним из двух способов:
· пункт меню: «Модуль/База знаний»,
· инструментальная панель.
Модуль «Базы знаний» обеспечивает:
· поиск ответов на вопросы,
· добавление, редактирование, удаление вопросов и ответов,
· экспорт вопросов и ответов в текстовый файл или MS Excel.
Информация в базе знаний представляется в виде таблицы, которая имеет две основные колонки -- «Вопрос» и «Ответ»:
Рис. 1
Любой пользователь всегда может поискать в базе знаний ответ на интересующий его вопрос. Однако для того, чтобы
· добавить, изменить или удалить информацию,
· экспортировать информацию,
Фильтр предоставляет пользователю возможность поиска нужной информации по заданному критерию. Используя фильтр, Вы можете найти интересующий Вас вопрос/ответ, располагая совсем небольшой информацией (например, предполагая, какие фразы или слова есть в описании вопроса).
Для начала поиска нажмите кнопку «Фильтр» или клавишу «F3». Раскроется окно «Фильтр по базе знаний», которое выглядит так:
Рис. 2
В окне следует задать критерии поиска. Искать можно:
· по коду вопроса,
· по группе продуктов, к которым относится информация,
· по вхождению заданного Вами текста в текст вопроса/ответа,
· по ссылке на файл.
Для поиска по тексту вопроса/ответа достаточно указать:
· часть текста (фразу) в кавычках, которая есть в тексте,
· несколько слов из текста,
· одно слово или даже его часть.
Можно проводить поиск одновременно по нескольким критериям.
После того, как Вы сформируете Ваш запрос, нажмите кнопку «OK» - выполнится поиск. В результате система отберет и выведет на экран все вопросы/ответы, удовлетворяющие указанным Вами критериям.
Добавить информацию
Для ввода нового вопроса (и, возможно, сразу же ответа) используйте кнопку «Добавить» или клавишу «Insert». Откроется окно:
Рис.3
Впишите текст вопроса в поле «Вопрос», а ответ на него - в поле «Ответ». Если же у Вас есть только вопрос, то впишите только вопрос. Возможно, позже кто-нибудь из Ваших коллег даст на него ответ. Если вопрос относится к какой-либо группе продуктов, обязательно укажите ее, чтобы потом легче было проводить поиск.
После того, как Вы заполните необходимые поля и нажмете «OK», в базе знаний появится новая информация.
Изменить информацию
Если Вы хотите изменить Ваш вопрос или скорректировать ответ на вопрос в базе знаний, выделите его и нажмите кнопку «Редактировать». Другой вариант -- просто щелкните два раза мышкой по вопросу. В результате откроется такое же окно, что и при добавлении новой информации. Скорректируйте данные и нажмите «OK».
Удалить информацию
Для удаления ненужного вопроса/совета выделите его в общем списке и нажмите кнопку «Удалить» или клавишу «Delete». Появится окно подтверждения.
Сервис/Экспорт
Экспорт предназначен для копирования в текстовый файл или в систему MS Excel информации из базы знаний.
Ниже описана последовательность Ваших действий для выполнения экспорта:
1. Выбрать пункт «Экспорт» меню кнопки «Сервис». Откроется окно, где необходимо указать те поля, которые будут экспортированы:
2. Определить, куда Вы будете экспортировать данные - в MS Excel или в текстовый документ
Теоретические сведения о продукционных моделях
Продукции (наряду с сетевыми моделями) являются наиболее популярными средствами представления знаний в информационных системах. В общем виде под продукцией понимают выражение вида A ->B. Обычное прочтение продукции выглядит так: ЕСЛИ А, ТО B. Импликация может истолковываться в обычном логическом смысле, как знак логического следования B из истинного А. Возможны и другие интерпретации продукции, например, А описывает некоторое условие, необходимое, чтобы можно было совершить действие B.
Продукционная модель или модель, основанная на правилах, позволяет представить знания в виде предложений типа «Если (условие), то (действие)».
Под условием понимается некоторое предложение -- образец, по которому осуществляется поиск в базе знаний, а под действием -- действия, выполняемые при успешном исходе поиска (они могут быть промежуточными, выступающими далее как условия, и терминальными или целевыми, завершающими работу системы).
При использовании продукционной модели база знаний состоит из набора правил, Программа, управляющая перебором правил, называется машиной вывода. Чаще всего вывод бывает прямой (от данных к поиску цели) или обратный (от цели для ее подтверждения - к данным). Данные -- это исходные факты, на основании которых запускается машина вывода.
Если в памяти системы хранится некоторый набор продукций, то они образуют систему продукций. В системе продукций должны быть заданы специальные процедуры управления продукциями, с помощью которых происходит актуализация продукций и выполнение той или иной продукции из числа актуализированных.
В состав системы продукций входит база правил (продукций), глобальная база данных и система управления. База правил - это область памяти, которая содержит совокупность знаний в форме правил вида ЕСЛИ - ТО.
Глобальная база данных -- область памяти, содержащая фактические данные (факты). Система управления формирует заключения, используя базу правил и базу данных. Существуют следующие способы формирования заключений -- прямые и обратные выводы.
Правила вывода бывает удобно представлять в виде дерева решений. Граф -- множество вершин, связанных дугами. Дерево -- граф, не содержащий циклов. В прямых выводах выбирается один из элементов данных, содержащихся в базе данных, и если при сопоставлении этот элемент согласуется с левой частью правила (посылкой), то из правила выводится соответствующее заключение и помещается в базу данных или исполняется действие, определяемое правилом, и соответствующим образом изменяется содержимое базы данных.
В обратных выводах процесс начинается от поставленной цели. Если эта цель согласуется с правой частью правила (заключением), то посылка правила принимается за подцель или гипотезу. Этот процесс повторяется до тех пор, пока не будет получено совпадение подцели с данными.
Математическая модель
Продукционная модель наиболее адекватно соответствует процедурному характеру знаний. Эта модель описывает знания с помощью, так называемых, правил продукции, которые являются программами, состоящими из одного оператора вида:
«ЕСЛИ<условие>, ТО <действие>»
В системе продукций с обратными выводами с помощью правил строится дерево И/ИЛИ, связывающее в единое целое факты и заключения; оценка этого дерева на основании фактов, имеющихся в базе данных, и есть логический вывод. Его можно представить в виде ориентированного графа G.
G = <V,E>
V = {1,2,3..n } - множество вершин графа G
E = {e1,e2,..,еn} - множество дуг
Пример графа правила:
Рис.4
1 - цена товара низкая
2 - цена устраивает покупателя
3 - продавец готов продать по такой цене
4 - сделка состоится
3. ОПИСАНИЕ ПРОГРАММЫ
Структура входных данных
Таблица 1 Входные данные
Имя |
Тип |
Назначение |
|
question |
string |
Строковая переменная, хранящая вопрос пользователя |
Структура выходных данных
Таблица 2 Выходные данные
Имя |
Тип |
Назначение |
|
answer |
string |
Строковая переменная, хранящая ответ |
Структура хранящихся в базе правил
Таблица 3 Правило
Имя |
Тип |
Назначение |
|
If |
string |
Строковая переменная, хранящая вопрос пользователя |
|
Then |
string |
Строковая переменная, хранящая ответ |
4. СХЕМА ПРОГРАММЫ
Иерархическая схема программы
Рис. 5
Main - основная программа
Edit - редактирование правила
Add - добавление правила в базу
Search - поиск ответа в базе
Delete - удалить правило из базы
LoadFromFile - загрузить базу из файла
SaveToFile - сохранить полученную базу в файл
Основная программа
Рис. 6
Алгоритм добавления
Рис. 7
Алгоритм поиска
Рис. 8
5. TЕКСТ ПРОГРАММЫ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
namespace kurs_tpr
{
public partial class MainForm : Form
{
string question;
string answer;
FileInfo file = new FileInfo("basa.txt");
int Index;
public struct RuleType
{
public string If;
public string Then;
}
RuleType[] ruleBase;
public MainForm()
{
InitializeComponent();
ruleBase = new RuleType[250];
Index = 0;
//загрузить из файла
// LoadFromFile( ref dataGridView1, "basa.txt");
}
public static void SaveToFile(DataGridView dataGridView, string fileName)
{
DataSet ds = (DataSet)dataGridView.DataSource;
ds.WriteXml(fileName);
}
public static void LoadFromFile(ref DataGridView dataGridView, string fileName)
{
dataGridView.Columns.Clear();
DataSet ds = new DataSet();
ds.ReadXml(fileName);
dataGridView.DataSource = ds;
dataGridView.DataMember = "zaraza";
dataGridView.Columns[0].HeaderText = "Код";
dataGridView.Columns[0].Width = 30;
dataGridView.Columns[1].Width = 250;
dataGridView.Columns[2].Width = 250;
dataGridView.Columns[1].HeaderText = "Вопрос";
dataGridView.Columns[2].HeaderText = "Ответ";
//добавить в массив
}
public void Search(string If,int n)
{
{
//If = Convert.ToString(dataGridView1[1, n-1].Value);
bool found = false;
int foundN = 0;
for (int i = n-1; i < ruleBase.Length; i++)
{
if (ruleBase[i].If == If)
{
found = true;
foundN = i;
}
}
if (found == true)
{
If = ruleBase[foundN].Then;
// MessageBox.Show(ruleBase[foundN].Then);
for (int i = 0; i < ruleBase.Length; i++)
{
if (ruleBase[i].If == If)
{
// found = true;
foundN = i;
}
}
// MessageBox.Show(ruleBase[foundN].Then);
if (found == true)
{
If = ruleBase[foundN].Then;
// MessageBox.Show(ruleBase[foundN].Then);
for (int i = 0; i < ruleBase.Length; i++)
{
if (ruleBase[i].If == If)
{
// found = true;
foundN = i;
}
}
MessageBox.Show(ruleBase[foundN].Then);
dataGridView1[2, foundN].Value = ruleBase[foundN].Then;
}
}
else
{
// MessageBox.Show("В базе данных недостаточно информации", "Ответ не найден");
DialogResult dlg= MessageBox.Show("Хотите добавить правило вручную?", "Ответ не найден", MessageBoxButtons.YesNo);
//если да
if (dlg == DialogResult.Yes)
{
AddForm subform = new AddForm();
subform.Show();
}
}
}
}
// добавить правило
private void toolStripButton1_Click(object sender, EventArgs e)
{
AddForm subform = new AddForm();
subform.ShowDialog();
if (subform.DialogResult == DialogResult.OK)
{
question = subform.textBox1.Text;
answer = subform.textBox2.Text;
DataSet ds = (DataSet)dataGridView1.DataSource;
ds.Tables[0].Rows.Add(dataGridView1.Rows.Count, question, answer);
int ind1;
int ind2;
int count=0;
if (question.Contains("("))
{
ind1 = question.IndexOf("(");
ind2 = question.IndexOf(")");
question = question.Substring(ind1 + 1, (ind2 - ind1 - 1));
count++;
}
//добавить в массив
ruleBase[Index].If = question;
ruleBase[Index].Then = answer;
Index++;
//записать в файл
SaveToFile(dataGridView1, "basa.txt");
}
//редактировать
private void toolStripButton2_Click(object sender, EventArgs e)
{
AskForm askform = new AskForm();
askform.Text = "Редактирование";
askform.label1.Text = "Введите номер правила, которое нужно отредактировать";
int n=0;
if (askform.ShowDialog() == DialogResult.OK)
{
n = Convert.ToInt32(askform.textBox1.Text);
askform.Close();
AddForm subform = new AddForm();
subform.Show();
subform.textBox1.Text = Convert.ToString(dataGridView1[1, n - 1].Value);
subform.textBox2.Text = Convert.ToString(dataGridView1[2, n - 1].Value);
// по номеру кода вопроса исправить в таблице и перезаписать в файле
string q = subform.textBox1.Text;
string a = subform.textBox2.Text;
if (subform.DialogResult == DialogResult.OK)
{
dataGridView1[1, n - 1].Value = q;
dataGridView1[2, n - 1].Value = a;
SaveToFile(dataGridView1, "basa.txt");
}
}
}
//удалить
private void toolStripButtonDelete_Click(object sender, EventArgs e)
{
DialogResult dlg = MessageBox.Show("Удалить запись из базы?", "Удалить", MessageBoxButtons.OKCancel);
// если ок
if (dlg == DialogResult.OK)
{
dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
SaveToFile(dataGridView1, "basa.txt");
}
}
//начать поиск
private void toolStripButtonSearch_Click(object sender, EventArgs e)
{
AskForm askform = new AskForm();
int n=0;
if (askform.ShowDialog() == DialogResult.OK)
{
n = Convert.ToInt32(askform.textBox1.Text);
askform.Close();
}
// string q = Convert.ToString(dataGridView1[1, n - 1].Value);
string q = ruleBase[n].If;
Search(q,n);
}
//загрузить базу из файла
private void toolStripButtonLoad_Click(object sender, EventArgs e)
{
openFileDialog1.DefaultExt = ".txt";
openFileDialog1.Filter = "Text documents (.txt)|*.txt";
openFileDialog1.ShowDialog();
DialogResult result = openFileDialog1.ShowDialog();
//if (result == DialogResult.OK)
//{
// Open document
string filename = openFileDialog1.FileName;
LoadFromFile(ref dataGridView1, filename);
int ind1;
int ind2;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
question = Convert.ToString(dataGridView1[1, i].Value);
answer = Convert.ToString(dataGridView1[2, i].Value);
if (question.Contains("("))
{
ind1 = question.IndexOf("(");
ind2 = question.IndexOf(")");
question = question.Substring(ind1 + 1, (ind2 - ind1 - 1));
}
if (answer.Contains("("))
{
ind1 = answer.IndexOf("(");
ind2 = answer.IndexOf(")");
answer = answer.Substring(ind1 + 1, (ind2 - ind1 - 1));
}
//добавить в массив
ruleBase[i].If = question;
ruleBase[i].Then = answer;
Index++;
}
// }
}
private void toolStripButtonSave_Click(object sender, EventArgs e)
{
saveFileDialog1.DefaultExt = ".txt";
saveFileDialog1.Filter = "Text documents (.txt)|*.txt";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = saveFileDialog1.FileName;
SaveToFile(dataGridView1, filename);
}
}
}
}
6. KОНТРОЛЬНЫЙ ПРИМЕР
Рис. 9 Вид программы при запуске
Рис. 10 Редактирование записи
Рис. 11 Удаление записи
Рис. 12 Поиск по базе
СПИСОК ЛИТЕРАТУРЫ
1. Немцов Л.Б., Котенко А.Г. Реализация функции настройки нечетких продукционных моделей - С.-Пб.: журнал «Системы управления и информационные технологии», «Научная книга»,2004.
ПРИЛОЖЕНИЕ
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Для добавления новой записи в базу нужно нажать на кнопку «Добавить». После появления окна (рис. 14), в полях «Вопрос», «Ответ» и «Группа» нужно указать соответствующую информацию и нажать на кнопку «ОК»
Рис. 14 Окно редактирования
Для редактирования записи нужно нажать на кнопку «Редактировать», после чего появится окно редактирования базы. В полях «Вопрос», «Ответ» и «Группа» будет отображаться информация из таблицы. Ее можно отредактировать и нажать на кнопку «ОК» для сохранения, после чего окно закроется, а в базе и таблице будет новая информация.
Для удаления записи необходимо выделить запись и нажать на кнопку «Удалить».
Рис. 15 Удаление записи
Для поиска нужной информации следует нажать кнопку «Фильтр». Появится окно изображенное на рис. 16.
Рис. 16. Окно поиска записи
Фильтрацию можно выполнять по коду, группе продукта, или какому-либо слову из вопроса или ответа.
Рис. 17. Фильтрация по группе продукта
Размещено на Allbest.ru
Подобные документы
Проектирование базы данных для библиотеки и разработка программы для её удобного использования. Пример работы приложения на примере поиска статей по заданным условиям, а также основных операций с данными – добавления в базу, редактирования и удаления.
курсовая работа [2,5 M], добавлен 23.02.2014Разработка программного продукта - базы данных "Экскурсия" в интегрированной среде программирования C++ Builder 6. Определение порядка просмотра данных базы, их редактирования и удаления. Особенности руководства пользователя и общего интерфейса программы.
курсовая работа [2,4 M], добавлен 03.11.2013База знаний - структурированная информация из области знаний для использования кибернетическим устройством (человеком). Классификация, структура, формат представления знаний, интеллектуальные системы поиска информации. Базы знаний на примере языка Пролог.
презентация [51,3 K], добавлен 17.10.2013Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.
курсовая работа [550,5 K], добавлен 08.06.2023Проектирование базы данных с использованием комплекса программных и языковых средств Microsoft Access. Модель данных, доступ к ним. Назначение, основные возможности и версии Access. Запуск программы; окно базы данных, формы для их ввода и редактирования.
курсовая работа [1,1 M], добавлен 30.12.2014Построение графа связей фактов и определение структуры базы знаний. Описание функций инициализации и констатации фактов, входных и выходных данных. Операции, направленные на занесение фактов и действий в базу знаний. Итоговое представление базы знаний.
курсовая работа [176,9 K], добавлен 13.11.2012Разработка графического интерфейса проекта (панель инструментов имеет 6 кнопок). Процедуры разделов программы: документа ThisDocument, программного модуля Module1 и пользовательских форм UserForm1, UserForm2 и Деление_амёбы. Тестирование программы.
курсовая работа [29,5 K], добавлен 14.12.2010Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Разработка информационной программы для риэлтерской конторы по учету клиентской базы и базы квартир с фиксированием всех операций по купле-продаже. Описание структуры базы данных. Создание запросов и отчетов. Инструкция по эксплуатации, текст программы.
курсовая работа [2,4 M], добавлен 07.09.2012