
- •А.Н. Езин
- •Назначение курсовой работы
- •Примерная структура пояснительной записки
- •Календарный план выполнения работы
- •Последовательность выполнения курсовой работы
- •Подготовка курсовой работы к защите
- •Варианты заданий для курсовой работы
- •Тема 1. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 api по управлению им.
- •Тема 2. Разработка приложения по поддержке набора данных на основе файла, проецируемого в память.
- •Тема 3. Разработка приложения по поддержке набора данных на основе двухстороннего связного списка, хранимого в файле.
- •Тема 4. Разработка многопоточного приложения, использующего синхронизацию потоков с помощью событий с ручным сбросом.
- •Тема 5. Создание многопоточного приложения, иллюстрирующего решение проблемы синхронизации потоков-производителей и потоков-потребителей.
- •Тема 6. Разработка двух приложений, взаимодействующих между собой на основе сообщений.
- •Тема 7. Разработка двух приложений, взаимодействующих между собой на основе проецируемых в память файлов.
- •Тема 8. Разработка двух приложений, взаимодействующих между собой на основе буфера обмена.
- •Тема 15. Разработка приложения по поиску заданной строки во всех текстовых файлах заданного каталога с использованием функции управления файлами Win 32 api.
- •Тема 16. Разработка приложения по поиску заданной строки во всех текстовых файлах заданного каталога с использованием механизма проецирования файла в память.
- •Тема 20. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе механизма блокировки части файла.
- •Тема 23. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе объекта мютекс без блокировки частей файла.
- •Тема 26. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе объекта событие с автоматическим сбросом без блокировки частей файла.
- •Тема 27. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе критической секции без блокировки частей файла.
- •Тема 28. Разработка приложения, моделирующего возникновение взаимоблокировок и восстановление после них.
- •Тема 29. Разработка приложений, моделирующих работу дискового накопителя.
- •Литература
Тема 5. Создание многопоточного приложения, иллюстрирующего решение проблемы синхронизации потоков-производителей и потоков-потребителей.
Содержание задания.
Создать приложение по следующему описанию. Периодически случайным образом с некоторым интервалом, задаваемым в соответствующем поле ввода окна приложения, генерируются потоки, имитирующие создание заказов на покупку товаров из следующего списка: пылесос (цена 3000 р.), холодильник (цена 8000 р.), телевизор (цена 7000 р.). Заказ включает в себя следующие реквизиты: товар, количество (шт.) Реквизиты заказа генерируются случайным образом. Реквизит количество должно быть в интервале от 1 до 10. Заказы образуют очередь (первый пришел – первый обслужен) в количестве p. Каждый заказчик ждет входа в очередь некоторое конечное время, задаваемое в поле ввода окна приложения, после чего уходит, что соответствует уничтожению потока (не забудьте при создании этих потоков закрывать их дескрипторы во избежание утечки памяти). Заказчиков обслуживают потоки – продавцы в количестве n. Каждый товар у потоков продавцов (у них общий склад) имеется в определенном количестве и периодически пополняется отдельным потоком в количестве, вводимом в соответствующие поля ввода, и с интервалом, вводимом в соответствующее поле ввода приложения. Потоки продавцы обслуживают заказ только в том случае, если товар имеется на складе в нужном количестве. В окне программы необходимо отображать количество каждого товара и сумму выручки у каждого продавца, а также общее количество обслуженных заказчиков и не дождавшихся своей очереди. Необходимо вести также журнал заказов, в который записывается информация о поступающих заказах. Формат файла – текстовый. Синхронизацию потоков заказчиков и потоков продавцов выполнить с помощью семафоров, для остальных объект синхронизации выбрать самостоятельно. Предусмотреть время обслуживания, по истечении которого поступление новых заказов прекращается. Величина этого времени должна задаваться в соответствующем поле ввода окна приложения. Для операций с файлом использовать функции управления файлами Win 32 API. Предусмотреть в окне приложения поля для ввода значений p (максимальный размер очереди) и n (число продавцов).
Тема 6. Разработка двух приложений, взаимодействующих между собой на основе сообщений.
Содержание задания.
Создайте приложения A и B (имена дайте сами), взаимодействующие между собой посредством посылки друг другу сообщений. Приложение B по полученным в сообщении (использовать сообщение WM_COPYDATA) от приложения A первому члену a1, разности d и числу членов n рассчитывает n-й член и сумму Sn первых n членов арифметической прогрессии и отправляет результат приложению A. В окне приложения B должны отображаться полученные от приложения A параметры арифметической прогрессии a1, d и n. В окне приложения A должны отображаться принятые от приложения B результаты bn и Sn. Приложение B должно вести протокол получаемых запросов и выданных на них ответов в текстовом файле. Каждая строка файла имеет вид типа: “Первый член =1, разность = 2, n = 3, последний член = 4, сумма = 7». Для операций с файлом использовать функции управления файлами Win 32 API. Интерфейс приложения A должен быть построен на основе диалогового окна. Файл для ведения протокола должен задаваться в поле ввода окна приложения B. Вычисления в приложении B должны выполняться в отдельном рабочем потоке. Интерфейс приложения B построить на основе окна приложения общего вида. При запуске одного из приложений второе приложение должно запускаться автоматически, если оба файлы обоих приложений расположены в одном каталоге. При закрытии одного из приложений второе приложение должно закрываться автоматически, если оба файлы обоих приложений расположены в одном каталоге. В противном случае приложения запускаются и останавливаются порознь.