Смекни!
smekni.com

Экспертная система. Анализ передачи телеметрических данных со спутника (стр. 2 из 2)

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.

Результат работы программы:

Загрузка БД:

Добавление:

Анализ:

Сохранение БД: