| 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 |
| | 19 | SELECT ss.id |
| | 20 | FROM project.semesters_subjects ss |
| | 21 | JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id |
| | 22 | WHERE ss.professor_id = 4 |
| | 23 | AND ss.subjects_id = 2 |
| | 24 | AND es.user_id = 1; |
| | 25 | }}} |
| | 26 | |
| | 27 | 4. Системот проверува дали предметот веќе е оценет, бидејќи врската е 1:1. |
| | 28 | {{{#!sql |
| | 29 | SELECT 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 |
| | 42 | INSERT INTO project.passed_subjects (enrolled_id, grade, date_passed) |
| | 43 | SELECT ss.id, '9', now() |
| | 44 | FROM project.semesters_subjects ss |
| | 45 | JOIN project.enrolled_semesters es ON es.id = ss.enrolled_semesters_id |
| | 46 | WHERE 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, а не со оценка. |