Автор: Пользователь скрыл имя, 03 Ноября 2014 в 19:20, курсовая работа
Целью работы является разработка экспертной системы по подбору сотового телефона по определённым критериям на основании анализа запросов покупателя, и ее реализация в языке Object Pascal.
Исходя из поставленной цели, выделяют следующие задачи исследования:
1. Анализ информации о мобильных телефонах.
2. Изучение методов построения базы знаний.
3. Разработка модели построения базы знаний.
4. Изучение механизмов логического вывода.
5. Реализация экспертной системы в языке программирования Object Pascal, который используется в среде программирования Delphi
Введение 3
Глава 1. Экспертные системы 5
1.1 Основные понятия экспертной системы 5
1.2 Классификация и структура экспертных систем 6
1.3 Базы знаний и модели представления знаний 8
1.4. Механизмы логического вывода 11
Глава 2. Выбор среды разработки ЭС 13
2.1. Инструментальные средства проектирования и разработки экспертных систем 13
2.2. Оболочки экспертных систем 15
2.3. Языки программирования 17
2.4. Среда программирования Delphi 19
Глава 3. Предметная область ЭС 22
3.1. Понятие предметной области 22
3.2. Предметная область ЭС «Выбор мобильного телефона 24
Глава 4. Руководство пользователя ЭС «По выбору мобильного телефона» 27
Заключение 29
Список использованной литературы: 31
Приложение 32
Результаты разработанного проекта в рамках определенной темы показали ее эффективность и работоспособность.
Необходимо отметить так же недостатки программы, к ним можно отнести малый объем базы знаний и простой дизайн, так как программа создавалась в учебных, а не коммерческих целях. Для внедрения данного проекта в работу необходимо значительно расширить количество параметров и их вариативность и разработать более привлекательный для пользователя дизайн.
Таким образом, можно считать правомерным и результативным достижение цели и решение задач данного исследования: разработка ЭС «Выбор мобильного телефона».
Возможности применения разработанного проекта для обычного покупателя (пользователя) не вызывают сомнений, что подтверждает актуальность данного исследования.
Список использованной литературы:
Приложение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, ADODB, Buttons, jpeg,
DBCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Image1: TImage;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ComboBox1: TComboBox;
Label4: TLabel;
ComboBox2: TComboBox;
Label5: TLabel;
ComboBox3: TComboBox;
Label6: TLabel;
Edit1: TEdit;
ComboBox4: TComboBox;
Label7: TLabel;
ComboBox5: TComboBox;
Label8: TLabel;
ComboBox6: TComboBox;
Label9: TLabel;
ComboBox7: TComboBox;
Label10: TLabel;
ComboBox8: TComboBox;
Label11: TLabel;
ComboBox9: TComboBox;
Label12: TLabel;
ComboBox10: TComboBox;
Label13: TLabel;
Label14: TLabel;
ComboBox11: TComboBox;
Label15: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label16: TLabel;
Label17: TLabel;
ComboBox12: TComboBox;
Label18: TLabel;
ComboBox13: TComboBox;
Label19: TLabel;
procedure BitBtn2Click(Send er: TObject);
procedure ComboBox1Change(Send er: TObject);
procedure ComboBox2Change(Send er: TObject);
procedure ComboBox3Change(Send er: TObject);
procedure ComboBox4Change(Send er: TObject);
procedure ComboBox5Change(Send er: TObject);
procedure ComboBox6Change(Send er: TObject);
procedure ComboBox7Change(Send er: TObject);
procedure ComboBox8Change(Send er: TObject);
procedure ComboBox9Change(Send er: TObject);
procedure ComboBox10Change(Send er: TObject);
procedure BitBtn3Click(Send er: TObject);
procedure ComboBox11Change(Send er: TObject);
procedure ComboBox12Change(Send er: TObject);
procedure Edit2Change(Send er: TObject);
procedure Edit3Change(Send er: TObject);
procedure FormActivate(Send er: TObject);
procedure ComboBox13Change(Send er: TObject);
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form1: TForm1;
//обозначение
a31:string; // переменная для фильтрации а31=а11+а12+итд
a11:string; // переменная для каждого поля фильтрации
a12:string; // переменная для каждого поля фильтрации
a13:string; // переменная для каждого поля фильтрации
a14:string; // переменная для каждого поля фильтрации
a15:string; // переменная для каждого поля фильтрации
a16:string; // переменная для каждого поля фильтрации
a17:string; // переменная для каждого поля фильтрации
a18:string; // переменная для каждого поля фильтрации
a19:string; // переменная для каждого поля фильтрации
a20:string; // переменная для каждого поля фильтрации
a21:string; // переменная для каждого поля фильтрации
a22:string; // переменная для каждого поля фильтрации
a23:string; // переменная для каждого поля фильтрации
a51:string;
a52:integer;
a61:integer;
a62:integer;
a71:string;
a72:string;
a00:integer; // переменная для длины строки
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Send er: TObject);
var
s:string;
begin
a61:=0;
a62:=0;
if a71<>'' then // Преобразование текста при наборе диапазона Цены в числовой формат
a61:=strtoint(a71);
if a72<>'' then
a62:=strtoint(a72);
if (a62=0) and (a61<>0) then // При условии задания начального диапазона верхний формирутся на максимум
a62:=999999;
begin
Adotable1.Filtered:=False;
adotable1.First;
while adotable1.Eof<>true do //Цикл для прочтения файла от начала до конца
begin //при завершение цикла переходим на переменную для фильтрации
adotable1.edit;
adotable1.FieldValues['Цана']:
adotable1.Post;
if strtoint(adotable1.Fields[33].
if strtoint(adotable1.Fields[33].
begin
adotable1.edit;
adotable1.FieldValues['Цана']:
adotable1.Post;
end ;
adotable1.Next; //Переход на начало цикла
end ;
end ;
a00:=0;
a31:=''; // формируем переменную для фильтрации
if a11<>'' then
a31:=a31 + a11 + ' and ';
if a12<>'' then
a31:=a31 + a12 + ' and ';
if a13<>'' then
a31:=a31 + a13 + ' and ';
if a14<>'' then
a31:=a31 + a14 + ' and ';
if a15<>'' then
a31:=a31 + a15 + ' and ';
if a16<>'' then
a31:=a31 + a16 + ' and ';
if a17<>'' then
a31:=a31 + a17 + ' and ';
if a18<>'' then
a31:=a31 + a18 + ' and ';
if a19<>'' then
a31:=a31 + a19 + ' and ';
if a20<>'' then
a31:=a31 + a20 + ' and ';
if a21<>'' then
a31:=a31 + a21 + ' and ';
if a22<>'' then
a31:=a31 + a22 + ' and ';
if a23<>'' then
a31:=a31 + a23 + ' and ';
if a61+a62<>0 then // Проверяем заданный диапазон или нет
begin
a31:=a31+'Цана='+ '1'; //Добавляем диапазон к фильтрацию
a00:=1;
end
else
//В результате получаем а31 на конце с полем 'and' длиной 5знаков
begin //для этого длину строки и Удаляем последние 5 символов
a00:=length(a31); // подсчет символов
delete(a31,a00-4,5); //Удаляем последние 5 символов
end ;
if a00=0 then
s:= ' Для
работы Экспертной Системы
edit1.Text:=s;
edit1.Visible:=True; // делаем невидимым edit1
if a00<>0 then
edit1.Text:='';
if a00=0 then // проверяем есть ли данные для фильтрации если a00=0,
Adotable1.Filtered:=False; //то БД приводится в исходное состояние
Adotable1.Filtered:=true;
Adotable1.Filter:=a31;
begin
a52:=0;
adotable1.First;
while adotable1.Eof<>true do //Реализуем счётчик подсчёта отфильтрованных записей по
begin // по схеме цикла с условным переходом
a52:=a52+1;
adotable1.Next; //Переход на начало цикла
end ;
end ;
Form2.Edit1.Text:=inttostr(
if a00<>0 then // если длина строки не пустая, т.е выбран параметр, то
form1.Hide; //скрываем форму1
if a00<>0 then // если длина строки не пустая, т.е выбран параметр, то
form2.ShowModal; //отображаем форму2
if a00=0 then // если длина строки пустая, т.е не выбран параметр, то
form1.Show; //отображаем форму1
if a00=0 then // если длина строки пустая, т.е не выбран параметр, то
form2.Hide; //скрываем форму2
end ; // формируем переменные по выпадаещему списку
procedure TForm1.ComboBox1Change(Send er: TObject);
begin
a11:='Производитель='+ QuotedStr(combobox1.Text); // Записываем в переменную а11 и т.д а12...а22
if combobox1.Text='' then
a11:='';
end ;
procedure TForm1.ComboBox2Change(Send er: TObject);
begin
if combobox2.Text='Да' then
a12:='[FM радио]='+ QuotedStr('есть');
if combobox2.Text='Нет' then
a12:='[FM радио]='+ QuotedStr(combobox2.Text);
if combobox2.Text='' then
a12:='';
end ;
procedure TForm1.ComboBox3Change(Send er: TObject);
begin
a13:='Цвет='+ QuotedStr(combobox3.Text);
if combobox3.Text='' then
a13:='';
end ;
procedure TForm1.ComboBox4Change(Send er: TObject);
begin
a14:='[Тип корпуса]='+ QuotedStr(combobox4.Text);
if combobox4.Text='' then
a14:='';
end ;
procedure TForm1.ComboBox5Change(Send er: TObject);
begin
a15:='[Сенсорный экран]='+ QuotedStr(combobox5.Text);
if combobox5.Text='' then
a15:='';
end ;
procedure TForm1.ComboBox6Change(Send er: TObject);
begin
a16:='[Поддержка двух SIM карт]='+ QuotedStr(combobox6.Text);
if combobox6.Text='' then
a16:='';
end ;
procedure TForm1.ComboBox7Change(Send er: TObject);
begin
a17:='[MP3 плеер]='+ QuotedStr(combobox7.Text);
if combobox7.Text='' then
a17:='';
end ;
procedure TForm1.ComboBox8Change(Send er: TObject);
begin
a18:='Wi-Fi='+ QuotedStr(combobox8.Text);
if combobox8.Text='' then
a18:='';
end ;
procedure TForm1.ComboBox9Change(Send er: TObject);
begin
a19:='Bluetooth='+ QuotedStr(combobox9.Text);
if combobox9.Text='' then
a19:='';
end ;
procedure TForm1.ComboBox10Change(Send er: TObject);
begin
a20:='[3G]='+ QuotedStr(combobox10.Text);
if combobox10.Text='' then
a20:='';
end ;
procedure TForm1.BitBtn3Click(Send er: TObject);
begin
Form1.Close;
end ;
procedure TForm1.ComboBox11Change(Send er: TObject);
begin
a21:='Цена='+ QuotedStr(combobox11.Text);
if combobox11.Text='' then
a21:='';
end ;
procedure TForm1.ComboBox12Change(Send er: TObject);
begin
a22:='[Разрешение экрана]='+ QuotedStr(combobox12.Text);
if combobox12.Text='' then
a22:='';
end ;
procedure TForm1.ComboBox13Change(Send er: TObject);
begin
a23:='[емкость аккумулятора]='+ QuotedStr(combobox13.Text);
if combobox13.Text='' then
a23:='';
end ;
procedure TForm1.Edit2Change(Send er: TObject);
begin
a71:=form1.Edit2.text; // Записываем в переменную а71, то что ввели в поле edit2
end ;
procedure TForm1.Edit3Change(Send er: TObject);
begin
a72:=form1.Edit3.text; // Записываем в переменную а72, то что ввели в поле edit3
end ;
procedure TForm1.FormActivate(Send er: TObject);
begin
edit1.Visible:=false; //Изначально делаем невидимым edit1
end ;
end .
______________________________
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids;
type
TForm2 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure BitBtn1Click(Send er: TObject);
procedure BitBtn2Click(Send er: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Send er: TObject);
begin
form2.Close;
form1.show;
end ;
procedure TForm2.BitBtn2Click(Send er: TObject);
begin
Form1.Close;
Form2.Close;
end ;
procedure TForm2.DBGrid1CellClick(
begin
//Form3.ShowModal;
form3.Image1.Picture.
Form3.ShowModal;
end ;
end .
______________________________
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm3 = class(TForm)
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form3: TForm3;
implementation
{$R *.dfm}
end .
Информация о работе Разработка экспертной системы по выбору мобильного телефона