| Version 2 (modified by , 2 weeks ago) ( diff ) |
|---|
UC010 - Внесување на оценка
Иницијален актер: Професор
Други актери: -
Професорот сака да внесе оценка за студент на предмет кој самиот го предава. Целта е запишана оценка која студентот веднаш ја гледа во своето уверение за положени испити.
Сценарио
- Професорот ја отвора страницата Студенти (UC009) и наоѓа студент кој сè уште нема оценка на неговиот предмет.
- Професорот избира оценка од 6 до 10 и избира Внеси оценка.
- Системот го наоѓа редот во 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.
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;
- Ако предметот не е оценет, системот ја запишува оценката. Условите за професорот и студентот се дел од самата наредба, па оценка не може да се внесе на туѓ предмет ниту со рачно составено барање.
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;
- Системот ја освежува табелата и новата оценка е веднаш видлива во колоната Оценка.
- Истата оценка се појавува и кај студентот, во 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.
