wiki:UseCase006

Version 2 (modified by 233149, 2 weeks ago) ( diff )

--

UC006 - Приказ на положени предмети

Иницијален актер: Студент

Други актери: -

Студентот сака да го види своето уверение за положени испити: сите предмети кои ги положил, со оценка, датум, професор, семестар и кредити, како и вкупниот број кредити и просечната оценка.

Сценарио

  1. Студентот избира Испити од менито.
  1. Системот ги презема сите положени предмети на студентот. Патеката до студентот оди преку запишаниот семестар, бидејќи во моделот semesters_subjects не содржи директна врска кон студентот.
    SELECT s.code,
           s.name        AS subject,
           s.awarded_credits,
           ps.grade,
           ps.date_passed,
           p.name || ' ' || p.surname AS professor,
           a.year,
           a.type
    FROM project.passed_subjects ps
    JOIN project.semesters_subjects ss ON ss.id = ps.enrolled_id
    JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
    JOIN project.subjects s            ON s.id  = ss.subjects_id
    JOIN project.users p               ON p.id  = ss.professor_id
    JOIN project.active_semesters a    ON a.id  = es.semester_id
    WHERE es.user_id = 1
    ORDER BY ps.date_passed;
    
  1. Системот го пресметува просекот и вкупните кредити. Бидејќи grade е набројувачки тип (enum), вредноста прво се претвора во текст, па во цел број за да може да се пресмета просек.
    SELECT round(avg(ps.grade::text::int), 2) AS average_grade,
           sum(s.awarded_credits)             AS total_credits
    FROM project.passed_subjects ps
    JOIN project.semesters_subjects ss ON ss.id = ps.enrolled_id
    JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
    JOIN project.subjects s            ON s.id  = ss.subjects_id
    WHERE es.user_id = 1;
    
  1. Системот ја прикажува табелата со положените предмети и, под неа, просекот и вкупните кредити.
  1. Студентот по желба избира Преземи PDF, со што се преминува на UC008.

Забелешки

  • Врската меѓу semesters_subjects и passed_subjects е 1:1, обезбедена со UNIQUE врз passed_subjects.enrolled_id, па еден предмет во еден семестар може да има најмногу една оценка.
  • Ако студентот го слушал истиот предмет во повеќе семестри, секое слушање е посебен ред во semesters_subjects, па се гледа и во кој семестар е положен.
Note: See TracWiki for help on using the wiki.