31167-1 (663222), страница 3

Файл №663222 31167-1 (Разработка оболочки экспертной системы) 3 страница31167-1 (663222) страница 32016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

(define menucw(make-window "_____________________________ДИАГНОСТИКА" #!true))

(define vieww(make-window "____________ПРОСМОТР" #!true))

(define addiw(make-window "____________ДОБАВЛЕНИЕ БОЛЕЗНИ" #!true))

(define addsw(make-window "__________ДОБАВЛЕНИЕ СИМПТОМОВ" #!true))

(define rediw(make-window "________РЕДАКТИРОВАНИЕ БОЛЕЗНИ" #!true))

(define redsw(make-window "_______РЕДАКТИРОВАНИЕ СИМПТОМА" #!true))

(define deliw(make-window "______________УДАЛЕНИЕ БОЛЕЗНИ" #!true))

(define delsw(make-window "_____________УДАЛЕНИЕ СИМПТОМА" #!true))

(define submenuw(make-window "___Работа с:" #!true))

(define menulw(make-window "Введите ИМЯ ФАЙЛА :" #!true))

(define f)

(define *symptom*)

(define *it_is*)

(define *yes* '())

(define *no* '())

(define (start)

(window-set-position! mainw 1 1)

(window-set-size! mainw 23 78)

(window-clear mainw)

(mainmenu))

; Главное меню

(define (mainmenu)

(define ch)

(Window-Set-Position! mmenuw 3 15)

(Window-Set-Size! mmenuw 1 47)

(Window-Clear mmenuw)

(display " 1.Files 2.DataBase 3.Diagnosticka 4.Quit" mmenuw)

(do ((i 0 (+ i 0)))

((> i 5)i)

(Window-Set-Cursor! mainw 22 30)

(display "Ваш выбор :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(cond

((eq? ch #\1) (menufiles))

((eq? ch #\2) (menudb))

((eq? ch #\3) (menucons))

((eq? ch #\4) (exit))

)))

; Меню Файлов

(define (menufiles)

(define ch)

(Window-Set-Position! menufw 5 16)

(Window-Set-Size! menufw 4 8)

(Window-Clear menufw)

(Window-Set-Cursor! menufw 1 1)

(display "1.LOAD" menufw)

(Window-Set-Cursor! menufw 2 1)

(display "2.SAVE" menufw)

(do ((i 0 (+ i 0)))

((> i 5)i)

(Window-Set-Cursor! mainw 22 30)

(display "ВАШ ВЫБОР :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(cond

((eq? ch #\1) (loading))

((eq? ch #\2) (saving))

((eq? ch #\ESCAPE)

(Window-Delete menufw)

(mainmenu))

)))

; Меню БазыДанных

(define (menudb)

(define ch)

(Window-Set-Position! menudbw 5 26)

(Window-Set-Size! menudbw 6 10)

(Window-Clear menudbw)

(Window-Set-Cursor! menudbw 1 1)

(display "1.ADD " menudbw)

(Window-Set-Cursor! menudbw 2 1)

(display "2.DELETE" menudbw)

(Window-Set-Cursor! menudbw 3 1)

(display "3.REDACT" menudbw)

(Window-Set-Cursor! menudbw 4 1)

(display "4.VIEW" menudbw)

(do ((i 0 (+ i 0)))

((> i 5)i)

(Window-Set-Cursor! mainw 22 30)

(display "ВАШ ВЫБОР :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(cond

((eq? ch #\1)

(adding) (menudb))

((eq? ch #\2)

(deleting) (menudb))

((eq? ch #\3)

(redacting) (menudb))

((eq? ch #\4)

(viewing) (menudb))

((eq? ch #\ESCAPE)

(Window-Delete menudbw) (mainmenu))

)))

; Загрузка файла

(define (loading)

(Window-Set-Position! menulw 20 20)

(Window-Set-Size! menulw 1 40)

(Window-Clear menulw)

(Window-Set-Cursor! menulw 1 3)

(set! f (read-line menulw))

(Window-Delete menulw)

(with-input-from-file f

(lambda ()

(set! *symptom* (read))

(set! *it_is* (read))

(flush-input)

)))

; Запись файла

(define (saving)

(Window-Set-Position! menulw 20 20)

(Window-Set-Size! menulw 1 40)

(Window-Clear menulw)

(Window-Set-Cursor! menulw 2 3)

(set! f (read-line menulw))

(Window-Delete menulw)

(with-output-to-file f

(lambda ()

(write *symptom*)

(write *it_is*)

)))

;Меню диагностики

(define (menucons)

(Window-Set-Position! menucw 6 10)

(Window-Set-Size! menucw 17 57)

(Window-Clear menucw)

(experting *it_is*)

(window-delete menucw) )

(define (experting spis_ill)

(cond ((null? spis_ill) (board)

(display " НЕВОЗМОЖНО ОПРЕДЕЛИТЬ ДИАГНОЗ " menucw)

(wait menucw)

(set! *yes* '())

(set! *no* '()))

((exp_ill (cadar spis_ill) (caar spis_ill)))

(t (experting (cdr spis_ill))) ))

(define (exp_ill spis_num ill)

(define nums)

(define s)

(cond ((null? spis_num) (window-clear menucw) (window-set-cursor! menucw 1 1)

(display " У ВАС " menucw) (display ill menucw)

(display "." menucw)

(set! nums (find_sym ill *it_is*))

(set! *yes* '())

(set! *no* '())

(log_out nums))

(t (set! s (find_sym (car spis_num) *symptom*))

(yesno? s spis_num ill)) ))

(define (into y a)

(cond ((eq? a 'д) (set! *yes* (append *yes* (list y))))

(t (set! *no* (append *no* (list y)))) ))

(define (yesno? y spis_num ill)

(define ans)

(cond ((member y *no*) nil)

((member y *yes*) (exp_ill (cdr spis_num) ill))

(t (and (board) (display " СИМПТОМ: " menucw)

(display y menucw)

(display " [Д/Н] ? " menucw)

(set! ans (read menucw))

(into y ans) (eq? 'д ans)

(exp_ill (cdr spis_num) ill))) ))

(define (log_out nums)

(cond ((null? nums) (wait menucw))

(t (newline menucw) (display " " menucw)

(display (find_sym (car nums) *symptom*) menucw)

(log_out (cdr nums))) ))

(define (board)

(define gr)

(set! gr (window-get-cursor menucw))

(if (< (car gr) 18) (newline menucw)

(begin (window-clear menucw)

(window-set-cursor! menucw 1 1))))

(define (find_sym n spis_sym)

(if (equal? (caar spis_sym) n) (cadar spis_sym)

(find_sym n (cdr spis_sym)) ))

(define (wait wname)

(cond ((eq? (read-char wname) #\ESCAPE) t)

(t (wait wname)) ))

;Просмотр

(define (viewing)

(Window-Set-Position! vieww 11 15)

(Window-Set-Size! vieww 12 47)

(Window-Clear vieww)

(view_ill *it_is*)

(window-delete vieww) )

(define (view_ill spis_ill)

(cond ((null? spis_ill) t)

(t (window-set-cursor! vieww 1 2) (display "БОЛЕЗНЬ: " vieww)

(display (caar spis_ill) vieww)

(view_sym (cadar spis_ill))

(view_ill (cdr spis_ill))) ))

(define (view_sym spis_num)

(cond ((null? spis_num) (wait vieww) (window-clear vieww))

(t (newline vieww)

(display " " vieww)

(display (find_sym (car spis_num) *symptom*) vieww)

(view_sym (cdr spis_num))) ))

;Вспомогательное подменю

(define (submenu)

(Window-Set-Position! submenuw 11 25)

(Window-Set-Size! submenuw 4 14)

(Window-Clear submenuw)

(window-set-cursor! submenuw 1 1)

(display "1.БОЛЕЗНЯМИ" submenuw)

(window-set-cursor! submenuw 2 1)

(display "2.СИМПТОМАМИ" submenuw) )

;Добавление

(define (adding)

(define ch)

(submenu)

(Window-Set-Cursor! mainw 22 30)

(display "ВАШ ВЫБОР :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(window-delete submenuw)

(cond ((eq? ch #\1) (Window-Set-Position! addiw 6 10)

(Window-Set-Size! addiw 17 57)

(Window-Clear addiw) (add_ill)

(window-delete addiw))

((eq? ch #\2) (Window-Set-Position! addsw 6 10)

(Window-Set-Size! addsw 17 57)

(Window-Clear addsw) (add_sym)

(window-delete addsw))

((eq? ch #\ESCAPE))

(t (adding)) ))

(define ill)

(define sym)

;Добавление болезни

(define (add_ill)

(define n)

(window-set-cursor! addiw 1 1)

(display "Введите название новой БОЛЕЗНИ: " addiw)

(set! ill (read-line addiw))

(display " Чтобы ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ: end" addiw)

(newline addiw)

(set! n (caar (last-pair *symptom*)))

(set! *it_is* (append *it_is* (list (list ill

(addsyms (+ n 1) '() '() addiw)))

)) )

;Добавление симптомов

(define (add_sym)

(define n)

(define nums)

(window-set-cursor! addsw 1 2)

(display "БОЛЕЗНЬ: " addsw)

(set! ill (read-line addsw))

(display " Чтобы ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ: end" addsw)

(newline addsw)

(set! n (caar (last-pair *symptom*)))

(set! nums (find_sym ill *it_is*))

(set! *it_is* (delete! (list ill nums) *it_is*))

(set! *it_is* (append *it_is* (list (list ill

(addsyms (+ n 1) '() nums addsw)))

)) )

(define (addsyms nn spis_num nums nwin)

(display " СИМПТОМ: " nwin)

(set! sym (read-line nwin))

(if (equal? sym "end") (append nums spis_num)

(begin (set! *symptom* (append *symptom* (list (list nn sym))))

(addsyms (+ nn 1) (append spis_num (list nn)) nums nwin)) ))

;Редактирование

(define (redacting)

(define ch)

(submenu)

(Window-Set-Cursor! mainw 22 30)

(display "ВАШ ВЫБОР :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(window-delete submenuw)

(cond ((eq? ch #\1) (Window-Set-Position! rediw 11 10)

(Window-Set-Size! rediw 6 57)

(Window-Clear rediw) (red_ill)

(window-delete rediw))

((eq? ch #\2) (Window-Set-Position! redsw 11 10)

(Window-Set-Size! redsw 8 57)

(Window-Clear redsw) (red_sym)

(window-delete redsw))

((eq? ch #\ESCAPE))

(t (redacing)) ))

;Редактирование болезни

(define (red_ill)

(define nums)

(define ill1)

(window-set-cursor! rediw 1 1)

(display " Введите БОЛЕЗНЬ, название которой хотите" rediw)

(newline rediw)

(display " ИСПРАВИТЬ: " rediw)

(set! ill (read-line rediw))

(newline rediw)

(display " Введите ИСПРАВЛЕННОЕ название: " rediw)

(set! ill1 (read-line rediw))

(set! nums (find_sym ill *it_is*))

(set! *it_is* (delete! (list ill nums) *it_is*))

(set! *it_is* (append *it_is* (list (list ill1 nums)) )) )

;Редактирование симптома

(define (red_sym)

(define n1)

(define nums)

(define sym1)

(window-set-cursor! redsw 1 1)

(display " Введите БОЛЕЗНЬ, СИМПТОМ которой хотите" redsw)

(newline redsw)

(display " ИСПРАВИТЬ: " redsw)

(set! ill (read-line redsw))

(newline redsw)

(display " Введите СИМПТОМ, который хотите" redsw)

(newline redsw)

(display " ИСПРАВИТЬ: " redsw)

(set! sym (read-line redsw))

(display " Введите ИСПРАВЛЕННОЕ ЗНАЧЕНИЕ: " redsw)

(set! sym1 (read-line redsw))

(set! nums (find_sym ill *it_is*))

(set! n1 (sub sym *symptom* nums))

(set! *symptom* (delete! (list n1 sym) *symptom*))

(set! *symptom* (append *symptom* (list (list n1 sym1)) )) )

(define (sub x spis spis_x)

(let ((n (find_index x spis)))

(cond ((memb? n spis_x) n)

(t (sub x (cdr spis) spis_x)) )))

(define (find_index x spis)

(cond ((equal? (cadar spis) x) (caar spis))

(t (find_index x (cdr spis))) ))

(define (memb? a l)

(cond ((null? l) nil)

((equal? a (car l)) t)

(t (memb? a (cdr l))) ))

;Удаление

(define (deleting)

(define ch)

(submenu)

(Window-Set-Cursor! mainw 22 30)

(display "ВАШ ВЫБОР :" mainw)

(set! ch (read-char mainw))

(Window-Set-Cursor! mainw 22 30)

(display " " mainw)

(window-delete submenuw)

(cond ((eq? ch #\1) (Window-Set-Position! deliw 11 10)

(Window-Set-Size! deliw 4 57)

(Window-Clear deliw) (del_ill)

(window-delete deliw))

((eq? ch #\2) (Window-Set-Position! delsw 6 10)

(Window-Set-Size! delsw 17 57)

(Window-Clear delsw) (del_sym)

(window-delete delsw))

((eq? ch #\ESCAPE))

(t (deleting)) ))

;Удаление болезни

(define (del_ill)

(define nums)

(window-set-cursor! deliw 1 2)

(display "Введите название БОЛЕЗНИ, которую хотите" deliw)

(newline deliw)

(display " УДАЛИТЬ: " deliw)

(set! ill (read-line deliw))

(set! nums (find_sym ill *it_is*))

(set! *it_is* (delete! (list ill nums) *it_is*))

(delsyms nums) )

(define (delsyms spis_nums)

(cond ((null? spis_nums) t)

(t (set! *symptom* (delete!

(list (car spis_nums)

(find_sym (car spis_nums) *symptom*))

*symptom*))

(delsyms (cdr spis_nums))) ))

;Удаление симптомов

(define (del_sym)

(define nums)

(window-set-cursor! delsw 1 2)

(display "Введите название БОЛЕЗНИ, СИМПТОМЫ которой хотите" delsw)

(newline delsw)

(display " УДАЛИТЬ: " delsw)

(set! ill (read-line delsw))

(display " Чтобы ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ: end" delsw)

(newline delsw)

(set! nums (find_sym ill *it_is*))

(subdel nums ill) )

(define n0)

(define (subdel spis_nums ill)

(display " СИМПТОМ: " delsw)

(set! sym (read-line delsw))

(if (equal? sym "end") t

(begin (set! n0 (sub sym *symptom* spis_nums))

(set! *symptom* (delete! (list n0 sym) *symptom*))

(set! *it_is* (delete! (list ill spis_nums) *it_is*))

(set! *it_is* (append *it_is* (list (list ill

(del n0 spis_nums))) ))

(subdel (del n0 spis_nums) ill)) ))

(define (del x l)

(cond ((null? l) nil)

((equal? x (car l)) (cdr l))

(t (cons (car l) (del x (cdr l)))) ))

Характеристики

Тип файла
Документ
Размер
109,58 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6518
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее