Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гончаров Курсовая LISP.doc
Скачиваний:
5
Добавлен:
27.04.2019
Размер:
248.83 Кб
Скачать

3. Функциональные модели и блок-схемы решения задачи

Функциональные модели и блок-схемы решения задачи представлены на рисунках 1 – 4.

Условные обозначения:

LST – список студентов и их оценок;

GR – список оценок студента.

Рисунок 1 – Функциональная модель решения задачи для функции SUM_GRADE

Рисунок 2 – Функциональная модель решения задачи для функции GET_GRADE

Рисунок 3 – Блок-схема решения задачи для функции SET_BEST_STUD

Рисунок 4 – Блок-схема решения задачи для функции SET_BAD_STUD

4. Программная реализация решения задачи

;INPUT-STREAM ПОТОК ВВОДА

(SETQ INPUT-STREAM (OPEN " D:\\STUDENTS.TXT" :DIRECTION :INPUT))

;СЧИТЫВАЕМ СПИСОК СТУДЕНТОВ

(SETQ STUDENTS (READ INPUT-STREAM))

;ЗАКРЫВАЕМ ФАЙЛ

(CLOSE INPUT-STREAM)

;ФУНКЦИЯ СУММИРУЕТ ВСЕ ОЦЕНКИ СТУДЕНТА

(DEFUN SUM_GRADE (LST)

(COND

((NULL LST) 0)

((ATOM LST) LST)

(T (+ (SUM_GRADE (CAR LST)) (SUM_GRADE (CDR LST))))))

;ФУНКЦИЯ ВОЗВРАЩАЕТ ИЗ СПИСКА СТУДЕНТА И ЕГО ОЦЕНОК, ТОЛЬКО ОЦЕНКИ

(DEFUN GET_GRADE (LST)

(CADR LST))

;ПОЛУЧАЕМ СУММУ ОЦЕНОК

(SETQ GRADE (MAPCAR 'SUM_GRADE (MAPCAR 'GET_GRADE STUDENTS)))

;ПОИСК ОТЛИЧНИКА

;ЕСЛИ СУММА ОЦЕНОК = 20 - ПЕЧАТАЕМ OTLICHNIK

(DEFUN SET_BEST_STUD (STUD GR)

(IF (= GR 20)

(APPEND STUD 'OTLICHNIK)

STUD))

;ПОИСК НЕУСПЕВАЮЩЕГО СТУДЕНТА

;ЕСЛИ ЕСТЬ ХОТЬ ОДНА 2 - ПЕЧАТАЕМ NEUSPEVAUWII

(DEFUN SET_BAD_STUD (LST)

(COND

((NULL LST) NIL)

((= (CAR LST) 2) 'NEUSPEVAUWII)

(T (SET_BAD_STUD (CDR LST)))))

;УСТАНАВЛИВАЕМ СТАТУС ОТЛИЧНИКА

(SETQ STUDENTS (MAPCAR 'SET_BEST_STUD STUDENTS GRADE))

;ПОЛУЧАЕМ ОЦЕНКИ

(SETQ STATUS (MAPCAR 'SET_BAD_STUD (MAPCAR 'GET_GRADE STUDENTS)))

;УСТАНАВЛИВАЕМ СТАТУС НЕУСПЕВАЮЩЕГО

(SETQ STUDENTS (MAPCAR 'CONS STUDENTS STATUS ))

;OUTPUT-STREAM ПОТОК ВЫВОДА

(SETQ OUTPUT-STREAM (OPEN " D:\\STUD_INFO.TXT" :DIRECTION :OUTPUT))

;ПЕЧАТАЕМ ПРОАНАЛИЗИРОВАННЫЙ СПИСОК В ФАЙЛ

(PRINT STUDENTS OUTPUT-STREAM)

;ЗАКРЫВАЕМ ФАЙЛ

(CLOSE OUTPUT-STREAM)

5. Пример выполнения программы

Пример 1.

Рисунок 5 – Входные данные

Рисунок 6 – Выходные данные

Пример 2.

Рисунок 7 – Входные данные

Рисунок 8 – Выходные данные

Заключение

В данной курсовой работе разработана информационная система анализа успеваемости студентов. Эта тема является актуальной в настоящее время, так как многие учебные заведения проводят анализ успеваемости учащихся для отслеживания уровня подготовки и выявления возможных недостатков в образовательном процессе. Система анализа успеваемости студентов обеспечивает расчет среднего бала успеваемости студента по дисциплине, выборку преуспевающего и отстающего студента.

Таким образом, данная программа по анализу успеваемости студентов делает наиболее простой работу пользователя в данной области и сокращает время на выполнение соответствующих операций.

В результате выполнения курсовой работы составлена функциональная модель для решения поставленной задачи. Проведён анализ полученных результатов, и сделаны необходимые выводы.

Созданная функциональная модель и ее Лисп-реализация могут служить органической частью решения более сложных задач.