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