Цель: создать кроссплатформенное приложение. Кроссплатформеность понимается как "разнесение" интерфейсной и расчетной части. Причем разнесение обязательно должно быть по разным физическим машинам (клиент-сервер). Приветствуется разнесение по разным операционным системам или архитектурам. Общение между клиентом и сервером необходимо вести посредством сокета или другой технологии удаленного вызова процедур (grpc например). Обмен данными следует производить посредством применения стандартных библиотек (json, xml и т.д.)
Задача:
1. Создать клиентское приложение, позволяющее вводить данные (промежуток вычисления, интервал времени, шаг, параметр функции - овсе зависит от вашей фантазии и необходимости реализации для показа эффективности и эффектности работы вашей программы), начинать процесс расчета, ставить расчет "на паузу" (без расчета кнопка "пауза" неактивна), продолжать расчет и заканчивать расчет. Вводимые данные отправляются в структурированном виде на сервер. После нажатия на кнопку "нажать расчет" она меняет свое имя на "остановить расчет" кнопка "пауза" становится активной.
2. Создать серверное приложение. Серверное приложение принимает данные клиентского приложения а также указатели на обратный вызов callback функций. Клиентское приложение производит расчет для диапазона заданных значений и в установленное клиентской программой временной промежуток (emit) "отправляет" на сервер структурированные данные ответа. По окончании расчета, сервер отправляет дополнительно информацию об окончании расчета.
3. Клиентское приложение получив ответ от сервера добавляет контрольную точку в sliderbar и по полученным данным строит график функции для полученного emit. По окончанию расчета кнопка "остановить расчет" меняет свое имя на "начать расчет", кнопка "пауза" становится неактивной.
4. После начала получения клиентским приложением от сервера данных, пользователь движением ползунка слайдера может перемещаться по контрольным точкам и видеть изменение вида функции. Каждый emit должен быть подписан (на графике или где-то ещё) для того чтобы можно было понять каким параметрам (временным или координатным) он соответствует. График также должен иметь оси и основные подписи.
5. Расчетная функция должна храниться в dll библиотеке. Сервер "сканирует" файлы dll в папке, "читает" названия функций в соответствующих библиотеках и "отправляет" клиенту список возможных вариантов расчетных функций. Пользователь в интерфейсе может выбрать ту библиотеку в которой он желает считать.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |