All pastes #2068074 Raw Edit

Something

public text v1 · immutable
#2068074 ·published 2011-05-24 07:06 UTC
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.