rendered paste body/* Курсовая работа */
domains
Ii = integer
Ia = integer*
S = string
database - manual
disease(S,Ia)
symptom(S,Ii)
database - answers
ansyes(Ii)
ansno(Ii)
predicates
/* Четвертичные предикаты */
elist(Ia)
check_name(S)
check_list(Ia)
check_num(Ii)
check_sym(S)
check_ent(Ii)
entles(Ii,Ia)
edit_d(S,S,Ia)
edit_s(S,Ii)
/* Троичные предикаты */
add(S)
del(S)
edit(S)
viev(S)
clean
query
diagn
diagn2
/* Вторичные предикаты */
bdata(S)
bdw(S)
diagnosis(S)
/* Первичные предикаты */
choose(S)
/* Основные предикаты */
menu
title
repeat
program.
goal
clearwindow,
program.
/* Santa */
clauses
repeat.
repeat:-
repeat.
elist([H|T]):-
write("Ввод: "), readint(H),
H <> 0 ,!, elist(T).
elist([]).
program:-
title, repeat, menu, fail.
bdata("1"):- /* Сохранение БД */
makewindow(1,112,7,"Сохранение Базы Данных",1,3,22,60),
write("Введите имя файла(символом < 7)\n"),
write("Ввод: "), readln(Str),
concat(Str,".PRO",Name),
save(Name,manual),
write("\nСохранено успешно!\n"),
removewindow, clearwindow.
bdata("2"):- /* Загрузка БД(Удачно) */
retractall(_),
makewindow(1,112,7,"Загрузка Базы Данных",1,3,22,60),
dir("","*.pro",FILE,1,0,0),
consult(FILE,manual),
clearwindow,
write("База Данных успешно загружена\n"),
write("Нажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow,!.
bdata("2"):- /* Загрузка БД(Не Удачно) */
makewindow(1,112,7,"Загрузка Базы Данных",1,3,22,60),
write("База Данных не загружается! Ошибка.\n"),
write("Нажмите [Enter] для продолжения...\n"),
readln(_), removewindow, clearwindow.
bdata("3"):- /* Возврат в главное меню */
menu.
bdata(_):-
choose("1").
bdw("1"):- /* Добавление инфы в БД(100%) */
makewindow(1,112,7,"Добавление информации в БД",1,3,22,60),
write ("Выберите пункт меню:\n"),
write("-------------------------\n"),
write ("1. Добавление болезни\n"),
write ("2. Добавление симптома\n"),
write ("3. Возврат назад\n"),
write("-------------------------\n"),
readint(V), removewindow, clearwindow, add(V).
bdw("2"):- /* Удаление инфы из БД(100%) */
makewindow(1,112,7,"Удаление информации в БД",1,3,22,60),
write ("Выберите пункт меню:\n"),
write("-------------------------\n"),
write ("1. Удаление болезни\n"),
write ("2. Удаление симптома\n"),
write ("3. Возврат назад\n"),
write("-------------------------\n"),
readint(V), removewindow, clearwindow, del(V).
bdw("3"):- /* Редактирование инфы в БД(100%) */
makewindow(1,112,7,"Редактировать БД",1,3,22,60),
write ("Выберите пункт меню:\n"),
write("-------------------------\n"),
write ("1. Редактирование болезни\n"),
write ("2. Редактирование симптома\n"),
write ("3. Возврат назад\n"),
write("-------------------------\n"),
readint(V), removewindow, clearwindow, edit(V).
bdw("4"):- /* Просмотр БД */
makewindow(1,112,7,"Просмотр БД",1,3,22,60),
write ("Выберите пункт меню:\n"),
write("-------------------------\n"),
write ("1. Просмотр болезни\n"),
write ("2. Просмотр симптома\n"),
write ("3. Возврат назад\n"),
write("-------------------------\n"),
readint(V), removewindow, clearwindow, viev(V).
bdw("5"):- /* Возврат в главное меню */
menu.
bdw(_):-
choose("2").
edit("1"):-
makewindow(1,112,7,"Редактирование болезни",1,3,22,60),
write("Введите название болезни: "),
readln(Name), disease(Name,[H|T]),
write("\nСтарое имя болезни и список симптомов: \n"),
write(Name," - "), writelist([H|T]),
write("\n\nВведите новое название болезни: "),
readln(NewName),
write("\nВведите новый список симптомов: "),
elist(NewL), edit_d(Name,NewName,NewL),
removewindow, clearwindow.
edit("2"):-
makewindow(1,112,7,"Редактирование симптома",1,3,22,60),
write("Введите номер симптома: "),
readint(I), symptom(Name,I),
write("\nНомер и название старого симптома:\n"),
write(I," ",Name),nl,
write("\nВведите новое название для симптома - ",I,"\nВвод: "),
readln(NewName), edit_s(NewName,I),
removewindow, clearwindow.
edit("3"):-
choose("2").
edit(_):-
bdw("3").
edit_s(Name,N):-
retract(symptom(_,N)),
assert(simptom(Name,N)),!.
edit_s(_,_).
edit_d(Name,NewName,NewL):-
retract(disease(Name,_)),
assert(disease(NewName,NewL)),!.
edit_d(_,_,_).
del("1"):-
makewindow(1,112,7,"Удалить болезнь из БД",1,3,22,60),
write("Введите название болезни: "),
readln(Name), nl, disease(Name,_),
retract(disease(Name,_)), write("\nБолезнь удалена."),
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow,!.
del("1"):-
write("\nЭта болезнь не существует! Нечего удалять!"),
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow.
del("2"):-
makewindow(1,112,7,"Удалить симптом из БД",1,3,22,60),
write("Введите номер симптома: "),
readint(N), nl, symptom(_,N),
check_ent(N),
retract(symptom(_,N)), write("\nСимптом удалён."),
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow,!.
del("2"):-
write("\nЭтот симптом не существует! Нечего удалять!"),
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow.
del("3"):-
choose("2").
del(_):-
bdw("2").
check_ent(N):-
disease(_,IntL),
entles(N,IntL),
fail.
check_ent(_).
entles(N,[H|T]):-
H<>N,
entles(N,T),!.
entles(_,[]):-!.
entles(_,_):-
write("\nДля начала необходимо удалить этот симптом из описания болезни"),
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow, bdw("2").
add("1"):-
makewindow(1,112,7,"Добавление болезни в БД",1,3,22,60),
write("\nВведите название новой болезни: "), readln(Name),
check_name(Name), write("\nВведите список симптомов новой болезни\n"),
write("Только в числовой форме(0 = стоп)\n"),
elist(IntL), check_list(IntL),
assert(disease(Name,IntL)),
removewindow, clearwindow.
add("2"):-
makewindow(1,112,7,"Добавление симптома в БД",1,3,22,60),
write("Введите номер нового симптома: "), readint(N),
check_num(N), write("\nВведите имя симптома: "),
readln(Name), check_sym(Name),
assert(symptom(Name,N)).
removewindow, clearwindow,!.
add("2"):-
removewindow, clearwindow, bdw("1").
add("3"):-
choose("2").
add(_):-
bdw("1").
check_num(N):-
not(symptom(_,N)).
check_sym(Name):-
not(symptom(Name,_)),!.
check_sym(Name):-
write("\nСимптом с таким именем уже существует!!!"),
write("\nНажмите [Enter] для продолжения..."), readln(_),
removewindow, clearwindow, bdw("1").
check_name(Name):-
not(disease(Name,_)). /* dot or not dot? */
check_list([H|T]):-
symptom(_,H),
check_list(T),!.
check_list([]):-!.
check_list(_):-
write("\nОдин или несколько выбранных симптомов не существует"),
write("\nНажмите [Enter] для продолжения..."), readln(_),
removewindow, clearwindow, bdw("1").
diagnosis("1"):- /* Установление диагноза */
makewindow(1,112,7,"Диагностическое меню",1,3,22,60),
clean, query, diagn, /* <----------------------------------------------------- Сделать предикаты!!! */
write("\nНажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow,!.
diagnosis("1"):-
makewindow(1,112,7,"Диагностическое меню",1,3,22,60),
write("Вы здоровы!\n"),
write("Нажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow.
diagnosis("2"):- /* Объяснение диагноза */
makewindow(1,112,7,"Объяснение диагноза",1,3,22,60),
diagn2, write("\nНажмите [Enter] для продолжения..."), /* <----------------------------------------------------- Сделать предикаты!!! */
readln(_), removewindow, clearwindow,!.
diagnosis("2"):-
makewindow(1,112,7,"Объяснение диагноза",1,3,22,60),
write("Вы здоровы!\n"),
write("Нажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow.
diagnosis("3"):- /* Возврат в главное меню */
menu.
diagnosis(_):-
choose("3").
choose("1"):- /* База Данных(Сохранение, Загрузка) */
makewindow(1,112,7,"Файловое меню",1,3,22,60),
write("Выберите пункт меню:\n"),
write("-------------------------\n"),
write("1. Сохранить Базу Данных(БД)\n"),
write("2. Загрузить Базу Данных(БД)\n"),
write("3. Возврат в главное меню\n"),
write("-------------------------\n"),
write("Введите номер и нажмите [Enter]\n"),
write("Ввод: "), readln(V),
removewindow, clearwindow, bdata(V).
choose("2"):- /* База Данных(Операции) */
makewindow(1,112,7,"Редактирование",1,3,22,60),
write("Выберите пункт меню:\n"),
write("-------------------------\n"),
write("1. Добавить\n"), write("2. Удалить\n"),
write("3. Редактировать\n"), write("4. Показать\n"),
write("5. Возврат в главное меню\n"),
write("-------------------------\n"),
write("Введите номер и нажмите [Enter]\n"),
write("Ввод: "), readln(V),
removewindow, clearwindow, bdw(V).
choose("3"):- /* Диагностика */
makewindow(1,112,7,"Диагноз",1,3,22,60),
write("Выберите пункт меню:\n"),
write("-------------------------\n"),
write("1. Диагностика\n"), write("2. Диагностика(Результат)\n"),
write("3. Возврат в главное меню\n"),
write("-------------------------\n"),
write("Введите номер и нажмите [Enter]\n"),
write("Ввод: "), readln(V),
removewindow, clearwindow, diagnosis(V).
choose("4"):- /* О программе */
graphics(5,0,112),
write("-------------------------О программе----------------------\n"),
write(" Курсовой проект\n"),
write(" На тему проектирования экспертных систем\n\n"),
write(" Диагностика заболеваний печени и желчных путей\n"),
write(" Гепатит острый, хронический,\n"),
write(" цирроз печени, желчнокаменная болезнь.\n\n"),
write(" Студент: Теремков А.П.\n"),
write(" Преподаватель: Холкин И.И.\n\n"),
write(" Essay, Moscow, 2011 (c.)\n"),
write("----------------------------------------------------------\n"),
write("Для продолжения нажмите [Enter]..."), readln(_), text,
clearwindow.
choose("5"):-
retractall(_),
exit.
choose(_):-
menu.
menu:-
makewindow(1,112,7,"Главное меню",1,3,22,60),
write("Выберите пункт меню:\n"),
write("-------------------------\n"),
write("1. Файл\n"), write("2. Редактирование\n"),
write("3. Диагноз\n"), write("4. О программе\n"),
write("5. Выход из программы\n"),
write("-------------------------\n"),
write("Введите номер и нажмите [Enter]\n"),
write("Ввод: "), readln(P), removewindow,
clearwindow, choose(P).
title:-
makewindow(1,112,7,"Информация",1,3,22,60),
write(" МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ"),nl,
write(" Московский Государственный Институт"),nl,
write(" Радиотехники, Электроники и Автоматики"),nl,
write(" (Технический Университет)"),nl,nl,
write(" Кафедра ИТС"),nl,nl,
write(" Курсовая работа"),nl,nl,
write(" На тему:"),nl,
write(" Разработка Экспертной Системы"),nl,nl,
write("Студент: Теремков А.П."),nl,
write("Преподаватель: Доцент кафедры ИТС Холкин И.И."),nl,
write("Группа: ИТА-1-09"),nl,nl,nl,
write(" Москва, 2011"),nl,
write("----------------------------------------------------------\n"),
write("Нажмите [Enter] для продолжения..."),
readln(_), removewindow, clearwindow.