Changes between Version 1 and Version 2 of UseCase009


Ignore:
Timestamp:
09/15/26 11:39:52 (2 weeks ago)
Author:
233149
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase009

    v1 v2  
    1 == UseCase009 - Приказ на студенти од страна на професор
     1== UC009 - Приказ на студенти по предмет
    22
    3 === Актери
    4  * Најавен професор
     3'''Иницијален актер:''' Професор
    54
    6 === Чекори
    7  1. Професорот навигира до страната „Студенти“
    8  2. Системот го идентификува професорот врз основа на JWT токенот
    9  3. Системот ги презема студентите запишани на предметите што ги предава професорот
    10  4. За секој студент се прикажуваат името, индексот, предметот и тековната оценка
    11  5. На професорот му се прикажува табела со неговите студенти
     5'''Други актери:''' -
     6
     7Професорот сака да ги види студентите запишани на предметите кои ги предава,
     8групирани по предмет, заедно со тековната оценка на секој студент. Целта е
     9преглед од кој може да премине кон оценување.
     10
     11=== Сценарио
     12
     13 1. Професорот се најавува и избира '''Студенти''' од менито.
     14
     15 2. Системот го чита идентификаторот на професорот од пристапниот токен и ги презема сите студенти на неговите предмети. Студентот се добива преку запишаниот семестар, а оценката е LEFT JOIN бидејќи најголем дел од студентите сè уште немаат оценка.
     16{{{#!sql
     17SELECT s.id   AS subject_id,
     18       s.code,
     19       s.name AS subject,
     20       u.id   AS student_id,
     21       u."index",
     22       u.name || ' ' || u.surname AS student,
     23       ps.grade,
     24       a.year,
     25       a.type
     26FROM project.semesters_subjects ss
     27JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
     28JOIN project.users u               ON u.id  = es.user_id
     29JOIN project.subjects s            ON s.id  = ss.subjects_id
     30JOIN project.active_semesters a    ON a.id  = es.semester_id
     31LEFT JOIN project.passed_subjects ps ON ps.enrolled_id = ss.id
     32WHERE ss.professor_id = 4
     33ORDER BY s.name, u.surname;
     34}}}
     35
     36 3. Системот ги групира редовите по предмет и ја прикажува табелата со студент, индекс, предмет, семестар и тековна оценка. Студентите без оценка се прикажани со ознака дека сè уште не се оценети.
     37
     38 4. Професорот по желба филтрира по предмет или пребарува по индекс на студент.
     39
     40 5. Професорот избира студент за да внесе или измени оценка, со што се преминува на [wiki:UseCase010 UC010] или [wiki:UseCase011 UC011].
     41
     42=== Забелешки
     43
     44 * Условот ss.professor_id = 4 е и проверка на овластување: професорот ги добива само студентите на своите предмети, бидејќи филтрирањето се врши во самата база, а не во апликацијата.
     45 * Во моделот semesters_subjects нема директна врска кон студентот, па студентот се добива преку enrolled_semesters.user_id.