Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Заблокирован

База данных успеваемости студентов

19.02.2015, 22:52. Показов 1782. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Небольшой и простой пример обработки данных успеваемости студентов и составления рейтинга успеваемости.
Написано на AutoLISP, однако может быть легко переведено на другие диалекты
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
;;; STUDYDB.lsp
 
;; база студентов
(setq db '((db
            (sidorov satisf)
            (ivanov excellent)
            (petrov excellent)
 
           )
           (math
            (ivanov excellent)
            (sidorov excellent)
            (petrov good)
           )
          )
)
;; шкала оценок
(setq gr '(bad satisf good excellent))
 
(defun intersection (l1 l2)
;;; Возвращает пересечение двух списков
  (if l1
    (if (member (car l1) l2)
      (cons (car l1) (intersection (cdr l1) l2))
      (intersection (cdr l1) l2)
    )
  )
)
 
;; как узнать какую оценку получил студент по предмету
(defun q1 (s d)
  ;; (q1 'IVANOV 'DB)
  (cadr (assoc s (cdr (assoc d db))))
)
 
;; как узнать успеваемость студента
(defun q2 (s)
  ;; (q2 'IVANOV)
  (mapcar '(lambda (x)
             (list (car x) (cadr (assoc s (cdr x))))
           )
          db
  )
)
 
;; как узнать кто из студентов получил конкретную оценку по конкретному предмету
(defun q3 (d g)
 
  ;; (q3 'Math 'excellent)
 
  (apply 'append
         (mapcar '(lambda (x)
                    (if (eq (cadr x) g)
                      (list (car x))
                      nil
                    )
                  )
                 (cdr (assoc d db))
         )
  )
)
 
;; как узнать какие студенты уже получили оценки
(defun q4 ()
  ;; (q4)
  (apply 'intersection
         (mapcar '(lambda (x) (mapcar 'car x)) (mapcar 'cdr db))
  )
)
 
;; как составить рейтинг студентов
(defun q5 ()
  ;;(q5)
  (vl-sort
    (mapcar '(lambda (x)
               (list x
                     (apply '+
                            (mapcar '(lambda (x) (vl-position x gr))
                                    (apply 'append (mapcar 'cdr (q2 x)))
                            )
                     )
               )
             )
            (q4)
    )
    '(lambda (x y) (> (cadr x) (cadr y)))
  )
)
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2015, 22:52
Ответы с готовыми решениями:

Определить "качество успеваемости", т.е процент студентов, сдавших все экзамены на 4 и 5
Объясните пожалуйста как работает программа. Имеется список студентов с информацией об итогах сессии, в котором указаны фамилия, номер...

База студентов
Добрый день! Помогите написать базу студентов, самую простую, должна быть реализована с помощью списков и должна выполнять добавление,...

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

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
20.02.2015, 12:53
Вот нечто аналогичное на структурах:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
(defstruct p-list math phys chem)
 
==> (STRUCTURE)
 
(defstruct student fa im ot pl)
 
==> (STRUCTURE)
 
(setq *db* (list
              (make-student :fa 'Иванов :im 'Олег :ot 'Петрович :pl (make-p-list :math 5 :phys 4 :chem 5))
              (make-student :fa 'Кошкин :im 'Аркадий :ot 'Васильевич :pl (make-p-list :math 3 :phys 3 :chem 5))
              (make-student :fa 'Мышкин :im 'Григорий :ot 'Андреевич :pl (make-p-list :math 3 :phys 3 :chem 4))
              (make-student :fa 'Жучкина :im 'Ольга :ot 'Сергеевна :pl (make-p-list :math 5 :phys 5 :chem 5))))
 
 
==> ((student :fa Иванов :im Олег :oT Петрович :pL (p-list :maTh 5 :phys 4 :chem 5)) 
     (student :fa Кошкин :im Аркадий :oT Васильевич :pL (p-list :maTh 3 :phys 3 :chem 5))
     (student :fa Мышкин :im Григорий :oT Андреевич :pL (p-list :maTh 3 :phys 3 :chem 4)) 
     (student :fa Жучкина :im Ольга :oT Сергеевна :pL (p-list :maTh 5 :phys 5 :chem 5)))
 
;; Создана глобальная переменная *db*
 
(defun get-data (stru fld)
  (let ((a (explode stru))
        (b (explode fld)))
   (implode (append a (list '-) b))))
 
(defun avg-val (db p)
  (let ((f (get-data 'p-list p))
        (s 0)
        (n 0))
   (iter (for st in db)
     (summing (funcall f (student-pl st)) into s)
     (counting s into n))
   (* 1.0 (/ s n))))
 
==> avg-val
 
(avg-val *db* 'phys)
 
==> 3.75
 
(avg-val *db* 'chem)
 
==> 4.75
 
(avg-val *db* 'math)
 
==> 4.0
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2015, 12:53
Помогаю со студенческими работами здесь

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

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

База данных Журнал успеваемости
Здравствуйте. Работаю над курсовой работой, в которой нужно спроектировать базу данных Журнала успеваемости учеников. Текст задачи: ...

В среде Delphi 7 разработать базу данных для контроля успеваемости студентов группы, используя технологию BDE
Подскажите идею реализации этой программы. Каким образом следует установить связи между таблицами?

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов)
Задача: Дан массив структур, содержащий сведения об успеваемости по информатике группы из 25 студентов. Структура содержит следующие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru