diff options
| Commit | 610d760e2e91f2ee50a48fd1f4c57d4b35e68523 (patch) | |
|---|---|---|
| Author | 2024-05-23 09:15:32 +0300 | |
| Committer | 2024-05-23 09:15:32 +0300 | |
| Files | cef183952498008e9208d7050579ca41296c74c5 /src | |
| syndamia.com-610d760e2e91f2ee50a48fd1f4c57d4b35e68523.tar syndamia.com-610d760e2e91f2ee50a48fd1f4c57d4b35e68523.tar.gz syndamia.com-610d760e2e91f2ee50a48fd1f4c57d4b35e68523.zip | ||
| Parent | 7c851224135462b3b86ee54cf01da36cc6822d81 (diff) | |
[te/oop-2023/w14] Added exercises and gh classroom link
2 files changed, 74 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2023/index.md | 1 | ||||
| -rw-r--r-- | src/teaching/oop-2023/week14/index.md | 73 |
diff --git a/src/teaching/oop-2023/index.md b/src/teaching/oop-2023/index.md index 52048d8..791d120 100644 --- a/src/teaching/oop-2023/index.md +++ b/src/teaching/oop-2023/index.md @@ -27,3 +27,4 @@ |11|09.05.2024|[Задачи](./week11/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week11) \|\| [GitHub classroom](https://classroom.github.com/a/oYQehcnN) **Това упражнение е от 11:15 до 13:15**| |12|09.05.2024|[Задачи](./week12/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) \|\| [GitHub classroom](https://classroom.github.com/a/o7hNz1pr)| |13|16.05.2024|[Задачи](./week13/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) --> \|\| [GitHub classroom](https://classroom.github.com/a/GvV1wrC1)| +|14|23.05.2024|[Задачи](./week14/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) --> \|\| [GitHub classroom](https://classroom.github.com/a/K0XomKEP)| diff --git a/src/teaching/oop-2023/week14/index.md b/src/teaching/oop-2023/week14/index.md new file mode 100644 index 0000000..917c11b --- /dev/null +++ b/src/teaching/oop-2023/week14/index.md @@ -0,0 +1,73 @@ +# Задачи - ООП, Седмица 14, 23.05.2024 + +GitHub classroom: [classroom.github.com/a/K0XomKEP](https://classroom.github.com/a/K0XomKEP) + +## Задача + +В тази задача се оставя голямо количество свобода на имплементация, за всяко нещо сами преценете типове, помощни класове/член функции, оператори и так. нат. +Както винаги, реализирайте голяма петица където е нужно. + +Препоръчително е първо да изчетете цялото условие и след това да пишете код. + +Реализирайте система като СУСИ. +Преди да стигнем до потребителите, ще се нуждаем от някои други компоненти. + +Реализирайте предмет, като в един предмет се пазят: + +- име +- тип (задължителен/избираем) +- брой ECTS кредити, които носи +- код, комбинация от главна буква и 3-цифрено число + +Реализирайте семестър, като в един семестър се пазят: + +- учебната година +- тип (зимен/летен) +- учебния план (низ във формата "СПЕЦИАЛННОСТ(УЧЕБЕН КУРС)") +- предмети; разбира се един предмет може да се споделя от няколко семестъра + +Реализирайте специалност, която пази: + +- свое име +- катедра към която е свързана +- всички семестри, в които е (била) активна +- предмети, съответстващи на всеки тип семестър + +и имплементира метод: + +- `NewSemester`, който приема учебна година и тип, и връща нов обект от семестър с попълнени данни + +Имаме потребители, като всеки си има роля, определяща неговите способности в системата. +Ролята може да бъде студент, преподавател или администратор, като при конкретизиране в условието на някои от тях трябва да се извършат съответните проверки. +Ваш избор е какво да бъде ролята. + +За един потребител със сигурност се пазят: + +- име +- факултетен номер (от модерния стил) +- потребителско име, което се определя като първата буква от първото име, конкатенирана с фамилията. + Ако съществува потребител с такова потребителско име, тогава добавяте букви от бащиното име, и накрая в краен случай, от първото име. +- парола +- година на учебния план +- име на сегашна специалност + +<br> + +- данни за контакт, като една данна съдържа тип и описание (произволни низове) + +<br> + +- семестри, в които е (бил) включен +- изпити, които са комбинация от предмети, преподаватели и оценки (която е възможно да не е въведена) + +Реализирайте мениджър на факултета, който съхранява, създава, обновява и премахва всички потребители и специалности. +Имплементирайте съответни член-функции, които да правят тези действия. + +Имплементирйате и методи, приемащи потребителско име, които: + +- за един потребител изкарва всички негови лични данни, заедно с кратко описание на семестрите в които е включен +- за един студент изкарва всички изпити, заедно със семестрите към които са свързани и сума на всички успешно получени кредити за дадения семестър (кредитите се броят само когато има оценка, която не е двойка) +- един преподавател може да създаде нов предмет +- един администратор може да създаде нов потребител, специалност, семестър, както и да свързва предмети със семестри и специалности + +Реализирайте конзолен интерфейс. |