Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr1-7.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
537.12 Кб
Скачать

4.2 Задание

  1. Создать класс «Сотрудник». Класс содержит следующие параметры:

- ФИО (указатель типа char);

- количество отработанных дней;

- сумма оплаты одного дня;

- коэффициент расчета заработной платы.

К параметрам нет прямого доступа: только через методы.

Класс содержит следующие методы:

- конструктор (выполняет выделение памяти размером 50 байт под ФИО);

- деструктор (освобождает память, выделенную под ФИО);

- методы для установки и получения данных о количестве дне, сумме оплаты, коэффициенте, ФИО;

- метод, возвращающий значение з/п (S=кол-во дней∙сумма оплаты∙коэффициент);

- метод сравнения ФИО (возвращает истину или ложь если переданная строка совпадает с именем объекта).

2. В основной программе объявить массив объектов типа сотрудник.

Программа позволяет вводить данные сотрудников в цикле, осуществить поиск по ФИО, рассчитать общие затраты организации на заработную плату.

5 Лабораторная работа № 5. Программирование с использованием библиотеки mfc. Создание пунктов меню

Цель: получить навыки разработки программы под Windows.

5.1 Теоретическая часть

При создании приложения с использованием библиотеки Microsoft Foundation Classes (MFC) предполагает соблюдение определенной структуры программы. Структура программы MFC включает две основные сущности: документ и представление.

Документ- это имя, присвоенное коллекции данных приложения. Документ определяется как объект класса MFC CDocument, в который добавляются переменные –члены для хранения данных, и функции, для обработки данных.

Представление относится к определенному объекту документа. Представление- это объект, предлагающий механизм отображения данных, которые хранятся в документе. Он определяет, как данные отображаются в окне и как пользователь может взаимодействовать с ними. Программист определяет собственный класс представления, который является наследником класса CView MFC.

5.2 Задание

Создать SDI приложение. Научиться создавать пункты меню:

«Элементы»:

-«Круг»;

- «прямоугольник»;

- «кривая».

«Цвет»:

-красный;

-синий;

-зеленый;

-черный.

5.3 Порядок выполнения работы

1. Создайте новый проект на основе шаблона «Приложение MFC».

2. Выставьте следующие параметры проекта, как показано на рисунке 5.1.

Рисунок 1

3. Проект не будет поддерживать составных документов.

4. Остальные параметры оставим без изменений до пункта «Созданные классы». Далее устанавливаем, что представление приложения является наследником класса CEditView.

Рисунок 2

  1. Нажимаем «Готово» и запускаем компиляцию программы (F7) и её запуск Ctrl+F5.

  2. Программа практически все уже умеет. Поэкспериментируйте с программой.

  3. Добавим свои пункты меню. Для этого переходим в окно ресурсов (Resource View)и выбираем следующие элементы: Painter1.rc->Menu. Дважды щелкаем ЛК мыши на элемент IDR_MAINFRAME.

  4. В позицию «Прототип текста(Type Here) »введите название пункта меню. Создайте пункты меню «Элементы» и «Цвет».

Рисунок 3

  1. Создайте обработчики событий меню. Обработчики будут реализованы в классе документа. Выделите нужный пункт меню и нажмите ПК мыши. В контекстном меню выберите пункт «Добавить обработчик событий(Add Event Handler)».

Рисунок 4

  1. В появившемся окне выбираем тип сообщения «COMMAND», а в списке классов –класс документа. Нажмите кнопку «Добавить/править». В результате в классе CPainterDoc появится код следующего вида:

  2. void CPainterDoc::OnColorRed()

  3. {

  4. // TODO: добавьте свой код обработчика команд

  5. }

