rendered paste body/* Курсовая работа */domains Ii = integer Ia = integer* S = stringdatabase - 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.