Некоторая радиостанция ежедневно транслирует музыкальные произведения, предлагая от 5 до 8 разнообразных радиопрограмм. Программы бывают двух типов: одни составляются на основе заявок слушателей, другие формируются как хит-парады по случайно выбранному жанру из доступных в музыкальной библиотеке радиостанции. Длительность каждой программы варьируется от 1 до 3 часов.
Фонотека радиостанции включает музыкальные записи различных жанров. Каждая запись в каталоге содержит информацию о жанре, названии произведения, авторе, исполнителях, названии альбома, годе выпуска, продолжительности в секундах и рейтинге.
При формировании программы по заявкам важно следить за тем, чтобы произведения одного исполнителя не звучали подряд, обеспечивая тем самым разнообразие и избегая монотонности. В ходе моделирования процесса произведения одного исполнителя будут располагаться через как можно большее число произведений других исполнителей друг от друга.
Во время программы по заявкам система должна создавать поток заявок на музыкальные произведения. Интервал между заявками — случайное число секунд, выбранное из заданного пользователем диапазона.
Хит-парады включают песни определённого жанра, которые получили наивысший рейтинг на момент формирования программы. Рейтинг каждой песни изначально устанавливается случайно от 0 до 4 и может увеличиваться с поступлением заявок на эту песню от слушателей.
Параметры моделирования, которые задаются пользователем, включают:
Количество программ в день: от 5 до 8. Время моделирования в днях: от 1 до 7. Длительность каждой программы в часах: от 1 до 3. Шаг моделирования в минутах: от 10 до 30. Интервал времени для генерации заявок: от X до Y секунд, где X и Y — параметры, заданные пользователем. Во время моделирования радиостанции доступна информация о игравших произведениях и программах можно просматривать полученные и выполненные заявки.
По окончании процесса моделирования можно сохранить программу работы радиостанции и просмотреть финальный отчет с количеством заявок и рейтингом каждой песни.
- radio.py — описание класса Радиостанции и Музыкальной программы для моделирования работы радиостанции
- library.py — импорт песен из CSV формата, описание класса Песни и Фонотеки
- requests.py — генерация заявок и описание класса Заявки
- songs.csv — библиотека песен
- app.py — запуск процесса моделирования
- model_window.py — интерфейс основного окна моделирования
- param_window.py — интерфейс окна ввода параметров
- final_report_window.py — интерфейс окна финального отчета