Changes between Version 1 and Version 2 of UseCase010


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

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase010

    v1 v2  
    1 == UseCase010 - Внесување на оценка од страна на професор
     1== UC010 - Внесување на оценка
    22
    3 === Актери
    4  * Најавен професор
     3'''Иницијален актер:''' Професор
    54
    6 === Чекори
    7  1. Професорот навигира до страната „Студенти“
    8  2. Професорот избира студент и предмет од табелата
    9  3. Професорот избира оценка (6-10) од паѓачкото мени
    10  4. Професорот кликнува на копчето „Додади оценка“
    11  5. Системот креира нов запис за положен предмет со избраната оценка и тековниот датум
    12  6. На професорот му се прикажува потврда дека оценката е успешно внесена
     5'''Други актери:''' -
     6
     7Професорот сака да внесе оценка за студент на предмет кој самиот го предава.
     8Целта е запишана оценка која студентот веднаш ја гледа во своето уверение за
     9положени испити.
     10
     11=== Сценарио
     12
     13 1. Професорот ја отвора страницата '''Студенти''' ([wiki:UseCase009 UC009]) и наоѓа студент кој сè уште нема оценка на неговиот предмет.
     14
     15 2. Професорот избира оценка од 6 до 10 и избира '''Внеси оценка'''.
     16
     17 3. Системот го наоѓа редот во semesters_subjects кој одговара на тој студент, тој предмет и тој професор. Ако не најде ред, професорот не го предава тој студент на тој предмет и внесувањето се одбива.
     18{{{#!sql
     19SELECT ss.id
     20FROM project.semesters_subjects ss
     21JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
     22WHERE ss.professor_id = 4
     23  AND ss.subjects_id  = 2
     24  AND es.user_id      = 1;
     25}}}
     26
     27 4. Системот проверува дали предметот веќе е оценет, бидејќи врската е 1:1.
     28{{{#!sql
     29SELECT EXISTS (
     30    SELECT 1 FROM project.passed_subjects ps
     31    WHERE ps.enrolled_id = (
     32        SELECT ss.id
     33        FROM project.semesters_subjects ss
     34        JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
     35        WHERE ss.professor_id = 4 AND ss.subjects_id = 2 AND es.user_id = 1
     36    )
     37) AS already_graded;
     38}}}
     39
     40 5. Ако предметот не е оценет, системот ја запишува оценката. Условите за професорот и студентот се дел од самата наредба, па оценка не може да се внесе на туѓ предмет ниту со рачно составено барање.
     41{{{#!sql
     42INSERT INTO project.passed_subjects (enrolled_id, grade, date_passed)
     43SELECT ss.id, '9', now()
     44FROM project.semesters_subjects ss
     45JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
     46WHERE ss.professor_id = 4
     47  AND ss.subjects_id  = 2
     48  AND es.user_id      = 1;
     49}}}
     50
     51 6. Системот ја освежува табелата и новата оценка е веднаш видлива во колоната ''Оценка''.
     52
     53 7. Истата оценка се појавува и кај студентот, во [wiki:UseCase006 UC006].
     54
     55=== Алтернативни текови
     56
     57 * '''3а.''' Професорот не го предава тој предмет на тој студент - наредбата во чекор 5 не менува ниту еден ред и системот прикажува порака за одбиен пристап.
     58 * '''4а.''' Предметот веќе е оценет - системот упатува на [wiki:UseCase011 UC011] за измена.
     59 * '''2а.''' Избрана е оценка надвор од 6 до 10 - типот grade_type дозволува само вредности од '6' до '10', па базата го одбива записот.
     60
     61=== Забелешки
     62
     63 * Оценката 5 не постои во типот grade_type, бидејќи непoложен предмет се претставува со отсуство на ред во passed_subjects, а не со оценка.