wiki:UseCase010

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

--

UC010 - Внесување на оценка

Иницијален актер: Професор

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

Професорот сака да внесе оценка за студент на предмет кој самиот го предава. Целта е запишана оценка која студентот веднаш ја гледа во своето уверение за положени испити.

Сценарио

  1. Професорот ја отвора страницата Студенти (UC009) и наоѓа студент кој сè уште нема оценка на неговиот предмет.
  1. Професорот избира оценка од 6 до 10 и избира Внеси оценка.
  1. Системот го наоѓа редот во semesters_subjects кој одговара на тој студент, тој предмет и тој професор. Ако не најде ред, професорот не го предава тој студент на тој предмет и внесувањето се одбива.
    SELECT ss.id
    FROM project.semesters_subjects ss
    JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
    WHERE ss.professor_id = 4
      AND ss.subjects_id  = 2
      AND es.user_id      = 1;
    
  1. Системот проверува дали предметот веќе е оценет, бидејќи врската е 1:1.
    SELECT EXISTS (
        SELECT 1 FROM project.passed_subjects ps
        WHERE ps.enrolled_id = (
            SELECT ss.id
            FROM project.semesters_subjects ss
            JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
            WHERE ss.professor_id = 4 AND ss.subjects_id = 2 AND es.user_id = 1
        )
    ) AS already_graded;
    
  1. Ако предметот не е оценет, системот ја запишува оценката. Условите за професорот и студентот се дел од самата наредба, па оценка не може да се внесе на туѓ предмет ниту со рачно составено барање.
    INSERT INTO project.passed_subjects (enrolled_id, grade, date_passed)
    SELECT ss.id, '9', now()
    FROM project.semesters_subjects ss
    JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id
    WHERE ss.professor_id = 4
      AND ss.subjects_id  = 2
      AND es.user_id      = 1;
    
  1. Системот ја освежува табелата и новата оценка е веднаш видлива во колоната Оценка.
  1. Истата оценка се појавува и кај студентот, во UC006.

Алтернативни текови

  • 3а. Професорот не го предава тој предмет на тој студент - наредбата во чекор 5 не менува ниту еден ред и системот прикажува порака за одбиен пристап.
  • 4а. Предметот веќе е оценет - системот упатува на UC011 за измена.
  • 2а. Избрана е оценка надвор од 6 до 10 - типот grade_type дозволува само вредности од '6' до '10', па базата го одбива записот.

Забелешки

  • Оценката 5 не постои во типот grade_type, бидејќи непoложен предмет се претставува со отсуство на ред во passed_subjects, а не со оценка.
Note: See TracWiki for help on using the wiki.