Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 19:46   #1
Yo_Asakyra
 
Регистрация: 17.12.2011
Сообщений: 4
Вопрос Создание экспертной системы

Зравствуйте всем.
У меня стоит задание:
Создать небольшую экспертную систему, которая бы давала совете пользователю про ошибки ПК. Т.е. Пользователь отвечает на вопросы программы, которая в свою очередь выдаёт советы.
Не могу придумать нормалый способ извлечения вопросов и ответов из БД.
Помогите люди
Вот ссылка на сам проект.
http://www.fayloobmennik.net/1304671
Вот примерная схема работы
Изображение не подгружается, вот ссылка : http://imageshost.ru/photo/41122/id1154631.html



Исходники программы
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, IBCustomDataSet, IBQuery, IBDatabase,
  Grids, DBGrids;

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    Button1: TButton;
    Label1: TLabel;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBQuery1: TIBQuery;
    DataSource1: TDataSource;
    Button2: TButton;
    Button3: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  IdxQuestion,IdxAnswer:integer; PushRadioButton:string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 IBQuery1.Close;
 IBQuery1.SQL.Clear;
 IBQuery1.SQL.Add('select Question from Questions where QestionIDMain=:ID');
 IBQuery1.Prepare;
 IBQUery1.ParamByName('ID').AsInteger:=IdxQuestion;
 IBQuery1.Open;
 Label1.Caption:=IBQuery1.FieldByName('Question').AsString;
Case RadioGroup1.ItemIndex Of
0:Begin
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('select Answer from Answers where AnswerIDMain=:ID');
  IBQuery1.Prepare;
  IBQUery1.ParamByName('ID').AsInteger:=IdxQuestion;
  IBQuery1.Open;
  ShowMessage(IBQuery1.FieldByName('Answer').AsString);
 End;
1:Begin
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('select Answer from Answers where AnswerIDMain=:ID');
  IBQuery1.Prepare;
  IBQUery1.ParamByName('ID').AsInteger:=IdxAnswer;
  IBQuery1.Open;
  ShowMessage(IBQuery1.FieldByName('Answer').AsString);
 End;
End;
 RadioGroup1.ItemIndex:=-1;
 IdxQuestion:=IdxQuestion+1;
 IdxAnswer:=IdxAnswer+2;
 Button1.Enabled:=False;
End;

procedure TForm1.Button2Click(Sender: TObject);
begin
 IdxQuestion:=1;
 Label1.Caption:='';
 IBQuery1.Close;
 IBQuery1.SQL.Clear;
 IBQuery1.SQL.Add('select Question from Questions where QestionIDMain=:ID');
 IBQuery1.Prepare;
 IBQUery1.ParamByName('ID').AsInteger:=IdxQuestion;
 IBQuery1.Open;
 Label1.Caption:=IBQUery1.FieldByName('Question').AsString;
 Button2.Enabled:=False;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
 If RadioGroup1.ItemIndex >= 0 then Button1.Enabled:=True
 else Button1.Enabled:=False;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Form1.Close;
end;

end.

Последний раз редактировалось Yo_Asakyra; 17.12.2011 в 19:49.
Yo_Asakyra вне форума Ответить с цитированием
Старый 18.12.2011, 18:25   #2
Yo_Asakyra
 
Регистрация: 17.12.2011
Сообщений: 4
По умолчанию

Всем "спасибо", что откликнулись и помогли.

Не придумал ничего лучше, как построить логику на IF-х, хотя и это до конца не работает(
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin


case IdxQuestion of

1:if (IBQuery1.FieldByName('Question').AsString='Êîìïüþòåð ðàáîòàåò?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=2 else  ShowMessage(IBQuery2.FieldByName('Answer').AsString);

2:if (IBQuery1.FieldByName('Question').AsString='Êîìïüþòåð âêëþ÷àåòñÿ?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=3 else IdxQuestion:=4;

3:if (IBQuery1.FieldByName('Question').AsString='Ýëåêòðè÷åñòâî åñòü?') and (RadioGroup1.ItemIndex=0)
then ShowMessage(IBQuery2.FieldByName('Answer').AsString) else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

4:if (IBQuery1.FieldByName('Question').AsString='Èçîáðàæåíèå åñòü íà ìîíèòîðå?') and (RadioGroup1.ItemIndex=0)
then IdxQuestion:=7 else IdxQuestion:=5;

5:if (IBQuery1.FieldByName('Question').AsString='Ìîíèòîð ïîäêëþ÷åí ê ñåòè?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=6 else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

6:if (IBQuery1.FieldByName('Question').AsString='Ëàìïî÷êà íà ìîíèòîðå ãîðèò?') and (RadioGroup1.ItemIndex=0)
then ShowMessage(IBQuery2.FieldByName('Answer').AsString) else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

7:if (IBQuery1.FieldByName('Question').AsString='Åñòü ïèñê ïðè çàãðóçêå ÎÑ?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=8 else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

8:if (IBQuery1.FieldByName('Question').AsString='Çàãðóæàåòñÿ ÎÑ?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=9 else IdxQuestion:=10;

9:if (IBQuery1.FieldByName('Question').AsString='Åñòü ñîîáùåíèå îá îøèáêå ÎÑ?') and (RadioGroup1.ItemIndex=0)
then ShowMessage(IBQuery2.FieldByName('Answer').AsString) else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

10:if (IBQuery1.FieldByName('Question').AsString='Ïðè âõîäå â ñèñòåìó åñòü çâóê?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=11 else IdxQuestion:=12;

11:if (IBQuery1.FieldByName('Question').AsString='Ó âàñ åñòü çâóêîâàÿ êàðòà?') and (RadioGroup1.ItemIndex=1)
then IdxQuestion:=12 else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

12:if (IBQuery1.FieldByName('Question').AsString='Ñèñòåìà çàãðóçèëàñü áåç îøèáîê?') and (RadioGroup1.ItemIndex=0)
then ShowMessage(IBQuery2.FieldByName('Answer').AsString) else ShowMessage(IBQuery2.FieldByName('Answer').AsString);

End;
RadioGroup1.ItemIndex:=-1;
Button1.Enabled:=False;

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select Question from Questions where QestionIDMain=:ID');
IBQuery1.Prepare;
IBQUery1.ParamByName('ID').AsInteger:=IdxQuestion;
IBQuery1.Open;


IBQuery2.Close;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Add('select Answer from Answers where AnswerIDMain=:ID');
IBQuery2.Prepare;
IBQUery2.ParamByName('ID').AsInteger:=IdxAnswer;
IBQuery2.Open;

Label1.Caption:=IBQuery1.FieldByName('Question').AsString;

End;
Yo_Asakyra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание поисковой системы L_Anya Помощь студентам 1 28.10.2011 23:18
Алгоритм работы экспертной системы INTERNIST bondik Свободное общение 0 15.04.2011 11:41
Создание бесшумной системы Blade Компьютерное железо 13 04.02.2009 18:27
Создание образа системы cemron Операционные системы общие вопросы 6 04.07.2008 03:52