Заказать лабораторную работу в Гомеле по операционным системам
(заказать лабу на C++Builder, заказать программу для ОС)
Работа №1. Создание и работа с библиотеками DLL
Разработать приложение в среде Borland Delphi (C++ Builder или др.), выполняющее функции согласно варианта задания. Реализацию функций приложения выполнить в наборе библиотек DLL одинаковой структуры, которые должны подключаться в качестве плагинов к основному приложению. Приложение при запуске должно сканировать папку, содержащую плагины и предоставлять пользователю возможность выбора действий, реализуемых доступными плагинами. Темы лабораторных работ в Гомеле:
- Целочисленный калькулятор
- Калькулятор чисел с плавающей точкой
- Математический калькулятор №1
- Математический калькулятор №2
- Редактор строки
- Редактор строки
- Работа с комплексными числами
- Восьмеричный калькулятор
- Троичный калькулятор
- Конвертер целых чисел №1
- Конвертер целых чисел №2
- Перевод числа от 0 до 99 в текстовый вид
- Конвертер единиц длины
- Проверка делимости чисел
- Преобразование текста №1
- Преобразование текста №2
Каждый плагин должен быть оформлен в виде отдельной однотипной библиотеки DLL и должен содержать помимо функции реализации алгоритма, функцию, возвращающую назначение плагина. Приложение должно идентифицировать назначение плагина именно по этой функции, а не по имени DLL модуля. Каждая функция в библиотеке DLL должна использовать разный способ передачи параметров.
Работа №2. Приложение с интерфейсом MDI
На основе приложения, разработанного в первой работе, создать приложение с многодокументным интерфейсом (MDI). Дочерние окна должны представлять окна приложения из первой лабораторной работы. Родительская форма должна иметь меню, команды которого должны позволять:
- создавать новое дочернее окно
- закрывать текущее дочернее окно, при отсутствии дочерних окон этой команды не должно быть в меню (использовать объединение меню)
- позволять упорядочивать дочерние окна (каскадом, свернуть все, разместить в окне)
- завершать работу приложения
- выводить информацию о приложении (окно «О программе»), среди которой должна быть информация о текущем количестве дочерних окон приложения
Интерфейс программы должен быть на русском языке. В программе не должен использоваться объект типа TActionList. В родительской и дочерних формах должно быть реализовано подтверждение закрытия (например, сообщение «Закрыть?» с возможными ответами «Да» и «Нет»). В родительской форме подтверждение закрытия должно быть реализовано через обработчик события onClose, в дочерних формах – через обработчик события onCloseQuery. Дочерние окна приложения должны иметь фиксированный неизменяемый размер окна.
Работа №3. Работа с параметрами окна функциями API
В приложении, разработанном в первой лабораторной работе реализовать включение полупрозрачности окна при его деактивации. Когда приложение активно (имеет фокус ввода), окно должно быть непрозрачным. Когда приложение неактивно (не имеет фокуса ввода), окно должно быть полупрозрачным с уровнем непрозрачности 80%. Окно приложения должно отображаться в режиме «всегда поверх других окон». Полупрозрачность должна быть реализована с использованием функции API SetLayeredWindowAttributes, а не свойств класса TForm. Для установки обработчиков событий класса TApplication не использовать компонент TApplicationEvents.
Окно приложения сделать с закругленными краями, на самом окне сделать прозрачную область в форме эллипса, круга или прямоугольника с закруглёнными краями, в которой разместить составленную из регионов первую букву своей фамилии.
Работа №4. Запуск приложений функциями API
Реализовать приложение, состоящее из двух выполняемых файлов и работающее по следующему алгоритму:
- Первое приложение, имеющее графический интерфейс пользователя, должно позволять пользователю ввести исходные данные для обработки*.
- После ввода данных пользователем и нажатия кнопки «Выполнить» («Вычислить», «Запуск» и т.п.) приложение должно сохранить введенные данные в файл ввода, запустить второе приложение и остаться в режиме ожидания завершения работы второго приложения.
- Второе приложение, которое должно быть реализовано как консольное приложение, должно считать данные из файла ввода, обработать эти данные с помощью любого из плагинов (библиотек dll), использовавшихся в предыдущих лабораторных работах, сохранить результат обработки в файл вывода и завершиться. Подключение библиотеки плагина должно быть осуществлено методом привязки к программе (статическое подключение).
- В первом приложении должна быть возможность выбора отображения или не отображения консоли второго приложения при его запуске.
- Первое приложение, дождавшись завершения консольного приложения, должно отобразить результат из файла вывода и перейти в режим, описанный в пункте 1.
Запуск второго приложения и ожидание завершения должны производиться с использованием функций API. Для ожидания завершения консольного приложения использовать периодический вызов функции GetExitCodeProcess().
Работа №5. Запуск потоков функциями API
Разработать приложение, производящее вызов функций из трех различных плагинов одновременно в трех отдельных потоках. Эти три потока должны иметь одинаковый (общий) код, и запускаться функциями API CreateThread. Дополнительный параметр, передаваемый в эту функцию при создании потока, должен определять какой плагин будет вызываться в каждом из трех потоков.
В приложении также должен быть создан с использованием класса TThread дополнительный поток, который раз в секунду должен обновлять на экране скорость работы (вызовов плагинов в секунду) этих трех потоков. В приложении для этих трех потоков должна быть реализована возможность изменения их приоритета, в том числе и во время их выполнения.
В функции плагинов передавать случайные или любые постоянные параметры.
Работа №6. Использование объектов синхронизации
Разработать приложение, в котором выполняется следующий алгоритм: два параллельных потока циклически выполняют вызов плагинов из библиотек dll (согласно варианта). Каждый поток использует свой плагин. Результаты работы каждый поток помещает в общую очередь конечной длины. Третий поток забирает из очереди результаты работы плагинов и отображает их на экране в произвольной форме. Схема взаимодействия потоков приведена на рисунке:
|