Рисунок 5

  1. Добавим в класс CPainterDoc переменную m_Color типа COLORREF:

  2. class CPainterDoc : public CDocument

  3. { protected: // создать только из сериализации

  4. Cmfc2Doc();

  5. DECLARE_DYNCREATE(Cmfc2Doc)

  6. // Атрибуты

  7. public:

  8. // Операции

  9. public:

  10. // Переопределение

  11. public:

  12. virtual BOOL OnNewDocument();

  13. virtual void Serialize(CArchive& ar);

  14. #ifdef SHARED_HANDLERS

  15. virtual void InitializeSearchContent();

  16. virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);

  17. #endif // SHARED_HANDLERS

  18. // Реализация

  19. public:

  20. virtual ~Cmfc2Doc();

  21. #ifdef _DEBUG

  22. virtual void AssertValid() const;

  23. virtual void Dump(CDumpContext& dc) const;

  24. #endif

  25. protected:

  26. // Созданные функции схемы сообщений

  27. protected:

  28. DECLARE_MESSAGE_MAP()

  29. #ifdef SHARED_HANDLERS

  30. // Вспомогательная функция, задающая содержимое поиска для обработчика поиска

  31. void SetSearchContent(const CString& value);

  32. #endif // SHARED_HANDLERS

  33. #ifdef SHARED_HANDLERS

  34. private:

  35. CString m_strSearchContent;

  36. CString m_strThumbnailContent;

  37. #endif // SHARED_HANDLERS

  38. public:

  39. afx_msg void OnColorRed();

  40. protected:

  41. COLORREF m_Color;

  42. public:

  43. afx_msg void OnColorBlack();

  44. afx_msg void OnColorGreen();

  45. afx_msg void OnElementCircle();

  46. afx_msg void OnElementRectangle();

  47. afx_msg void OnElementCurve();

  48. };

16. Щелкнете правой кнопкой на папке «Файлы заголовка» на вкладке «Обозреватель решений» и выберите в контекстном меню «Добавить-Добавить новый элемент». Введите имя файла PainterConstants, который будет хранить константы проекта. В файле введите следующий код:

#include "windows.h"

enum ElementType{LINE, RECTANGLE, CURVE};

const COLORREF BLACK=RGB(0,0,0);

const COLORREF RED=RGB(255,0,0);

const COLORREF GREEN=RGB(0,255,0);

const COLORREF BLUE=RGB(0,0,255);

17. Добавьте в файл Painter.h строку #include " PainterConstants.h";

18. Добавьте код инициализации конструктору класса:

CPainterDoc:: CPainterDoc ()

{

m_Element=LINE;

m_Color=BLACK;

}

19. Добавьте код в обработчике событий элементов меню, например:

void CPainterDoc::OnColorRed()

{

m_Color=RED;

}

void CPainterDoc::OnElementCircle()

{

m_Element=CIRCLE;

}

20. Запустите программу и проверьте её работоспособность;

21. Для отметки пунктов меню нужно создать обработчики вида UPDATE_COMMAND_UI. Обработчики сообщений данного типа используются для обновления свойств пункта меню перед их отображением. Рассмотрим пример. Перейдите в «Окно ресурсов» и выбрать пункт меню «Цвет»-«Красный». Нажав ПК мыши вызвать контекстное меню и создать обработчик команды обновления пункта меню (рисунок 6).

Рисунок 6

Далее добавляем следующий код:

void Cmfc2Doc::OnUpdateColorRed(CCmdUI *pCmdUI)

{

pCmdUI->SetCheck(m_Color==RED);

}

Добавленный оператор вызывает функцию SetCheck, которая помечает пункт меню, если её параметр true. В данном случае пункт меню Цвет-Красны будет помечен, если значение переменной m_Color будет равен значению Red.

Подобным образом сделайте обработчики для следующих пунктов меню: синий, черный, зеленый.

Запустите программу на выполнение и проверьте, что галочки устанавливаются правильно. Пример результата работы программы представлен на рисунке 7.

Рисунок 7.

22. Подобным образом сделайте обработчики событий для пункта меню «Элемент». Запустите программу на выполнение и проверьте её работу. Пример результата работы программы представлен на рисунке 8.

Рисунок 8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]