dlg_addauto_eh(_Win,e_Control(idc_enterpar,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
HT=win_GetCtlHandle(_Win,idc_na),
AutoType=win_GetText(HT), %запрос названия авто
AutoType<>"", %проверка корректности
not(auto(AutoType,_,_)), %Название не может повторяться!
HL=win_GetCtlHandle(_Win,id_stts),
lbox_GetSel(HL,S,_),
S=[Type|_], %Выбранный тип для этого авто
type(NType,Type,Param),
getvalue(Param,LValue), %Заполняем список значений параметров
asserta(auto(AutoType,NType,LValue)), %Обновление БД
win_Destroy(_Win),
dlg_note("Добавлен новое авто"),
!.
dlg_addauto_eh(_Win,e_Control(idc_enterpar,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
dlg_error("Новое авто не удалось добавить"),
!.
%END addauto, idc_enterpar _CtlInfo
%BEGIN addauto, e_Create
dlg_addauto_eh(_Win,e_Create(_CreationData),0):-!,
HDC=win_GetCtlHandle(_Win,id_stts),
retract(type(NType,Type1,PList)), %извлекаем название первого типа авто
assertz(type(NType,Type1,PList)), %перемещаем запись в конец БД
type(_,Type2,_), %вытаскиваем по одному типу из БД
lbox_add(HDC,Type2), %Заносим в ListBox
Type1=Type2, %Пока не дойдем до конца
!.
%END addauto, e_Create
dlg_addauto_eh(_,_,_):-!,fail.
%END_DLG addauto
%BEGIN_DLG allauto
/**************************************************************************
Creation and event handling for dialog: allauto
**************************************************************************/
constants
%BEGIN allauto, CreateParms, 22:36:59-1.11.2007, Code automatically updated!
dlg_allauto_ResID = idd_allauto
dlg_allauto_DlgType = wd_Modal
dlg_allauto_Help = idh_contents
%END allauto, CreateParms
predicates
dlg_allauto_eh : EHANDLER
dlg_allauto_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
dlg_allauto_update(DIALOG_VAL_LIST)
clauses
dlg_allauto_Create(Parent):%MARK allauto, new variables
dialog_CreateModal(Parent,dlg_allauto_ResID,"",
[
%BEGIN allauto, ControlList, 22:36:59-1.11.2007, Code automatically updated!
df(allautolist,listbox([],[0]),nopr),
df(lbxauto,listbox([],[0]),nopr)
%END allauto, ControlList
],
dlg_allauto_eh,0,VALLIST,ANSWER),
dlg_allauto_handle_answer(ANSWER,VALLIST).
dlg_allauto_handle_answer(idc_ok,VALLIST):-!,
dlg_allauto_update(VALLIST).
dlg_allauto_handle_answer(idc_cancel,_):-!. % Handle Esc and Cancel here
dlg_allauto_handle_answer(_,_):errorexit().
dlg_allauto_update(_VALLIST):%BEGIN allauto, Update controls, 22:36:59-1.11.2007, Code automatically updated!
dialog_VLGetListBox(allautolist,_VALLIST,_ALLAUTOLIST_ITEMLIST,_ALLAUTOLIST_SELECT),
dialog_VLGetListBox(lbxauto,_VALLIST,_LBXAUTO_ITEMLIST,_LBXAUTO_SELECT),
%END allauto, Update controls
true.
%MARK allauto, new events
%BEGIN allauto, parameters _CtlInfo
dlg_allauto_eh(_Win,e_Control(parameters,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
HL=win_GetCtlHandle(_Win,lbxauto),
lbox_GetSel(HL,S,_), %получаем название выделенного авто
S=[Auto|_],
auto(Auto,NType,LValue), %получаем список значений параметров
type(NType,Type,LParam), %получаем список названий параметров
STR="Тип авто: ", %формируем строку вывода
concat(STR,Type,STR2),
concat(STR2,"\n",STR3),
allparam(LParam,LValue,STR3,STR4),
HT=win_GetCtlHandle(_Win,idct_allparam),
win_SetText(HT,STR4), %выводим строку
!.
%END allauto, parameters _CtlInfo
%BEGIN allauto, idc_finding _CtlInfo
dlg_allauto_eh(_Win,e_Control(idc_finding,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
HL=win_GetCtlHandle(_Win,allautolist),
HT=win_GetCtlHandle(_Win,lbxauto),
lbox_Clear(HT),
lbox_GetSel(HL,S,_), %получаем название выделенного авто
S=[AutoType|_],
type(NType,AutoType,Lparam),
getval(Lparam,Lval),
retract(auto(Name,NType,Lvals)),
assertz(auto(Name,NType,Lvals)),
auto(Name1,NType,Lvalu),
findauto(Name1,Lval,Lvalu,HT),
Name1=Name,
!.
%END allauto, idc_finding _CtlInfo
%BEGIN allauto, e_Destroy
dlg_allauto_eh(_Win,e_Destroy,0):-!,
!.
%END allauto, e_Destroy
%BEGIN allauto, allautolist _CtlInfo
%BEGIN allauto, e_Create
%*****************вывод списка имеющихся названий авто**********************
dlg_allauto_eh(_Win,e_Create(_CreationData),0):-!,
HDC=win_GetCtlHandle(_win,allautolist),
retract(type(Num1,Name,LParam)), %считываем первой название авто из БД
assertz(type(Num1,Name,LParam)), %пееремещаем его в конец
type(Num2,Name1,_), %считываем все названия типов авто
lbox_add(HDC,Name1), %и заносим их в ListBox
Num1=Num2,
lbox_SetSel(HDC,0,b_true), %Выделяем первое
!.
%END allauto, e_Create
dlg_allauto_eh(_,_,_):-!,fail.
%END_DLG allauto
%BEGIN_DLG autotype
/**************************************************************************
Creation and event handling for dialog: autotype
**************************************************************************/
constants
%BEGIN autotype, CreateParms, 22:47:37-25.10.2007, Code automatically updated!
dlg_autotype_ResID = idd_autotype
dlg_autotype_DlgType = wd_Modal
dlg_autotype_Help = idh_contents
%END autotype, CreateParms
predicates
dlg_autotype_eh : EHANDLER
dlg_autotype_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
dlg_autotype_update(DIALOG_VAL_LIST)
clauses
dlg_autotype_Create(Parent):%MARK autotype, new variables
dialog_CreateModal(Parent,dlg_autotype_ResID,"",
[
%BEGIN autotype, ControlList, 22:47:37-25.10.2007, Code automatically updated!
df(idc_type,editstr("",[]),nopr)
%END autotype, ControlList
],
dlg_autotype_eh,0,VALLIST,ANSWER),
dlg_autotype_handle_answer(ANSWER,VALLIST).
dlg_autotype_handle_answer(idc_ok,VALLIST):-!,
dlg_autotype_update(VALLIST).
dlg_autotype_handle_answer(idc_cancel,_):-!. % Handle Esc and Cancel here
dlg_autotype_handle_answer(_,_):errorexit().
dlg_autotype_update(_VALLIST):%BEGIN autotype, Update controls, 22:47:37-25.10.2007, Code automatically updated!
_IDC_TYPE_VALUE = dialog_VLGetstr(idc_type,_VALLIST),
%END autotype, Update controls
true.
%MARK autotype, new events
%BEGIN autotype, idc_close _CtlInfo
dlg_autotype_eh(_Win,e_Control(idc_close,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
win_Destroy(_Win),
!.
%END autotype, idc_close _CtlInfo
%BEGIN autotype, idc_param _CtlInfo
%*******************Надатие на кнопу для указания названий параметров *******************
dlg_autotype_eh(_Win,e_Control(idc_param,_CtrlType,_CtrlWin,_CtlInfo),0):HDC=win_GetCtlHandle(_Win,idc_type),
Type=win_GetText(HDC), %считываем новый тип
Type<>"", %проверка на корректность
not(type(_,Type,_)), %он нновый
getname(L), %накапливаем список названий параметров
retract(ntype(N)), %считываем прежнее число типов
N2=N+1, %обновляем число типов
asserta(ntype(N2)), %записываем его
asserta(type(N2,Type,L)), %записываем информацию о типах
win_Destroy(_Win),
dlg_note("Добавлен новый тип"),
!.
dlg_autotype_eh(_Win,e_Control(idc_param,_CtrlType,_CtrlWin,_CtlInfo),0):-
dlg_error("Не удалось добавлить новый тип"),!.
%END autotype, idc_param _CtlInfo
dlg_autotype_eh(_,_,_):-!,fail.
%END_DLG autotype
%BEGIN_DLG hlp
/**************************************************************************
Creation and event handling for dialog: hlp
**************************************************************************/
constants
%BEGIN hlp, CreateParms, 01:19:23-26.10.2007, Code automatically updated!
dlg_hlp_ResID = idd_hlp
dlg_hlp_DlgType = wd_Modal
dlg_hlp_Help = idh_contents
%END hlp, CreateParms
predicates
dlg_hlp_eh : EHANDLER
dlg_hlp_handle_answer(INTEGER EndButton,DIALOG_VAL_LIST)
dlg_hlp_update(DIALOG_VAL_LIST)
clauses
dlg_hlp_Create(Parent):%MARK hlp, new variables
dialog_CreateModal(Parent,dlg_hlp_ResID,"",
[
%BEGIN hlp, ControlList, 01:19:23-26.10.2007, Code automatically updated!
%END hlp, ControlList
],
dlg_hlp_eh,0,VALLIST,ANSWER),
dlg_hlp_handle_answer(ANSWER,VALLIST).
dlg_hlp_handle_answer(idc_ok,VALLIST):-!,
dlg_hlp_update(VALLIST).
dlg_hlp_handle_answer(idc_cancel,_):-!. % Handle Esc and Cancel here
dlg_hlp_handle_answer(_,_):errorexit().
dlg_hlp_update(_VALLIST):%BEGIN hlp, Update controls, 01:19:23-26.10.2007, Code automatically updated!
%END hlp, Update controls
true.
%MARK hlp, new events
dlg_hlp_eh(_,_,_):-!,fail.
%END_DLG hlp
Программа и методика испытаний
Объект испытаний
Наименование системы
Полное название системы: Лабораторная №2. Фреймовая модель представления знаний.
Назначение системы
Программа предназначена для демонстрации представления знаний с помощью фреймовой модели.
Цель испытаний
Целью испытаний является выявление ошибок и недочетов, допущенных во время программирования.
Средства и порядок испытаний
Во время испытаний использовались технические средства:
· процессор Intel Celeron с тактовой частотой 1200 MHz;
· оперативная память 384 Mб;
· видеокарта и монитор, поддерживающие разрешение 1024x768 точек и больше;
· свободное дисковое пространство 1.9 Гб;
· клавиатура;
· манипулятор мышь.
Во время испытаний использовалось программное обеспечение:
· операционная система Microsoft Windows 2000
· Visual Prolog 5.2
Испытание программы проводились в следующем порядке:
· испытание на корректность (адекватно ли программа реагирует на ввод-вывод информации);
· испытание на правильность;
· испытание на надежность (процент отказа системы).
Был произведен запуск системы. (Приложение. Рис. 1.)
Для начала работы выберем пункт меню «Работа», подменю «Новый тип авто». (Приложение. Рис. 2.). Далее были введены названия параметров для данного типа. (Приложение. Рис. 3.).
Далее выберем пункт меню «Новое авто» и добавим новое название авто (Приложение. Рис. 4.) и введем значения параметров для данного авто (Приложение. Рис. 5.)
Затем выберем пункт меню «Поиск» - появится список всех типов авто (Приложение. Рис. 6.) – выбираем какой-либо тип и нажимаем кнопку поиск, вводим значения параметров для поиска (Приложение. Рис. 7.) – справа в ListBox-е выводится список автомобилей с параметрами, удовлетворяющими значениям введенным для поиска. (Приложение. Рис. 8.). При нажатии на кнопку «Параметры» можно посмотреть список параметров для этого авто (Приложение. Рис. 9.).
В результате работы программы производится добавления типов авто, конкретных названий авто и вывод информации о содержании базы данных. Программное обеспечение было проверено при различных начальных условиях.
В процессе тестирования программа сработала правильно, результат
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.