Функциональные модели и блок-схемы решения задачи
Функциональные модели и блок-схемы решения задачи представлены на рисунках 1 – 4.
Условные обозначения:
LST – список студентов и их оценок;
GR – список оценок студента.
Рисунок 1 – Функциональная модель решения задачи для функции SUM_GRADE
Рисунок 2 – Функциональная модель решения задачи для функции GET_GRADE
Рисунок 3 – Блок-схема решения задачи для функции SET_BEST_STUD
Рисунок 4 – Блок-схема решения задачи для функции SET_BAD_STUD
Программная реализация решения задачи
; 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)
Пример выполнения программы
Пример 1.
Рисунок 5 – Входные данные
Рисунок 6 – Выходные данные
Пример 2.
Рисунок 7 – Входные данные
Рисунок 8 – Выходные данные
ЗАКЛЮЧЕНИЕ
В данной курсовой работе разработана информационная система анализа успеваемости студентов. Эта тема является актуальной в настоящее время, так как многие учебные заведения проводят анализ успеваемости учащихся для отслеживания уровня подготовки и выявления возможных недостатков в образовательном процессе. Система анализа успеваемости студентов обеспечивает расчет среднего бала успеваемости студента по дисциплине, выборку преуспевающего и отстающего студента.
Таким образом, данная программа по анализу успеваемости студентов делает наиболее простой работу пользователя в данной области и сокращает время на выполнение соответствующих операций.
В результате выполнения курсовой работы составлена функциональная модель для решения поставленной задачи. Проведён анализ полученных результатов, и сделаны необходимые выводы.
|
|
Созданная функциональная модель и ее Лисп-реализация могут служить органической частью решения более сложных задач.
Дата добавления: 2023-01-08; просмотров: 15; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!