Задачи - ООП, Седмица 14, 23.05.2024
GitHub classroom: classroom.github.com/a/K0XomKEP
Задача
#В тази задача се оставя голямо количество свобода на имплементация, за всяко нещо сами преценете типове, помощни класове/член функции, оператори и так. нат. Както винаги, реализирайте голяма петица където е нужно.
Препоръчително е първо да изчетете цялото условие и след това да пишете код.
Реализирайте система като СУСИ. Преди да стигнем до потребителите, ще се нуждаем от някои други компоненти.
Реализирайте предмет, като в един предмет се пазят:
- име
- тип (задължителен/избираем)
- брой ECTS кредити, които носи
- код, комбинация от главна буква и 3-цифрено число
Реализирайте семестър, като в един семестър се пазят:
- учебната година
- тип (зимен/летен)
- учебния план (низ във формата “СПЕЦИАЛННОСТ(УЧЕБЕН КУРС)”)
- предмети; разбира се един предмет може да се споделя от няколко семестъра
Реализирайте специалност, която пази:
- свое име
- катедра към която е свързана
- всички семестри, в които е (била) активна
- предмети, съответстващи на всеки тип семестър
и имплементира метод:
NewSemester
, който приема учебна година и тип, и връща нов обект от семестър с попълнени данни
Имаме потребители, като всеки си има роля, определяща неговите способности в системата. Ролята може да бъде студент, преподавател или администратор, като при конкретизиране в условието на някои от тях трябва да се извършат съответните проверки. Ваш избор е какво да бъде ролята.
За един потребител със сигурност се пазят:
- име
- факултетен номер (от модерния стил)
- потребителско име, което се определя като първата буква от първото име, конкатенирана с фамилията. Ако съществува потребител с такова потребителско име, тогава добавяте букви от бащиното име, и накрая в краен случай, от първото име.
- парола
- година на учебния план
- име на сегашна специалност
- данни за контакт, като една данна съдържа тип и описание (произволни низове)
- семестри, в които е (бил) включен
- изпити, които са комбинация от предмети, преподаватели и оценки (която е възможно да не е въведена)
Реализирайте мениджър на факултета, който съхранява, създава, обновява и премахва всички потребители и специалности. Имплементирайте съответни член-функции, които да правят тези действия.
Имплементирйате и методи, приемащи потребителско име, които:
- за един потребител изкарва всички негови лични данни, заедно с кратко описание на семестрите в които е включен
- за един студент изкарва всички изпити, заедно със семестрите към които са свързани и сума на всички успешно получени кредити за дадения семестър (кредитите се броят само когато има оценка, която не е двойка)
- един преподавател може да създаде нов предмет
- един администратор може да създаде нов потребител, специалност, семестър, както и да свързва предмети със семестри и специалности
Реализирайте конзолен интерфейс.