signalip(NewNode,_,_),
ParentID=NewNode div 100,NewNode > NodeID,!,
ResearchNode(NewNode);
Key=13,shiftwindow(21),write("да"),nl,nl,
signalip(NewNode,_,Title),
shiftwindow(22),write(Title,"; "),
NodeID=NewNode div 100,!,
ResearchNode(NewNode);
Key=13,FaultFound(NodeID).
/*Обнаружение*/
FaultFound(NodeID):-
makewindow(23,31,26,"Сигналрасшифрован",5,10,9,60,1,2," "),nl,
signalip(NodeID,RepID,Title),
decodip(RepID,_,RepText),!,
attribute(OldAttr),attribute(30),
write("Сигнал: "),attribute(OldAttr),write(Title),nl,
attribute(30),
write("Расшифровка: "),attribute(OldAttr),write(RepText),nl,
readchar(_),
removewindow(23,1).
/*СохранениеБД*/
SaveBD:-
makewindow(10,90,91,"СохранениеБД",5,10,10,60,1,2," "),
write("\n\n Введитеимяфайла:"),
readln(Filename),
save(FileName,FaultBD),
removewindow(31,1).
/*ЗагрузкаБД*/
LoadBDFile:-
makewindow(10,90,91,"",5,10,10,60,1,2," "),
dir("","*.*",FileName),
LoadBD(FileName),
fail.
LoadBDFile:-
removewindow(30,1).
/*Создание меню справки*/
EditBD:-
menu(5,24,90,95,["Добавление сигнала","Типы сигнала","Просмотр сигналов","Просмотр типа сигнала","Удаление сигнала","Удаление типа сигнала","Назад"],"Редактирование базы данных",0,Ch),
EditSelect(Ch).
/*Выборпунктаменю*/
EditSelect(Ch):-
Ch=0;
Ch=7;
Ch=1,AddFault;
Ch=3,ShowFaults;
Ch=5,DeleteFault;
Ch=2,AddRepair;
Ch=4,ShowRepairs;
Ch=6,DeleteRepair.
/*Добавлениесигнала*/
AddFault:-
makewindow(40,90,95,"Добавление сигнала",4,5,14,70,1,2," "),
write("сигналы в БД хранятся в виде:\n signalip(Номер_сигнала, Номер_описания, Название)"),nl,
write("Номер сигнала - номер предсигнала\n"),
write("Номер_типа сигнала - номер записи типа сигнала \n"),
write("Название - краткое описание сигнала\n "),
attribute(OldAttr),attribute(95),
write("Новыйсигнал\n"),
write("Номер_сигнала:"),readint(NewID),
write("Номер_типасигнала:"),readint(NewRep),
write("Название:"),readln(NewTitle),
attribute(OldAttr),
assertz(signalip(NewID,NewRep,NewTitle),FaultBD),
write("Записьдобавлена- "),readchar(_),
removewindow(40,1).
AddFault:-
removewindow(40,1).
/*Вызовпросмотрасигналов*/
ShowFaults:-
makewindow(40,90,95,"Просмотрсигналов:",1,0,24,80,1,2," "),
ShowFault(0,0),!,
removewindow(40,1).
/*Просмотрсигналов*/
ShowFault(_,_):-
signalip(NewID,RepID,Title),
write(" ",NewID,"\t|",RepID,"\t|",Title),nl,
fail.
ShowFault(_,_):-
attribute(OldAttr),attribute(95),
write("Просмотр закончен. Нажмите любую клавишу"),readchar(_),
attribute(OldAttr).
/*Удалениесигнала*/
DeleteFault:-
makewindow(40,90,95,"Удалениесигнала:",4,5,14,70,1,2," "),
write("Введитеномерудаляемогосигнала:"),readint(DelID),
signalip(DelID,_,_),!,
retractall(signalip(DelID,_,_),FaultBD),!,
attribute(OldAttr),attribute(95),
write("Записьудалена"),readchar(_),
attribute(OldAttr),
removewindow(40,1).
/*Добавлениетипасигнала*/
AddRepair:-
makewindow(40,90,95,"Добавлениетипаасигнала",4,5,14,70,1,2,""),
write("ТипасигналавБДхранятсяввиде:\n decodip(Номер_типасигнала, Название, Метод_расшифровки)"),nl,
write("Номер_типа сигнала - Номер записи типа сигнала\n"),
write("Название - краткое описание данных расшифровки\n"),
write("Метод_расшифровки - метод расшифровки данных\n"),
attribute(OldAttr),attribute(95),
write("Новоеописание\n"),
write("Номер_типасигнала:"),readint(NewID),
write("Название:"),readln(NewDescr),
write("Метод_расшифровки:"),readln(NewAdvice),
attribute(OldAttr),
assertz(decodip(NewID,NewDescr,NewAdvice),FaultBD),
write("Записьдобавлена"),readchar(_),
removewindow(40,1).
AddRepair:-
removewindow(40,1).
/*Просмотрописаний*/
Showrepairs:-
makewindow(40,90,95,"Просмотрописаний:",1,0,24,80,1,2," "),
ShowRepair(0,0),!,
removewindow(40,1).
ShowRepair(_,_):-
decodip(NewID,Descr,Advice),
write(" ",NewID,"\t|",Descr,"\t|",Advice),nl,fail.
ShowRepair(_,_):-
attribute(OldAttr),attribute(30),
write("Нажмителюбуюклавишу"),readchar(_),
attribute(OldAttr).
/*Удалениетипасигнала*/
DeleteRepair:-
makewindow(40,90,95,"Удалениетипасигнала",4,5,14,70,1,2," "),
write("Введитеномерудаляемоготипасигнала:"),readint(DelID),
decodip(DelID,_,_),!,
retractall(decodip(DelID,_,_),FaultBD),!,
attribute(OldAttr),attribute(30),
write("Записьудалена"),readchar(_),
attribute(OldAttr),
removewindow(40,1).
/*Созданиеокнаошибок*/
ErrorExitProg(Msg):-
ExitProg.
/*Выход из программы*/
ExitProg:-
UnLoadBD,
exit(0).
/*Главная функция Main*/
Main:-
Zastavka,
CreateTitle,
LoadBD("valekbd.dat"),
Start,
ExitProg.
Результат работы программы:
Загрузка БД:
Добавление:
Анализ:
Сохранение БД: